ich bin auf der Suche nach einer App, einer Flow Karte, einem Skript, die/das einen numerischen Wert eines Geräts mehr oder weniger 24/7 überwacht und ich per Push informiert werden kann, wenn der Wert sich für eine definierte Zeit nicht verändert hat.
Es geht nicht darum, dass ein Gerät eventuell nicht erreichbar wird, sondern wirklich nur um die Überwachung eines bestimmten Zahlenwertes.
Man könnte das ganze mehr oder weniger gut auch mit Standard Flow Karten und Variablen realisieren, aber ich möchte es so einfach wie möglich haben.
Das ist grundsätzlich mit der Device Watchdog-App möglich, aber die Triggerkarte mit der genau beschriebenen Funktion gibt es noch nicht.
Ich gehe jedoch davon aus, dass der Entwickler diese gerne in die App integrieren würde.
Die numerischen Werte werden nämlich bereits gezielt überwacht und ausgewertet, siehe z. B. den Thermostat:
Hm… Du könntest doch zu einem definiertem Zeitpunkt X den Wert des Gerätes abfragen jn diesen in einer Variablen speichern.
Dann hast du einen “Startwert”. Den vergleichst du nach z.b. 24 Stunden wieder mit dem dann abgerufenen Ist-Wert.
Was da nicht abgedeckt wäre ist eben wenn sich der Wert zwar geändert hat aber dummerweise nach 24 Stunden zufällig wieder genau dem Startwert entsprechen würde.
Dann eine Flow mit einem Auslöser bei Wenn und dazu bei Dann die Karte HomeyScript Führe Code aus und gib Ja/Nein-Tag zurück. Dort in MyCode einfügen:
// HomeyScript – Änderung eines Gerätewertes erkennen
//
// Du musst nur DEVICE_ID und CAPABILITY eintragen.
//
// Rückgabe:
// true = Wert hat sich seit dem letzten Lauf verändert
// false = Wert ist unverändert
//
// Beim ersten Lauf wird der aktuelle Wert gespeichert
// und false zurückgegeben.
// --------------------------------------------------
// EINSTELLUNGEN
// --------------------------------------------------
const DEVICE_ID = '07b00a08-XXXX-4333-bf7a-XXXXXXXXXX1f';
const CAPABILITY = 'measure_battery';
// --------------------------------------------------
// GERÄT UND AKTUELLEN WERT AUSLESEN
// --------------------------------------------------
const geraet = await Homey.devices.getDevice({
id: DEVICE_ID
});
const aktuell = geraet.capabilitiesObj?.[CAPABILITY]?.value;
if (aktuell === undefined || aktuell === null) {
throw new Error(
`Capability "${CAPABILITY}" konnte nicht gelesen werden`
);
}
// --------------------------------------------------
// LETZTEN WERT AUS HOMESCRIPT-SPEICHER LESEN
// --------------------------------------------------
const key = `Wertvergleich_${DEVICE_ID}_${CAPABILITY}`;
const vorher = global.get(key);
// --------------------------------------------------
// AKTUELLEN WERT FÜR NÄCHSTEN LAUF SPEICHERN
// --------------------------------------------------
global.set(key, aktuell);
// --------------------------------------------------
// ERSTER DURCHLAUF
// --------------------------------------------------
if (vorher === undefined) {
return false;
}
// --------------------------------------------------
// WERT VERGLEICHEN
// --------------------------------------------------
return aktuell !== vorher;
Hier dann noch bei const DEVICE_ID und const CAPABILITY die ermittelten Werte aus dem ersten Script eintragen.
Das HomeyScript gibt bei jedem Lauf true oder false aus. Beim ersten Lauf logischerweise true (also Veränderung) da noch kein Vergleichs-Wert vorhanden. Mit der Ausgabe wenn z.b. true kann man z.b. eine Push bei Veränderung senden.
Wie Du schon selbst geschrieben hast… Ich denke eine Variable und einen Flow der alle x Sekunden den Wert vergleicht, ist wohl tatsächlich die einfachste Möglichkeit und schnell umgesetzt.
So habe ich zB. eine Temperaturüberwachung umgesetzt, die bei einer Änderung zusätzlich noch einen Webhook aufruft.