NEWS
Zeitdifferenz in Bindings?
-
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? -
@Termina sagte in Zeitdifferenz in Bindings?:
@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?...also selbstverständlich mit meinen Datenpunkten angepasst!
-
@Termina eigentlich nicht. Bei mir greift diese Zeitdifferenz von 30min. Also im Skript in mSek.
-
@Termina kannst du es Mal mit einem anderen DP ausprobieren?
-
@HeinrichB sagte in Zeitdifferenz in Bindings?:
<table> <tr> <td> {akt:system.adapter.admin.0.alive.ts; zstempel:sonoff.0.ZBox.Time.ts; akt - zstempel } </td> </tr> </table>
oder die Entscheidungslogik weglassen, dann sieht man was das Ergebnis der Berechnung ist.
undefined ist glaube ich auch false -
@OliverIO bei mir geht es. Das Code Schnippsel war als Beispiel gedacht
-
...oder ich bin heute die "Oberpfeife" schlecht hin. Irgendwie hinterlässt allmählich 1 Jahr Baulärm der Großbaustelle gegenüber doch wohl so seine Spuren...
Der Fehler ist ziemlich trivial. Es heißt nicht ".tc" sondern ".lc" was @Termina nutzt. That's all
Ich ändere es oben noch ab, nicht dass da noch andere drüber stolpern...Daher könnte auch das "undefined" am Anfang kommen, da er den nicht vorhandenen Wert vom Datenpunkt sucht...
-
@SBorg
Sry, konnte ich jetzt erst testen - es funktioniert! Vielen Dank dafür.Unabhängig davon und ein anderes Thema (vielleicht kann mir jemand Probleme mit dem DasWetter-Adapter weiterhelfen!?
Das undefined kommt leider beim ersten Aufrufs der Runtime trotzdem. Ich scheine da irgendwo eine falsche Einstellung zu haben, denn ich habe öfter bei den Deconzsensoren oder auch beim "DasWetter" keine Übermittlung der Datenpunkten und somit z.B. "NULL" stehen.
Im Editor habe ich "Immer rendern" angehakt - trotzdem diese Probleme. Aber wie gesagt, gehört hier dann wohl nicht zum Thema Bindings.Ganz lieben Dank an alle hier für die Unterstützung!
-
Kennt vielleicht jemand mal einen Seite, wo das Thema Bindings richtig schön (auch für Anfänger) erklärt wird?
-
@Ramses123
Ich hatte schon einmal in Kurzform versucht in meinem Thread das zu erklären. Allerdings muss man sich da als Anfänger herantastenja das mit dem binding ist nicht so einfach zu erklären.
Hier erst einmal zur offiziellen Doku
https://github.com/ioBroker/ioBroker.vis
Binding of ObjectsMit der Bindung kann man aktuell Berechnungen vornehmen, die nur im Client (also Browser) durchgeführt werden.
Es gibt einige Möglichkeiten dort direkt die Daten aus Datenpunkten einzuspeisen und im begrenzten Maße Möglichkeiten dort Entscheidungen zu treffen.
Diese Bindung kann ich in alle Eigenschaftenfelder eines widgets eintragen. Je nachdem wo, entstehen dann unterschiedliche Effekte. Wenn die Bindung eingetragen wird, dann wird genau diese Stelle mit dem Berechnungsergebnis aus der Bindung ersetzt. Also muss nicht nur die Bindung drin stehen, sondern ich kann auch normalen Text/Anweisungen mischen oder sogar mehr wie eine Bindung eintragen
trägt man es in das HTML-Feld eines HTML-widgets ein, dann kann man Text oder sogar richtiges HTML ausgeben.
trägt man das in anderes Feld wie bspw color ein, dann könnte man auf Basis eines Datenpunktes, der sagen wir mal eine der Zahlen 1,2,3 enthalten kann entscheiden welche Farbe ein Text haben soll. Das selbe geht auch mit Hintergrundfarben.
Wenn man es in die Größenfelder eines widgets eintrage, dann kann man sogar dynamische Balken realisieren usw.
In die Bindung kann man auch javascriptbefehle eintragen. Genau das mache ich mir zunutze, in dem ich eine Funktion bereitstelle, die nichts anders sagt als Wahr oder Falsch.
Auf Basis dieser Auswertung kann ich dann verschiedene Texte erzeugen -
@OliverIO
Ich würde dies nun gerne noch ein wenig ausweiten. Bisher wurden ja die 1800000ms abgefragt. Ich habe aber teilweise viele zu überprüfende Datenpunkte und möchte teilweise unterschiedliche Abfragen starten. Ich zeig mal ein Beispiel:{akt:system.adapter.admin.0.alive.ts; zstempel:deconz.0.Sensors.33.temperature.lc; uptime:0_userdata.0.Aqara_max_Updatezeit; akt - zstempel > uptime ? "red" : "#4d4f51"}
Dies funktioniert, wenn ich in bei der Abfrage für 30 min in den Datenpunkt 1800000 eintrage. Wie bekomme ich es nun hin, dass ich beim Datenpunkt nur die Minuten eintrage - also Datenpunkt x 60000?
Folgendes funktionierte nicht:
{akt:system.adapter.admin.0.alive.ts; zstempel:deconz.0.Sensors.33.temperature.lc; uptime:0_userdata.0.Aqara_max_Updatezeit; akt - zstempel > uptime x 60000 ? "red" : "#4d4f51"}
oder
{akt:system.adapter.admin.0.alive.ts; zstempel:deconz.0.Sensors.33.temperature.lc; uptime:{0_userdata.0.Aqara_max_Updatezeit x 60000}; akt - zstempel > uptime ? "red" : "#4d4f51"}
Des Weiteren habe ich gemäß Github auch folgendes mal per HTML-Widget probiert:
{0_userdata.0.Aqara_max_Updatezeit \"*(4)"}
antwort ist leider : undefined
Möchte das halt gerne später in der VIS über ein Input-Widget jederzeit anpassen und visualisieren können. Geht das? Jemand eine Idee?