mirror of
https://github.com/lumapu/ahoy.git
synced 2025-07-12 14:07:16 +02:00
Neue Version von Hubi vom 28.04.2022 - siehe:
https://www.mikrocontroller.net/topic/525778?page=4#7048605 ersetzt NRF24_SendRcv Kommentare dazu: - Projekt jetzt umgenannt in HoyDtuSim (Hoymiles DTU Simulation) -Läuft auf Arduino (bei mir auf Pro Mini) und ESP (Wemos D1 mini), je nachdem wie man kompiliert - Channel hopping für senden und Empfangen (poor man's ...) ist eingebaut und bringt konstante Antworten; obige Erkenntnisse über Kanäle abwärts sind noch nicht eingebaut - da manchmal ein Abbruch der RF-Verbindung vorkam (auch schon oben erwähnt) wird jetzt nach ca 50 Sekunden ohne Empfang das RF-Modul neu initialisiert und es geht problemlos weiter - Definitionen für HM-600 und HM-1200 sind implementiert, andere können anhand der beiden Beispiele sicher leicht impl. werden - Anpassungen sind in der Settings.h zu machen
This commit is contained in:
parent
20cd77a6c2
commit
c0140f9fc1
12 changed files with 1959 additions and 0 deletions
151
tools/HoyDtuSim/ModWebserver.h
Normal file
151
tools/HoyDtuSim/ModWebserver.h
Normal file
|
@ -0,0 +1,151 @@
|
|||
// ################# WebServer #################
|
||||
|
||||
#ifndef __MODWEBSERVER_H
|
||||
#define __MODWEBSERVER_H
|
||||
#define MODWEBSERVER
|
||||
|
||||
#include <ESP8266WebServer.h>
|
||||
#include "Debug.h"
|
||||
#include "Settings.h"
|
||||
|
||||
ESP8266WebServer server (WEBSERVER_PORT);
|
||||
|
||||
|
||||
void returnOK () {
|
||||
//--------------
|
||||
server.send(200, F("text/plain"), "");
|
||||
}
|
||||
|
||||
|
||||
void returnFail(String msg) {
|
||||
//-------------------------
|
||||
server.send(500, F("text/plain"), msg + "\r\n");
|
||||
}
|
||||
|
||||
void handleHelp () {
|
||||
//-----------------
|
||||
String out = "<html>";
|
||||
out += "<body><h2>Hilfe</h2>";
|
||||
out += "<br><br><table>";
|
||||
out += "<tr><td>/</td><td>zeigt alle Messwerte in einer Tabelle; refresh alle 10 Sekunden</td></tr>";
|
||||
out += "<tr><td>/data</td><td>zum Abruf der Messwerte in der Form Name=wert</td></tr>";
|
||||
out += "<tr><td>:{port+1}/update</td><td>OTA</td></tr>";
|
||||
out += "<tr><td>/reboot</td><td>startet neu</td></tr>";
|
||||
out += "</table></body></html>";
|
||||
server.send (200, "text/html", out);
|
||||
}
|
||||
|
||||
|
||||
void handleReboot () {
|
||||
//-------------------
|
||||
returnOK ();
|
||||
ESP.reset();
|
||||
}
|
||||
|
||||
|
||||
void handleRoot() {
|
||||
//----------------
|
||||
String out = "<html><head><meta http-equiv=\"refresh\" content=\"10\":URL=\"" + server.uri() + "\"></head>";
|
||||
out += "<body>";
|
||||
out += "<h2>Hoymiles Micro-Inverters</h2>";
|
||||
char floatString[20];
|
||||
char line[100];
|
||||
for (uint8_t wr = 0; wr < anzInv; wr++) {
|
||||
out += "<h3>" + String(inverters[wr].name) + "</h3>";
|
||||
out += "<h3>S/N " + String (getSerialNoTxt(wr)) + "</h3>";
|
||||
out += "<br><br><table border='1'>";
|
||||
out += "<tr><th>Kanal</th><th>Wert</th><th>Einheit</th></tr>";
|
||||
for (uint8_t i = 0; i < inverters[wr].anzTotalMeasures; i++) {
|
||||
dtostrf (getMeasureValue(wr, i),1, getDigits(wr,i), floatString);
|
||||
sprintf(line, "<tr><td>%s</td><td>%s</td><td>%s</td></tr>", getMeasureName(wr, i), floatString, getUnit(wr, i));
|
||||
//DEBUG_OUT.println(line);
|
||||
out += String(line);
|
||||
/* out += "<tr><td>" + getMeasureName(i) + "</td>";
|
||||
out += "<td>" + String(getMeasureValue(i)) + "</td></tr>";
|
||||
out += "<td>" + String(getUnit(i)) + "</td></tr>"; */
|
||||
}
|
||||
out += "</table>";
|
||||
}
|
||||
int pos = out.indexOf("°");
|
||||
do {
|
||||
if (pos>1) {
|
||||
out = out.substring (0, pos) + "°" + out.substring(pos+2);
|
||||
}
|
||||
pos = out.indexOf("°");
|
||||
} while (pos>1);
|
||||
|
||||
out += "</body></html>";
|
||||
server.send (200, "text/html", out);
|
||||
//DEBUG_OUT.println (out);
|
||||
}
|
||||
|
||||
|
||||
void handleData () {
|
||||
//-----------------
|
||||
String out = "";
|
||||
for (uint8_t wr = 0; wr < anzInv; wr++) {
|
||||
for (int i = 0; i < inverters[wr].anzTotalMeasures; i++) {
|
||||
out += (anzInv <= 1 ? "" : String (wr) + ".") + String(getMeasureName(wr,i)) + '='
|
||||
+ String (getMeasureValue(wr,i)) /*+ ' ' + String(getUnit(wr,i))*/ + '\n';
|
||||
}
|
||||
}
|
||||
server.send(200, "text/plain", out);
|
||||
}
|
||||
|
||||
|
||||
void handleNotFound() {
|
||||
//--------------------
|
||||
String message = "URI: ";
|
||||
message += server.uri();
|
||||
message += "\nMethod: ";
|
||||
message += (server.method() == HTTP_GET) ? "GET" : "POST";
|
||||
message += "\nArguments: ";
|
||||
message += server.args();
|
||||
message += "\n";
|
||||
for (uint8_t i = 0; i < server.args(); i++) {
|
||||
message += " NAME:" + server.argName(i) + "\n VALUE:" + server.arg(i) + "\n";
|
||||
}
|
||||
server.send(404, "text/plain", message);
|
||||
}
|
||||
|
||||
|
||||
void setupWebServer (void) {
|
||||
//-------------------------
|
||||
server.begin();
|
||||
server.on("/", handleRoot);
|
||||
server.on("/reboot", handleReboot);
|
||||
server.on("/data", handleData);
|
||||
server.on("/help", handleHelp);
|
||||
//server.onNotFound(handleNotFound); wegen Spiffs-Dateimanager
|
||||
|
||||
DEBUG_OUT.println ("[HTTP] installed");
|
||||
}
|
||||
|
||||
void webserverHandle() {
|
||||
//====================
|
||||
server.handleClient();
|
||||
}
|
||||
|
||||
|
||||
// ################# OTA #################
|
||||
|
||||
#ifdef WITH_OTA
|
||||
#include <ESP8266HTTPUpdateServer.h>
|
||||
|
||||
ESP8266WebServer httpUpdateServer (UPDATESERVER_PORT);
|
||||
ESP8266HTTPUpdateServer httpUpdater;
|
||||
|
||||
void setupUpdateByOTA () {
|
||||
//------------------------
|
||||
httpUpdater.setup (&httpUpdateServer, UPDATESERVER_DIR, UPDATESERVER_USER, UPDATESERVER_PW);
|
||||
httpUpdateServer.begin();
|
||||
DEBUG_OUT.println ("[OTA] installed");
|
||||
}
|
||||
|
||||
void checkUpdateByOTA() {
|
||||
//---------------------
|
||||
httpUpdateServer.handleClient();
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue