test.ino 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #include <ESP8266WiFi.h>
  2. #include <Automaton.h>
  3. #include <OneWire.h>
  4. #include <DallasTemperature.h>
  5. #include <DS18B20Events.h>
  6. // Pin for DS18B20
  7. int one_wire_bus = 4;
  8. int mcu_flash_button = 0;
  9. Atm_button mcubtn;
  10. int led1_pin = 13;
  11. Atm_led led1;
  12. bool wpsRunning = false;
  13. // Init Onewire and DallasTemperature
  14. OneWire oneWire(one_wire_bus);
  15. DallasTemperature sensor(&oneWire);
  16. Atm_timer sensorTimer;
  17. //Init thermometer with index 0 (default)
  18. DS18B20Events thermometer(0);
  19. void setup() {
  20. delay(10000);
  21. Serial.begin(115200);
  22. Serial.println("Booting...");
  23. // led1.trace( Serial );
  24. // mcubtn.trace( Serial );
  25. led1.begin( led1_pin ); // .blink( 1000 );
  26. mcubtn.begin( mcu_flash_button )
  27. .onPress([] (int idx, int v, int up ) {
  28. wpsSetup();
  29. } );
  30. // .onPress( led1, led1.EVT_TOGGLE );
  31. // sensor.begin()
  32. sensorTimer.begin( 100 )
  33. .repeat( ATM_COUNTER_OFF )
  34. .onTimer( [] (int idx, int v, int up ) {
  35. thermometer.loop();
  36. } )
  37. .start();
  38. // sensorTimer.trace( Serial );
  39. DS18B20Events::setup(&sensor); // Link DS18B20Events to DallasTemperature object
  40. DS18B20Events::setInterval(200); // Set min interval in milliseconds between 2 measurements. Default 10000 set in setup() method.
  41. thermometer.onChange = temperatureChanged;
  42. /*
  43. pinMode(13, OUTPUT); //GPIO 13 = Pin D7
  44. */
  45. Serial.println("Wifi Setup...");
  46. WiFi.mode(WIFI_STA);
  47. WiFi.begin(WiFi.SSID().c_str(),WiFi.psk().c_str());
  48. Serial.println("Setup Done.");
  49. }
  50. void loop() {
  51. // thermometer.loop(); // Mandatory to measure temperature and fire an event if needed
  52. // Serial.println("Hello World");
  53. // digitalWrite(13, HIGH);
  54. // delay(1000);
  55. // digitalWrite(13, LOW);
  56. // delay(1000);
  57. automaton.run();
  58. }
  59. void temperatureChanged(uint8_t index, float tempC)
  60. {
  61. Serial.print(tempC);
  62. Serial.print(" new tempC at index ");
  63. Serial.println(index);
  64. }
  65. void wpsSetup(){
  66. if (wpsRunning){
  67. Serial.println("WPS already running");
  68. } else {
  69. Serial.println("WPS Config started");
  70. bool wpsSuccess = WiFi.beginWPSConfig();
  71. Serial.printf("wpsSuccess: '%s'\n", boolToString(wpsSuccess));
  72. if(wpsSuccess) {
  73. // Muss nicht immer erfolgreich heißen! Nach einem Timeout bist die SSID leer
  74. String newSSID = WiFi.SSID();
  75. if(newSSID.length() > 0) {
  76. // Nur wenn eine SSID gefunden wurde waren wir erfolgreich
  77. Serial.printf("WPS fertig. Erfolgreich angemeldet an SSID '%s'\n", newSSID.c_str());
  78. }
  79. }
  80. }
  81. }
  82. String boolToString(bool in){
  83. return in ? "true" : "false";
  84. }