NEWS
Probleme mit Aqara Temperatur- und Feuchtigkeitssensor
-
@pete0815 sagte in Probleme mit Aqara Temperatur- und Feuchtigkeitssensor:
Edit: Nachdem ich es jetzt studiert habe, Ich habe noch nicht ganz verstanden, was der Watchdog per skript bringt. Batteriebetriebene Aqara Sensoren wie die T&H senden keine zyklischen Daten d.h. wenn sich die Temperatur x Tage nicht ändert senden sie x-Tage keinen Wert. Somit bekomme ich ggf einen Watchdog Alarm obwohl alles in Ordnung ist. Ein Watchdog auf extrem hohe Zeit zu setzen ist für mein Verständnis wenig sinnvoll. Einen Verfügbarkeitsanfrage wie zB einen Ping lässt sich bei Zigbee ja nicht manuell ausführen oder erzeugen und auswerten oder irre ich da?
Kann ich nicht bestätigen. Meine batteriebetriebenen Aquara Sensoren melden sich mindestens 1 mal in 2 Stunden (egal ob Bewegungsmelder mit Luxmeter oder Temperatur & Feuchtigkeit). Die Würfel überwache ich gerade nicht, aber auch hier sehe ich, selbst bei dem Würfel den ich mehrere Stunden nicht angefasst habe, dass voltage und oder link quality übertragen werden:
-
Ich habe jetzt das Skript von @paul53 ein wenig überarbeitet bzw. erweitert:
var sensorId = [ 'zigbee.0.00xxxxxx.temperature', 'zigbee.0.00xxxxxx.temperature', 'zigbee.0.00xxxxxx.click', 'zigbee.0.04xxxxxxxx.load_power', ]; for (var i = 0; i < sensorId.length; i++) { watchDog(sensorId[i]); } function watchDog(sensorId){ var timer = null; on({id: sensorId}, function() { // löst bei jeder Aktualisierung aus if(timer) clearTimeout(timer); // laufender Timer wird gestoppt timer = setTimeout(function() { // Neustart Timer console.log('Sensorausfall ' + sensorId); // Aktion, wenn Verzögerungszeit abgelaufen ist sendTo("telegram", "send", { text:('****** Achtung Sensorausfall ******\n' + 'Typ: ' + getObject(sensorId).common.name + '\nID: ' + sensorId) }); }, 120 * 60000); // 120 Minuten in ms = 120 * 60000 }); }
Wenn ich einen neuen Sensor bekomme, dessen Funktion ich überwachen möchte, trage ich die ID einfach in das Array senorId ein.
Sobald sich einer der Sensoren in meinem Fall nach 120 Minuten nicht meldet, erhalte ich eine automatische Warnmeldung per Telegram mit allen nötigen Informationen. Alternativ kann man sich natürlich auch per Mail oder was auch immer benachrichtigen lassen.
-
@canetti2 vielen Dank! Interessant. Wenn ich das richtig verstehe, wird für jeden Sensor im Skript so eine Funktion angelegt. Jede Funktion generiert dann auch ihre eigene timer-Variable.
Alle Sensoren müssen dann dieselbe timeout Zeit haben und andere Sonderbehandlungen sind dann auch nicht möglichl
Was ich nicht verstanden habe: _id. Was macht das?
-
@klassisch das ist korrekt: Jeder Sensor startet eine eigene Funktion mit eigener Timer-Variable. Und bei allen Sensoren wird erwartet, dass Sie sich (in meinem Beispiel) nach 120 Minuten melden. Tut ein Sensor das nicht, bekomme ich eine Nachricht per Telegram. Die Variable _id ist entsprechende ObjektId. Wenn man 200 Sensoren überwacht, kann man den Sensor so in der Objektübersicht (wahrscheinlich) leichter finden. Alle Sensoren werden gleich behandelt.
Ich beschäftige mich ja auch erst seit knapp zwei Wochen mit dem Thema "iobroker" und bin daher noch absoluter Anfänger. Ich habe keine Ahnung, ob manche Sensoren eine "Sonderbehandlung" benötigen. Bei meinen drei Sensoren ist das noch nicht der Fall ;-). Sollte eine "Sonderbehandlung" nötig sein, müsste man die Funktion und evtl. auch das Array, bzw. den Funktionsaufruf entsprechend erweitern.
-
@klassisch vergiss die getObject(sensorId)._id Geschichte. Das ist ja quatsch - die Id ist ja die Variable sensorId
-
@canetti2 sagte in Probleme mit Aqara Temperatur- und Feuchtigkeitssensor:
Ich beschäftige mich ja auch erst seit knapp zwei Wochen mit dem Thema "iobroker" und bin daher noch absoluter Anfänger.
Respekt! Steile Lernkurve!
Ich habe keine Ahnung, ob manche Sensoren eine "Sonderbehandlung" benötigen. Bei meinen drei Sensoren ist das noch nicht der Fall ;-).
Hängt weniger von ioBroker als viel mehr vom Sensorsetup bzw. den Anwendungen ab.
Aber man kann mit Deinem Ansatz sicher eine Menge Arbeit sparen. Man kann ja in Sensoren bzw. Anwendungen clustern. In diesem Fall nach timeout-Zeiten.
Je nach timeout-Zeiten macht man also eigene Funktionen. Das spart ja auch schon mal sehr.
Gefällt mir, vielen Dank! -
@canetti2 sagte in Probleme mit Aqara Temperatur- und Feuchtigkeitssensor:
@klassisch vergiss die getObject(sensorId)._id Geschichte. Das ist ja quatsch - die Id ist ja die Variable sensorId
Danke, das hätte ich so erwartet, weil ja jeweils eine solche Funktion angelegt wird, die dann kein Array mehr beherbergt, sondern das Element des Arrays.
Edit: Magst Du das noch in Deinen Post einarbeiten? Ich würde gerne von dem zitierten alten Post auf Dein Skript verweisen. Dann haben es andere user einfacher. -
@klassisch Ich habe die Funktion überarbeitet - siehe oben.
-
@canetti2 sagte: Ich habe die Funktion überarbeitet - siehe oben.
Aber nicht in Zeile 17.
-
@paul53 jetzt aber
-
@mickym Wie prüfst Du das. Das kannst Du mir die Tage mal bitte erklären.