//Built-in #include #include #include #include #include #include // Additoinal Libraries #include #include // LiquidMenu_config.h needs to be modified to use I2C. #include // My Includes #include "config.h" #include "globals.h" #include "src/button.h" #include "src/slowPWM.h" #include "src/thermoControl.h" #include "src/mqtt.h" #include "src/functions.h" void setup() { ConfigData config; EEPROM.get(ConfAddress, config); unsigned long lastRun = millis() - UpdateInterval; Serial.begin(9600); rotary.begin(); Ethernet.begin(config.mac, config.ip); attachInterrupt(digitalPinToInterrupt(I_CLK), doEncoder, CHANGE); attachInterrupt(digitalPinToInterrupt(I_DT), doEncoder, CHANGE); pinMode(I_CLK, INPUT_PULLUP); pinMode(I_DT, INPUT_PULLUP); Enter.begin(I_BTN); boilPWM.begin(O_PWM, config.period); mqtt_client.setServer(config.mqtt.broker, 1883); mqtt_client.setClient(net); mqtt_client.setCallback(MessageReceived); KettleController.begin(I_CS1); KettleController.Hysteresis(config.hysteresis); KettleController.ThreshPWR(config.threshold); // if you get a connection, report back via serial: if (Ethernet.linkStatus() == LinkON) { ConnectMQTT(); } lcd.init(); lcd.backlight(); menu.init(); menu.add_screen(home_screen); menu.update(); }; void loop() { UpdateBoilKettle(); unsigned long elapsedTime = (millis() - lastRun); if (Ethernet.linkStatus() == LinkON && elapsedTime >= UpdateInterval) { mqtt_client.loop(); //if (!mqtt_client.connected()) ConnectMQTT(); SendSensorData(); lastRun = millis(); } }