| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- #include <ESP8266WiFi.h>
- #include <Automaton.h>
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #include <DS18B20Events.h>
- // 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;
- float 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, 1)
- .range( 1, 120 )
- .onChange( [] (int idx, int v, int up ) {
- shouldTemp = (float)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)
- {
- if (tempC > 0){
- isTemp = tempC;
- // Serial.printf("isTemp: %.10f index %d\n", isTemp, index);
- 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 < shouldTemp){
- led1.on();
- } else {
- led1.off();
- }
- if ((millis() - lastCheck) > 1000) {
- Serial.printf("%d,%.10f,%.10f\n", millis(),shouldTemp,isTemp);
- lastCheck = millis();
- }
- }
- String boolToString(bool in){
- return in ? "true" : "false";
- }
|