HmIP-WRCD - Textzeile per Skript setzen
Moderator: Co-Administratoren
Re: HmIP-WRCD - Textzeile per Skript setzen
DANKE. Funktioniert beides.
Das ° Zeichen kann das Display nicht darstellen.
Das ° Zeichen kann das Display nicht darstellen.
-
- Beiträge: 9566
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 696 Mal
- Danksagung erhalten: 1608 Mal
Re: HmIP-WRCD - Textzeile per Skript 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 +++
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 +++
Re: HmIP-WRCD - Textzeile per Skript setzen
Ok, ich korrigiere mich. Bei mir wird es nicht korrekt angezeigt.
Wieder einiges gelernt heute.
Danke.
Wieder einiges gelernt heute.
Danke.
-
- Beiträge: 9566
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 696 Mal
- Danksagung erhalten: 1608 Mal
Re: HmIP-WRCD - Textzeile per Skript setzen
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 +++
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 +++
-
- 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
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.
In dem Skript, wo es verwendet werden soll dann wieder auslesen
und einfügen.
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);
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
Harry
Re: HmIP-WRCD - Textzeile per Skript setzen
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.
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.
Woran könnte das liegen? Kann ich irgendwie überprüfen ob der Tastendruck an der CCU3 ankommt?
Viele Grüße
Asga
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);
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.
Woran könnte das liegen? Kann ich irgendwie überprüfen ob der Tastendruck an der CCU3 ankommt?
Viele Grüße
Asga
-
- Beiträge: 9566
- Registriert: 27.04.2020, 10:34
- System: CCU
- Hat sich bedankt: 696 Mal
- Danksagung erhalten: 1608 Mal
Re: HmIP-WRCD - Textzeile per Skript setzen
Dein Tastendruck ist zu lang?
Nimm mal "oder Tastandruck lang" mit hinzu
Siehe auch Debugging Tips in der Signatur
Nimm mal "oder Tastandruck lang" mit hinzu
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 +++
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 +++
Re: HmIP-WRCD - Textzeile per Skript setzen
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.
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.
-
- 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
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
So jedenfalls, angepasst an meine Variablen und Geräte (Wettersensor außen, Temperatursensor innen), klappt es dann:
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: Und so siehts dann aus: Anmerkungen und / oder Korrekturen zu unsauberen Programmierungen AUSDRÜCKLICH erwünscht.
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
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
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: Und so siehts dann aus: Anmerkungen und / oder Korrekturen zu unsauberen Programmierungen AUSDRÜCKLICH erwünscht.
wenn wir uns alle gegenseitig helfen, ist allen geholfen
_______________________________________________
CCU3 seit 2018, 103 Geräte, 202 Programme, 222 sysvar
Projekte: Wettersensor viewtopic.php?t=65631
_______________________________________________
CCU3 seit 2018, 103 Geräte, 202 Programme, 222 sysvar
Projekte: Wettersensor viewtopic.php?t=65631