[Beta] [Modul] PlateManager

PlateManager – Modulübersicht

Überblick

Die Modulgruppe PlateManager besteht aus zwei eng miteinander verzahnten, aber bewusst getrennten Modulen:

  • PlateManager – Zentrale Anbindung und Steuerung von HASP / openHASP Displays über MQTT

  • VariableMapper – Ergänzendes Hilfsmodul zur flexiblen Wertaufbereitung und -ableitung ohne zusätzliche Ereignisse

Die Modulgruppe verfolgt nicht das Ziel, bestehende oder etablierte openHASP‑Integrationen zu ersetzen oder in Konkurrenz zu treten.
Vielmehr versteh ich es als ergänzendes Nischenmodul, das gezielt dort ansetzt, wo individuelle Logik, flexible Werttransformationen und eine Trennung von Display‑Design und Logik gefragt sind.


Architektur & Zusammenspiel

PlateManager

Der PlateManager bildet die eigentliche Kommunikationsschicht zwischen IP‑Symcon und openHASP‑Geräten.

Er übernimmt insbesondere:

  • MQTT‑Kommunikation (Commands → Display, States/Events ← Display)

  • Gerätestatus (LWT Online / Offline)

  • Seitensteuerung und Display‑Funktionen

  • Antiburn‑Logik

  • Event‑Verarbeitung aus Touch‑Interaktionen

  • Bereitstellung von PHP‑Funktionen zur Steuerung aus Skripten

Das Display‑Layout und Design verbleiben vollständig auf dem Gerät (pages.jsonl).
Das Modul kümmert sich ausschließlich um Kommunikation und Logik.

Ausführliche Dokumentation:
siehe PlateManager – Modulbeschreibung


VariableMapper

Der VariableMapper ist ein bewusst einfach gehaltenes, aber sehr mächtiges Begleitmodul.

Er dient dazu:

  • Wertänderungen einer beliebigen Quellvariable zu überwachen

  • daraus über frei definierbaren PHP‑Code neue Zielwerte abzuleiten

  • ohne zusätzliche Ereignisse oder komplexe Skriptketten

Typische Einsatzszenarien im Zusammenspiel mit PlateManager:

  • Farb‑ oder Textzuweisungen abhängig von Zuständen

  • Status‑Mapping (z. B. Boolean → Farbcode)

  • Logische Ableitungen für Display‑Commands

  • Vorbereitung von Werten für MQTT‑Übertragungen

Der VariableMapper ersetzt keine Logikmodule,
sondern reduziert gezielt Skript‑Wildwuchs bei einfachen, wiederkehrenden Mapping‑Aufgaben.

Ausführliche Dokumentation:
siehe VariableMapper – Modulbeschreibung


Abgrenzung & Philosophie

Diese Modulgruppe verfolgt bewusst folgende Leitlinien:

  • Keine Konkurrenz zu vollumfänglichen Visualisierungs‑ oder Logikframeworks

  • Ergänzung bestehender Symcon‑Setups

  • Fokus auf Flexibilität, Nachvollziehbarkeit und Wartbarkeit

  • Klare Trennung von:

    • Display‑Design (openHASP)

    • Kommunikation (PlateManager)

    • Logik / Mapping (VariableMapper)

Gerade in komplexeren Projekten mit vielen Display‑Objekten hilft diese Aufteilung, Konfigurationen übersichtlich und langfristig wartbar zu halten.


Einstieg & empfohlener Workflow (Kurzfassung)

  1. openHASP‑Gerät flashen und konfigurieren

  2. MQTT‑Verbindung herstellen

  3. PlateManager‑Instanz anlegen und Gerät anbinden

  4. Display‑Objekte über Commands mit Symcon‑Variablen verbinden

  5. Optional: VariableMapper für Logik‑ und Wertaufbereitung einsetzen


Weiterführende Dokumentation

  • PlateManager – Modulbeschreibung
    (Details zu Commands, Events, Antiburn, Seitensteuerung, PHP‑API)

  • VariableMapper – Modulbeschreibung
    (Details zu UserCode, Mapping‑Logik und Statusvariablen)


Zielgruppe

Diese Modulgruppe richtet sich insbesondere an Anwender, die:

  • openHASP intensiv nutzen

  • Logik bewusst nicht im Display abbilden möchten

  • saubere, modulare Strukturen bevorzugen

  • individuelle Anforderungen jenseits von Standard‑Mappings haben

Kurz gesagt:
Der PlateManager verbindet – der VariableMapper denkt mit.
Beide zusammen bleiben bewusst schlank, flexibel und ergänzend.


Zusatz-Gadgets

Das PlateManager-Modul kann in Verbindung mit angepasster openHASP-Firmware besondere Zusatzfunktionen steuern, die über die Standardbefehle hinausgehen. Diese sogenannten „Gadgets“ sind Erweiterungen wie z. B. LED-Blinkfunktionen, Buzzer-Signale oder weitere individuell programmierbare Features.

Wichtige Punkte:

  • Die Gadgets funktionieren nur, wenn die Firmware der HASP/openHASP-Geräte entsprechend angepasst wurde.

  • Standard-openHASP-Firmware unterstützt viele Gadgets nicht, daher ist ggf. ein Custom-Build erforderlich.

  • Gadgets werden über Custom-Commands (JSON-Payloads) angesprochen, die das Modul über MQTT an das Display sendet.

Beispiele für mögliche Gadgets:

  • LED Blinkfunktion

    • Steuerung der Helligkeit, Blinkdauer und Wiederholungsintervalle

    • Kann für einzelne LED-Elemente oder ganze Gruppen verwendet werden

    • JSON-Beispiel:

$customCommand = [
    'custom' => 'ledblink',
    'obj'    => 'p1b60',
    't_min'  => 500,
    't_max'  => 500,
    'val_min'=> 0,
    'val_max'=> 200,
    'enable' => true
];
PLMAN_SendCommand($InstanceID, json_encode($customCommand));
  • Buzzer / Tonsignalgeber

    • Steuerung von Tonhöhe, Lautstärke und Dauer

    • Muss an einen freien GPIO-Port angeschlossen sein

    • JSON-Beispiel:

$customCommand = [
    'custom' => 'buzzer',
    'freq'   => 4000,
    'duty'   => 128,
    'on_ms'  => 400,
    'off_ms' => 300,
    'enable' => true
];
PLMAN_SendCommand($InstanceID, json_encode($customCommand));

Hinweis: Die Gadgets sind optionale Zusatzfunktionen. Sie erweitern gezielt die Möglichkeiten von PlateManager und VariableMapper, z. B. für kreative Visualisierung, akustische Signale oder besondere Effekte auf den Displays.

Mehr Infos wie Screenshots und detailierte Anleitungen der verschiedenen Module auf Github unter:

Noch eine Ergänzung:

Zusatz-Gadget

Wenn man die Firmware selbst kompiliert und CustomCode einbaut, dann man mit diesem Modul viele weitere Dinge tun. Im Grunde können alle Befehle vom Modul so abgesetzt werden, das jeglicher CustomCode von der Firmware verarbeitet werden kann, wenn diese dort so reinkompiliert wurde.

LEDBLINK

Man kann in der Standard openHASP Version LEDs leider nicht blinken lassen. Nimmt man eine angepasste Firmware, dann kann man dies mit folgendem Code realisieren. Im PHP Script oder auch per einzelne Commands (jedoch nur, wenn für jede EIgenschaft ein Eintrag erstellt wird!) kann folgender Code verwendet werden.

$customCommand = [
    'custom'   => 'ledblink',
    'obj'      => 'p1b60',
    't_min'    => 500,
    't_max'    => 500,
    'val_min'  => 0,
    'val_max'  => 200,
    'enable'  => true
];
PLMAN_SendCommand($InstanceID, json_encode($customCommand));

Über die im Code zu findenen Objekte kann ein LED Objekt in der Garfik zum Blinken gebracht werden. Dabei kann die Helligkeit, die Dauer zwischen Ein/Aus und die Länge des Aufleuchtens gesteuert werden. Ebenso kann das Blinken komplett Ein/Aus geschaltet werden. Es muss das Objekt mit seiner ID und ‚ledblink‘ benannt werden. Wird das Blinken beendet, dann wird der letzte Helligkeitszustand wieder hergestellt, wenn er vorhanden ist, ansonsten auf volles Leuchten gestellt.

BUZZER

Ein weitere Gadget ist die Verwending eine Tonsignalgebers. Dies funktioniert nur, wenn die Firmware ebenfalls gepimmt wurde. Außerdem muss ein GPIO Port verwendet werden um den Buzzer anzuschließen. Dieser muss zusätzlich eingelötet werden. Für das „Guition ESP32-S3-4848S040“ habe ich den GPIO Pin 40 verwendet. Am Gerät sind nur noch wenige Pins frei - daher ist die Auswahl eingeschränkt.

$customCommand1 = [
    'custom'    => 'buzzer',
    'freq'      => 4000,    // Frequenz in Hz
    'duty'      => 128,     // PWM Duty (0-255)
    'on_ms'     => 400,    // Dauer an in ms
    'off_ms'    => 300,    // Dauer aus in ms
    'enable'    => true
];
PLMAN_SendCommand($InstanceID, json_encode($customCommand1));

Im Codebeispiel kann dann der Piezo Buzzer angesteuert werden. Es lässt sich die Frequenz des Tonsignals die Lautstärke, sowie die Zeit zwischen den Tönen und die Tonlänge selbst einstellen. Außerdem lässt sich das Verhalten komplett Ein/Aus schalten.

Diese Gadget lassen sich, wie beschrieben, nur verwenden, wenn die Firmware aufgepimmt wurde und ggf. am Board etwas eingelötet wurde.

Soweit Interesse besteht und nicht genügend KnowHow besteht das selbst zu tun, dann kann ich gerne eine angepasste Firmware-Version zur Verfügung stellen. In der Firmware sind dann auch alle letzten Verbesserungen von openHASP enthalten. Bei Bedarf dann bitte eine kurze Rückmeldung. Aber bitte etwas Zeit einplanen, wenn ich nicht sofort reagiere.

1 „Gefällt mir“

Das ist ein guter Vorschlag, da sicher viele des Kompilierens nicht mächtig sind. So wären immer alle Funktionen deines Moduls nutzbar.

Habe eine neue Version hochgeladen. Bei der Umstellung auf “IPSModuleStrict” hatten sich noch ein paar weitere Anpassungsnotwendigkeiten ergeben.

Das Modul ist nun auch im Store als Beta verfügbar. Dort muss exakt “PlateManager” eingegeben werden. Grüße und schönen Abend noch.

Eine neue v0.3.0_beta1 ist im Store zu finden. Darin habe ich noch ein kleines Designproblem gelöst. Die MapperVariablen wurden nach Symcon Neustart nicht aktualisiert. Da lag ein Henne/Ei Problem vor zwischen dem Kernmodul PlateManager und den Variablenmapper. Ein kleines Modul kann nun auch bei Symcon-Neustart die gesamten Mapper einmal durchlaufen lassen und alles auf Stand bringen. Das Modul findet alle im Symcon eingerichteten MapperVariablen. Außerdem kann man einen Intervall einstellen, wo dies wiederholt werden kann - wenn aus irgendwelchen Gründen die zu überwachenden Variablen sich mal ändern und die Mapper Module das nicht mitbekommen.

Hallo @Ian ,
super Sache die du da machst.
Könntest du uns bitte eine angepasste Firmware zur Verfügung stellen?
Das wäre sehr nett.
Danke, Hans

Welche Hardware hast du?

Guition ESP32-S3-4848S040 ?

Genau - Standard - quasi :slight_smile:

Habe ich dir als PM gesendet.

Welchen Buzzer hast du denn hier in Verwendung?
Einen Passiven oder einen Aktiven (welche Spannung?) 3.3 V?
Danke

Ich habe diesen hier verwendet: