#include #include #include #include #include // Pin for DS18B20 int one_wire_bus = 4; int mcu_flash_button = 0; Atm_button mcubtn; int led1_pin = 13; Atm_led led1; int poti_pin = A0; Atm_analog poti; int dial_pin_1 = 12; int dial_pin_2 = 14; Atm_encoder dial; int shouldTemp = 0; float isTemp = 100; bool wpsRunning = false; // Init Onewire and DallasTemperature OneWire oneWire(one_wire_bus); DallasTemperature sensor(&oneWire); Atm_timer sensorTimer; //Init thermometer with index 0 (default) DS18B20Events thermometer(0); void setup() { delay(2000); Serial.begin(115200); Serial.println("Booting..."); // led1.trace( Serial ); // mcubtn.trace( Serial ); led1.begin( led1_pin ); // .blink( 1000 ); mcubtn.begin( mcu_flash_button ) .onPress([] (int idx, int v, int up ) { wpsSetup(); } ); // .onPress( led1, led1.EVT_TOGGLE ); dial.begin(dial_pin_1, dial_pin_2, 2) .range( 1, 120 ) .onChange( [] (int idx, int v, int up ) { shouldTemp = v; // Serial.printf("Raw: %d ShouldTemp: %.10f\n", v, shouldTemp); checkTemp(); }); /* poti.begin( poti_pin ) .onChange( [] (int idx, int v, int up ) { shouldTemp = (float)v / 20.0; // Serial.printf("Raw: %d ShouldTemp: %.10f\n", v, shouldTemp); checkTemp(); }); // sensorTimer.trace( Serial ); */ DS18B20Events::setup(&sensor); // Link DS18B20Events to DallasTemperature object DS18B20Events::setInterval(200); // Set min interval in milliseconds between 2 measurements. Default 10000 set in setup() method. sensorTimer.begin( 100 ) .repeat( ATM_COUNTER_OFF ) .onTimer( [] (int idx, int v, int up ) { thermometer.loop(); } ) .start(); thermometer.onChange = temperatureChanged; Serial.println("Wifi Setup..."); WiFi.mode(WIFI_STA); WiFi.begin(WiFi.SSID().c_str(),WiFi.psk().c_str()); Serial.println("Setup Done."); } void loop() { // thermometer.loop(); // Mandatory to measure temperature and fire an event if needed // Serial.println("Hello World"); // digitalWrite(13, HIGH); // delay(1000); // digitalWrite(13, LOW); // delay(1000); automaton.run(); } void temperatureChanged(uint8_t index, float tempC) { isTemp = tempC; checkTemp(); } void wpsSetup(){ if (wpsRunning){ Serial.println("WPS already running"); } else { Serial.println("WPS Config started"); bool wpsSuccess = WiFi.beginWPSConfig(); Serial.printf("wpsSuccess: '%s'\n", boolToString(wpsSuccess)); if(wpsSuccess) { // Muss nicht immer erfolgreich heißen! Nach einem Timeout bist die SSID leer String newSSID = WiFi.SSID(); if(newSSID.length() > 0) { // Nur wenn eine SSID gefunden wurde waren wir erfolgreich Serial.printf("WPS fertig. Erfolgreich angemeldet an SSID '%s'\n", newSSID.c_str()); } } } } unsigned long lastCheck; void checkTemp(){ if (isTemp > 0 && isTemp < (float)shouldTemp){ led1.on(); } else { led1.off(); } if ((millis() - lastCheck) > 50) { Serial.printf("%d,%d,%.10f\n", millis(),shouldTemp,isTemp); lastCheck = millis(); } } String boolToString(bool in){ return in ? "true" : "false"; }