Darstellung von Infos auf HmIP-WRCD per Skript

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Benutzeravatar
ElixGer
Beiträge: 8
Registriert: 20.10.2022, 20:34
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Darstellung von Infos auf HmIP-WRCD per Skript

Beitrag von ElixGer » 24.10.2022, 22:35

Hallo zusammen,

ich nutze ein Display HmIP-WRCD, um Informationen zu Temperatur und Luftfeuchtigkeit mehrerer Räume darzustellen. Dazu lasse ich alle 15 Minuten ein Script laufen, welches die Werte der verschiedenen Datenpunkte liest und auf dem Display ausgibt. Zusätzlich werden Datum und Uhrzeit dargestellt:

Code: Alles auswählen

!Read values from sensors and write to display              
var a1HumValue = dom.GetObject("HmIP-RF.0010DBE*******:1.HUMIDITY").Value();
var a1TempValue = dom.GetObject("HmIP-RF.0010DBE*******:1.ACTUAL_TEMPERATURE").Value();
var a2HumValue = dom.GetObject("HmIP-RF.0010DD8*******:1.HUMIDITY").Value();
var a2TempValue = dom.GetObject("HmIP-RF.0010DD8*******:1.ACTUAL_TEMPERATURE").Value();
var bTempValue = dom.GetObject("BidCos-RF.LEQ*******:4.ACTUAL_TEMPERATURE").Value();
var kHumValue = dom.GetObject("BidCos-RF.KEQ*******:1.HUMIDITY").Value();
var kTempValue = dom.GetObject("BidCos-RF.KEQ*******:1.TEMPERATURE").Value();
var sTempValue = dom.GetObject("HmIP-RF.00201BE*******:1.ACTUAL_TEMPERATURE").Value();

string a1Hum = a1HumValue.ToString(1);
string a1Temp = a1TempValue.ToString(1);
string a2Hum = a2HumValue.ToString(1);
string a2Temp = a2TempValue.ToString(1);
string bTemp = bTempValue.ToString(1);
string kHum = kHumValue.ToString(1);
string kTemp = kTempValue.ToString(1);
string sTemp = sTempValue.ToString(1);

string zeile1 = "A.Wz: " # a1Temp # "/" # a1Hum # "%";
string zeile2 = "A.Sz: " # a2Temp # "/" # a2Hum # "%";
string zeile3 = "K: " # kTemp # "/" # kHum # "%";
string zeile4 = "Sz:" # sTemp # " B:" # bTemp;
string zeile5 = system.Date("%d.%m.%y %H:%M");

dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_STRING").State(zeile1);
dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_ALIGNMENT").State(1);
dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_ID").State(1);

dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_STRING").State(zeile2);
dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_ALIGNMENT").State(1);
dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_ID").State(2);

dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_STRING").State(zeile3);
dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_ALIGNMENT").State(1);
dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_ID").State(3);

dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_STRING").State(zeile4);
dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_ALIGNMENT").State(1);
dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_ID").State(4);

dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_STRING").State(zeile5);
dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_ALIGNMENT").State(1);
dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_ID").State(5);

dom.GetObject("HmIP-RF.002A5D8*******:3.DISPLAY_DATA_COMMIT").State(true);

Vordergründig funktioniert das Script und tut was es soll. Allerdings stimmt die angezeigte Uhrzeit nicht, sondern hängt um 15 Minuten nach, so als ob die Uhrzeit des vorherigen Scriptdurchlaufs angezeigt wird anstatt die des aktuellen Durchlaufs. Die Uhrzeit auf der Zentrale wird natürlich per NTP abgeglichen und ist soweit auch korrekt. Was übersehe ich?


Danke und Gruß,
Elix
Zuletzt geändert von alchy am 31.10.2022, 17:29, insgesamt 1-mal geändert.
Grund: verschoben aus HomeMatic Entwicklung - Softwareentwicklung für die HomeMatic CCU

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: Darstellung von Infos auf HmIP-WRCD per Skript

Beitrag von Baxxy » 24.10.2022, 22:59

Hmm, komisch.

Und wenn du direkt im "Script testen" testest, passt da die Zeit?

Code: Alles auswählen

WriteLine(system.Date("%d.%m.%y %H:%M"));
WriteLine(localtime.Format("%d.%m.%y %H:%M"));

Benutzeravatar
ElixGer
Beiträge: 8
Registriert: 20.10.2022, 20:34
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Re: Darstellung von Infos auf HmIP-WRCD per Skript

Beitrag von ElixGer » 30.10.2022, 21:15

Hi Baxxy,

sorry, habe deine Antwort aus welchem Grund auch immer völlig übersehen!

In der Tat werden korrekte Werte ausgegeben, wenn ich deinen Zweizeiler ausführe:


Script_HmIPWRCD01.jpg


Danke und Gruß,
Elix

Benutzeravatar
ElixGer
Beiträge: 8
Registriert: 20.10.2022, 20:34
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Re: Darstellung von Infos auf HmIP-WRCD per Skript

Beitrag von ElixGer » 30.10.2022, 21:20

Ich habe mein Script gerade leicht geändert und verwende statt system.Date nun localtime.Format. In 30 Minuten gibt's das Ergebnis.

Gruß,
Elix

Benutzeravatar
ElixGer
Beiträge: 8
Registriert: 20.10.2022, 20:34
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 1 Mal

Re: Darstellung von Infos auf HmIP-WRCD per Skript

Beitrag von ElixGer » 30.10.2022, 21:59

War 'nen Versuch Wert, schafft allerdings keine Abhilfe :-( Die angezeigte Zeit hängt nach wie vor um 15 Minuten hinterher.

Gruß,
Elix

Bascolito
Beiträge: 35
Registriert: 01.11.2018, 12:54
System: CCU
Wohnort: München-Süd
Hat sich bedankt: 11 Mal
Danksagung erhalten: 2 Mal

Re: Darstellung von Infos auf HmIP-WRCD per Skript

Beitrag von Bascolito » 09.02.2023, 12:29

Hi Elix,
herzlichen Dank erst mal für Dein Skript. Bin noch Skript-Neuling und versuche über Copy Paste die notwendigen Skripts für meine Bedarfe anzupassen.

Nun zu mein Problem:

Zeilen 1 und 2 befülle ich ohne Skript nach dem Prinzip:
wenn Regenstatus = Regen bei Änderung auslösen
dann Displayanzeige Textfeld = REGEN

Die Zeilen 3 bis 5 mit dem Skript nach Deiner Vorlage, getrriggert durch das Zeitmodul:
Wenn Zeitmodul täglich von 0:00 bis 23:55 alle 15min
Dann Skript sofort ausführen

Die Anzeige wird jedoch nur dann mit den aktuellen Werten (Temp, Feuchte, Uhrzeit etc.) dargestellt, wenn die Zeilen 1 bzw. 2 getriggert wurden (alle ca. 2min, wenn testweise "bei Aktualisierung auslösen" programmiert wird).

Jemand eine Idee, woran das liegt ?
CCU3 mit Addon Email, RedMatic, HMPdetect, ca. 40x HMIP, 60xHM Komponenten

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

Re: Darstellung von Infos auf HmIP-WRCD per Skript

Beitrag von MichaelN » 09.02.2023, 12:32

dann solltest du mal dein Script hier zeigen. Bitte in Code Tags </>
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 +++

Bascolito
Beiträge: 35
Registriert: 01.11.2018, 12:54
System: CCU
Wohnort: München-Süd
Hat sich bedankt: 11 Mal
Danksagung erhalten: 2 Mal

Re: Darstellung von Infos auf HmIP-WRCD per Skript

Beitrag von Bascolito » 09.02.2023, 15:16

Ergänzung:
Das Zeitmodul funktioniert, getestet über ein Telegram-Nachricht (per Skript)
Der duty Cyle ist auch im grünen Bereich ca. 30%
Wenn über den Regensensor (bei Aktualisierung auslösen) getriggert wird, werden auch die anderen Werte in Zeile 3-5 sinnvoll richtig angezeigt.
Zuletzt geändert von Bascolito am 09.02.2023, 15:25, insgesamt 1-mal geändert.
CCU3 mit Addon Email, RedMatic, HMPdetect, ca. 40x HMIP, 60xHM Komponenten

Bascolito
Beiträge: 35
Registriert: 01.11.2018, 12:54
System: CCU
Wohnort: München-Süd
Hat sich bedankt: 11 Mal
Danksagung erhalten: 2 Mal

Re: Darstellung von Infos auf HmIP-WRCD per Skript

Beitrag von Bascolito » 09.02.2023, 15:17

Hi MichaelN,
"Code Tags" sagt mir (leider) nichts. Hier das Skript:

!Read values from sensors and write to display
var a1HumValue = dom.GetObject("HmIP-RF.000EDA499C8159:1.HUMIDITY").Value();
var a1TempValue = dom.GetObject("HmIP-RF.000EDA499C8159:1.ACTUAL_TEMPERATURE").Value();
var i1HumValue = dom.GetObject("HmIP-RF.000E9A498DF8F4:1.HUMIDITY").Value();
var i1TempValue = dom.GetObject("HmIP-RF.000E9A498DF8F4:1.ACTUAL_TEMPERATURE").Value();

string a1Hum = a1HumValue.ToString(1);
string a1Temp = a1TempValue.ToString(1);
string i1Hum = i1HumValue.ToString(1);
string i1Temp = i1TempValue.ToString(1);

string zeile3 = "IN: " # i1Temp # " / " # i1Hum # "%";
string zeile4 = "OUT: " # a1Temp # " / " # a1Hum # "%";
string zeile5 = system.Date("%d.%m.%y %H:%M");

dom.GetObject("HmIP-RF.002A5A498E9E26:3.DISPLAY_DATA_STRING").State(zeile3);
dom.GetObject("HmIP-RF.002A5A498E9E26:3.DISPLAY_DATA_ALIGNMENT").State(1);
dom.GetObject("HmIP-RF.002A5A498E9E26:3.DISPLAY_DATA_ID").State(3);

dom.GetObject("HmIP-RF.002A5A498E9E26:3.DISPLAY_DATA_STRING").State(zeile4);
dom.GetObject("HmIP-RF.002A5A498E9E26:3.DISPLAY_DATA_ALIGNMENT").State(1);
dom.GetObject("HmIP-RF.002A5A498E9E26:3.DISPLAY_DATA_ID").State(4);

dom.GetObject("HmIP-RF.002A5A498E9E26:3.DISPLAY_DATA_STRING").State(zeile5);
dom.GetObject("HmIP-RF.002A5A498E9E26:3.DISPLAY_DATA_ALIGNMENT").State(1);
dom.GetObject("HmIP-RF.002A5A498E9E26:3.DISPLAY_DATA_ID").State(5);

dom.GetObject("HmIP-RF.002A5A498E9E26:3.DISPLAY_DATA_COMMIT").State(true);
CCU3 mit Addon Email, RedMatic, HMPdetect, ca. 40x HMIP, 60xHM Komponenten

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

Re: Darstellung von Infos auf HmIP-WRCD per Skript

Beitrag von MichaelN » 09.02.2023, 17:12

Bascolito hat geschrieben:
09.02.2023, 15:17
Code Tags" sagt mir (leider) nichts
deswegen habe ich die ja extra mit abgebildet. Warten wir auf alchy, der korrigiert das dann schon.

das data commit musst du IMHO für jede Zeile extra setzen
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 „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“