HmIP-WRCD - Textzeile per Skript setzen

HMIP lokale Installation

Moderator: Co-Administratoren

Hacker182
Beiträge: 20
Registriert: 23.03.2019, 01:50
Hat sich bedankt: 5 Mal
Danksagung erhalten: 2 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von Hacker182 » 07.05.2021, 23:25

MichaelN hat geschrieben:
04.05.2021, 07:24
Ja, da scheint einiges schief zu laufen.
Aber welcher Fehler kommt genau?

Und ist die bewußt, daß Du unterschiedliche Geräte ansprichst und Variablen füllst, die später nicht mehr verwendet werden?
Soll das so?

Wir können nicht erraten, wie deine Geräte / Kanäle / Systemvariable wirklich heißen.

Und bitte verwende

Code: Alles auswählen

Code </>
Tags für Code.
Ja das glaube ich langsam auch...ich komm hier einfach nicht weiter. Das Display bleibt im Uhrzustand. Zum piepsen hab ich es bekommen....dann war ruhe.....Ich möchte vorerst nur die Temperatur und die relative Feuchte in Zeile 2 und 3 angezeigt bekommen.... aber schon bei der Temperatur komm ich ins straucheln....ich dachte ich versteh es...aber irgendwie komm ich nicht zurecht...

Folgende Geräte sind vorhanden bzw. sollen miteinander kommunizieren:
CCU3 mit Raspberrymatic in der aktuellen Version
HmIP-WRCD
HmIP-STHO

Selbst das einfachste wird nicht angezeigt....ich bekomm einfach den Text nicht aufs Display....
Hier mal mein verwendeter Code mit den jeweiligen Geräten....eine Fehlermeldung wird nicht angezeigt....

Code: Alles auswählen

Code var curTemp = (datapoints.Get("HmIP-RF.000EDBE9A1B487:2.ACTUAL_TEMPERATURE")).Value();
curTemp = curTemp.ToString(2)#" C";
dom.GetObject("actTemp").State(curTemp);

dom.GetObject("HmIP-RF.002A5D8989D5D2:3.DISPLAY_DATA_STRING").State(dom.GetObject("actTemp").Value())
dom.GetObject("HmIP-RF.002A5D8989D5D2:3.DISPLAY_DATA_ID").State(2); ! Zeilennummer
dom.GetObject("HmIP-RF.002A5D8989D5D2:3.DISPLAY_DATA_ALIGNMENT").State("CENTER");
dom.GetObject("HmIP-RF.002A5D8989D5D2:3.DISPLAY_DATA_COMMIT").State(true);
Jemand vielleicht eine Idee an was das liegen könnte...wie gesagt...Töne hat es von sich gegeben.

Vielen Dank schon mal

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.05.2021, 00:15

Wieso machst du nicht einfach mal ein vernünftiges debugging und probierst stattdessen wieder ganz was anderes aus? Try and error funktioniert nur, wenn man auch aus den Fehlern lernt.

Also geh Schritt für Schritt vor. Erstmal ein einfaches "Hallo Welt". Wenn das klappt den nächsten Schritt, usw.

Rom wurde auch nicht an einem Tag erbaut.

Btw: da dir ein ; fehlt kann dieser Code eh nicht funktionieren.
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 +++

Hacker182
Beiträge: 20
Registriert: 23.03.2019, 01:50
Hat sich bedankt: 5 Mal
Danksagung erhalten: 2 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von Hacker182 » 08.05.2021, 00:52

MichaelN hat geschrieben:
08.05.2021, 00:15
Wieso machst du nicht einfach mal ein vernünftiges debugging und probierst stattdessen wieder ganz was anderes aus? Try and error funktioniert nur, wenn man auch aus den Fehlern lernt.

Also geh Schritt für Schritt vor. Erstmal ein einfaches "Hallo Welt". Wenn das klappt den nächsten Schritt, usw.

Rom wurde auch nicht an einem Tag erbaut.

Btw: da dir ein ; fehlt kann dieser Code eh nicht funktionieren.
Das ist leider beim kopieren verloren gegangen...Aber danke für den Hinweis.... :-)

Hallo Welt funktioniert soweit :-)
Sobald ich die Scripte Teste kommt keine Ausgabe mehr....deswegen meine Frage....

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.05.2021, 10:01

WriteLine (x) erzeugt eine Ausgabe beim Testen.
Das Fehlerlog in der System Steuerung kontrollieren
Es ist auch immer ein ganz probates Mittel eine Systemvaribale, Typ Sting auf protokolliert zu setezn. Damit kann man sehr leicht Einträge im Systemprotokoll erzuegen, entweder in der WebUI oder im Skript.

Und in meiner Signatur findest Du den Link zu den "undokumentierten Skriptbefehlen", da kannst Du Dir - auch wenn es nicht explizit erwähnt ist - abgucken, wie man korrekt Systemvariablen und Datenpunkte anspricht.
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 +++

Hacker182
Beiträge: 20
Registriert: 23.03.2019, 01:50
Hat sich bedankt: 5 Mal
Danksagung erhalten: 2 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von Hacker182 » 08.05.2021, 13:52

Danke.... Das schau ich mir in Ruhe noch mal an....

Ich melde mich bestimmt nochmal.... 😁

Benutzeravatar
FBK2904
Beiträge: 454
Registriert: 22.03.2016, 17:12
System: Alternative CCU (auf Basis OCCU)
Wohnort: Bei Ludwigsburg
Hat sich bedankt: 80 Mal
Danksagung erhalten: 42 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von FBK2904 » 08.05.2021, 17:29

Hacker182 hat geschrieben:
07.05.2021, 23:25
Jemand vielleicht eine Idee an was das liegen könnte...wie gesagt...Töne hat es von sich gegeben.
Sodele ... jetzt hat es mir doch keine Ruhe gelassen und ich habe dein Script einmal mit meinen Geräte-SN's durchlaufen lassen!

Hier mein funktionierendes Resultat (mit deinen Geräte-Seriennummern und deiner Script-Schreibweise):

Code: Alles auswählen

integer curTemp = dom.GetObject (ID_DATAPOINTS).Get ("HmIP-RF.000EDBE9A1B487:1.ACTUAL_TEMPERATURE").Value().ToString(2)#" ^C";

!- dom.GetObject("actTemp").State(curTemp);  !-> ??? Zweck ist welcher ???

string ZeilenInhalt = "{DDBC=WHITE,DDTC=BLACK,DDI=0,DDA=CENTER,DDS="#curTemp#",DDID=2,DDC=true}";    !-> Ohne PIEPTÖNE
!- string ZeilenInhalt = "{DDBC=WHITE,DDTC=BLACK,DDI=0,DDA=CENTER,DDS="#curTemp#",DDID=2,DDC=true},{R=2,IN=3,ANS=3}"; !-> Mit PIEPTÖNE
dom.GetObject ("HmIP-RF.002A5D8989D5D2:3.COMBINED_PARAMETER").State(ZeilenInhalt);
Es wird die aktuelle Sensor-Temperatur in Zeile 2 mit schwarzer Schrift auf weißem Hintergrund und zentriert sowie (ohne Ton) geschrieben.

Bei deinem HmIP-STHO bist du (meiner Meinung nach) mit Kanal2 auf dem falschen. Bei meinem HmIP-STHD sind alle Werte auf Kanal1.
Deine Zeile 2 habe ich gleich noch in Zeile 1 integriert und auch das Sonderzeichen für das "°" vor dem "C" eingefügt.
Was du mit der nächsten Zeile konkret bezweckst weiss ich nicht, außer halt die Temperatur in eine SysVar zuschreiben.

Viel Spass beim testen und weiter tüfteln :) .
Grüssle,
Frank
--------------------------
System: CCU3 (RM 3.73.9.20240130) mit Stabantenne (www.stall.biz)
Geräte: 56x HM (classic) / 13x HmIP / 8x CUxD /16x virtuelle Gruppen / 4x PioTek-Tracker V4 FTTB & FAM-USB-Gateway
Addons: XML-API 2.3 / CUx-Daemon 2.11 / CUxD-Highcharts 1.45 / Programme drucken 2.6
Sonstige: SDV v5.03.04 G / AIO Creator NEO v3.1.0 mit 2x Samsung Tab SM-T580 (Root & Android 10 [LineageOS 17.1 by TALUAtXDAi])

Hacker182
Beiträge: 20
Registriert: 23.03.2019, 01:50
Hat sich bedankt: 5 Mal
Danksagung erhalten: 2 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von Hacker182 » 09.05.2021, 22:16

FBK2904 hat geschrieben:
08.05.2021, 17:29

Was du mit der nächsten Zeile konkret bezweckst weiss ich nicht, außer halt die Temperatur in eine SysVar zuschreiben.

Viel Spass beim testen und weiter tüfteln :) .
Danke erst einmal....das muss ich nachher gleich mal probieren... :-)

Ich wollte eigentlich in der 3.Zeile meine relative Luftfeuchte anzeigen lassen...nur leider bin ich ja nun schon an der Temperatur gescheitert deswegen hab ich die erst einmal zurück gestellt....und scheinbar unbewusst und aus Verzweiflung das drin gelassen.

Wenn ich jetzt damit zurecht komm wäre das mein nächstes Projekt.

Ich probiere weiter. ;-)

Aquaplex
Beiträge: 300
Registriert: 16.11.2011, 18:16
System: CCU und Access Point
Hat sich bedankt: 26 Mal
Danksagung erhalten: 8 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von Aquaplex » 10.05.2021, 10:14

FBK2904 hat geschrieben:
07.05.2021, 19:00
Du hast hier aber noch nicht dein Script im Thread gezeigt. Woher sollen wir jetzt wissen, wie du den/die Befehl(e) konkret an's Display absetzt
und evtl. Fehler sich dort verbergen (erzählen kann man viel)?
Hier der Auszug aus meinem Skript. Ich habe 5 SVs für jede Zeile des Displays. Es wird verglichen, ob sich bei den neu berechneten Werten (MaxTempKomma, MinTempKomma, TemperaturKomma, FeuchteKomma, Wind) etwas geändert hat und nur dann wird die Zeile in den COMBINED-Befehl mit aufgenommen. Übertragung dann ganz unten (Seriennummer entfernt). Funktioniert wie bereits geschrieben in 99% der Fälle einwandfrei. Aber ab und zu eben nicht, dann klappt es jedoch mit einer Einzel-Zeilen-Übertragung :?

Code: Alles auswählen

if (dom.GetObject("SV_Bad-Display_Zeile_1").Value() <> MaxTempKomma)
{
  Inhalt = "{DDBC=BLACK,DDTC=WHITE,DDI=31,DDA=CENTER,DDS="#MaxTempKomma#",DDID=1,DDC=true}";
  Transmit = true;
  dom.GetObject("SV_Bad-Display_Zeile_1").State(MaxTempKomma);
}
if (dom.GetObject("SV_Bad-Display_Zeile_2").Value() <> TemperaturKomma)
{
  if (Transmit) {Inhalt = Inhalt#",{DDBC=WHITE,DDTC=BLACK,DDI="#WetterIcon#",DDA=CENTER,DDS="#TemperaturKomma#",DDID=2}";}
  else {Inhalt = Inhalt#"{DDBC=WHITE,DDTC=BLACK,DDI="#WetterIcon#",DDA=CENTER,DDS="#TemperaturKomma#",DDID=2,DDC=true}"; Transmit = true;}
  dom.GetObject("SV_Bad-Display_Zeile_2").State(TemperaturKomma);
}  
if (dom.GetObject("SV_Bad-Display_Zeile_3").Value() <> FeuchteKomma)
{
   if (Transmit) {Inhalt = Inhalt#",{DDBC=WHITE,DDTC=BLACK,DDI="#FeuchteIcon#",DDA=CENTER,DDS="#FeuchteKomma#",DDID=3}";}
   else {Inhalt = Inhalt#"{DDBC=WHITE,DDTC=BLACK,DDI="#FeuchteIcon#",DDA=CENTER,DDS="#FeuchteKomma#",DDID=3,DDC=true}"; Transmit = true;}
   dom.GetObject("SV_Bad-Display_Zeile_3").State(FeuchteKomma);
}  
if (dom.GetObject("SV_Bad-Display_Zeile_4").Value() <> Wind)
{
   if (Transmit) {Inhalt = Inhalt#",{DDBC=WHITE,DDTC=BLACK,DDI="#WindIcon#",DDA=CENTER,DDS="#Wind#",DDID=4}";}
   else {Inhalt = Inhalt#"{DDBC=WHITE,DDTC=BLACK,DDI="#WindIcon#",DDA=CENTER,DDS="#Wind#",DDID=4,DDC=true}"; Transmit = true;}
   dom.GetObject("SV_Bad-Display_Zeile_4").State(Wind);
}  
if (dom.GetObject("SV_Bad-Display_Zeile_5").Value() <> MinTempKomma)
{
   if (Transmit) {Inhalt = Inhalt#",{DDBC=BLACK,DDTC=WHITE,DDI=31,DDA=CENTER,DDS="#MinTempKomma#",DDID=5}";}
   else {Inhalt = Inhalt#"{DDBC=BLACK,DDTC=WHITE,DDI=31,DDA=CENTER,DDS="#MinTempKomma#",DDID=5,DDC=true}";}
   dom.GetObject("SV_Bad-Display_Zeile_5").State(MinTempKomma);
}  

! Übertragung der Daten ans Display
if (Transmit) {dom.GetObject("HmIP-RF.xxx:3.COMBINED_PARAMETER").State(Inhalt);}
HmIP auf Pi3B+ mit RaspberryMatic und neuem Funk-Modul sowie 3 HAPs / Etwa 150 IP-Geräte

Benutzeravatar
FBK2904
Beiträge: 454
Registriert: 22.03.2016, 17:12
System: Alternative CCU (auf Basis OCCU)
Wohnort: Bei Ludwigsburg
Hat sich bedankt: 80 Mal
Danksagung erhalten: 42 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von FBK2904 » 10.05.2021, 19:07

Aquaplex hat geschrieben:
10.05.2021, 10:14
Übertragung dann ganz unten (Seriennummer entfernt)
Das kannst du dir sparen (ist so unnötig wie ein Kropf) :roll: .
Aquaplex hat geschrieben:
10.05.2021, 10:14
Hier der Auszug aus meinem Skript.
IMMER das ganze Script posten, NICHT nur "Auszüge" :x !
Aquaplex hat geschrieben:
10.05.2021, 10:14
Aber ab und zu eben nicht, dann klappt es jedoch mit einer Einzel-Zeilen-Übertragung.
Ich verstehe nicht, warum man sich so ein "Gewurstel" in einem Script an Tut, wenn es auch mit "Einzel-Lösungen" besser geht.
Es ist doch Jacke wie Hose, ob du alles erst vergleichst, dann überträgst und Probleme einfängst, oder besser für jede Zeile ein Programm
"WENN xyz bei Änderung, DANN Script" mit einem "kurzen" Script schreibst.
Was ich damit sagen will ist, dass deine Werte z.B. für Temperatur, Feuchte, Wind sowieso immer das Display aktualisieren werden und wenn
(wie schon häufiger berichtet) die Übertragung aller Zeilen in einem Rutsch Probleme bereitet, dann lieber die Zeilen einzeln aktualisieren.
Grüssle,
Frank
--------------------------
System: CCU3 (RM 3.73.9.20240130) mit Stabantenne (www.stall.biz)
Geräte: 56x HM (classic) / 13x HmIP / 8x CUxD /16x virtuelle Gruppen / 4x PioTek-Tracker V4 FTTB & FAM-USB-Gateway
Addons: XML-API 2.3 / CUx-Daemon 2.11 / CUxD-Highcharts 1.45 / Programme drucken 2.6
Sonstige: SDV v5.03.04 G / AIO Creator NEO v3.1.0 mit 2x Samsung Tab SM-T580 (Root & Android 10 [LineageOS 17.1 by TALUAtXDAi])

Aquaplex
Beiträge: 300
Registriert: 16.11.2011, 18:16
System: CCU und Access Point
Hat sich bedankt: 26 Mal
Danksagung erhalten: 8 Mal

Re: HmIP-WRCD - Textzeile per Skript setzen

Beitrag von Aquaplex » 10.05.2021, 20:18

FBK2904 hat geschrieben:
10.05.2021, 19:07
IMMER das ganze Script posten, NICHT nur "Auszüge" :x !
Das bringt in diesem Fall doch keinen Mehrwert. Das Skript ermittelt die Werte, die in den 5 String-Variablen (eine für jede Zeile) stehen.
FBK2904 hat geschrieben:
10.05.2021, 19:07
Ich verstehe nicht, warum man sich so ein "Gewurstel" in einem Script an Tut, wenn es auch mit "Einzel-Lösungen" besser geht.
Es ist doch Jacke wie Hose, ob du alles erst vergleichst, dann überträgst und Probleme einfängst, oder besser für jede Zeile ein Programm
"WENN xyz bei Änderung, DANN Script" mit einem "kurzen" Script schreibst.
Das ist doch kein Gewurstel. Das Skript wird nur bei Bedarf aufgerufen, prüft dann, ob sich überhaupt was geändert hat und überträgt dann die Daten ans Display. Und zwar genau so, wie etliche vorher in diesem Thread empfohlen haben: mit COMBINED. Wenn ich 5 Zeilen einzeln nacheinander übertrage, sehe ich ein deutlich höheres Risiko für Kollisionen, als wenn ich (wie bei mir üblich) meist nur 3 Zeilen in einem Rutsch übertrage.
FBK2904 hat geschrieben:
10.05.2021, 19:07
Was ich damit sagen will ist, dass deine Werte z.B. für Temperatur, Feuchte, Wind sowieso immer das Display aktualisieren werden und wenn
(wie schon häufiger berichtet) die Übertragung aller Zeilen in einem Rutsch Probleme bereitet, dann lieber die Zeilen einzeln aktualisieren.
Wie ich bereits schrieb, es funktioniert in 99% der Fälle einwandfrei. Mag ja sein, dass sich Temperatur und Feuchte oft ändern, aber 2...3 der 5 Zeilen werden nur deutlich seltener aktualisiert, deshalb finde ich das sinnvoll.

Und wenn ich die Zeilen einzeln übertrage, werden partout keine Leerzeichen am Ende des Strings berücksichtigt. Die Symbole pro Zeile sind dann immer direkt rangeklatscht, auch wenn der entsprechende String ein LZ am Ende hat. Beim COMBINED-Befehl funktioniert das prächtig und ohne jegliche Probleme. Er hat also durchaus auch deshalb seine Berechtigung (ja, die Text-Ästhetik ist mir wichtig, wenn das Display selbst schon nicht gerade hübsch ist)
HmIP auf Pi3B+ mit RaspberryMatic und neuem Funk-Modul sowie 3 HAPs / Etwa 150 IP-Geräte

Antworten

Zurück zu „HomeMatic IP mit CCU“