[TIPP] 1-Wire Health-Monitor Überwachung

User-Geschichten zu erfolgreichen Projekten wie Migrationen vom Wiregate, Eigenbauten, usw.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
oli171
Beiträge: 40
Registriert: Mi Jan 09, 2019 8:58 pm
Hat sich bedankt: 33 Mal
Danksagung erhalten: 100 Mal

1-Wire Health-Monitor Überwachung

#1

Beitrag von oli171 »

Hallo zusammen,

man liest öfter mal, dass 1-Wire unbemerkt oder plötzlich nicht mehr läuft. Wie auch immer die Ursache ist, wollte ich eine Lösung schaffen die ein Monitoring ermöglicht (mit Boardmitteln).

Aktuell habe ich 4 Kanäle 1-W aktiv.
Zur Überwachung war mein Gedanken den jeweils letzten Sensor (möglichst schwer z.B. VOC / LF) am Ende des jeweiligen Kanal zu überwachen.

Wenn ein überwachter Sensor länger als 10 Minuten keine Werte liefert, gibt es Alarm - dann "könnte" man von einem Fehler auf dem Kanal ausgehen... Ich aktiviere Nachrichten an:

- das TWS Nachrichtencenter
- an ein Grafana Dashboard
- an eine KNX GA (zur weiteren Auswertung an ein LED-Status Display neben der Haustüre als Beispiel "Status-Bussysteme grün=OK rot=Fehler")

Im TWS Nachrichtencenter sieht man "in der Schaltzentrale gleich, wenn es ein Problem gab mit Datum und Uhrzeit"
Bild
Im Grafana-Dashboard hat man eine Historie und sieht, seit wann es ein Problem gab.
Die KNX GA visualisiert wie man wünscht

Die Logik:
Bild

Das Grafana-Dashboard (erweitert um die 1-W Überwachung):
Bild

Der Logik-Code (Danke an Georg @eib-eg eg und seine KI "Kanon"):

/**
Logik-Name: LE-KI-1-Wire-Health-Monitor V1.1

Beschreibung: Überwachung von 4 1-Wire Kanälen (EOL-Prinzip).
Inklusive Startup-Inhibit (15 Min), um Fehlalarme nach Neustart zu verhindern.
Sendet bei echtem Timeout Alarm an KNX und TWS Nachrichtencenter.

Version: 1.1.0
Autor: KI-Chirurg (Kanon V8.03.16)
Kanon-Referenz: V8.03.16

CHANGELOG:
- 1.0.0: Initialerstellung.
- 1.1.0 (2026-05-12): Startup-Inhibit hinzugefügt (Regel 1.55).
*/

{
"_Meta": {
"Name": "LE-KI-1-Wire-Health-Monitor V1.1",
"Description": "Überwachung von 4 Kanälen mit 15 Min Anlauf-Sperre.",
"Version": "1.1.0",
"Author": "KI-Chirurg",
"Kanon_Version": "V8.03.16"
},
"Level": [
["$I_S1", "float", 0.0],
["$I_S2", "float", 0.0],
["$I_S3", "float", 0.0],
["$I_S4", "float", 0.0],

["$P_Timeout", "float", 600.0],
["$P_Startup_Delay", "float", 900.0], // 15 Minuten Anlauf-Schutz

["$State_T1", "bool", true],
["$State_T2", "bool", true],
["$State_T3", "bool", true],
["$State_T4", "bool", true],
["$Lgc_Startup_Active", "bool", true],

["$Lgc_A1", "bool", false],
["$Lgc_A2", "bool", false],
["$Lgc_A3", "bool", false],
["$Lgc_A4", "bool", false],
["$Lgc_RawAlarm", "bool", false],
["$Lgc_Startup_Finished", "bool", false],
["$Lgc_GlobalAlarm", "bool", false],

["$State_GlobalAlarm_Last", "bool", false],
["$Lgc_SendTrigger", "bool", false],
["$Lgc_Selector_Int", "int", 0],

["$O_Status", "int", 900],
["$O_Sammelalarm", "bool", false],

["$Konst_True", "bool", true],
["$Konst_False", "bool", false],
["$Konst_900", "int", 900],
["$Konst_911", "int", 911],
["$C_Channel", "string", "general"],
["$C_Title", "string", "1-Wire Systemalarm"],
["$C_Message", "string", "ACHTUNG: Timeout an einem 1-Wire Kanal detektiert!"],
["$C_Category", "string", "alarm"],
["$C_Priority", "int", 2]
],
"Module": [
// --- Sektion 0: Startup-Schutz (Der Schild) ---
// Läuft einmalig nach dem Speichern/Boot für 900s
["Monoflop", "$Konst_True", "$Konst_False", "$Lgc_Startup_Active", "$P_Startup_Delay", 0],
["Xor", ["$Lgc_Startup_Active", "$Konst_True"], "$Lgc_Startup_Finished"],

// --- Sektion 1: Watchdogs (EOL-Überwachung) ---
["Monoflop", "$I_S1", "$Konst_False", "$State_T1", "$P_Timeout", 1],
["Monoflop", "$I_S2", "$Konst_False", "$State_T2", "$P_Timeout", 1],
["Monoflop", "$I_S3", "$Konst_False", "$State_T3", "$P_Timeout", 1],
["Monoflop", "$I_S4", "$Konst_False", "$State_T4", "$P_Timeout", 1],

// --- Sektion 2: Alarm-Logik ---
["Xor", ["$State_T1", "$Konst_True"], "$Lgc_A1"],
["Xor", ["$State_T2", "$Konst_True"], "$Lgc_A2"],
["Xor", ["$State_T3", "$Konst_True"], "$Lgc_A3"],
["Xor", ["$State_T4", "$Konst_True"], "$Lgc_A4"],

["Or", ["$Lgc_A1", "$Lgc_A2", "$Lgc_A3", "$Lgc_A4"], "$Lgc_RawAlarm"],

// --- Sektion 3: Verknüpfung mit Startup-Schutz ---
// Alarm wird nur durchgelassen, wenn Startup beendet ist
["And", ["$Lgc_RawAlarm", "$Lgc_Startup_Finished"], "$Lgc_GlobalAlarm"],

// --- Sektion 4: Benachrichtigung ---
["And", ["$Lgc_GlobalAlarm", "-$State_GlobalAlarm_Last"], "$Lgc_SendTrigger"],
["SendToSimple", "-$Lgc_SendTrigger", "$C_Channel", "$C_Title", "$C_Message", "$C_Category", "$C_Priority"],

// --- Sektion 5: Ausgänge ---
["BinaryMultiplexer", ["$Lgc_GlobalAlarm"], "$Lgc_Selector_Int"],
["Multiplexer", ["$Konst_900", "$Konst_911"], "$O_Status", "$Lgc_Selector_Int"],
["Multiplexer", ["$Lgc_GlobalAlarm", "$Lgc_GlobalAlarm"], "$O_Sammelalarm", "$Konst_True"],

// --- Sektion 6: RDS-Sicherung ---
["Latch", "$Lgc_GlobalAlarm", "$State_GlobalAlarm_Last", "$Konst_True", 0]
],
"Input": [
["Sensor 1 PBM01-485-CH-DG", "Referenzsensor Kanal 1", "$I_S1", "a"],
["Sensor 2 PBM01-485-CH2-EG", "Referenzsensor Kanal 2", "$I_S2", "a"],
["Sensor 3 PBM01-485-CH3-OG", "Referenzsensor Kanal 3", "$I_S3", "a"],
["Sensor 4 SBM01-Technik-KNX-Verteiler", "Referenzsensor Kanal 4", "$I_S4", "a"],
["Timeout [_s]", "Standard 600s", "$P_Timeout", "c"],
["Start-Sperre [_s]", "Standard 900s", "$P_Startup_Delay", "c"]
],
"Output": [
["Status-Code", "900=OK, 911=Kritisch", "$O_Status", "c"],
["Alarm Sammel", "Sammelalarm für KNX (1=Fehler)", "$O_Sammelalarm", "c"]
]
}


ACHTUNG: Ganz unten sind zwei [_S] bei "Timeout und "Start-Sperre die müssen durch eines ohne _ ersetzt werden. Da ansonsten hier die Forumssoftware den Text durchstreicht... und nicht anzeigt...

Die Start-Sperre dient dazu, dass keine Fehler gemeldet werden, bevor alles initialisiert ist und zur Vermeidung von Fehl-Alarmen im Nachrichtencenter insbesondere nach TWS- oder Logik-Neustart.

Ich denke dass ist mal ein Anfang zum Monitoring. Insbesondere die Grafana-Historie ist ganz nett, wenn man mal Fehler suchen muss.
Gerne kopieren und nutzen wie möchtet :handgestures-thumbsup:

VG

Oli
Zuletzt geändert von oli171 am Di Mai 12, 2026 10:49 pm, insgesamt 1-mal geändert.
"TWS 350Q ID:412 , Support-VPN open" - Restart okay.
"TWS 3500XL ID:1799, Support-VPN open" - Restart okay.

Ersteller
oli171
Beiträge: 40
Registriert: Mi Jan 09, 2019 8:58 pm
Hat sich bedankt: 33 Mal
Danksagung erhalten: 100 Mal

#2

Beitrag von oli171 »

Hier noch Grafana als "Standalone-Dashboard":

Bild
"TWS 350Q ID:412 , Support-VPN open" - Restart okay.
"TWS 3500XL ID:1799, Support-VPN open" - Restart okay.

Sun1453
Beiträge: 2454
Registriert: Do Feb 07, 2019 8:08 am
Hat sich bedankt: 2243 Mal
Danksagung erhalten: 944 Mal

#3

Beitrag von Sun1453 »

Danke Oli. Sehr interessante Lösung. Ja einmal direkt Indikator und dann noch die Nachvollziehbarkeit ab wann.
Gruß Michael

Timberwolf 950 QL #344 | Mit Internetanbindung | VPN Offen | Reboot nach Absprache | PROD Server
Timberwolf 2500 #602 | VPN offen | TEST Server | Reboot nach Absprache |
Antworten

Zurück zu „Erfolgsgeschichten“