NEWS
[Gelöst] Homematic: Last change Timestamp
-
Grüßt euch alle! Ich habe hier seit einiger Zeit im Forum mitgelesen und dadurch schon einiges an Hilfe erhalten, aber für die letzten Details wollte ich noch einmal nach Hilfe oder Ideen fragen. Folgende Visualisierung ist bereits vorhanden:
Visualisiert werden Fensterkontakte und Heizthermostate aus dem Hause Homematic.
Fensterkontakte: HM-Sec-SCo
Thermostate: HM-CC-RT-DNDie Buttons unter den Heizungsreglern dienen dazu, möglichst schnell zwischen manuellen und automatischen Modi hin und her zu schalten.
Was ich noch optimieren möchte, sind allerdings die Daten links und rechts von den Fenstericons. Sie zeigen das Datum an, an dem das Fenster das letzte Mal geöffnet oder geschlossen wurde. Ich nutze das "Last change Timestamp" widget.
Ich würde es noch gerne schaffen, dass ein Datum rot hinterlegt wird, wenn ein Fenster länger als 7 Tage geschlossen ist. Zu diesem Test habe ich testweise mit Blockly und Javascript gearbeitet. Wenn das heutige Datum minus dem letzten Timestamp größer als 604800000 (entspricht sieben Tagen) ist, sollte eine Telegram Nachricht an mich versendet werden.
const dateToday = new Date().getTime(); console.log(dateToday); if(dateToday - getState("hm-rpc.0.SERIALNUMBER.1.STATE").ts > 604800000 && (getState("hm-rpc.0.SERIALNUMBER.1.STATE").val == false)){ sendTo("telegram.1", "send", { text: ('Fenster offen:' + 'hm-rpc.0.SERIALNUMBER.1.STATE') }); }
Ersetzt man "Serialumber" durch die Nummer des Fensterkontaktes funktioniert das Script eingeschränkt. Bei Homematic ist bekannt (bzw. den Fensterkontakten), dass ein Timestamp allein bei einem Zugriff aktualisiert wird. Das ist auch bei meinem Skript der Fall, weswegen ich glaube, dass eine Ausarbeitung wenig zielführend wäre.
Deswegen würde ich gerne weiter mit dem "Last change Timestamp" arbeiten. Interessanterweise wird dieser nicht aktualisiert, wenn mein Skript auf den Timestamp des Geräts zugreift. Allerdings weiß ich wiederum nicht, wie ich auf den Wert des Widgets zugreifen kann, bzw. damit Variablen setzen oder andere Widgets steuern könnte.
Wenn jemand Anregungen für mich hätte, wäre ich euch sehr dankbar!
-
@DidiDerHerrmann sagte in Homematic: Last change Timestamp:
bzw. damit Variablen setzen oder andere Widgets steuern könnte.
Jedes Widget hat eine ID (Nummer) zb.: w01985
-
@DidiDerHerrmann
Das Script wird nur einmal bei Scriptstart ausgeführt, denn es fehlt ein Trigger (z.B. schedule jede Stunde). Der Timestamp ist ungeeignet, da er alle 24 h aktualisiert wird - wie ich gelesen habe. Deshalb verwende besser .lc. -
@sigi234 Danke schon mal! Ich bin mir nur noch unsicher, wie ich an die Werte komme. Mit "w00281" oder "vis.0.w00281" zeigt mir mein Skript an, dass der Wert nicht vorhanden ist.
-
@paul53 Vielen Dank! .lc ist wohl wonach ich gesucht habe!
Danke auch für den Schedulehinweis. Den habe ich erstmal bewusst weggelassen, um zu testen, ob ich denn überhaupt an die richtigen Werte komme.