Skript an ESP senden - kommt meistens nur Teilweise an

Nutzung von XML RPC, Remote Script, JSON RPC, XMLAPI

Moderator: Co-Administratoren

microsuck
Beiträge: 213
Registriert: 03.09.2012, 15:34
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Skript an ESP senden - kommt meistens nur Teilweise an

Beitrag von microsuck » 03.03.2022, 10:37

Hi,

ich habe mir mal vor einiger Zeit einen ESP8266 mit einem 4Zeilendisplay zusammengebastelt und als Firmware ESPEasy geflasht. Nun kommt es leider oft vor damit die Werte nicht oder nur Teilweise aktualisiert werden. Manchmal fehlt das Wort "Temp" oder die Temperatur wird nicht angezeigt oder nur Teilweise usw.

Vielleicht kann mir jemand einen Tipp geben warum das nicht funktioniert. Das Display an sich ist echt toll wenn es den funktionieren würde.


Hier mein Skript:

Code: Alles auswählen

string url = "http://IP-ESP/control?cmd=LCDCMD,clear";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");

string url = "http://IP-ESP/control?cmd=LCD,1,1,Temp:";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");

string temphof = dom.GetObject("HmIP-RF.WETTERSTATION:1.ACTUAL_TEMPERATURE").Value().ToString(2);
string url = "http://IP-ESP/control?cmd=LCD,1,12,'"#temphof#"'";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");

string url = "http://IP-ESP/control?cmd=LCD,2,1,Luft:";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");


string lufthof = dom.GetObject("HmIP-RF.WETTERSTATION:1.HUMIDITY").Value().ToString(2);
string url = "http://IP-ESP/control?cmd=LCD,2,15,'"#lufthof#"'";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");

Danke schon mal im Voraus.

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Skript an ESP senden - kommt meistens nur Teilweise an

Beitrag von MichaelN » 03.03.2022, 10:42

Was steht denn dann im Fehler Protokoll?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

microsuck
Beiträge: 213
Registriert: 03.09.2012, 15:34
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Re: Skript an ESP senden - kommt meistens nur Teilweise an

Beitrag von microsuck » 03.03.2022, 10:55

hier ein Auszug

Code: Alles auswählen

Mar  3 10:14:55 homematic-ccu2 daemon.warn cuxd[15682]: CUX2801001:1 timeout(60s) wget -q -O /dev/null 'http://IP-ESP/control?cmd=LCDCMD,on'

Benutzeravatar
Baxxy
Beiträge: 10648
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 597 Mal
Danksagung erhalten: 2180 Mal

Re: Skript an ESP senden - kommt meistens nur Teilweise an

Beitrag von Baxxy » 03.03.2022, 11:45

Recht eindeutiger Fall von "Display im Netzwerk nicht erreichbar".
Ich würde zuerst mal im Router-Log (sofern vorhanden) prüfen ob es da connect/disconnect Einträge bezüglich WLan des Displays gibt.

MichaelN
Beiträge: 9562
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 696 Mal
Danksagung erhalten: 1608 Mal

Re: Skript an ESP senden - kommt meistens nur Teilweise an

Beitrag von MichaelN » 03.03.2022, 12:02

microsuck hat geschrieben:
03.03.2022, 10:55

Code: Alles auswählen

Mar  3 10:14:55 homematic-ccu2 daemon.warn cuxd[15682]: CUX2801001:1 timeout(60s) wget -q -O /dev/null 'http://IP-ESP/control?cmd=LCDCMD,on'

Dann erreicht er wohl seinen Gesprächspartner nicht
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

microsuck
Beiträge: 213
Registriert: 03.09.2012, 15:34
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Re: Skript an ESP senden - kommt meistens nur Teilweise an

Beitrag von microsuck » 03.03.2022, 12:44

in der Log auf der FritzBox steht nichts drin (kein Ab und anmelden). Wenn ich die IP im Browser eingebe wir auch immer gleich das Webinterface geladen. Klar wird da einiges aus dem Cache geladen aber trotzdem bekommt er eine Antwort vom ESP.

Wenn ich das Skript manuell ausführe sieht man auf dem Display damit er es neu lädt aber eben nicht komplett. Das Display reagiert immer sofort wenn ich das Skript manuell starte.

Benutzeravatar
Baxxy
Beiträge: 10648
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 597 Mal
Danksagung erhalten: 2180 Mal

Re: Skript an ESP senden - kommt meistens nur Teilweise an

Beitrag von Baxxy » 03.03.2022, 15:39

Alles klar.
Da ich hier auch so ein LCD 4x20 betreibe konnte ich mir die Sache mal anschauen.

Kurzfassung:
Du semmelst jeweils 5 Befehle im Millisekundenabstand an das LCD raus. Das kann die Befehle nicht so schnell verarbeiten und "verschluckt" sich dann bzw. steigt möglicherweise kurzzeitig ganz aus.

Was tun?
Die Befehle reduzieren und die Aussendungen zeitlich entzerren.

Die einfachste Variante wäre das Script in vielleicht 3 Einzelscripte zu zerlegen und im WebUI-Programm die Verzögerung zu nutzen:
1. Display löschen (sofort)
2. Beschriftung und Daten für Zeile 2 zusammenfassen und senden (verzögert um 1s)
3. Beschriftung und Daten für Zeile 3 zusammenfassen und senden (verzögert um 2s)

Die fortgeschrittene Variante wäre im Script mit Verzögerungen zu arbeiten. Zusätzlich kann man die Beschriftung + Daten der jeweiligen Zeile zusammenfassen und in einem Rutsch senden.

microsuck
Beiträge: 213
Registriert: 03.09.2012, 15:34
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Re: Skript an ESP senden - kommt meistens nur Teilweise an

Beitrag von microsuck » 03.03.2022, 16:30

Super danke für deine Antwort.

Ich bin froh damit ich das Skript so hinbekommen habe. Wie kann ich zwei Befehle zusammenfassen? Das mit den Skripten ist nicht so mein ding.

kannst du mir einen Tipp geben?

Danke

Benutzeravatar
Baxxy
Beiträge: 10648
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 597 Mal
Danksagung erhalten: 2180 Mal

Re: Skript an ESP senden - kommt meistens nur Teilweise an

Beitrag von Baxxy » 03.03.2022, 17:43

microsuck hat geschrieben:
03.03.2022, 16:30
einen Tipp
In Zeile 1 deine geheime IP-Adresse eintragen und dann mal testen.
"Clear" wird sofort ausgeführt, Zeile 1 nach 200ms und Zeile 2 nach 400ms.
Die ganzen %20 sind Leerzeichen damit deine Positionen erreicht werden, must du mal schauen ob das bei Dir geht.

Code: Alles auswählen

string ip_adresse = "192.168.1.66";

string temphof = dom.GetObject("HmIP-RF.WETTERSTATION:1.ACTUAL_TEMPERATURE").Value().ToString(2);
string lufthof = dom.GetObject("HmIP-RF.WETTERSTATION:1.HUMIDITY").Value().ToString(2);

!- Display löschen... sofort
string clear = "http://"#ip_adresse#"/control?cmd=LCDCMD,clear";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#clear#"'");

!- Zeile 1 schreiben... verzögert 200ms
string zeile1 = "http://"#ip_adresse#"/control?cmd=LCD,1,1,Temp:%20%20%20%20%20%20"#temphof#"ßC";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#zeile1#"'",200);

!- Zeile 2 schreiben... verzögert 400ms
string zeile2 = "http://"#ip_adresse#"/control?cmd=LCD,2,1,Luft:%20%20%20%20%20%20%20%20%20"#lufthof#"%";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#zeile2#"'",400);

microsuck
Beiträge: 213
Registriert: 03.09.2012, 15:34
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Re: Skript an ESP senden - kommt meistens nur Teilweise an

Beitrag von microsuck » 04.03.2022, 09:22

super danke für deine Antwort.

Läuft schon mal sehr gut. Nur das es bei EspEasy die Leerzeichen mit %A0 gemacht werden.


Perfekt Danke

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“