-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path0_SETUP.ino
161 lines (141 loc) · 5.14 KB
/
0_SETUP.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
void setup()
{
Serial.begin(115200);
// Debug Ausgaben prüfen
#ifdef DEBUG_ESP_PORT
Serial.setDebugOutput(true);
#endif
Serial.println();
Serial.println();
// Setze Namen für das MQTTDevice
snprintf(mqtt_clientid, 16, "ESP8266-%08X", ESP.getChipId());
Serial.printf("*** SYSINFO: Starte MQTTDevice %s\n", mqtt_clientid);
wifiManager.setDebugOutput(false);
wifiManager.setMinimumSignalQuality(10);
wifiManager.setConfigPortalTimeout(300);
wifiManager.setAPCallback(configModeCallback);
wifiManager.setSaveConfigCallback(saveConfigCallback);
WiFiManagerParameter cstm_mqtthost("host", "MQTT Server IP (CBPi)", mqtthost, 16);
WiFiManagerParameter p_hint("<small>*Sobald das MQTTDevice mit deinem WLAN verbunden ist, öffne im Browser http://mqttdevice </small>");
wifiManager.addParameter(&cstm_mqtthost);
wifiManager.addParameter(&p_hint);
wifiManager.autoConnect(mqtt_clientid);
WiFi.setSleepMode(WIFI_NONE_SLEEP);
WiFi.mode(WIFI_STA);
WiFi.persistent(true);
WiFi.setAutoConnect(true);
WiFi.setAutoReconnect(true);
// Lade Dateisystem
if (LittleFS.begin())
{
Serial.printf("*** SYSINFO Starte Setup LittleFS Free Heap: %d\n", ESP.getFreeHeap());
// Prüfe WebUpdate
updateSys();
// Erstelle Ticker Objekte
setTicker();
// Starte NTP
timeClient.begin();
timeClient.forceUpdate();
checkSummerTime();
TickerNTP.start();
if (shouldSaveConfig) // WiFiManager
{
strcpy(mqtthost, cstm_mqtthost.getValue());
saveConfig();
}
if (LittleFS.exists("/config.txt")) // Lade Konfiguration
loadConfig();
else
Serial.println("*** SYSINFO: Konfigurationsdatei config.txt nicht vorhanden. Setze Standardwerte ...");
}
else
Serial.println("*** SYSINFO: Fehler - Dateisystem LittleFS konnte nicht eingebunden werden!");
// Lege Event Queues an
gEM.addListener(EventManager::kEventUser0, listenerSystem);
gEM.addListener(EventManager::kEventUser1, listenerSensors);
gEM.addListener(EventManager::kEventUser2, listenerActors);
gEM.addListener(EventManager::kEventUser3, listenerInduction);
// Starte Webserver
setupServer();
// Pinbelegung
pins_used[ONE_WIRE_BUS] = true;
if (useDisplay)
{
pins_used[SDL] = true;
pins_used[SDA] = true;
}
// Starte Sensoren
DS18B20.begin();
// Starte mDNS
if (startMDNS)
cbpiEventSystem(EM_MDNSET);
else
{
Serial.printf("*** SYSINFO: ESP8266 IP Addresse: %s Time: %s RSSI: %d\n", WiFi.localIP().toString().c_str(), timeClient.getFormattedTime().c_str(), WiFi.RSSI());
}
// Starte OLED Display
dispStartScreen();
// Influx Datenbank
if (startDB)
{
setInfluxDB();
TickerInfluxDB.start();
if (!startVis)
TickerInfluxDB.pause();
}
if (startBuzzer)
{
pins_used[PIN_BUZZER] = true;
pinMode(PIN_BUZZER, OUTPUT);
digitalWrite(PIN_BUZZER, LOW);
}
// Starte MQTT
cbpiEventSystem(EM_MQTTCON); // MQTT Verbindung
cbpiEventSystem(EM_MQTTSUB); // MQTT Subscribe
cbpiEventSystem(EM_LOG); // webUpdate log
// Verarbeite alle Events Setup
gEM.processAllEvents();
}
void setupServer()
{
server.on("/", handleRoot);
server.on("/setupActor", handleSetActor); // Einstellen der Aktoren
server.on("/setupSensor", handleSetSensor); // Einstellen der Sensoren
server.on("/reqSensors", handleRequestSensors); // Liste der Sensoren ausgeben
server.on("/reqActors", handleRequestActors); // Liste der Aktoren ausgeben
server.on("/reqInduction", handleRequestInduction);
server.on("/reqSearchSensorAdresses", handleRequestSensorAddresses);
server.on("/reqPins", handlereqPins);
server.on("/reqIndu", handleRequestIndu); // Infos der Indu für WebConfig
server.on("/setSensor", handleSetSensor); // Sensor ändern
server.on("/setActor", handleSetActor); // Aktor ändern
server.on("/setIndu", handleSetIndu); // Indu ändern
server.on("/delSensor", handleDelSensor); // Sensor löschen
server.on("/delActor", handleDelActor); // Aktor löschen
server.on("/reboot", rebootDevice); // reboots the whole Device
server.on("/reqDisplay", handleRequestDisplay);
server.on("/reqDisp", handleRequestDisp); // Infos Display für WebConfig
server.on("/setDisp", handleSetDisp); // Display ändern
server.on("/reqMisc", handleRequestMisc); // Misc Infos für WebConfig
server.on("/reqFirm", handleRequestFirm);
server.on("/setMisc", handleSetMisc); // Misc ändern
server.on("/startHTTPUpdate", startHTTPUpdate); // Firmware WebUpdate
server.on("/visualisieren", visualisieren); // Visualisierung
// FSBrowser initialisieren
server.on("/list", HTTP_GET, handleFileList); // Verzeichnisinhalt
server.on("/edit", HTTP_GET, []() { // Lade Editor
if (!handleFileRead("/edit.htm"))
{
server.send(404, "text/plain", "FileNotFound");
}
});
server.on("/edit", HTTP_PUT, handleFileCreate); // Datei erstellen
server.on("/edit", HTTP_DELETE, handleFileDelete); // Datei löschen
server.on(
"/edit", HTTP_POST, []()
{ server.send(200, "text/plain", ""); },
handleFileUpload);
server.onNotFound(handleWebRequests); // Sonstiges
httpUpdate.setup(&server);
server.begin();
}