NEWS
Zeitdifferenz in Bindings?
-
Hallo,
aktuell zeige ich einen Zeitstempel wie folgt an
{sonoff.0.ZBox.Time;date(DD.MM.YY hh:mm)}
Nun habe ich die Idee, dass ich da lieber eine Zeitdifferenz in Verbindung mit einer farblichen Markierung, ob die Zeit überschritten wurd.
Also, falls (Aktuelle Zeit - Zeitstempel) > 30min, dann rot ansonsten weiss.Ginge das in den Bindings? Danke
-
@HeinrichB Ja
...verraten wie soll ich auch noch?
Ungetestet (geht gerade nicht):{akt:system.adapter.admin.0.alive.ts; zstempel:sonoff.0.ZBox.Time.ts; akt-zstempel > 1800000 ? #red : #white}
-
@SBorg said in Zeitdifferenz in Bindings?:
{akt:system.adapter.admin.0.alive.ts; zstempel:sonoff.0.ZBox.Time.ts; akt-zstempel > 1800000 ? #red : #white}
Danke Dir vielmals. Ich schau es mir an. Man kann also auch zwei Variablen in Bindings definieren. Das ist interessant
-
@HeinrichB sagte in Zeitdifferenz in Bindings?:
Man kann also auch zwei Variablen in Bindings definieren.
Oh ja
Falls dir die 1800000 nicht geläufig sind: 30min x 60sec x 1000ms (da ".ts" Unixzeitstempel in ms nach dem 01.01.1970 sind)
Der "admin-alive" wird ca. alle 12 Sekunden neu geschrieben, enthällt also einen relativ aktuellen Zeitstempel. -
@SBorg
Super Sache! Da Suche ich auch nach. Ich habe mal versucht das für meine Zwecke umzubauen.Ich möchte damit überprüfen, ob meine Temperatursensoren innerhalb der letzten 30 Minuten einen aktuellen Wert gesendet haben.
Dieses Binding hat leider nicht funktioniert:
{akt:system.adapter.admin.0.alive.ts; zstempel:deconz.0.Sensors.47.lastupdated; akt-zstempel > 1800000 ? #red : #4d4f51}
Der Wert des Datenpunktes vom Sensor wird so dargestellt:
2020-02-12T11:26:48.000Z
Gibt es da eine Möglichkeit? Möchte damit einfach erkennen, ob ein Sensor vielleicht die Verbindung verloren hat.
-
@Termina Salopp gesagt vergleichst du "Äpfel mit Birnen"
Die Endung ".ts" ist ein Unixzeitstempel im Format 59599393875 (Beispiel). Den kannst du nicht "einfach" mit einem Datum vergleichen.
zB.{akt:system.adapter.admin.0.alive.ts; zstempel:deconz.0.Sensors.47.lastupdated.lc; akt-zstempel > 1800000 ? #red : #4d4f51}
".lc" enthällt den Unixzeitstempel wann sich der Wert das letzte mal geändert hat, ".ts" wann er das letzte mal aktualisiert wurde.
-
@SBorg
Ich lerne gerne dazu!Wenn ich das nun aber richtig verstehe, sollte es mit der Endung ts oder tc (je nach belieben) nun aber funktionieren, oder wird da dieser Datenpunkt auch in der "wirklichen Welt" erwartet?
Es funktioniert nämlich leider nicht, ich habe aber unter Objekten auch nirgends Zugriff auf den ...admin...alive Datenpunkt. Kann das auch ein Grund sein?
-
@Termina sagte in Zeitdifferenz in Bindings?:
Ich lerne gerne dazu!
Ich erkläre es auch gerne, nur halt nicht immer ganz ausführlich, da ich sonst zig mal einen halben Roman schreibe und mein "Gegenüber" das aber schon ev. weiß. Also ggf. einfach noch mal nachfragen falls was unklar ist.
Zuerst: funktioniert nicht? Ich habe es zwar nicht getestet, weiß also nicht ob es wirklich funktioniert, aber weißt du, dass Bindings im Editor prinzipiell nicht funktionieren? Sie funktionieren erst in der VIS.
Den Datenpunkt "admin..." siehst du erst wenn du oben auf "Expertenmodus/-ansicht" umschaltest.
Die Bindings kannst du auch erst mal in einem HTML-Widget testen. IMHO eh die beste Wahl, da man hier auch ggf. Fehler sieht.{system.adapter.admin.0.alive.ts} {deconz.0.Sensors.47.lastupdated.lc}
zeigt dir dann bspw. den Inhalt an. Sollte da "NaN", undefined oder ähnliches kommen, hast du hier schon einen Fehler. Dann brauchst du auch nicht weiter bei der Berechnung etc. zu suchen
-
@SBorg
Klasse Tipp und vielen Dank für die ausführlichere Erklärung. Das mit dem Editor und der Runtime wusste ich zufällig.Im HTML-Widget zeigt er für beide Datenpunkte Unix-Zeiten an.
Setze ich allerdings nun das Binding in die Schrift{akt:system.adapter.admin.0.alive.ts; zstempel:deconz.0.Sensors.47.temperature.tc; akt-zstempel > 180000 ? #red : #green}
zeigt er mir die Schrift in der Runtime trotzdem in weiss an - wie kann das denn sein!?
-
Einen kleinen Fehler habe ich gefunden - die Farben müssen bei der Definition anscheinend in Anführungszeichen.
Trotzdem ist die Farbe bei folgendem Binding leider grün, obwohl sie doch rot sein müsste...
{akt:system.adapter.admin.0.alive.ts; zstempel:deconz.0.Sensors.47.temperature.tc; akt-zstempel > 1 ? "red" : "green"}
-
Vielen Dank nochmals.
Ich musst eine leichte Anpassung machen, aber jetzt klappt es für.{akt:system.adapter.admin.0.alive.ts; zstempel:sonoff.0.ZBox.Time.ts; akt - zstempel > 1800000 ? "❌" : "✅"}
Vielleicht hilft es auch den anderen
-
@Termina sagte in Zeitdifferenz in Bindings?:
die Farben
Farbdefinitionen brauchen eine # davor, also #red oder #ff0000
Im HTML-Widget siehst du dann bspw. dass er green ausgibt -
@SBorg Aber dann gibt er die Schrift in weiß aus, obwohl nur rot oder grün angegeben ist...
-
Das Rautezeichen # ist ein Zeichen dafür, dass nun Hexcode kommt.
Wenn ich Klarnamen für Farben nehmen, dann keine Raute. -
@OliverIO Oh mann... findekeinensmilymithandaufdiestirnklatsch
-
-
@Termina Eigentlich nicht. Die beiden Zeitstempel existieren ja und die Berechnung wird auf dem Client (=das Gerät von dem du die VIS aufrufst) zur Laufzeit ausgeführt. Die beiden Zeitstempel existieren doch immer und sind befüllt? Notfalls lass die beiden Datenpunkte noch mal mit ausgeben. Da muss ein Wert direkt ab Aufruf drin stehen.
...oder deine VIS wäre so "mächtig", dass er tatsächlich schon anzeigt bevor er zum eigentlichen rechnen kommt.
-
Binding:
{akt:system.adapter.admin.0.alive.ts; zstempel:deconz.0.Sensors.47.temperature.tc; akt - zstempel > 1 ? "red" : "green"}
Bei Aufruf der Runtime sieht es so aus:
Nach ein paar Sekunden in der Runtime so:
Aufgrund meines Bindings -siehe oben- hätte es aber doch rot sein müssen, oder?
-
Kann es sein, dass die Farben nur in Widget mit Format-Charakter klappt?
Schau dir mal meine Lösung oben an. Nur zum Test, ob es dann klappt.
Ich habe es in eine HTML-Tabelle gepackt<table> <tr> <td> {akt:system.adapter.admin.0.alive.ts; zstempel:sonoff.0.ZBox.Time.ts; akt - zstempel > 1800000 ? "❌" : "✅"} </td> </tr> </table>
-
@HeinrichB
Vielen Dank für Deine Unterstützung. Aber selbst wenn ich >1 schreibe, macht er mir den grünen Haken... Ist das bei allen so?