Statusanzeige Display 4x20

Moderator: Co-Administratoren

Robert1981
Beiträge: 16
Registriert: 12.05.2019, 22:46

Re: Statusanzeige Display 4x20

Beitrag von Robert1981 » 25.07.2021, 16:27

Also so ?

Code: Alles auswählen

string Fenster = dom.GetObject("Fenster_Status").ValueName().Replace("false", "offen").Replace("true", "zu");
string url = "http://192.168.178.117/control?cmd=OLED,7,10,'"#Fenster#"' ";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");
Das funktioniert jedenfalls auch.
Was macht es so besser?

Benutzeravatar
Black
Beiträge: 5460
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 417 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: Statusanzeige Display 4x20

Beitrag von Black » 25.07.2021, 20:50

gemeint war es alledings so: ohne die Replace Orgie

Code: Alles auswählen

string Fenster = dom.GetObject(ID_SYSTEM_VARIABLES).Get("Fenster_Status").ValueName();
string url = "http://192.168.178.117/control?cmd=OLED,7,10,'"#Fenster#"' ";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Robert1981
Beiträge: 16
Registriert: 12.05.2019, 22:46

Re: Statusanzeige Display 4x20

Beitrag von Robert1981 » 26.07.2021, 21:53

ok cool, dank dir.

Elton9891
Beiträge: 38
Registriert: 15.09.2015, 21:00

Re: Statusanzeige Display 4x20

Beitrag von Elton9891 » 27.08.2022, 10:17

Moin moin,

ich muss mich hier einfach nochmal mit einbringen und meine Frage stellen, aber zu Erst einmal Vielen Dank für diesen Thread der hat mir schon wirklich sehr viel weitergeholfen.

Nun zu meiner Frage. Wie kann ich mir auf dem Display anzeigen lassen, wann dies das letzte mal aktualisiert wurde. Da ich das ganze ja über ein Programm mache. Dachte ich mir man könnte von diesem Programm den Timestamp direkt nehmen und umwandeln lassen auf TT.MM.JJ - SS:MM. Allerdings bekomme ich den Timestamp irgendwie nicht importiert.

Code: Alles auswählen

! Beschriftung Zeile 4 - Zeitstempel Programm
string url = "http://192.168.66.103:88/control?cmd=LCD,4,1,neu:";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null "#url);

string temptime = dom.GetObject("HM-Display").Value().Timestamp(5);
string url = "http://192.168.66.103:88/control?cmd=LCD,4,5,"#temptime ;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null "#url);

Kann man die Zeilen auch Zeitverzögert direkt im Script schreiben bzw. übermitteln lassen?

Vielen Dank schon mal im Vorraus.

MichaelN
Beiträge: 9534
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 692 Mal
Danksagung erhalten: 1604 Mal

Re: Statusanzeige Display 4x20

Beitrag von MichaelN » 27.08.2022, 10:57

Elton9891 hat geschrieben:
27.08.2022, 10:17
Dachte ich mir man könnte von diesem Programm den Timestamp direkt nehmen und umwandeln lassen auf TT.MM.JJ - SS:MM.
Warum nicht einfach die aktuelle Zeit nehmen? Und brauchst Du wirklich Sekunden? Und das Jahr?
Prinzipiell kannst Du die aktuelle Zeit so ausgeben:

Code: Alles auswählen

(localtime).Format("%H:%M")
Elton9891 hat geschrieben:
27.08.2022, 10:17
Kann man die Zeilen auch Zeitverzögert direkt im Script schreiben bzw. übermitteln lassen?
Ja

Code: Alles auswählen

! State() mit Verzögerung
! State(var Value,{integer Delay in ms[0]},{boolean Retrigger[true]})
! Value = Wert der geschrieben wird
! Delay = Verzögerung in ms (optional, Standard 0)
! Retrigger = bisheriger Delay wird abgebrochen/überschrieben (optional, Standard true)
! darf nicht auf Kanäle angewendet werden, bei Geräten muss der Datenpunkt angesprochen werden

! Beispiele
dom.GetObject(ID_SYSTEM_VARIABLES).Get("Automatik").State(1, 60000);
dom.GetObject("Steckdose Lampe:3").DPByHssDP("STATE").State(true,60000);
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 +++

Elton9891
Beiträge: 38
Registriert: 15.09.2015, 21:00

Re: Statusanzeige Display 4x20

Beitrag von Elton9891 » 27.08.2022, 11:09

Vielen Dank für die schnelle Antwort.
MichaelN hat geschrieben:
27.08.2022, 10:57
Warum nicht einfach die aktuelle Zeit nehmen? Und brauchst Du wirklich Sekunden? Und das Jahr?
Prinzipiell kannst Du die aktuelle Zeit so ausgeben:
Wenn ich die Aktuelle Zeit nehmen würde, sehe ich nicht, ob sich was an den Werten geändert hat.
Das Jahr bräuchte ich nicht. Bei der Zeit war mit SS:MM eigentlich die Stunden und Minuten gemeint. Sorry da habe ich mich wohl falsch ausgedrückt.

Das mit der Zeitverzögerung werde ich gleich mal versuchen mit in mein Skript einzubauen.

MichaelN
Beiträge: 9534
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 692 Mal
Danksagung erhalten: 1604 Mal

Re: Statusanzeige Display 4x20

Beitrag von MichaelN » 27.08.2022, 11:25

Letzte Ausführung eines Programms:

Code: Alles auswählen

WriteLine(dom.GetObject (ID_PROGRAMS).Get ("Display_Action").ProgramLastExecuteTime() );
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 +++

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

Re: Statusanzeige Display 4x20

Beitrag von Baxxy » 27.08.2022, 11:59

Das...
Elton9891 hat geschrieben:
27.08.2022, 10:17
Wie kann ich mir auf dem Display anzeigen lassen, wann dies das letzte mal aktualisiert wurde.
..ist doch was völlig anderes wie...
Elton9891 hat geschrieben:
27.08.2022, 11:09
Wenn ich die Aktuelle Zeit nehmen würde, sehe ich nicht, ob sich was an den Werten geändert hat.
Wenn dein Programm "auf Aktualisierung" irgendeines Sensorwertes triggert und dann das Script ausführt ist die "Displayaktualisierungszeit" doch die aktuelle Zeit, bzw. die Programmausführungszeit.

Beschreib mal präziser was bei rauskommen soll.

Elton9891
Beiträge: 38
Registriert: 15.09.2015, 21:00

Re: Statusanzeige Display 4x20

Beitrag von Elton9891 » 27.08.2022, 13:09

Ok, dann versuche ich jetzt mein Vorhaben mal etwas genauer zu erläutern.

Mein Display soll mir folgende Werte Anzeigen, Brunnenfüllstand in %, Datenpunkt des Drucksensors für die Füllstandanzeige, Betriebszustand ob die Brunnenpumpe Ein oder Ausgeschaltet ist und was sind an diesen Werten etwas verändert, aktualisiert hat.
Unbenannt.jpg
Unbenannt.jpg (37.4 KiB) 764 mal betrachtet
Die Anzeige steht schon mal. Allerdings fehlen Teilweise noch die Zeichen nach der Aktualisierung der Werte im Display. Dies wollte ich jetzt mit der Zeitverzögerung der Werte machen, damit alle Werte übertragen werden, falls die CCU3 zu schnell oder zu langsam für den Wemos ist.

Das Skript welches ich bis jetzt mit eurer Hilfe soweit erstellt habe sieht wie folgt aus.
Programm.jpg

Code: Alles auswählen

[code]

! Display Clean
string url = "http://192.168.66.103:88/control?cmd=lcdcmd,clear";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null "#url);

! Beschriftung Zeile 1 - Brunnenstand
string url = "http://192.168.66.103:88/control?cmd=LCD,1,1,Brunnenstand:".State(1,1000);
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null "#url);

string temp = dom.GetObject("Zisternenfuellstand").Value().ToString(2);
string url = "http://192.168.66.103:88/control?cmd=LCD,1,15,"#temp#"%25";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null "#url);


! Beschriftung Zeile 2 - Datenpunkt
string url = "http://192.168.66.103:88/control?cmd=LCD,2,1,Datenpunkt:";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null "#url);

string tempdatenpunkt = dom.GetObject("BidCos-RF.OEQ0746059:3.STATE").Value().ToString(1);
string url = "http://192.168.66.103:88/control?cmd=LCD,2,15,"#tempdatenpunkt ;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null "#url);


! Beschriftung Zeile 3 - Pumpe
string url = "http://192.168.66.103:88/control?cmd=LCD,3,1,Brunnenpumpe:";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null "#url);

string temphww = dom.GetObject("BidCos-RF.LEQ0532097:1.STATE").Value().ToString(1) .Replace("false", "Aus").Replace("true", "An");
string url = "http://192.168.66.103:88/control?cmd=LCD,3,15,"#temphww ;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null "#url);


! Beschriftung Zeile 4 - Zeitstempel Programm
string url = "http://192.168.66.103:88/control?cmd=LCD,4,1,Neu:";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null "#url);

string tempdate = dom.GetObject("4221").ProgramLastExecuteTime().Format("%d.%m-%H:%M");
string url = "http://192.168.66.103:88/control?cmd=LCD,4,9,"#tempdate;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null "#url);

[/code]

Wenn ich dort jetzt die Zeitverzögerung in der Zeile 1 mit .State(1,1000) einfüge, dann wird nichts mehr angezeigt. Oder habe ich das mit dem Setzten der Verzögerung falsch verstanden?

MichaelN
Beiträge: 9534
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 692 Mal
Danksagung erhalten: 1604 Mal

Re: Statusanzeige Display 4x20

Beitrag von MichaelN » 27.08.2022, 13:17

Du setzt liest die Variable verzögert... Macht IMHO wenig Sinn.

Du musst wohl den cuxd Befehl verzögern. Und der nächste überschreibt das wieder. Evt. noch

Code: Alles auswählen

, false
dran hängen.

Und Verzögerung zählt ab dem Befehl, die addieren sich 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 +++

Antworten

Zurück zu „Sonstige Steuerungen und Visualisierungen“