Hallo Matthias
@ms20de ,
danke für den kritischen Blick unter die Haube! Das ist genau das Feedback, das wir brauchen, um aus einer "Idee" einen "Standard" zu machen.
Du hast in beiden Punkten absolut recht:
Latch Mode 0: Das war ein Denkfehler. Bei "Pegelsteuerung" bleibt das Tor offen, solange der Takt anliegt -> Burst-Gefahr.
Ressourcen (Trigger): Bei Trigger "a" (Always) ständig Strings zu bauen, die man dann verwirft, ist Verschwendung.
Ich habe die Logik daraufhin komplett überarbeitet und "gehärtet".
Hier ist die Version 5.1.
Die technischen Änderungen (Performance & Stabilität):
1. Architektur-Umbau (Break):
Die Logik ist jetzt zweigeteilt.
Teil A (Watchdog): Läuft immer (für Timer-Reset).
Teil B (JSON-Bau): Ist durch ein Break-Modul abgetrennt. Der rechenintensive Teil (Printf/Concat) wird nur noch exakt 1x pro Sendeintervall ausgeführt. In der Zeit dazwischen verbraucht die Logik fast null CPU für den String-Bau.
2. Latch-Fix:
Ich nutze jetzt eine interne Flankenerkennung. Damit gibt es garantiert nur ein Telegramm pro Intervall.
3. Smart-Alarming:
Der Fehler-Ausgang (Bitmaske) nutzt den nativen "On Change" Trigger. Damit werden Fehler sofort gemeldet, aber dauerhaft anstehende Fehler erzeugen keine Buslast mehr.
@pholler : Damit hast du jetzt eine Version, die auch bei vielen Instanzen den Server nicht in die Knie zwingt und trotzdem jeden Ausfall sofort meldet.
1-Wire Hybrid V5.1 (Auto-Deduping & Performance).txt
KATALOG-DOKUMENTATION: 1-Wire Hybrid V5.1 (Performance Edition)
Generiert nach ElabNET-Standard
1. Titel (Kurz)
Hybrid: JSON Aggregator & Watchdog 8-fach (Performance Optimized)
2. Untertitel
Bündelt Messwerte für MQTT, überwacht Sensoren in Echtzeit und minimiert CPU-Last durch getrennte Ausführung.
3. Zusatztext für das Verständnis
Diese Logik ist eine "Hybrid-Lösung" für 1-Wire und MQTT Nutzer. Sie löst zwei Aufgaben gleichzeitig:
Überwachung (Watchdog): Jeder der 8 Eingänge wird in Echtzeit auf Ausfall überwacht. Fällt ein Sensor aus, wird die Fehler-Bitmaske sofort aktualisiert. Durch den Ausgangs-Trigger "On Change" werden Änderungen sofort gemeldet, aber dauerhafte Fehler erzeugen keine unnötige Buslast.
Daten-Bündelung (Aggregator): Die Werte werden zu einem JSON-String zusammengefasst ({"V1":20.5, ...}), um MQTT-Objekte zu sparen.
Performance-Feature (V5.1): Durch den Einsatz des Break-Moduls ist die Logik in zwei Sektoren geteilt. Die rechenintensive Text-Erstellung (JSON) wird vom Echtzeit-Watchdog entkoppelt und nur noch im eingestellten Sende-Takt ausgeführt. Das schont die Ressourcen massiv, auch bei vielen Instanzen.
4. Kern-Module
Triggered, Monoflop, BinaryMultiplexer, Clocksignal, Break, Printf, Concat, Latch
5. Kern-Operation
Sektor A (Echtzeit): Timer-Reset bei Signaleingang -> Bitmasken-Update -> Ausgabe nur bei Statusänderung.
Sektor B (Getaktet): Abbruch via Break wenn kein Sende-Takt -> String-Formatierung -> JSON-Output.
6. Beschreibung Kern-Eingänge
Wert 1-8: [Float] Die Messwerte. WICHTIG: Trigger muss zwingend auf "a" (Always) stehen, damit auch unveränderte Werte den Watchdog bedienen ("Heartbeat").
Timeout 1-8: [Float] Individuelle Zeit in Sekunden bis zum Alarm. 0.0 = Kanal deaktiviert (Auto-Disable).
Sendeintervall: [Float] Zeit in Sekunden für das JSON-Update (Drossel für Sektor B).
7. Beschreibung Kern-Ausgänge
JSON String: [String] Der fertige Payload für MQTT. Wird nur im Sendeintervall aktualisiert.
Fehler Bitmaske: [Integer] Summe der ausgefallenen Sensoren (Bit 0 = Sensor 1, etc.). Wird sofort bei Statusänderung gesendet.
8. Hinweise / Ergänzendes
Durch die Auto-Disable Funktion (Timeout = 0) können ungenutzte Eingänge offen gelassen werden, ohne Fehlalarme zu erzeugen.
Die Logik benötigt keine externen Timer.
9. Erweiterte Mouse-Overs (Vorschläge für den Editor)
Wert 1-8: "Messwert. Trigger auf 'a' (Always) stellen!"
Sendeintervall: "Taktung für JSON-Ausgabe (Ressourcen-Schonung)."
Timeout 1-8: "Max. Zeit ohne Signal. 0 = Kanal inaktiv."
Fehler Bitmaske: "Diagnose-Code. Aktualisiert sich sofort bei Fehler."
___________________________________________
ANWENDER-GUIDE: So nutzt du den "1-Wire Hybrid Wächter"
Du hast viele 1-Wire Sensoren, möchtest diese zuverlässig überwachen und die Daten effizient an MQTT (z.B. Home Assistant) senden, ohne deinen Server zu überlasten?
Dann ist diese Logik genau für dich. Hier ist die Erklärung, wie sie funktioniert und wie du sie einrichtest.
1. Was macht dieser Baustein eigentlich?
Er erledigt zwei Jobs gleichzeitig, die normalerweise getrennte Logiken erfordern würden:
JOB A: Der Wachhund (Watchdog)
Er passt auf jeden deiner 8 Sensoren einzeln auf. Wenn ein Sensor sich nicht mehr meldet (z.B. Kabelbruch), schlägt er sofort Alarm.
JOB B: Der Datensammler (JSON Aggregator)
Anstatt für jeden Sensor eine eigene MQTT-Nachricht zu schicken (was bei vielen Sensoren das Netzwerk flutet), sammelt er 8 Werte ein, verpackt sie in ein einziges Paket (JSON) und schickt dieses Paket gemütlich in einem festen Takt (z.B. alle 60 Sekunden) raus.
2. Einrichtung: Schritt für Schritt
Schritt 1: Die Eingänge (Werte)
Verbinde deine Sensoren mit den Eingängen Wert 1 bis Wert 8.

WICHTIG: Du musst den Trigger-Modus dieser Eingänge auf "a" (Always / Immer) stellen!
Warum? Ein 1-Wire Sensor sendet regelmäßig seinen Wert, auch wenn sich die Temperatur nicht ändert (Heartbeat). Wenn du auf "c" (Change) stellst, denkt die Logik bei gleichbleibender Temperatur, der Sensor sei tot, und löst Fehlalarm aus.
Schritt 2: Die Überwachung (Timeouts)
Jeder Sensor hat einen eigenen Parameter Timeout 1 bis Timeout 8. Das ist die Zeit in Sekunden, nach der Alarm geschlagen wird, wenn nichts mehr empfangen wurde.
Faustformel: Schau im Gerätemanager auf das Sendeintervall (i) des Sensors. Nimm diesen Wert mal 3.
Beispiel: Sensor sendet alle 60s -> Stelle Timeout auf 180 oder 200.
Kanal abschalten: Hast du nur 5 Sensoren angeschlossen? Kein Problem. Lasse die Timeouts der leeren Kanäle einfach auf 0. Die Logik erkennt das und deaktiviert die Überwachung für diese Kanäle automatisch.
Schritt 3: Der Datentakt (Sendeintervall)
Hier stellst du ein, wie oft das Datenpaket an MQTT gesendet werden soll (z.B. 60 Sekunden).
Der Clou: Die Logik arbeitet intern extrem ressourcenschonend. Sie berechnet den Text für das Datenpaket wirklich nur in diesem Takt. Das schont die CPU deines Timberwolfs massiv.
3. Die Ausgänge verstehen
JSON String:
Das ist dein Datenpaket. Es sieht so aus: {"V1": 21.5, "V2": 45.0, ...}.
Verbinde das mit einem MQTT-Objekt. In Home Assistant kannst du die Werte dann einfach auseinandernehmen.
Fehler Bitmaske:
Hier siehst du sofort, wer Probleme macht. Der Wert ist eine Summe:
0 = Alles OK.
1 = Sensor 1 defekt.
2 = Sensor 2 defekt.
3 = Sensor 1 UND 2 defekt (1+2).
4 = Sensor 3 defekt.
... usw. (Binäre Zählweise).
Smart-Feature: Dieser Ausgang sendet sofort, wenn ein Fehler auftritt oder verschwindet. Er sendet aber nicht ständig, wenn der Fehler einfach nur ansteht. Das hält den Bus sauber.

Profi-Tipp zur Fehlersuche (Doktor-Modus)
Wenn du die Logik testest und die Timeout-Zeit änderst (z.B. von 600s auf 10s runtersetzt), wundere dich nicht, wenn der Alarm nicht sofort kommt.
Grund: Ein Timer, der bereits läuft (mit den alten 600s), lässt sich nicht mittendrin stören. Er muss erst ablaufen oder durch ein neues Signal vom Sensor neu gestartet werden.
Lösung: Nach einer Zeit-Änderung einfach kurz warten, bis der Sensor das nächste Mal sendet – dann ist die neue Zeit aktiv.
Viel Erfolg mit der "eierlegenden Wollmilchsau"!
______________
ende ki text
mfg
eib-eg