Ansteuern der Statusanzeige mit E-Paper-Display aus Script

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

Moderator: Co-Administratoren

MichaelN
Beiträge: 9646
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1614 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von MichaelN » 09.02.2021, 11:42

Nein. Aber aufgrund des Funktionsprinzips würde ich mal versuchen mehrfach den kompletten Inhalt zu invertieren. Vielleicht "renkt" es sich dann wieder ein.
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 +++

RobMatic
Beiträge: 10
Registriert: 06.02.2021, 14:26
System: CCU
Wohnort: Visselhövede
Hat sich bedankt: 1 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von RobMatic » 11.02.2021, 11:19

MichaelN hat geschrieben:
07.02.2021, 00:44
Ich würde hiermit starten :
viewtopic.php?f=27&t=21710&hilit=Wm55

Wenn das noch zu viel hardcore ist, noch 3 Schritte zurück und erstmal die Tipps für Anfänger durcharbeiten.
Ich habe nun bei eq3 eine Script Dokumentation gefunden, die jedoch wohl auch nur für erfahrene Programmierer geschrieben wurde. Die Beispiele lassen sich bei mir nicht umsetzen. Ich scheitere schon daran, einen einfaches "Hallo" auf dem Display darzustellen. Mit derart einfachen Ausgaben scheint sich hier auch niemand zu beschäftigten... Ich beginne mit dem Gedanken zu spielen, alles wieder zu verkaufen. :(

Code: Alles auswählen

string temp = dom.GetObject("HmIP-RF.<SN>:3.TEXT").State("Hallo");
Viele Grüße

Robert

System:
CCU3, 2x HM, 42x HMIP

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von jp112sdl » 11.02.2021, 11:42

RobMatic hat geschrieben:
11.02.2021, 11:19
die jedoch wohl auch nur für erfahrene Programmierer geschrieben wurde.
Die komplette Script-Engine wird von eQ-3 nicht supported.
RobMatic hat geschrieben:
11.02.2021, 11:19
Mit derart einfachen Ausgaben scheint sich hier auch niemand zu beschäftigten...
...

Code: Alles auswählen

string temp = dom.GetObject("HmIP-RF.<SN>:3.TEXT").State("Hallo");
Nun ja, das ist halt nur "irgendwas Dahergeschriebenes".
Was soll denn deiner Meinung nach als Rückgabe von dom.GetObject("HmIP-RF.<SN>:3.TEXT").State("Hallo"); in die Variable temp geschrieben werden? Und was willst du damit machen?
Desweiteren schreibst du in einem der vorherigen Beiträge, dass du ein HM-Dis-EP-WM55 hast, aber in deinem Skript fängst du was mit "HmIP-RF..." an.

Ich kann mich da nur MichaelN anschließen.
Fang zunächst einmal an, kleine Brötchen zu backen, um überhaupt erstmal die Skriptlogik zu verstehen.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

RobMatic
Beiträge: 10
Registriert: 06.02.2021, 14:26
System: CCU
Wohnort: Visselhövede
Hat sich bedankt: 1 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von RobMatic » 11.02.2021, 12:05

jp112sdl hat geschrieben:
11.02.2021, 11:42
Ich kann mich da nur MichaelN anschließen.
Fang zunächst einmal an, kleine Brötchen zu backen, um überhaupt erstmal die Skriptlogik zu verstehen.
Ich versuche gerade, einen einfachen Text "Hallo" auf dem Display auszugeben. Geht noch einfacher?

Das die Zeile Fehler enthält, ist mir klar. Sonst hätte ich sie nicht gepostet. Meine Erwartungen an dieses Forum, Unterstützung in Form von Erklärungen und Hilfe zu erhalten, um einen Einstieg in die Programmierung zu erhalten, wird hier offensichtlich nicht erfüllt.
Viele Grüße

Robert

System:
CCU3, 2x HM, 42x HMIP

MichaelN
Beiträge: 9646
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1614 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von MichaelN » 11.02.2021, 12:09

Ich glaube es ist etwas vermessen zu glauben, das man über diese Plattform einen Programmier-Lehrgang abhalten kann.
Wir wissen ja noch nicht mal, wo wir Dich "abholen" müssen. Welche Vorkenntnisse hast Du? Basic, XLS-Makros, SPS, anything else?
Was hast Du schon erfolgreich in HM gemacht? Weißt Du das Variablentypen sind und welche wofür verwendet werden? Kennst Du die Unterschiede zwischen Geräten, Kanälen und Datenpunkten? Also, wo starten wir?
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 +++

RobMatic
Beiträge: 10
Registriert: 06.02.2021, 14:26
System: CCU
Wohnort: Visselhövede
Hat sich bedankt: 1 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von RobMatic » 11.02.2021, 12:48

MichaelN hat geschrieben:
11.02.2021, 12:09
Ich glaube es ist etwas vermessen zu glauben, das man über diese Plattform einen Programmier-Lehrgang abhalten kann.
Wir wissen ja noch nicht mal, wo wir Dich "abholen" müssen. Welche Vorkenntnisse hast Du? Basic, XLS-Makros, SPS, anything else?
Was hast Du schon erfolgreich in HM gemacht? Weißt Du das Variablentypen sind und welche wofür verwendet werden? Kennst Du die Unterschiede zwischen Geräten, Kanälen und Datenpunkten? Also, wo starten wir?
1. Ich habe erwähnt, dass ich Einsteiger in das Homematic-System bin wollte ein hier zu Verfügung gestelltes Script nutzen, das bei mir nicht funktioniert hat und habe um Hilfe gebeten. Mir wurde gesagt, ich soll mich mit den Grundlagen beschäftigen. Ok, macht Sinn.
2. Ich beschäftige mich mit einer Zeile Code, die einfach einen Text auf einem Display ausgeben soll. Tut es aber nicht. Und wenn hier nicht einmal der Fehler in einer Zeile erklärt wird, komme ich zu der Erkenntnis, dass hier ein kleiner elitärer Kreis ist, der sein Wissen nur untereinander Teilt und kein Interesse hat, Wissen mit Einsteigern zu teilen.

Ich Programmiere seit 20 Jahren nicht mehr und habe keine Ahnung, wie ich die Hardware anspreche.

Ich wünsche euch noch viel Spaß dabei, euch gegenseitig zu befruchten. Ich fühle mich hier auf jedem Fall nicht erwünscht.
Viele Grüße

Robert

System:
CCU3, 2x HM, 42x HMIP

MichaelN
Beiträge: 9646
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1614 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von MichaelN » 11.02.2021, 13:20

Deine Programmzeile ist so falsch, das man gar nicht weiß, wo man anfangen soll. Kurz gefasst: das WM55 kann man nicht "einfach so" beschreiben. Daher gibt es dieses Mega Skript. Das kann ICH aber auch nicht mal eben so analysieren und per Ferndiagnose helfen. Da hilft es auch nicht beleidigte Leberwurst zu spielen.
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 +++

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: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von FBK2904 » 11.02.2021, 16:24

RobMatic hat geschrieben:
11.02.2021, 12:05
... Ich versuche gerade, einen einfachen Text "Hallo" auf dem Display auszugeben.
RobMatic hat geschrieben:
11.02.2021, 12:48
... Ich beschäftige mich mit einer Zeile Code, die einfach einen Text auf einem Display ausgeben soll...
Ich besitze dieses Display zwar nicht (hatte einmal das HM-Dis-WM55 welches fast genauso angesteuert wird und nun das HmIP-WRCD),
aber wenn man(n) die Logik des Scriptes sich ein paar Mal durchschaut, ist es "eigentlich" nicht schwierig.

Um dir ein Erfolgserlebnis (hoffentlich) liefern zu können, habe es mal so angepasst, dass in Zeile 3 dein Wunsch erfüllt werden müsste :wink: .
-> Im Script in Zeile 48 natürlich die Seriennummer deines HM-Disp-EP-WM55 eintragen und unter "Script testen" starten.

Code: Alles auswählen

!! Universalprogramm zum Füllen des HM-Disp-EP-WM55
!! (c) DrTob
!! Version 1.01



! 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

!Signale
! 0xF0 AUS
! 0xF1 Rotes Blitzen
! 0xF2 Grünes Blitzen
! 0xF3 Orangenes Blitzen

!Seriennummer des HM-Disp-EP-WM55.
string seriennummer = "ABC0123456";

!Variablen für die Texte und Icons
!Nicht verwendete Variablen nicht löschen, sondern auf "" setzen!
!Zeilen-Variablen können 0x80-0x89 für vordefinierte Texte oder bis zu 12 Zeichen Freitext sein. (längere Texte werden abgeschnitten)

! ## Einen Text in Zeile 2 (ohne Icon) ausgeben
string zeile2 = "";
string icon2 = "";

! ## Einen Text in Zeile 3 (ohne Icon) ausgeben
string zeile3 = "Hi, RobMatic";
string icon3 = "";

! ## Einen Text in Zeile 4 (ohne Icon) ausgeben
string zeile4 = "";
string icon4 = "";

! 1 bis 15. 0 = Unendlich
integer wiederholungen = 1;

! es wird zum nächstmöglichen 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);
   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;
      }
      if (icon <> "") {
         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);
Grüssle,
Frank
--------------------------
System: CCU3 (RM 3.75.6.20240316) 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])

kroegi
Beiträge: 48
Registriert: 11.09.2018, 16:01

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von kroegi » 20.12.2021, 11:47

Gibt es eine Möglichkeit die angezeigte Uhrzeit 5min voreilen zu lassen?
Warum?
Das Display aktualisiert sich alle 5min und dann soll die angezeigt Uhrzeit voreilen, sonst würde sie ja 5min nacheilen.
Somit ist man immer pünktlich oder sogar zu früh fertig...das Display soll ins Bad auf Augenhöhe.
Damit mein Mädel lieber zu früh als zu spät mit schön machen fertig ist :-)

Tyfys
Beiträge: 544
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 123 Mal

Re: Ansteuern der Statusanzeige mit E-Paper-Display aus Script

Beitrag von Tyfys » 20.12.2021, 12:14

Wenn du das Skript verwendest, was diese Zeile enthält:

Code: Alles auswählen

string zeile2 = system.Date("%H:%M ");
dann die durch diese ersetzen :

Code: Alles auswählen

string zeile2 = (system.Date().ToTime().ToInteger()+300).ToTime().Format("%H:%M ");
Da werden dann 5 Minuten = 300 Sekunden dazugerechnet
Gruß
Harry

Antworten

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