store names and ut/ot values in internal storage load on boot data from internal storage if set, else fall back to settings.h values
122 lines
3.3 KiB
C++
122 lines
3.3 KiB
C++
#include <Wire.h> //Setup LCD
|
|
#include <LiquidCrystal_I2C.h>
|
|
LiquidCrystal_I2C lcd(0x3F,16,2); //0x3F = Adresse des Displays
|
|
|
|
#include "Truhe.h"
|
|
#include "Settings.h"
|
|
#include "Webserver.h"
|
|
|
|
static unsigned long last_lcd_time = 0;
|
|
static unsigned long last_mess_time = 0;
|
|
static unsigned long last_schalt_time = 0;
|
|
|
|
void setup_lcd() {
|
|
//LCD
|
|
lcd.init();
|
|
lcd.backlight(); //Beleuchtung des Displays einschalten
|
|
lcd.blink();
|
|
lcd.clear();
|
|
lcd.setCursor(0, 0); //...(Zeichen,Zeile);
|
|
lcd.print("Init LCD");
|
|
lcd.setCursor(0, 1);
|
|
lcd.print("abgeschlossen!");
|
|
Serial.println("Init LCD abgeschlossen!");
|
|
delay(SETUPTIMEOUT);
|
|
}
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
Serial.println();
|
|
Serial.println();
|
|
setup_lcd();
|
|
lcd.clear();
|
|
preferences.begin("my-app", true);
|
|
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
|
|
truhen[i].setup(
|
|
preferences.getString(
|
|
String("t"+String(i)+"_name").c_str(),
|
|
String(truhen[i].getName())
|
|
),
|
|
preferences.getInt(
|
|
String("t"+String(i)+"_min").c_str(),
|
|
uT
|
|
),
|
|
preferences.getInt(
|
|
String("t"+String(i)+"_max").c_str(),
|
|
oT
|
|
)
|
|
);
|
|
}
|
|
preferences.end();
|
|
wdt_enable(WDTO_4S); // Watchdog auf 4 s stellen
|
|
WifiSetup();
|
|
Serial.println("Setup fi");
|
|
}
|
|
|
|
void loop() {
|
|
if(millis() - last_mess_time >= MESS_REFRESH_INTERVAL || last_mess_time == 0)
|
|
{
|
|
//MESSINTERVALL
|
|
last_mess_time = millis();
|
|
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
|
|
truhen[i].mess();
|
|
}
|
|
}
|
|
//Serial.println("Schaltintervall: "+ String(millis() - last_schalt_time) + " " + String(SCHALT_REFRESH_INTERVAL));
|
|
if(millis() - last_schalt_time >= SCHALT_REFRESH_INTERVAL || last_schalt_time == 0)
|
|
{
|
|
//SCHALTINTERVALL
|
|
Serial.println("SCHALTINTERVALL");
|
|
last_schalt_time = millis();
|
|
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
|
|
truhen[i].schalt();
|
|
}
|
|
}
|
|
if(millis() - last_lcd_time >= LCD_REFRESH_INTERVAL || last_lcd_time == 0)
|
|
{
|
|
//LCD Update INTERVALL
|
|
last_lcd_time = millis();
|
|
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
|
|
//LCD-Anzeige
|
|
lcd.setCursor(0, i); //...(Zeichen,Zeile);
|
|
lcd.print(truhen[i].getName());
|
|
|
|
lcd.setCursor(8, i);
|
|
lcd.print(" ");
|
|
//Serial.println(sizeof(String(truhen[i].getCurTemp()))/2);
|
|
lcd.setCursor(11 - sizeof(String(truhen[i].getCurTemp()))/2, i);
|
|
lcd.setCursor(8, i);
|
|
lcd.print(String(truhen[i].getCurTemp()));
|
|
lcd.setCursor(11, i);
|
|
lcd.print("\337");
|
|
lcd.setCursor(13, i);
|
|
if (truhen[i].getStat() == -1) {
|
|
lcd.print("-");
|
|
}
|
|
else if (truhen[i].getStat() == 1) {
|
|
lcd.print("I");
|
|
}
|
|
else if (truhen[i].getStat() == 0) {
|
|
lcd.print("O");
|
|
}
|
|
else if (truhen[i].getStat() == 2) {
|
|
lcd.setCursor(8, i);
|
|
lcd.print("Error");
|
|
}
|
|
if(truhen[i].getUpdLcd() == 0){
|
|
lcd.setCursor(15, i);
|
|
lcd.print(String("|"));
|
|
//Serial.println(String(truhen[i]._name) + " updateLCD("+String(i)+") .");
|
|
truhen[i].setUpdLcd(1);
|
|
}else{
|
|
lcd.setCursor(15, i);
|
|
lcd.print(String("-"));
|
|
//Serial.println(String(truhen[i]._name) + " updateLCD("+String(i)+") ");
|
|
truhen[i].setUpdLcd(0);
|
|
}
|
|
}
|
|
}
|
|
server.handleClient();
|
|
wdt_reset();
|
|
}
|