Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Script

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

DrTob
Beiträge: 3426
Registriert: 29.10.2010, 08:24
Danksagung erhalten: 5 Mal

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von DrTob » 11.01.2018, 23:50

ich habe das Fragezeichen bei den Ersetzungen ergänzt. Testen konnte ich das jedoch nicht.

AxelS-67
Beiträge: 26
Registriert: 28.01.2015, 09:41

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von AxelS-67 » 11.02.2018, 14:05

Jetzt muss ich mich hier auch mal ran hängen.
Ich komme mit dem Script einfach nicht weiter.

Erhalte bei Tastendruck immer die Meldung "Keine Daten empfangen"

Ich habe das HM-Dis-WM55 an der RaspiMatic angemeldet.
Mit einem UI-Programm funktioniert es. Der Text aus dem Programm wird ausgegeben.

Ich benutze das zweite Script und habe die Seriennummern an meinen Heizaktor angepasst.
Die Werte aus dem Heizaktor werden ausgelesen.

Code: Alles auswählen

var istTemp = dom.GetObject("BidCos-RF.KEQ0123456:4.ACTUAL_TEMPERATURE").State();
var sollTemp = dom.GetObject("BidCos-RF.KEQ0123456:4.SET_TEMPERATURE").State();
var valve = dom.GetObject("BidCos-RF.KEQ0123456:4.VALVE_STATE").State();
WriteLine("Ist " # istTemp # " Grad");
WriteLine("Soll " # sollTemp # " Grad");
WriteLine("Ventilstellung " # valve # " %");
Rückgabe beim Testen des Scripts
Ist 21.100000 Grad
Soll 20.000000 Grad
Ventilstellung 12 %

Weiterhin habe ich mal den "command" ausgegeben

Code: Alles auswählen

WriteLine(command);
dom.GetObject("BidCos-RF." # dom.GetObject("$src$").Name().StrValueByIndex(".",1) # ".SUBMIT").State(command);
Rückgabe beim Testen des Scripts
0x02,0x12,0x80,0x11,0x80,0x0A,0x12,0x32,0x30,0x2E,0x30,0x20,0x47,0x72,0x61,0x64,0x11,0x80,0x0A,0x12,0x81,0x11,0x80,0x0A,0x12,0x32,0x31,0x2E,0x31,0x20,0x47,0x72,0x61,0x64,0x11,0x84,0x0A,0x12,0x82,0x11,0x80,0x0A,0x12,0x31,0x32,0x25,0x11,0x80,0x0A,0x03

Kann mir jemand sagen was ich falsch mache?
Gruß
Axel

Squall-1
Beiträge: 9
Registriert: 29.12.2016, 12:47

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von Squall-1 » 14.02.2018, 12:57

Hallo Zusammen,
ich habe mir vor ein paar Tagen ebenfalls das HM-DIS-WM55 zugelegt.
Mit dem Skript von Dr.Tob habe ich es nach meinen wünschen auch "einigermaßen" zum laufen gebracht.
Dafür an Dr.Tob und den weiteren beteiligten vielen Dank.

Ich schreibe hier einigermaßen, da ich die gewünschte Taste von der Statusanzeige immer zwischen 1 bis 5x drücken muss bis alles nach meinen Wünschen angezeigt wird.
Sonst erscheint bei mir das bekannte "Keine Daten empfangen" auf dem Display.

Hier der Code: (Ich habe bei einer Zeile die BidCos-RF bewuss auf xxx gesetzt. Beim Auslesen der Temperatur gab es auch keine Probleme)

Code: Alles auswählen

!! Universalprogramm zum Füllen V1.5
!! (c) DrTob
!! optimized by thkl

!! Das Script holt sich jetzt die Seriennummer des Displays selbst aus der Auslösebedinung des Programms

! Farben
! 0x80 weiß
! 0x81 rot
! 0x82 orange
! 0x83 gelb
! 0x84 gruen
! 0x85 blau

! Symbole
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung
! 0x89 Signal grün
! 0x8A Signal gelb
! 0x8B Signal rot

! Zugriff auf vordefinierte Texte
!
! 0x80 Text  0 (Kanal 1  Text Zeile 1)
! 0x81 Text  1 (Kanal 1  Text Zeile 2)
! 0x82 Text  2 (Kanal 2  Text Zeile 3)
! 0x83 Text  3 (Kanal 2  Text Zeile 4)
! 0x84 Text  4 (Kanal 3  Text Zeile 5)
! 0x85 Text  5 (Kanal 3  Text Zeile 6)
! 0x86 Text  6 (Kanal 4  Text Zeile 7)
! 0x87 Text  7 (Kanal 4  Text Zeile 8)
! 0x88 Text  8 (Kanal 5  Text Zeile 9)
! 0x89 Text  9 (Kanal 5  Text Zeile 10)
! 0x8A Text 10 (Kanal 6  Text Zeile 11)
! 0x8B Text 11 (Kanal 6  Text Zeile 12)
! 0x8C Text 12 (Kanal 7  Text Zeile 13)
! 0x8D Text 13 (Kanal 7  Text Zeile 14)
! 0x8E Text 14 (Kanal 8  Text Zeile 15)
! 0x8F Text 15 (Kanal 8  Text Zeile 16)
! 0x90 Text 16 (Kanal 9  Text Zeile 17)
! 0x91 Text 17 (Kanal 9  Text Zeile 18)
! 0x92 Text 18 (Kanal 10 Text Zeile 19)
! 0x93 Text 19 (Kanal 10 Text Zeile 20)

! string zeile1 = "Zeile 1";
string zeile1 = "Eingangsb:";
string color1 = "0x80";
string icon1  = "";


! string zeile2 = "Zeile 2";
string zeile2 = "0x80";

if (dom.GetObject("E.Aussensteckdose").State() == 0 ) {
  string color2 = "0x80";
  string icon2  = "0x80";
  }
else {
  string color2 = "0x82";
  string icon2  = "0x8A";
}

! string zeile3 = "Zeile 3";
string zeile3 = "0x82";

if (dom.GetObject("E.Licht").State() == 0 ) {
  string color3 = "0x80";
  string icon3  = "0x80";
  }
else {
  string color3 = "0x82";
  string icon3  = "0x81";
}

! string zeile4 = "Zeile 4";
string zeile4 = "";
string color4 = "";
string icon4  = "";

! string zeile5 = "Zeile 5";
string zeile5 = "AußenTemp:";
string color5 = "0x80";
string icon5  = "";

! Zeile 6
! Kombisensor
var aTemp = dom.GetObject("BidCos-RF.OEQ0xxx:1.TEMPERATURE").Value().ToString(1);
var TempV = dom.GetObject("BidCos-RF.OEQ0xxx:1.TEMPERATURE").Value();
string zeile6 = aTemp # " Grad";
string color6 = "0x80";
string icon6  = "";

if (TempV < 10.0) {
  string color6 = "0x85";
  string icon6  = "";
}

 if (TempV >= 24.0) {
  string color6 = "0x81";
  string icon6  = "";
 }

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! System Routine do not change anything below !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

string splitter="|";
string msgBuffer = zeile1 # splitter # color1 # splitter # icon1 # "\t";
msgBuffer = msgBuffer # zeile2 # splitter # color2 # splitter # icon2 # "\t";
msgBuffer = msgBuffer # zeile3 # splitter # color3 # splitter # icon3 # "\t";
msgBuffer = msgBuffer # zeile4 # splitter # color4 # splitter # icon4 # "\t";
msgBuffer = msgBuffer # zeile5 # splitter # color5 # splitter # icon5 # "\t";
msgBuffer = msgBuffer # zeile6 # splitter # color6 # splitter # icon6;

string substitutions = "A,0x41\tB,0x42\tC,0x43\tD,0x44\tE,0x45\tF,0x46\tG,0x47\tH,0x48\tI,0x49\tJ,0x4A\tK,0x4B\tL,0x4C\tM,0x4D\tN,0x4E\tO,0x4F\tP,0x50\tQ,0x51\tR,0x52\tS,0x53\tT,0x54\tU,0x55\tV,0x56\tW,0x57\tX,0x58\tY,0x59\tZ,0x5A";
substitutions = substitutions # "\ta,0x61\tb,0x62\tc,0x63\td,0x64\te,0x65\tf,0x66\tg,0x67\th,0x68\ti,0x69\tj,0x6A\tk,0x6B\tl,0x6C\tm,0x6D\tn,0x6E\to,0x6F\tp,0x70\tq,0x71\tr,0x72\ts,0x73\tt,0x74\tu,0x75\tv,0x76\tw,0x77\tx,0x78\ty,0x79\tz,0x7A";
substitutions = substitutions # "\t0,0x30\t1,0x31\t2,0x32\t3,0x33\t4,0x34\t5,0x35\t6,0x36\t7,0x37\t8,0x38\t9,0x39\t ,0x20\t!,0x21\t\",0x22\t%,0x25\t&,0x26\t=,0x27\t(,0x28\t),0x29\t*,0x2A\t+,0x2B\t,,0x2C\t-,0x2D\t.,0x2E\t/,0x2F";
substitutions = substitutions # "\tÄ,0x5B\tÖ,0x23\tÜ,0x24\tä,0x7B\tö,0x7C\tü,0x7D\tß,0x5F\t:,0x3A\t;,0x3B\t@,0x40\t>,0x3E\t?,0x3f";

string bufferLine;
string substEntry;
integer i;
string char;
string line;
string icon;

string command = "0x02";
foreach(bufferLine, msgBuffer) {
   line = bufferLine.StrValueByIndex(splitter, 0);
   icon = bufferLine.StrValueByIndex(splitter, 2);
   if ((line <> "") || (icon <> "")) {
      command = command # ",0x12";
      if ((line.Substr(0,2) == "0x") && (line.Length() == 4)) {
         command = command # "," # line;
         i = 12;
      }
      else {
         i = 0;
      }
      while ((i < line.Length()) && (i < 12)) {
         char = line.Substr(i, 1);
         foreach(substEntry, substitutions){
            if (char == substEntry.Substr(0,1)){command = command # substEntry.Substr(1,5);}
         }
         i = i + 1;
      }
      command = command # ",0x11," # bufferLine.StrValueByIndex(splitter, 1);
      if (icon <> "") {
         command = command # ",0x13," # icon;
      }
   }
   command = command # ",0x0A";
}
command = command # ",0x03";

dom.GetObject("BidCos-RF." # dom.GetObject("$src$").Name().StrValueByIndex(".",1) # ".SUBMIT").State(command);

Woran könnte das liegen?

Vielen Dank schon mal für Eure Hilfe.

Gruß
Squall

Xel66
Beiträge: 14086
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 581 Mal
Danksagung erhalten: 1492 Mal

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von Xel66 » 17.02.2018, 12:43

Squall-1 hat geschrieben:Ich schreibe hier einigermaßen, da ich die gewünschte Taste von der Statusanzeige immer zwischen 1 bis 5x drücken muss bis alles nach meinen Wünschen angezeigt wird.
Dann nutzt Du nicht dieses Script, um das es in diesem Thread geht, sondern eher diese Version mit der seitenweisen Anzeige. Dort musst Du dann den Seitenzähler an Deine Gegebenheiten anpassen oder wenn Du nur eine Seite benutzen willst, das Script aus diesem Thread benutzen.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Squall-1
Beiträge: 9
Registriert: 29.12.2016, 12:47

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von Squall-1 » 17.02.2018, 13:16

Xel66 hat geschrieben:
Squall-1 hat geschrieben:Ich schreibe hier einigermaßen, da ich die gewünschte Taste von der Statusanzeige immer zwischen 1 bis 5x drücken muss bis alles nach meinen Wünschen angezeigt wird.
Dann nutzt Du nicht dieses Script, um das es in diesem Thread geht, sondern eher diese Version mit der seitenweisen Anzeige. Dort musst Du dann den Seitenzähler an Deine Gegebenheiten anpassen oder wenn Du nur eine Seite benutzen willst, das Script aus diesem Thread benutzen.

Gruß Xel66
Hallo Xell66,
ich habe mich gerade an die Fehlersuch begeben und Ihn auch gefunden.
Ich habe das Skript aus diesem Thread, wie man eigentlich aus dem code sehen kann.
Die gute Nachricht ist, dass der Fehler nicht am Programm oder am Skript lag, sondern eher an der Positionierung der zwei abgefragten HM-Geräte.
Ich habe den Status der zwei HM-Geräte in dem Skript abgefragt, die mechanisch genau übereinander liegen. Anscheinend haben sich diese beim gleichzeitigen Senden gegenseitig gestört, so dass es zu Verzögerungen gekommen ist.
Seitdem ich den Status von einem Gerät durch ein anderes Programm in eine Systemvariable schreibe und diese dann in dem Skript abfrage funktioniert alles einwandfrei.

Auf sowas muss man erstmal kommen. [emoji32]

Gesendet von meinem SM-N910F mit Tapatalk

Tripplex
Beiträge: 519
Registriert: 11.01.2015, 19:16
System: CCU
Hat sich bedankt: 11 Mal
Danksagung erhalten: 4 Mal

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von Tripplex » 03.03.2018, 21:55

Hallo.
Versuche gerade das Skript zum laufen zu bringen.
Bekomme aber jedes mal die Anzeige / Keine Daten Empfangen Angezeigt.

Beim Testskript bekomme ich auch keine Temp Angezeigt.
Nehme ich vieleicht die Falsche Seriennummer vom Gerät???
Habe die vom Wandthermostat und vom Heizungsthermostet Versucht.

Code: Alles auswählen

[url]WriteLine("EINS");
var istTemp = dom.GetObject("BidCos-RF.LEQ1215340:1.TEMPERATURE").State();
WriteLine("ZWEI");
WriteLine("istTemp" # istTemp.ToString());
var sollTemp = dom.GetObject("BidCos-RF.LEQ1215340:1.SETPOINT").State();
WriteLine("DREI");
WriteLine("sollTemp" # sollTemp.ToString());[/url] 
CCU3 mit Cul stick,dazu Intertechno Steckosen.
HM Steuert. Das Haus/Heizung inkl Pool und Robomow RC.

Gluehwurm
Beiträge: 12432
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von Gluehwurm » 03.03.2018, 22:22

Versuch mal

Code: Alles auswählen

WriteLine("EINS");
var istTemp = dom.GetObject("BidCos-RF.LEQ1215340:2.ACTUAL_TEMPERATURE").State();
WriteLine("ZWEI");
WriteLine("istTemp" # istTemp.ToString());
var sollTemp = dom.GetObject("BidCos-RF.LEQ1215340:2.SET_TEMPERATURE").State();
WriteLine("DREI");
WriteLine("sollTemp" # sollTemp.ToString());
Möglich wäre auch

Code: Alles auswählen

WriteLine("EINS");
var istTemp = dom.GetObject("BidCos-RF.LEQ1215340:1.TEMPERATURE").State();
WriteLine("ZWEI");
WriteLine("istTemp" # istTemp.ToString());
var sollTemp = dom.GetObject("BidCos-RF.LEQ1215340:2.SET_TEMPERATURE").State();
WriteLine("DREI");
WriteLine("sollTemp" # sollTemp.ToString());
Die jeweils richtigen Einträge stehen in der Datenpunktliste zu den Geräten (runterladbar bei eq-3).

Tripplex
Beiträge: 519
Registriert: 11.01.2015, 19:16
System: CCU
Hat sich bedankt: 11 Mal
Danksagung erhalten: 4 Mal

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von Tripplex » 03.03.2018, 22:41

Danke das war es.
Ich musste die URL Löschen. Nun bekomme ich auch die Anzeige beim Test.
Und auch die Display Anzeige Läuft Danke.

Die Temp soll von HM-WDS40-TH-I-2 genommen werden. Genügt es Seriennummer Einzufügen im Skript oder muss da was geändert werden
CCU3 mit Cul stick,dazu Intertechno Steckosen.
HM Steuert. Das Haus/Heizung inkl Pool und Robomow RC.

Gluehwurm
Beiträge: 12432
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von Gluehwurm » 03.03.2018, 23:48

Tripplex hat geschrieben:Ich musste die URL Löschen
Nicht nur, habe noch mehr geändert :wink:
Tripplex hat geschrieben:Die Temp soll von HM-WDS40-TH-I-2 genommen werden
Datenpunktliste S.325
http://www.eq-3.de/Downloads/eq3/downlo ... kunden.pdf

Horst
Beiträge: 7
Registriert: 15.03.2015, 00:22

Re: Freie Texte in Statusanzeige HM-Dis-WM55 über ein HM Scr

Beitrag von Horst » 23.04.2018, 00:37

Ich verwende zwei derartige Skripte für ein Display, eines für kurze Tastendrücke und eines für lange Tastendrücke.

Bei kurzem Tastendruck, um eine Systemvariable im Bereich 1 ... 6 (oder 2 ... 5) zu verändern. Der hierbei dargestellte Text ist immer derselbe. Nur die dem Wert der Systemvariable entsprechende Zeile ist farblich hervorgehoben. Diese stellt also eine Menüauswahl bereit, jeder kurze Tastendruck verschiebt die Auswahl um eine Zeile nach oben oder unten! Die Menüpunkte können verschiedene Räume sein (Bad, Flur, Wohnzimmer und Küche). Oder man kann so zwischen 1) "Ist-Temperatur-Anzeige", 2) "Soll-Temperatur-Anzeige", 3) manuell/automatisch-Umschalten der Heizkörperventile, 4) Temperatur erhöhen/erniedrigen auswählen. Oder es könnte die Wahl zwischen verschiedenen Gewerken (Rolläden, Licht und Heizung) sein.

Bei einem langem Tastendruck wird, je nach dem Wert der Systemvarible, dann entweder
- jeweils die Info gemäß der Auswahl angezeigt. Z.B. die aktuelle Ist-Temperaturen aller Räume, Soll-Temperaturen, die Ventilstellung aller Heizkörper, die Rolladenstellung, welche Lichter an sind, ...
- Eine Aktion ausgeführt, z.B. über den Weg des Starts eines Programm der Zentrale. Z.B. alle Heizkörperventile auf "automatisch" schalten. Oder auf "manuell" stellen und eine niedrige Temperatur einstellen. In einigen Fällen ist es bei "Lang-Oben" und "Lang-unten" die selbe Aktion, z.B. Ist-Temperatur der Räume auflisten. In anderen Fällen sind es entgegengesetzte Aktionen bei Lang-oben (höhe Temperatur) und Lang-unten (niedrige Temperatur).

Ein kleine Zusatz-Komfrot-Funktion ist noch, dass bei einem kurzen Tastendruck, wenn länger (z.B. > 6 s) gar kein Tastendruck war, die Systemvariable noch nicht verändert wird. Dann wird das Menü mit dem zuletzt aktiven Eintrag nochmal dargestellt. Hierzu wird noch eine zweite Systemvariable benötigt, die einen Zeitstempel speichert. Alternativ könnte, bei einer längeren Betätigugspause, dananch immer der erste Menüeintrag vorausgewähl sein.

Mit diesem zweistufigen Vorgehen lassen sich mit dem Dispaly recht vielseitige Aufgaben erledigen.
Im Endeffekt wohl ähnlich zu der unter Seitenweise blättern und Aktionen ausführen beschriebenen Lösung.
Zuletzt geändert von Horst am 15.05.2018, 23:17, insgesamt 1-mal geändert.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“