Ansteuern der Statusanzeige mit E-Paper-Display aus Script
Moderator: Co-Administratoren
Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script
Hallo...ich häng mich auch mal hier rein, weil ähnliche Fragestellung.
Ich möchte mit dem E-Paper Display den Anwesenheitsstatus anzeigen weiß aber nicht wie ich das anstellen soll.
Im Moment schalte ich mit dem Taster den Status auf "Anwesend" oder "nicht Anwesend" was problemlos funktioniert.
Mit dem Erstellen und Einbinden von Scripts habe ich noch keine Erfahrung.
Wäre für eure Hilfe sehr dankbar!
Ich möchte mit dem E-Paper Display den Anwesenheitsstatus anzeigen weiß aber nicht wie ich das anstellen soll.
Im Moment schalte ich mit dem Taster den Status auf "Anwesend" oder "nicht Anwesend" was problemlos funktioniert.
Mit dem Erstellen und Einbinden von Scripts habe ich noch keine Erfahrung.
Wäre für eure Hilfe sehr dankbar!
Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script
Wenn sonst nichts angezeigt werden soll brauchst du gar kein Script. Dafür reicht ein zusammengeklicktes Programm:
Wenn <Systemvariable> = anwesend (bei Änderung)
dann
-> setzte Display auf anwesend
sonst
-> setzte Display auf nicht anwesend.
oder du integrierst das in dein existierendes Programm mit dem du du die Systemvariable setzt.
Im Idealfall hinterlegst du die Texte dafür in den Geräteeinstellungen, dann müssen wesentlich weniger Daten übermittelt werden.
Wenn <Systemvariable> = anwesend (bei Änderung)
dann
-> setzte Display auf anwesend
sonst
-> setzte Display auf nicht anwesend.
oder du integrierst das in dein existierendes Programm mit dem du du die Systemvariable setzt.
Im Idealfall hinterlegst du die Texte dafür in den Geräteeinstellungen, dann müssen wesentlich weniger Daten übermittelt werden.
Es klappt einfach nicht
Hallo, danke für die vielen tollen Tipps und Tricks, die ich hier schon gefunden habe. Aber beim Statusdisplay bekomme ich einfach keine Temperaturanzeige realisiert.
Ich habe das Skript dahingehend angepasst, dass nur in der dritten Zeile die Temperatur und Luftfeuchtigkeit angezeigt werden. Leider macht das Skript rein gar nichts. Die Gerätenummern habe ich genullt. Da stehen schon die richtigen. Ich habe mir auch mit Hilfe dieses Threads die Datenpunkte und die Syntax für die Abfrage des HMIP-Sensors rausgesucht. Leider ohne Erfolg.
Kann evtl. einer von euch Skript-Profis draufschauen, ob ich da Blödsinn gemacht habe? Ich habe die ersten beiden Zeilen einfach auskommentiert. Ich denke daran liegt es nicht.
Vor ein paar Wochen hatte ich es so weit, dass mir einmalig dort die korrekten Werte angezeigt wurde. Jedoch erfolgte keine Aktualisierung, ich habe alles als Trigger probiert. Temperaturänderung, Bewegungsmelder, ja selbst der Sensor der Haustür musste ran.
Ich habe das Skript dahingehend angepasst, dass nur in der dritten Zeile die Temperatur und Luftfeuchtigkeit angezeigt werden. Leider macht das Skript rein gar nichts. Die Gerätenummern habe ich genullt. Da stehen schon die richtigen. Ich habe mir auch mit Hilfe dieses Threads die Datenpunkte und die Syntax für die Abfrage des HMIP-Sensors rausgesucht. Leider ohne Erfolg.
Kann evtl. einer von euch Skript-Profis draufschauen, ob ich da Blödsinn gemacht habe? Ich habe die ersten beiden Zeilen einfach auskommentiert. Ich denke daran liegt es nicht.
Vor ein paar Wochen hatte ich es so weit, dass mir einmalig dort die korrekten Werte angezeigt wurde. Jedoch erfolgte keine Aktualisierung, ich habe alles als Trigger probiert. Temperaturänderung, Bewegungsmelder, ja selbst der Sensor der Haustür musste ran.
Code: Alles auswählen
!! Universalprogramm zum Füllen des HM-Disp-EP-WM55
!! (c) DrTob
!! Version 1.10
! string zeile2 = system.Date("%H:%M ");
! string icon2 = "0x87";
! integer wd = system.Date("%u").ToInteger();
! string wdstr;
! if (wd == 1){wdstr = "Mo";}
! if (wd == 2){wdstr = "Di";}
! if (wd == 3){wdstr = "Mi";}
! if (wd == 4){wdstr = "Do";}
! if (wd == 5){wdstr = "Fr";}
! if (wd == 6){wdstr = "Sa";}
! if (wd == 7){wdstr = "So";}
! string zeile3 = wdstr # system.Date(" %d.%m.%y");
! string icon3 = "";
! Symbole
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung
! Zugriff auf vordefinierte Texte
! 0x80 Textblock 1
! 0x81 Textblock 2
! 0x82 Textblock 3
! 0x83 Textblock 4
! 0x84 Textblock 5
! 0x85 Textblock 6
! 0x86 Textblock 7
! 0x87 Textblock 8
! 0x88 Textblock 9
! 0x89 Textblock 10
! Tonfolgen
! 0xC0 AUS
! 0xC1 LANG LANG
! 0xC2 LANG KURZ
! 0xC3 LANG KURZ KURZ
! 0xC4 KURZ
! 0xC5 KURZ KURZ
! 0xC6 LANG
! 0xC7
! 0xC9
! 0xCA
!Signale
! 0xF0 AUS
! 0xF1 Rotes Blitzen
! 0xF2 Grünes Blitzen
! 0xF3 Orangenes Blitzen
!Seriennummer des HM-Disp-EP-WM55.
string seriennummer = "NEQ000000000";
integer hum = (datapoints.Get("HmIP-RF.000000000000:1.HUMIDITY")).Value();
string temp = (datapoints.Get("HmIP-RF. 000000000000:1.ACTUAL_TEMPERATURE")).Value().ToString(1);
string zeile4 = temp # "C " # hum # "%";
string icon4 = "";
string signal = "0xF0";
string tonfolge = "0xC0";
! 1 bis 15. 0 = Unendlich
integer wiederholungen = 2;
! es wird zum naechstmoeglichen Abstand aufgerundet. Maximum ist 160s.
integer abstand = 10;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! System Routine do not change anything below !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
string splitter="|";
string msgBuffer = zeile2 # splitter # icon2 # "\t";
msgBuffer = msgBuffer # zeile3 # splitter # icon3 # "\t";
msgBuffer = msgBuffer # zeile4 # splitter # icon4;
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";
string bufferLine;
string substEntry;
integer i;
string char;
string line;
string icon;
string command = "0x02,0x0A";
foreach(bufferLine, msgBuffer) {
line = bufferLine.StrValueByIndex(splitter, 0);
icon = bufferLine.StrValueByIndex(splitter, 1);
integer linelength = line.Length();
integer iconlength = icon.Length();
if ((linelength > 0) || (iconlength > 0)) {
command = command # ",0x12";
if ((linelength == 4) && (line.Substr(0,2) == "0x")) {
command = command # "," # line;
i = 12;
}
else {
i = 0;
}
if (linelength > 12) {
linelength = 12;
}
while (i < linelength) {
char = line.Substr(i, 1);
boolean b = true;
foreach(substEntry, substitutions){
if (b == true){
if (char == substEntry.Substr(0,1)){
command = command # substEntry.Substr(1,5);
b = false;
}
}
}
i = i + 1;
}
if (iconlength > 0) {
command = command # ",0x13," # icon;
}
}
command = command # ",0x0A";
}
command = command # ",0x14," # tonfolge # ",0x1C,";
if (wiederholungen < 1){
command = command # "0xDF,0x1D,";
}
else {
if (wiederholungen < 11) {
command = command # "0xD" # (wiederholungen - 1) # ",0x1D,";
}
else {
if (wiederholungen == 11) {
command = command # "0xDA,0x1D,";
}
else {
if (wiederholungen == 12) {
command = command # "0xDB,0x1D,";
}
else {
if (wiederholungen == 13) {
command = command # "0xDC,0x1D,";
}
else {
if (wiederholungen == 14) {
command = command # "0xDD,0x1D,";
}
else {
command = command # "0xDE,0x1D,";
}
}
}
}
}
}
if (abstand <= 10) {
command = command # "0xE0,0x16,";
}
else {
if (abstand <= 100) {
command = command # "0xE" # (abstand - 1 / 10) # ",0x16,";
}
else {
if (abstand <= 110) {
command = command # "0xEA,0x16,";
}
else {
if (abstand <= 120) {
command = command # "0xEB,0x16,";
}
else {
if (abstand <= 130) {
command = command # "0xEC,0x16,";
}
else {
if (abstand <= 140) {
command = command # "0xED,0x16,";
}
else {
if (abstand <= 150) {
command = command # "0xEE,0x16,";
}
else {
command = command # "0xEF,0x16,";
}
}
}
}
}
}
}
command = command # signal # ",0x03";
dom.GetObject("BidCos-RF. # Seriennummer # :3.SUBMIT").State(command);
Aktuell 40 HomeMatic-Komponenten im Einsatz (16 HMwired-Aktoren).
ioBroker auf Raspberry Pi 3
ioBroker auf Raspberry Pi 3
- Black
- Beiträge: 5483
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 424 Mal
- Danksagung erhalten: 1074 Mal
- Kontaktdaten:
Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script
durch dein Auskommentieren sind ein paar Variablen nicht mehr definiert
Black
Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script
Das Problem ist, dass ich im unteren Bereich nur noch Bahnhof verstehe. Die Substitutionen etc. sind mir etwas zu hoch.
Ich habe mal folgenden Abschnitt geändert.
zu
Leider ohne Erfolg. Hast du kurz Zeit mir das Skript entsprechend zu kürzen?
Ich habe mal folgenden Abschnitt geändert.
Code: Alles auswählen
string msgBuffer = zeile2 # splitter # icon2 # "\t";
msgBuffer = msgBuffer # zeile3 # splitter # icon3 # "\t";
msgBuffer = msgBuffer # zeile4 # splitter # icon4;
Code: Alles auswählen
string msgBuffer = msgBuffer # zeile4 # splitter # icon4;
Aktuell 40 HomeMatic-Komponenten im Einsatz (16 HMwired-Aktoren).
ioBroker auf Raspberry Pi 3
ioBroker auf Raspberry Pi 3
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Es klappt einfach nicht
Oh doch, ist der Anfang vom Ende.
Mit
Code: Alles auswählen
string zeile2;string icon2;string wdstr;string zeile3; string icon3;
Änderst du noch mehr ohne zu wissen, was du tust wird es dann auch wieder nichts
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
Re: Es klappt einfach nicht
Ich habe mir jetzt nochmal das Original-Skript geschnappt. Und das läuft durch. Einzig die Temperatur wir mit 23.0C angezeigt. Das ist der Wert der im Skript vorgegeben worden ist. Ich weiß nicht wozu, denn ich möchte natürlich den Wert des Sensors haben.alchy hat geschrieben: ↑09.11.2019, 23:47Code: Alles auswählen
string zeile2;string icon2;string wdstr;string zeile3; string icon3;
Dann habe ich im oberen Bereich deine Zeile eingefügt und die 4 weiteren "alten" Zeilen gelöscht. Läuft auch durch, aber es wird trotzdem nur die Temperatur aus der Zeile angezeigt:
Code: Alles auswählen
string temp = "20.0";
Code: Alles auswählen
!! Universalprogramm zum Füllen des HM-Disp-EP-WM55
!! (c) DrTob
!! Version 1.10
string zeile2;string icon2;string wdstr;string zeile3; string icon3;
integer wd = system.Date("%u").ToInteger();
string wdstr;
if (wd == 1){wdstr = "Mo";}
if (wd == 2){wdstr = "Di";}
if (wd == 3){wdstr = "Mi";}
if (wd == 4){wdstr = "Do";}
if (wd == 5){wdstr = "Fr";}
if (wd == 6){wdstr = "Sa";}
if (wd == 7){wdstr = "So";}
! Symbole
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung
! Zugriff auf vordefinierte Texte
! 0x80 Textblock 1
! 0x81 Textblock 2
! 0x82 Textblock 3
! 0x83 Textblock 4
! 0x84 Textblock 5
! 0x85 Textblock 6
! 0x86 Textblock 7
! 0x87 Textblock 8
! 0x88 Textblock 9
! 0x89 Textblock 10
! Tonfolgen
! 0xC0 AUS
! 0xC1 LANG LANG
! 0xC2 LANG KURZ
! 0xC3 LANG KURZ KURZ
! 0xC4 KURZ
! 0xC5 KURZ KURZ
! 0xC6 LANG
! 0xC7
! 0xC9
! 0xCA
!Signale
! 0xF0 AUS
! 0xF1 Rotes Blitzen
! 0xF2 Grünes Blitzen
! 0xF3 Orangenes Blitzen
!Seriennummer des HM-Disp-EP-WM55.
string seriennummer = "NEQ00000000";
! string temp = dom.GetObject("HmIP-RF.000000000000:1.ACTUAL_TEMPERATURE").Value().ToString(1);
string temp = "20.0";
string zeile4 = temp # "C";
string icon4 = "";
string signal = "0xF0";
string tonfolge = "0xC0";
! 1 bis 15. 0 = Unendlich
integer wiederholungen = 2;
! es wird zum naechstmoeglichen Abstand aufgerundet. Maximum ist 160s.
integer abstand = 10;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! System Routine do not change anything below !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
string splitter="|";
string msgBuffer = zeile2 # splitter # icon2 # "\t";
msgBuffer = msgBuffer # zeile3 # splitter # icon3 # "\t";
msgBuffer = msgBuffer # zeile4 # splitter # icon4;
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";
string bufferLine;
string substEntry;
integer i;
string char;
string line;
string icon;
string command = "0x02,0x0A";
foreach(bufferLine, msgBuffer) {
line = bufferLine.StrValueByIndex(splitter, 0);
icon = bufferLine.StrValueByIndex(splitter, 1);
integer linelength = line.Length();
integer iconlength = icon.Length();
if ((linelength > 0) || (iconlength > 0)) {
command = command # ",0x12";
if ((linelength == 4) && (line.Substr(0,2) == "0x")) {
command = command # "," # line;
i = 12;
}
else {
i = 0;
}
if (linelength > 12) {
linelength = 12;
}
while (i < linelength) {
char = line.Substr(i, 1);
boolean b = true;
foreach(substEntry, substitutions){
if (b == true){
if (char == substEntry.Substr(0,1)){
command = command # substEntry.Substr(1,5);
b = false;
}
}
}
i = i + 1;
}
if (iconlength > 0) {
command = command # ",0x13," # icon;
}
}
command = command # ",0x0A";
}
command = command # ",0x14," # tonfolge # ",0x1C,";
if (wiederholungen < 1){
command = command # "0xDF,0x1D,";
}
else {
if (wiederholungen < 11) {
command = command # "0xD" # (wiederholungen - 1) # ",0x1D,";
}
else {
if (wiederholungen == 11) {
command = command # "0xDA,0x1D,";
}
else {
if (wiederholungen == 12) {
command = command # "0xDB,0x1D,";
}
else {
if (wiederholungen == 13) {
command = command # "0xDC,0x1D,";
}
else {
if (wiederholungen == 14) {
command = command # "0xDD,0x1D,";
}
else {
command = command # "0xDE,0x1D,";
}
}
}
}
}
}
if (abstand <= 10) {
command = command # "0xE0,0x16,";
}
else {
if (abstand <= 100) {
command = command # "0xE" # (abstand - 1 / 10) # ",0x16,";
}
else {
if (abstand <= 110) {
command = command # "0xEA,0x16,";
}
else {
if (abstand <= 120) {
command = command # "0xEB,0x16,";
}
else {
if (abstand <= 130) {
command = command # "0xEC,0x16,";
}
else {
if (abstand <= 140) {
command = command # "0xED,0x16,";
}
else {
if (abstand <= 150) {
command = command # "0xEE,0x16,";
}
else {
command = command # "0xEF,0x16,";
}
}
}
}
}
}
}
command = command # signal # ",0x03";
dom.GetObject("BidCos-RF." # seriennummer # ":3.SUBMIT").State(command);
Aktuell 40 HomeMatic-Komponenten im Einsatz (16 HMwired-Aktoren).
ioBroker auf Raspberry Pi 3
ioBroker auf Raspberry Pi 3
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script
Ich habe dir geantwortet bezogen auf dein gepostetes Script und DAFÜR die mögliche Lösung gepostet.
Du fragst etwas, andere antworten und dann ist es deine Aufgabe die Antwort zu lesen und umzusetzen.
Wieso denkst du, das es hilfreich ist, wenn du einfach Zeilen aus dem Script auskommentierst oder einfach mal ein paar löschst?
Wie auch Black schon bemerkte:
Wenn du jetzt immer hin und her springst in den Versionen hilft das in keinster Weise.
Aber mach mal.
Alchy
Du fragst etwas, andere antworten und dann ist es deine Aufgabe die Antwort zu lesen und umzusetzen.
Wieso denkst du, das es hilfreich ist, wenn du einfach Zeilen aus dem Script auskommentierst oder einfach mal ein paar löschst?
Wie auch Black schon bemerkte:
dafür meine Zeile als Reparatur / Hilfeversuch für das zu dem Zeitpunkt gepostete Script.
Wenn du jetzt immer hin und her springst in den Versionen hilft das in keinster Weise.
Aber mach mal.
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script
Ja, das Problem ist, dass ich vermutlich schon zu viel zerstört hatte. Deswegen bin ich den Weg zurück gegangen. Und mit deiner Zeile bleiben schon mal die oberen beiden Zeilen unangetastet, sodass das Skript nur noch die dritte ändert. Das hat schon mal geholfen.
Ich hatte es natürlich zuvor mit meinem angepassten Skript probiert. Ohne Erfolg. Ich glaube das hatte ich getötet. Es ist nach so vielen Wochen der Misserfolge eher Trial & Error. Deswegen hatte ich hier versucht Hilfe zu bekommen. Und ehrlich gesagt wollte ich euch nicht zumuten mein verkorkstes Skript mit dem Original abzugleichen.
Ich habe ein kurzes Skript zum Testen erstellt um zu schauen ob überhaupt Daten gelesen werden können. Und ja das funktioniert.
Nach ein wenig weitergrübeln habe ich die Fehler gefunden. Hier das fertige Skript:
Ich hatte es natürlich zuvor mit meinem angepassten Skript probiert. Ohne Erfolg. Ich glaube das hatte ich getötet. Es ist nach so vielen Wochen der Misserfolge eher Trial & Error. Deswegen hatte ich hier versucht Hilfe zu bekommen. Und ehrlich gesagt wollte ich euch nicht zumuten mein verkorkstes Skript mit dem Original abzugleichen.
Ich habe ein kurzes Skript zum Testen erstellt um zu schauen ob überhaupt Daten gelesen werden können. Und ja das funktioniert.
Code: Alles auswählen
integer hum = (datapoints.Get("HmIP-RF.0000000000:1.HUMIDITY")).Value();
string temp = dom.GetObject("HmIP-RF.0000000000:1.ACTUAL_TEMPERATURE").Value().ToString(1);
WriteLine(temp # hum);
Code: Alles auswählen
!! Programm zum Füllen des HM-Disp-EP-WM55 mit Temperatur und Luftfeuchtigkeit in Zeile 3
!! basiert auf (c) DrTob, Version 1.10, mit Unterstützung von alchy
string zeile2;string icon2;string wdstr;string zeile3; string icon3;
integer wd = system.Date("%u").ToInteger();
string wdstr;
if (wd == 1){wdstr = "Mo";}
if (wd == 2){wdstr = "Di";}
if (wd == 3){wdstr = "Mi";}
if (wd == 4){wdstr = "Do";}
if (wd == 5){wdstr = "Fr";}
if (wd == 6){wdstr = "Sa";}
if (wd == 7){wdstr = "So";}
! Symbole
! 0x80 AUS
! 0x81 EIN
! 0x82 OFFEN
! 0x83 geschlossen
! 0x84 fehler
! 0x85 alles ok
! 0x86 information
! 0x87 neue nachricht
! 0x88 servicemeldung
! Zugriff auf vordefinierte Texte
! 0x80 Textblock 1
! 0x81 Textblock 2
! 0x82 Textblock 3
! 0x83 Textblock 4
! 0x84 Textblock 5
! 0x85 Textblock 6
! 0x86 Textblock 7
! 0x87 Textblock 8
! 0x88 Textblock 9
! 0x89 Textblock 10
! Tonfolgen
! 0xC0 AUS
! 0xC1 LANG LANG
! 0xC2 LANG KURZ
! 0xC3 LANG KURZ KURZ
! 0xC4 KURZ
! 0xC5 KURZ KURZ
! 0xC6 LANG
! 0xC7
! 0xC9
! 0xCA
!Signale
! 0xF0 AUS
! 0xF1 Rotes Blitzen
! 0xF2 Grünes Blitzen
! 0xF3 Orangenes Blitzen
!Seriennummer des HM-Disp-EP-WM55.
string seriennummer = "NEQ00000000";
integer hum = (datapoints.Get("HmIP-RF.00000000:1.HUMIDITY")).Value();
string temp = dom.GetObject("HmIP-RF.00000000:1.ACTUAL_TEMPERATURE").Value().ToString(1);
string zeile4 = temp # "C " # hum # "%";
string icon4 = "0x86";
string signal = "0xF0";
string tonfolge = "0xC0";
! 1 bis 15. 0 = Unendlich
integer wiederholungen = 2;
! es wird zum naechstmoeglichen Abstand aufgerundet. Maximum ist 160s.
integer abstand = 10;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! System Routine do not change anything below !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
string splitter="|";
string msgBuffer = zeile2 # splitter # icon2 # "\t";
msgBuffer = msgBuffer # zeile3 # splitter # icon3 # "\t";
msgBuffer = msgBuffer # zeile4 # splitter # icon4;
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";
string bufferLine;
string substEntry;
integer i;
string char;
string line;
string icon;
string command = "0x02,0x0A";
foreach(bufferLine, msgBuffer) {
line = bufferLine.StrValueByIndex(splitter, 0);
icon = bufferLine.StrValueByIndex(splitter, 1);
integer linelength = line.Length();
integer iconlength = icon.Length();
if ((linelength > 0) || (iconlength > 0)) {
command = command # ",0x12";
if ((linelength == 4) && (line.Substr(0,2) == "0x")) {
command = command # "," # line;
i = 12;
}
else {
i = 0;
}
if (linelength > 12) {
linelength = 12;
}
while (i < linelength) {
char = line.Substr(i, 1);
boolean b = true;
foreach(substEntry, substitutions){
if (b == true){
if (char == substEntry.Substr(0,1)){
command = command # substEntry.Substr(1,5);
b = false;
}
}
}
i = i + 1;
}
if (iconlength > 0) {
command = command # ",0x13," # icon;
}
}
command = command # ",0x0A";
}
command = command # ",0x14," # tonfolge # ",0x1C,";
if (wiederholungen < 1){
command = command # "0xDF,0x1D,";
}
else {
if (wiederholungen < 11) {
command = command # "0xD" # (wiederholungen - 1) # ",0x1D,";
}
else {
if (wiederholungen == 11) {
command = command # "0xDA,0x1D,";
}
else {
if (wiederholungen == 12) {
command = command # "0xDB,0x1D,";
}
else {
if (wiederholungen == 13) {
command = command # "0xDC,0x1D,";
}
else {
if (wiederholungen == 14) {
command = command # "0xDD,0x1D,";
}
else {
command = command # "0xDE,0x1D,";
}
}
}
}
}
}
if (abstand <= 10) {
command = command # "0xE0,0x16,";
}
else {
if (abstand <= 100) {
command = command # "0xE" # (abstand - 1 / 10) # ",0x16,";
}
else {
if (abstand <= 110) {
command = command # "0xEA,0x16,";
}
else {
if (abstand <= 120) {
command = command # "0xEB,0x16,";
}
else {
if (abstand <= 130) {
command = command # "0xEC,0x16,";
}
else {
if (abstand <= 140) {
command = command # "0xED,0x16,";
}
else {
if (abstand <= 150) {
command = command # "0xEE,0x16,";
}
else {
command = command # "0xEF,0x16,";
}
}
}
}
}
}
}
command = command # signal # ",0x03";
dom.GetObject("BidCos-RF." # seriennummer # ":3.SUBMIT").State(command);
Aktuell 40 HomeMatic-Komponenten im Einsatz (16 HMwired-Aktoren).
ioBroker auf Raspberry Pi 3
ioBroker auf Raspberry Pi 3
Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script
Das ist genau das was ich suche. Leider läuft das Skript bei mir nicht durch. Ich habe lediglich die Serial von meinem E-Paper Display angepasst. Sowie folgende beiden Zeilen:l1ss1 hat geschrieben: ↑10.11.2019, 00:47Ja, das Problem ist, dass ich vermutlich schon zu viel zerstört hatte. Deswegen bin ich den Weg zurück gegangen. Und mit deiner Zeile bleiben schon mal die oberen beiden Zeilen unangetastet, sodass das Skript nur noch die dritte ändert. Das hat schon mal geholfen.
Ich hatte es natürlich zuvor mit meinem angepassten Skript probiert. Ohne Erfolg. Ich glaube das hatte ich getötet. Es ist nach so vielen Wochen der Misserfolge eher Trial & Error. Deswegen hatte ich hier versucht Hilfe zu bekommen. Und ehrlich gesagt wollte ich euch nicht zumuten mein verkorkstes Skript mit dem Original abzugleichen.
Ich habe ein kurzes Skript zum Testen erstellt um zu schauen ob überhaupt Daten gelesen werden können. Und ja das funktioniert.Nach ein wenig weitergrübeln habe ich die Fehler gefunden. Hier das fertige Skript:Code: Alles auswählen
integer hum = (datapoints.Get("HmIP-RF.0000000000:1.HUMIDITY")).Value(); string temp = dom.GetObject("HmIP-RF.0000000000:1.ACTUAL_TEMPERATURE").Value().ToString(1); WriteLine(temp # hum);
Code: Alles auswählen
!! Programm zum Füllen des HM-Disp-EP-WM55 mit Temperatur und Luftfeuchtigkeit in Zeile 3 !! basiert auf (c) DrTob, Version 1.10, mit Unterstützung von alchy string zeile2;string icon2;string wdstr;string zeile3; string icon3; integer wd = system.Date("%u").ToInteger(); string wdstr; if (wd == 1){wdstr = "Mo";} if (wd == 2){wdstr = "Di";} if (wd == 3){wdstr = "Mi";} if (wd == 4){wdstr = "Do";} if (wd == 5){wdstr = "Fr";} if (wd == 6){wdstr = "Sa";} if (wd == 7){wdstr = "So";} ! Symbole ! 0x80 AUS ! 0x81 EIN ! 0x82 OFFEN ! 0x83 geschlossen ! 0x84 fehler ! 0x85 alles ok ! 0x86 information ! 0x87 neue nachricht ! 0x88 servicemeldung ! Zugriff auf vordefinierte Texte ! 0x80 Textblock 1 ! 0x81 Textblock 2 ! 0x82 Textblock 3 ! 0x83 Textblock 4 ! 0x84 Textblock 5 ! 0x85 Textblock 6 ! 0x86 Textblock 7 ! 0x87 Textblock 8 ! 0x88 Textblock 9 ! 0x89 Textblock 10 ! Tonfolgen ! 0xC0 AUS ! 0xC1 LANG LANG ! 0xC2 LANG KURZ ! 0xC3 LANG KURZ KURZ ! 0xC4 KURZ ! 0xC5 KURZ KURZ ! 0xC6 LANG ! 0xC7 ! 0xC9 ! 0xCA !Signale ! 0xF0 AUS ! 0xF1 Rotes Blitzen ! 0xF2 Grünes Blitzen ! 0xF3 Orangenes Blitzen !Seriennummer des HM-Disp-EP-WM55. string seriennummer = "NEQ00000000"; integer hum = (datapoints.Get("HmIP-RF.00000000:1.HUMIDITY")).Value(); string temp = dom.GetObject("HmIP-RF.00000000:1.ACTUAL_TEMPERATURE").Value().ToString(1); string zeile4 = temp # "C " # hum # "%"; string icon4 = "0x86"; string signal = "0xF0"; string tonfolge = "0xC0"; ! 1 bis 15. 0 = Unendlich integer wiederholungen = 2; ! es wird zum naechstmoeglichen Abstand aufgerundet. Maximum ist 160s. integer abstand = 10; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! System Routine do not change anything below ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! string splitter="|"; string msgBuffer = zeile2 # splitter # icon2 # "\t"; msgBuffer = msgBuffer # zeile3 # splitter # icon3 # "\t"; msgBuffer = msgBuffer # zeile4 # splitter # icon4; 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"; string bufferLine; string substEntry; integer i; string char; string line; string icon; string command = "0x02,0x0A"; foreach(bufferLine, msgBuffer) { line = bufferLine.StrValueByIndex(splitter, 0); icon = bufferLine.StrValueByIndex(splitter, 1); integer linelength = line.Length(); integer iconlength = icon.Length(); if ((linelength > 0) || (iconlength > 0)) { command = command # ",0x12"; if ((linelength == 4) && (line.Substr(0,2) == "0x")) { command = command # "," # line; i = 12; } else { i = 0; } if (linelength > 12) { linelength = 12; } while (i < linelength) { char = line.Substr(i, 1); boolean b = true; foreach(substEntry, substitutions){ if (b == true){ if (char == substEntry.Substr(0,1)){ command = command # substEntry.Substr(1,5); b = false; } } } i = i + 1; } if (iconlength > 0) { command = command # ",0x13," # icon; } } command = command # ",0x0A"; } command = command # ",0x14," # tonfolge # ",0x1C,"; if (wiederholungen < 1){ command = command # "0xDF,0x1D,"; } else { if (wiederholungen < 11) { command = command # "0xD" # (wiederholungen - 1) # ",0x1D,"; } else { if (wiederholungen == 11) { command = command # "0xDA,0x1D,"; } else { if (wiederholungen == 12) { command = command # "0xDB,0x1D,"; } else { if (wiederholungen == 13) { command = command # "0xDC,0x1D,"; } else { if (wiederholungen == 14) { command = command # "0xDD,0x1D,"; } else { command = command # "0xDE,0x1D,"; } } } } } } if (abstand <= 10) { command = command # "0xE0,0x16,"; } else { if (abstand <= 100) { command = command # "0xE" # (abstand - 1 / 10) # ",0x16,"; } else { if (abstand <= 110) { command = command # "0xEA,0x16,"; } else { if (abstand <= 120) { command = command # "0xEB,0x16,"; } else { if (abstand <= 130) { command = command # "0xEC,0x16,"; } else { if (abstand <= 140) { command = command # "0xED,0x16,"; } else { if (abstand <= 150) { command = command # "0xEE,0x16,"; } else { command = command # "0xEF,0x16,"; } } } } } } } command = command # signal # ",0x03"; dom.GetObject("BidCos-RF." # seriennummer # ":3.SUBMIT").State(command);
integer hum = (datapoints.Get("HmIP-STHO.000ED8A90000000:1.HUMIDITY")).Value();
string temp = dom.GetObject("HmIP-STHO.000ED8A90000000:1.ACTUAL_TEMPERATURE").Value().ToString(1);
Habt Ihr einen Tipp für mich? Ich möchte lediglich in Zeile drei die Werte von dem ausgelesenden Thermostat anzeigen :-/