[Modul] openHASP

Ich hatte irgendwo einen Artikel gelesen, dass der Einbrennschutz immer aktiv sein sollte, wenn nichts angezeigt wird, also auch bei Displaybeleuchtung aus.

Das macht mein Script auch noch so, meist sieht man das nicht, da die Displaybeleuchtung beim Einschalten etwas Zeit brauch, in der der Inhalt schon wieder korrekt dargestellt wird. Manchmal braucht die Uhrzeit noch einen Moment länger.

Also einmal nach einem Neustart bzw. Online gehen aufrufen und fertig? Verstehe ich das richtig?

Gruß Heiko

Dann hast du einen bunt verpixelten Bildschirm :wink:.

Wenn Bildschirm an, antiburn aus und umgekehrt.

Aha, ich verstehen - Danke :slight_smile:

Beim Drücken auf das Display geht Antiburn automatisch aus.

Teilweise ist das Display jedoch schneller an als das Antiburn aus, was erst mal etwas buggy aussieht.
Vielleicht schalte ich es einfach nachts an und wenn aus dann aus…

Beispiel für eine analoge Uhr:

// Analog Clock
{„page“:1,„id“:0,„bg_color“:„#000000“,„bg_grad_color“:„#222222“,„text_color“:„#000000“,„radius“:0,„border_side“:0}
{„page“:1,„comment“:" ---- hours scale ----„}
{„page“:1,„id“:84,„obj“:„linemeter“,„x“:70,„y“:45,„w“:340,„h“:340,„min“:1,„max“:12,„val“:0,„line_count“:13,„angle“:360,„bg_opa“:0,„hidden“:0,„scale_width“:20,„hidden“:0,„border_width“:0,„scale_end_color60“:“#666666"}

{„page“:1,„comment“:" ---- minutes scale ----„}
{„page“:1,„id“:85,„obj“:„linemeter“,„x“:70,„y“:45,„w“:360,„h“:360,„min“:1,„max“:60,„val“:0,„line_count“:61,„angle“:360,„bg_opa“:0,„rotation“:0,„scale_width“:6,„hidden“:0,„border_width“:0,„scale_end_color60“:“#666666"}

{„page“:1,„comment“:" ---- Numbers ----„}
{„page“:1,„id“:86,„obj“:„gauge“,„x“:100,„y“:75,„w“:280,„h“:280,„min“:1,„max“:12,„val“:1,„critical_value“:30,„label_count“:12,„line_count“:0,„border_width“:0,„bg_opa“:0,„line_width10“:0,„line_rounded10“:1,„pad_inner“:1,„text_font“:32,„angle“:330,„rotation“:195,„hidden“:0,„line_width60“:0,„bg_opa10“:255,„text_color“:“#888888",„bg_color10“:„#444444“}

{„page“:1,„comment“:" ---- Hours ----„}
{„page“:1,„id“:81,„obj“:„gauge“,„x“:135,„y“:110,„w“:210,„h“:210,„min“:0,„max“:720,„val“:11,„label_count“:0,„line_count“:0,„border_width“:0,„bg_opa“:0,„line_width10“:14,„line_rounded10“:1,„text_font“:30,„angle“:360,„rotation“:180,„hidden“:0,„line_width60“:0,„line_color10“:“#666666",„bg_opa10“:0,„line_opa10“:255}

{„page“:1,„comment“:" ---- Minutes ----„}
{„page“:1,„id“:82,„obj“:„gauge“,„x“:85,„y“:60,„w“:310,„h“:310,„min“:0,„max“:60,„val“:10,„label_count“:0,„line_count“:0,„border_width“:0,„bg_opa“:0,„line_width10“:8,„line_roaunded10“:1,„pad_inner10“:0,„text_font“:30,„angle“:360,„rotation“:180,„hidden“:0,„line_width60“:0,„line_color10“:“#999999",„bg_opa10“:0,„line_opa10“:255}

{„page“:1,„comment“:" ---- Seconds ----„}
{„page“:1,„id“:83,„obj“:„gauge“,„x“:85,„y“:60,„w“:310,„h“:310,„min“:0,„max“:60,„val“:45,„label_count“:0,„line_count“:0,„border_width“:0,„bg_opa“:0,„line_width10“:6,„line_rounded10“:1,„pad_inner10“:10,„text_font“:30,„angle“:360,„rotation“:180,„hidden“:0,„line_width60“:0,„line_color10“:“#FF0000",„bg_opa10“:0,„line_opa10“:128}

Und ein PHP Script um eine 24 Std auf 12 Std Umrechnung macht:

$wert=GetValueInteger(38145);
//$wert=14;
//echo $wert;
$Minuten=getvaluestring(16415);
//echo $Minuten;
If ($wert >12)
{
    $wert=$wert-12;
}
SetValueString(28040,$wert*60+$Minuten);

Wer die Zahlen nicht braucht löscht die Zeile.
Raumdisplay Zuweisung als Bild

4 „Gefällt mir“

Hallo, ich hatte noch einen alten ESP32 mit Display rumliegen und habe da openhasp installiert. Das Modul habe ich auch installiert und das Gerätchen wird als online angezeigt. Leider verstehe ich nicht, wo ich diese json commands reinpacken muss? Wäre es nicht möglich ein einfaches HowTo für die ersten Schritte mitzugeben? Vielen Dank :slight_smile:

Die JSON Dateien packst du auf das Display (dort ist ein Filemanager drauf)

Wenn du mein Modul verwendest brauchst du das aber gar nicht sondern da werden die Elemente im Symcon erzeugt und drauf gepusht :wink:

Ok, ich habe mal einen Switch hinzugefügt:

dann „Displayinhalt neu schreiben“, dabei erhalte ich Meldungen

MSGR: Command ‚‘ not found

und das Display zeigt nur den Hostnamen an

Ich komme leider nicht weiter, muss ich als Laie davon ausgehen, dass das Thema für mich nicht geeignet ist? Trotzdem vielleicht noch kurz was ich gemacht habe:

  • openHASP auf dem Display installiert
  • ich versuche es mit dem MQTT-Server, welchen ich auch für meine anderen ESP-Projekte verwende
  • diesen MQTT-Server in den MQTT-Settings des Displays eintragen
  • als weiteren Versuch habe ich in der config.json noch folgendes topic hinzugefügt:
  • das openHASP Modul installiert
  • eine openHASP Instanz angelegt, den Gerätenamen eingetragen und «Display Inhalt schreiben» aktiviert

Es gibt es ja unter «Automatischer Erstellung der Visualisiereung» schon einen Eintrag «Label», sollte der nun nicht automatisch ans Display gesendet und angezeigt werden? Im Moment wird mir nur der hostname angezeigt.

Das Display ist online und die Ereignisse wie z.B. ein Touch auf das Display laufen in IPS sauber rein, aber mir ist nicht klar, wie ich etwas ans Display senden kann?

Soweit sollte das passen.
In der Instanz hast du den Displaynamen auch als „plate“ angegeben?

Port für MQTT ist 1024 ?

Default ist 1883.
Kommt drauf an was du in Symcon als MQTT Server hinterlegt hast

Genau, der Gerätename ist „plate“ und ja, die MQTT-Server Instanz hört auf das Port 1024

Der serial-Monitor zeigt das, wenn ich in der openHASP-Instanz den Buton „Displayinhalt neu schreiben“ klicke:

[03:08:27.081][54260/57292 5][58652/58780 1] MSGR: Command ‚‘ not found =>
[03:08:29.047][54260/57292 5][58652/58780 1] MQTT RCV: hasp/plate/command/ = clearpage all
[03:08:29.061][54260/57292 5][58652/58780 1] MSGR: Command ‚‘ not found => clearpage all
[03:08:29.117][54260/57092 4][58652/58780 1] MQTT RCV: hasp/plate/command/ = jsonl {„obj“:„label“,„page“:0,„id“:200,„x“:10,„y“:0,„h“:40,„w“:225,„align“:0,„text_color“:„#FFFFFF“,„template“:„\ue0ed %d.%m.%Y“}
[03:08:29.141][54260/57292 5][58652/58780 1] MSGR: Command ‚‘ not found => jsonl {„obj“:„label“,„page“:0,„id“:200,„x“:10,„y“:0,„h“:40,„w“:225,„align“:0,„text_color“:„#FFFFFF“,„template“:„\ue0ed %d.%m.%Y“}
[03:08:29.187][54260/57292 5][58652/58780 1] MQTT RCV: hasp/plate/command/ = jsonl {„obj“:„label“,„page“:0,„id“:201,„x“:245,„y“:0,„h“:40,„w“:225,„align“:„right“,„text_color“:„#FFFFFF“,„template“:„\ue150 %H:%M“}
[03:08:29.211][54260/57292 5][58652/58780 1] MSGR: Command ‚‘ not found => jsonl {„obj“:„label“,„page“:0,„id“:201,„x“:245,„y“:0,„h“:40,„w“:225,„align“:„right“,„text_color“:„#FFFFFF“,„template“:„\ue150 %H:%M“}
[03:08:29.261][54260/57292 5][58652/58780 1] MQTT RCV: hasp/plate/command/ = jsonl {„obj“:„btn“,„page“:0,„id“:10,„x“:10,„y“:420,„h“:60,„w“:225,„toggle“:false,„text_font“:32,„action“:{„down“:„page prev“},„mode“:„break“,„align“:1,„text_color“:„#FFFFFF“,„text“:„\ue04d“}
[03:08:29.290][54260/57292 5][58652/58780 1] MSGR: Command ‚‘ not found => jsonl {„obj“:„btn“,„page“:0,„id“:10,„x“:10,„y“:420,„h“:60,„w“:225,„toggle“:false,„text_font“:32,„action“:{„down“:„page prev“},„mode“:„break“,„align“:1,„text_color“:„#FFFFFF“,„text“:„\ue04d“}
[03:08:29.338][54260/57292 5][58652/58780 1] MQTT RCV: hasp/plate/command/ = jsonl {„obj“:„btn“,„page“:0,„id“:11,„x“:245,„y“:420,„h“:60,„w“:225,„toggle“:false,„text_font“:32,„action“:{„down“:„page next“},„mode“:„break“,„align“:1,„text_color“:„#FFFFFF“,„text“:„\ue054“}
[03:08:29.367][54260/57292 5][58652/58780 1] MSGR: Command ‚‘ not found => jsonl {„obj“:„btn“,„page“:0,„id“:11,„x“:245,„y“:420,„h“:60,„w“:225,„toggle“:false,„text_font“:32,„action“:{„down“:„page next“},„mode“:„break“,„align“:1,„text_color“:„#FFFFFF“,„text“:„\ue054“}
[03:08:29.418][54260/57292 5][58652/58780 1] MQTT RCV: hasp/plate/command/ = jsonl {„obj“:„label“,„page“:1,„id“:1,„x“:10,„y“:50,„h“:60,„w“:460,„align“:1,„text“:„#32C9AC Symcon“,„text_font“:50}
[03:08:29.440][54260/57292 5][58652/58780 1] MSGR: Command ‚‘ not found => jsonl {„obj“:„label“,„page“:1,„id“:1,„x“:10,„y“:50,„h“:60,„w“:460,„align“:1,„text“:„#32C9AC Symcon“,„text_font“:50}
[03:08:29.480][54260/57292 5][58652/58780 1] MQTT RCV: hasp/plate/command/ = jsonl {„page“:1,„id“:0,„prev“:1}
[03:08:29.496][54260/57292 5][58652/58780 1] MSGR: Command ‚‘ not found => jsonl {„page“:1,„id“:0,„prev“:1}
[03:08:29.534][54260/57292 5][58652/58780 1] MQTT RCV: hasp/plate/command/ = jsonl {„page“:1,„id“:0,„next“:1}
[03:08:29.550][54260/57292 5][58652/58780 1] MSGR: Command ‚‘ not found => jsonl {„page“:1,„id“:0,„next“:1}

Wie werden denn die Statements in die pages.jsonl gepusht? Mein IPS läuft auf Docker, könnte es sein, dass mir auf dem OS noch ein executable fehlt, was ich noch installieren muss? Oder könntest du mir eine PHP Codezeile zeigen, mit der ich versuchen könnte etwas einfaches in die pages.jsonl zu pushen?

Bei diesem Modul wird on the fly über MQTT gepusht, was du im Modul eingetragen hast.
Die pages.jsonl wir nur während des Display Starts kurz verwendet, bevor das Modul den Inhalt überschreibt.

Genau! Die Pages.json wird gar nicht geändert.
Sobald das Display startet bekommt der Server das in einer MQTT-Nachricht mit und die einzelnen Objekte werden wieder über MQTT erstellt.
Das ganze ist nicht persistent, hat aber den Vorteil dass man Updates nur in Symcon machen muss und nicht auf beiden Seiten.

Das funktioniert bei dem Display eigentlich auch alles sehr schmerzfrei.
Ich vermute mal wenn es Probleme gibt passt irgendwas mit dem MQTT Server bzw dem Topic nicht.

Nutzt ihr auch eine IPS MQTT-Server Instanz? Ich habe noch eine dedizierte MQTT-Server Instanz nur für dieses Diaply angelegt, mit dem default Port 1883, das hatte leider auch nichts gebracht.
Hier noch ein Debug von dieser Instanz, beim klicken auf den Buton „Displayinhalt neu schreiben“:

TXT: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 0"hasp/plate/command/clearpage all
HEX: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 30 22 00 13 68 61 73 70 2F 70 6C 61 74 65 2F 63 6F 6D 6D 61 6E 64 2F 63 6C 65 61 72 70 61 67 65 20 61 6C 6C
TXT: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 0�hasp/plate/command/jsonl {„obj“:„label“,„page“:0,„id“:200,„x“:10,„y“:0,„h“:40,„w“:105,„align“:0,„text_color“:„#FFFFFF“,„template“:„\ue0ed %d.%m.%Y“}
HEX: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 30 96 01 00 13 68 61 73 70 2F 70 6C 61 74 65 2F 63 6F 6D 6D 61 6E 64 2F 6A 73 6F 6E 6C 20 7B 22 6F 62 6A 22 3A 22 6C 61 62 65 6C 22 2C 22 70 61 67 65 22 3A 30 2C 22 69 64 22 3A 32 30 30 2C 22 78 22 3A 31 30 2C 22 79 22 3A 30 2C 22 68 22 3A 34 30 2C 22 77 22 3A 31 30 35 2C 22 61 6C 69 67 6E 22 3A 30 2C 22 74 65 78 74 5F 63 6F 6C 6F 72 22 3A 22 23 46 46 46 46 46 46 22 2C 22 74 65 6D 70 6C 61 74 65 22 3A 22 5C 75 65 30 65 64 20 25 64 2E 25 6D 2E 25 59 22 7D
TXT: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 0�hasp/plate/command/jsonl {„obj“:„label“,„page“:0,„id“:201,„x“:125,„y“:0,„h“:40,„w“:105,„align“:„right“,„text_color“:„#FFFFFF“,„template“:„\ue150 %H:%M“}
HEX: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 30 9A 01 00 13 68 61 73 70 2F 70 6C 61 74 65 2F 63 6F 6D 6D 61 6E 64 2F 6A 73 6F 6E 6C 20 7B 22 6F 62 6A 22 3A 22 6C 61 62 65 6C 22 2C 22 70 61 67 65 22 3A 30 2C 22 69 64 22 3A 32 30 31 2C 22 78 22 3A 31 32 35 2C 22 79 22 3A 30 2C 22 68 22 3A 34 30 2C 22 77 22 3A 31 30 35 2C 22 61 6C 69 67 6E 22 3A 22 72 69 67 68 74 22 2C 22 74 65 78 74 5F 63 6F 6C 6F 72 22 3A 22 23 46 46 46 46 46 46 22 2C 22 74 65 6D 70 6C 61 74 65 22 3A 22 5C 75 65 31 35 30 20 25 48 3A 25 4D 22 7D
TXT: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 0�hasp/plate/command/jsonl {„obj“:„btn“,„page“:0,„id“:10,„x“:10,„y“:260,„h“:60,„w“:105,„toggle“:false,„text_font“:32,„action“:{„down“:„page prev“},„mode“:„break“,„align“:1,„text_color“:„#FFFFFF“,„text“:„\ue04d“}
HEX: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 30 D3 01 00 13 68 61 73 70 2F 70 6C 61 74 65 2F 63 6F 6D 6D 61 6E 64 2F 6A 73 6F 6E 6C 20 7B 22 6F 62 6A 22 3A 22 62 74 6E 22 2C 22 70 61 67 65 22 3A 30 2C 22 69 64 22 3A 31 30 2C 22 78 22 3A 31 30 2C 22 79 22 3A 32 36 30 2C 22 68 22 3A 36 30 2C 22 77 22 3A 31 30 35 2C 22 74 6F 67 67 6C 65 22 3A 66 61 6C 73 65 2C 22 74 65 78 74 5F 66 6F 6E 74 22 3A 33 32 2C 22 61 63 74 69 6F 6E 22 3A 7B 22 64 6F 77 6E 22 3A 22 70 61 67 65 20 70 72 65 76 22 7D 2C 22 6D 6F 64 65 22 3A 22 62 72 65 61 6B 22 2C 22 61 6C 69 67 6E 22 3A 31 2C 22 74 65 78 74 5F 63 6F 6C 6F 72 22 3A 22 23 46 46 46 46 46 46 22 2C 22 74 65 78 74 22 3A 22 5C 75 65 30 34 64 22 7D
TXT: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 0�hasp/plate/command/jsonl {„obj“:„btn“,„page“:0,„id“:11,„x“:125,„y“:260,„h“:60,„w“:105,„toggle“:false,„text_font“:32,„action“:{„down“:„page next“},„mode“:„break“,„align“:1,„text_color“:„#FFFFFF“,„text“:„\ue054“}
HEX: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 30 D4 01 00 13 68 61 73 70 2F 70 6C 61 74 65 2F 63 6F 6D 6D 61 6E 64 2F 6A 73 6F 6E 6C 20 7B 22 6F 62 6A 22 3A 22 62 74 6E 22 2C 22 70 61 67 65 22 3A 30 2C 22 69 64 22 3A 31 31 2C 22 78 22 3A 31 32 35 2C 22 79 22 3A 32 36 30 2C 22 68 22 3A 36 30 2C 22 77 22 3A 31 30 35 2C 22 74 6F 67 67 6C 65 22 3A 66 61 6C 73 65 2C 22 74 65 78 74 5F 66 6F 6E 74 22 3A 33 32 2C 22 61 63 74 69 6F 6E 22 3A 7B 22 64 6F 77 6E 22 3A 22 70 61 67 65 20 6E 65 78 74 22 7D 2C 22 6D 6F 64 65 22 3A 22 62 72 65 61 6B 22 2C 22 61 6C 69 67 6E 22 3A 31 2C 22 74 65 78 74 5F 63 6F 6C 6F 72 22 3A 22 23 46 46 46 46 46 46 22 2C 22 74 65 78 74 22 3A 22 5C 75 65 30 35 34 22 7D
TXT: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 0�hasp/plate/command/jsonl {„obj“:„label“,„page“:1,„id“:1,„x“:10,„y“:50,„h“:60,„w“:105,„align“:1,„text“:„#32C9AC 1Symcon“,„text_font“:50}
HEX: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 30 89 01 00 13 68 61 73 70 2F 70 6C 61 74 65 2F 63 6F 6D 6D 61 6E 64 2F 6A 73 6F 6E 6C 20 7B 22 6F 62 6A 22 3A 22 6C 61 62 65 6C 22 2C 22 70 61 67 65 22 3A 31 2C 22 69 64 22 3A 31 2C 22 78 22 3A 31 30 2C 22 79 22 3A 35 30 2C 22 68 22 3A 36 30 2C 22 77 22 3A 31 30 35 2C 22 61 6C 69 67 6E 22 3A 31 2C 22 74 65 78 74 22 3A 22 23 33 32 43 39 41 43 20 31 53 79 6D 63 6F 6E 22 2C 22 74 65 78 74 5F 66 6F 6E 74 22 3A 35 30 7D
TXT: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 0phasp/plate/command/jsonl {„obj“:„label“,„page“:1,„id“:2,„x“:125,„y“:50,„h“:40,„w“:105,„align“:1,„text“:„test“}
HEX: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 30 70 00 13 68 61 73 70 2F 70 6C 61 74 65 2F 63 6F 6D 6D 61 6E 64 2F 6A 73 6F 6E 6C 20 7B 22 6F 62 6A 22 3A 22 6C 61 62 65 6C 22 2C 22 70 61 67 65 22 3A 31 2C 22 69 64 22 3A 32 2C 22 78 22 3A 31 32 35 2C 22 79 22 3A 35 30 2C 22 68 22 3A 34 30 2C 22 77 22 3A 31 30 35 2C 22 61 6C 69 67 6E 22 3A 31 2C 22 74 65 78 74 22 3A 22 74 65 73 74 22 7D
TXT: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 05hasp/plate/command/jsonl {„page“:1,„id“:0,„prev“:1}
HEX: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 30 35 00 13 68 61 73 70 2F 70 6C 61 74 65 2F 63 6F 6D 6D 61 6E 64 2F 6A 73 6F 6E 6C 20 7B 22 70 61 67 65 22 3A 31 2C 22 69 64 22 3A 30 2C 22 70 72 65 76 22 3A 31 7D
TXT: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 05hasp/plate/command/jsonl {„page“:1,„id“:0,„next“:1}
HEX: 14.10.2024, 10:17:04 | TRANSMIT [192.168.0.157:53391] | 30 35 00 13 68 61 73 70 2F 70 6C 61 74 65 2F 63 6F 6D 6D 61 6E 64 2F 6A 73 6F 6E 6C 20 7B 22 70 61 67 65 22 3A 31 2C 22 69 64 22 3A 30 2C 22 6E 65 78 74 22 3A 31 7D

Ich nutze auch einen MQTT Server im Symcon, allerdings nicht mehr mit diesem Modul.

wenn das Topic auch genau so im Display in der MQTT Konfiguration hinterlegt ist
grafik

also der Hostname auch wirklich „plate“ ist

grafik

dann sollte es genau so funktionieren und die Inhalte der {…} auf dem Display anzeigen.

wird denn

hasp/plate/command/clearpage all

ausgeführt, also wird das Display gelöscht?

kaum macht man’s richtig :wink:
Ich hatte openHASP mit dem „normalen“ Installer installiert und mit dem lässt sich nur eine 0.6.er Version installieren. Mit dem Nightly-Installer habe ich nun einen funktionierenden 0.7.er Release erhalten, so wie es auch ganz am Anfang unter Voraussetzungen aufgeführt ist. Entschuldigt bitte meinen Fehler!
Vielen Dank für eure Hilfe, ich freue mich nun das tolle Modul auszuprobieren.

3 „Gefällt mir“