HmIP-WRCD - Textzeile per Skript setzen

HMIP lokale Installation

Moderator: Co-Administratoren

saschen79
Beiträge: 94
Registriert: 07.07.2012, 12:29

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von saschen79 » 24.10.2021, 18:00

DANKE. Funktioniert beides. :-)
Das ° Zeichen kann das Display nicht darstellen.

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

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von MichaelN » 24.10.2021, 18:04

saschen79 hat geschrieben:
24.10.2021, 18:00
Das ° Zeichen kann das Display nicht darstellen.
Aha
20211024_180336.jpg
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 +++

saschen79
Beiträge: 94
Registriert: 07.07.2012, 12:29

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von saschen79 » 24.10.2021, 19:26

Ok, ich korrigiere mich. Bei mir wird es nicht korrekt angezeigt. :wink:
Wieder einiges gelernt heute.
Danke.

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

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von MichaelN » 24.10.2021, 19:47

Du solltest meinen Beitrag nach dem EDIT nochmal lesen. Ich hatte den kurz drauf nochmal überarbeitet. Vermutlich hast du das übersehen.
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 +++

saschen79
Beiträge: 94
Registriert: 07.07.2012, 12:29

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von saschen79 » 24.10.2021, 19:56

Oh ja, danke für den Hinweis.

Tyfys
Beiträge: 531
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 26 Mal
Danksagung erhalten: 121 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von Tyfys » 24.10.2021, 21:10

Falls du eine CCU2 und das Problem hast Skripte mit "^" (Caret- / Accent Circonflexe - Zeichen) zu speichern,
könnte das evtl. unter Zuhilfenahme einer SysVar klappen.

Also Systemvariable "Caret" als Zeichenkette anlegen.

Im Skript testen - Fenster das Zeichen dann der Variablen zuweisen.

Code: Alles auswählen

string sysvarname = "Caret";
string wert    = "^";
dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvarname).State(wert);
In dem Skript, wo es verwendet werden soll dann wieder auslesen
und einfügen.

Code: Alles auswählen

string sysvarname = "Caret";
string Caret  = dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvarname).Value();
WriteLine(Caret#"C");
Gruß
Harry

asgaroth
Beiträge: 5
Registriert: 09.10.2021, 23:30
System: CCU
Hat sich bedankt: 3 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von asgaroth » 08.11.2021, 13:01

Moin, solangsam bin ich auch am verzweifeln mit dem WRCD.
Ich habe eine Statusvariable und ein ganz simples Skript nach euren Tips hier und der Anleitung unter https://www.funkyhome.de/anleitung/home ... ogramme_d/ erstellt.

Code: Alles auswählen

string doorstate = dom.GetObject("Systemvariable_Tueren").Value();
integer stateicon = "0";
if(doorstate=="Zu"){
stateicon = "4";
}else {
stateicon = "3";
}
dom.GetObject("HmIP-RF.002A5D89A12743:3.DISPLAY_DATA_STRING").State("T}ren " # doorstate);
dom.GetObject("HmIP-RF.002A5D89A12743:3.DISPLAY_DATA_ICON").State(stateicon);
dom.GetObject("HmIP-RF.002A5D89A12743:3.DISPLAY_DATA_ID").State(2);                      ! Zeilennummer
dom.GetObject("HmIP-RF.002A5D89A12743:3.DISPLAY_DATA_COMMIT").State(true);
Das Skript funktioniert wenn ich es unter "Skript testen" teste oder das Programm manuell über die Oberfläche der CCU3 ausführe.
Allerdings habe ich einen Tastendruck im Programm eingestellt damit die Batterien und der Duty Cycle nicht so belastet werden und dieser scheint einfach nicht zu funktionieren. Die Status-LED blinkt einmal orange dann einmal grün, scheint also korrekt zu sein, aber das Display wird nicht verändert.
2021-11-08_12h53_11.png
Woran könnte das liegen? Kann ich irgendwie überprüfen ob der Tastendruck an der CCU3 ankommt?


Viele Grüße
Asga

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

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von MichaelN » 08.11.2021, 13:05

Dein Tastendruck ist zu lang?
Nimm mal "oder Tastandruck lang" mit hinzu
asgaroth hat geschrieben:
08.11.2021, 13:01
Kann ich irgendwie überprüfen ob der Tastendruck an der CCU3 ankommt?
In dem Programm eine protokollierte Systemvariable ändern, dann siehst Du im Systemprotokoll ob das Programm durchlief. Oder am Status des Geräts.
Siehe auch Debugging Tips in der Signatur
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 +++

asgaroth
Beiträge: 5
Registriert: 09.10.2021, 23:30
System: CCU
Hat sich bedankt: 3 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von asgaroth » 08.11.2021, 14:32

Vielen Dank. Jetzt hab ich den Tastendruck lang hinzugenommen. Daran scheint es nicht gelegen zu haben.
Wenn ich eine Protokollvariable direkt im Programm schreiben lasse bekomme ich eine Ausgabe. Danach habe ich noch im Skript mit verschiedenen Protokollausgaben rumprobiert und plötzlich, ohne etwas sonst am Skript zu ändern funktioniert es.
Woran es gelegen hat weiß ich leider nicht, aber vielleicht lasse ich jetzt erstmal den Protokolleintrag drin und beobachte ob es auch weiterhin geht.

Woran sehe ich ob ich das Programm kaputt editiert habe? Kann das vielleicht der Grund gewesen sein? Kann es dann sein, dass das Programm funktioniert allerdings das Skript nicht ausgeführt wird?

Danke für die Hilfe!

Nachtrag: Als ich eben nochmal den Text des Protokolleintrags geändert habe ging es auch erstmal nicht beim Tastendruck kurz. Beim Tastendruck lang hat er das Display aktualisiert und danach ging auch der Tastendruck kurz... Muss es wohl weiterhin beobachten. Aber eigentlich wäre mir Tastendruck lang sowieso lieber.

Germa
Beiträge: 169
Registriert: 15.12.2019, 12:26
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 19 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von Germa » 05.01.2022, 22:22

so, nach mehrmaligem Durchlesen dieses topics, Suchen und Probieren, habe ich es endlich hinbekommen.
Entweder kaufen dieses Ding nur Profis, programmieren das mal eben schnell und teilen es deswegen dann nicht mit oder es kauft kaum einer, was ich dann echt nicht nachvollziehen könnte, denn der WRCD ist klasse!

Ich fasse mal zusammen:
Der bug mit dem °C besteht immernoch. Ich habe es gelöst dank
Aquaplex hat geschrieben:
26.05.2020, 13:48
Habe noch einen Workaround gefunden: eine Systemvariable (Zeichenkette) mit dem Inhalt "^C" erstellen und diese im Skript an die Temperatur anfügen. Dann funktioniert die Anzeige als "°C" im Display :D
Stefan0815s Skript war mir eine große Hilfe, (viewtopic.php?f=60&t=55269&start=20#p580940), Du hättest aber gerne ein paar ausführlichere Angaben machen können, dann wäre es wohl deutlich einfacher gewesen.

So jedenfalls, angepasst an meine Variablen und Geräte (Wettersensor außen, Temperatursensor innen), klappt es dann:

Code: Alles auswählen

!Systemvariablen müssen angelegt werden:
! - BadOG-DisplaySwitch, Typ STRING, um auf Display Seite Temperaturen oder Wetterdaten umzuschalten
! - BadOG-Display-Value, Typ STRING, um die aktuellen Werte zu speichern
! - BadOG-DisplayCaret, Typ STRING, um den Fehler des nicht darstellbaren ° Zeichens im Script-Editor zu umgehen

string DisplayValue = "";       !muss außerhalb der if Schleife definiert werden

if (dom.GetObject("BadOG-DisplaySwitch").Value()=="Temperaturen"){
  string caret = dom.GetObject("BadOG-DisplayCaret").Value();
  string ACTUAL_TEMPERATURE = "out: " #  dom.GetObject("Wettersensor:1").DPByHssDP("ACTUAL_TEMPERATURE").Value().Round(1).ToString().Replace("00000","").Replace(".",",") # " " # caret;
  string inside = "in: " # dom.GetObject("BidCos-RF.JPTH10I005:1.TEMPERATURE").Value().Round(1).ToString().Replace("00000","").Replace(".",",") # " " # caret;
  string Temp24 = "24h: " # dom.GetObject("TempAussenMin").Value().Round(1).ToString().Replace("00000","").Replace(".",",") # "/" # dom.GetObject("TempAussenMax").Value().Round(1).ToString().Replace("00000","").Replace(".",",");
  DisplayValue = "{DDBC=BLACK,DDTC=WHITE,DDA=CENTER,DDS=Temperaturen,DDID=1},{DDBC=WHITE,DDTC=BLACK,DDA=CENTER,DDS="#ACTUAL_TEMPERATURE#",DDID=2},{DDBC=WHITE,DDTC=BLACK,DDA=CENTER,DDS="#inside#",DDID=3},{DDBC=BLACK,DDTC=WHITE,DDA=CENTER,DDS=Min/Max,DDID=4},{DDBC=WHITE,DDTC=BLACK,DDA=CENTER,DDS="#Temp24#",DDID=5,DDC=true}";
}

elseif (dom.GetObject("BadOG-DisplaySwitch").Value()=="Wetterdaten"){
  string HUMIDITY = "in: " # dom.GetObject("BidCos-RF.JPTH10I005:1.HUMIDITY").Value() # "% rF";
  string WIND_SPEED = dom.GetObject("Wettersensor:1").DPByHssDP("WIND_SPEED").Value().Round(1).ToString().Replace("00000","").Replace(".",",") # " km/h";
  string Rain_heute = dom.GetObject("svHmIPRainCounterToday_56755").Value().Round(1).ToString().Replace("00000","").Replace(".",",") # " L ";
  string Rain_gestern = "gestern " #  dom.GetObject("svHmIPRainCounterYesterday_56755").Value().Round(1).ToString().Replace("00000","").Replace(".",",") # " L ";
  DisplayValue = "{DDBC=BLACK,DDTC=WHITE,DDA=CENTER,DDS=Wetterdaten,DDID=1},{DDBC=WHITE,DDTC=BLACK,DDA=CENTER,DDS="#HUMIDITY#",DDID=2},{DDBC=WHITE,DDTC=BLACK,DDA=CENTER,DDI=12,DDS="#WIND_SPEED#",DDID=3},{DDBC=WHITE,DDTC=BLACK,DDI=17,DDA=CENTER,DDS="#Rain_heute#",DDID=4,DDC=true},{DDBC=WHITE,DDTC=BLACK,DDA=CENTER,DDS="#Rain_gestern#",DDID=5,DDC=true}";
}

if (dom.GetObject("BadOG-DisplayValue").Value() != DisplayValue){                                ! Inhalt vergleichen
    dom.GetObject("Bad-OG-Display:3").DPByHssDP("COMBINED_PARAMETER").State(DisplayValue);       ! Inhalt setzen, muss zwingend Name:Kanal heißen, mit Seriennummer:Kanal geht es nicht
    dom.GetObject("BadOG-DisplayValue").State(DisplayValue);                                     ! Inhalt merken               
Dieses Skript führe ich als WebUI-Programm alle 5 Minuten aus, um die Werte zu aktualisieren.

Dazu soll ja auch beim Betätigen der beiden Tasterkanäle umgeschaltet und aktualisiert werden. Dafür nehme ich dann die beiden Teile aus dem Skript oben in die jeweiligen Zweige des WebUI-Programms:
Umschalten.JPG
Und so siehts dann aus:
Temperaturen.jpg
Wetterdaten.jpg
Anmerkungen und / oder Korrekturen zu unsauberen Programmierungen AUSDRÜCKLICH erwünscht.
wenn wir uns alle gegenseitig helfen, ist allen geholfen :wink:
_______________________________________________
CCU3 seit 2018, 103 Geräte, 202 Programme, 222 sysvar
Projekte: Wettersensor viewtopic.php?t=65631

Antworten

Zurück zu „HomeMatic IP mit CCU“