Überwachung von OneWire-Sensoren

Begonnen von abc2006, 17 Januar 2017, 12:54:29

Vorheriges Thema - Nächstes Thema

abc2006

Hi,
ich habe bei mir am Bus ca 20-30 DS18B20. Manchmal (beim Basteln :P) passiert es, dass einer oder mehrere der Sensoren keine Werte mehr liefern, weil sie die Verbindung zum Bus verloren haben (oder der owserver abgestürzt ist, oder der Raspi, oder FHEM2FHEM, oder LAN oder ... ) aus diesem Grund möchte ich gerne eine Überwachung aufbauen.

bisher läuft das bei mir so:

über ein notify setze ich die Werte von FHEM2FHEM um in Dummies, die dann die einzelnen Sensoren repräsentieren:

DS18B20_.*:.* {
$EVENT=~s/://;
$NAME=~s/DS18B20/RE_TEMP/;
fhem("setreading $NAME $EVENT"); ## hier steht eigentlich setreading RE_TEMP_bla temperature 31.50
my $temperature=ReadingsVal("$NAME","temperature","");
fhem("setreading $NAME state T: $temperature °C");
}


Zu Überwachung existiert ein DOIF. Dieses triggert auf jedes Update von RE_TEMP, dadurch wird der Timer zurückgesetzt. Falls mal 65 sekunden lang kein Temperaturwert aktualisiert wird, bekomme ich einen Alarm:


(["RE_TEMP"])(set remotebot message seit [N_UPDATE_RE_TEMP:state:sec]Keine Temperaturwerte mehr!!!)


Das funktioniert soweit einwandfrei.

Mein Problem ist der Kuhfuß, den diese Überwachung hat: solange ein einziger!! Temperatursensor zuverlässig alle 60 sekunden einen Wert liefert, können alle! anderen ausfallen, ohne dass ich es merke.

Darum würde ich gerne jeden Sensor einzeln überwachen:

(["RE_TEMP_Vorlauf"])(set remotebot message seit [RE_TEMP_Vorlauf:temperature:sec] Ausfall Sensor Vorlauftemperatur!!!)


Nach meinen bisherigen Recherchen müsste ich für jeden Sensor ein eigenes DOIF laufen lassen, um über Ausfälle informiert zu werden.
Frage: Gibt es eine Lösung, mit der ich das eleganter, einfacher und wartbarer machen kann ?
Alle meine Sensoren (bzw. die Dummies dafür) fangen mit DS18B20 bzw. RE_TEMP an...

Grüße
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX