NEWS
[Tipp] In HTML-Widget States verarbeiten/anzeigen
-
Hi,
ich hatte mir einen Wolf gesucht hier im Forum und nun die Lösung.
Ich wollte im VIS anzeigen, ob ein Script regelmäßig einen Datenpunkt updated (in meinem Fall mein Log-Script).
Also: Falls Datenpunkt0_userdata.0.Log-Script.All.lastTimeUpdated
in den letzten 30 Sekunden aktualisiert wurde, dann:
Falls keine Aktualisierung innerhalb 30 Sekunden, dann:
Hier der Code für das HTML-Widget:
Widget-Export (enthält bereits den Code):
Dies nur als ein Beispiel.
Entscheidende Info von hier: https://forum.iobroker.net/topic/29851/socket-io-state-lesen-und-setzen/
Keywords für Forumsuche (Tags sind limitiert hier, warum auch immer): getState() setState() vis.setValue vis.getValue
-
Da kommt nicht viel?
-
@sigi234
Hab oben auf den "Standard-Pfad"'0_userdata.0.Log-Script.All.lastTimeUpdated'
geändert, damit sollte es gehen. Vorher stand da'0_userdata.0.System.Log-Script.All.lastTimeUpdated'
Hier übrigens auch gepostet: https://forum.iobroker.net/post/384066 -
Damit öffnet man sich auch andere schöne Spielereien, ohne zusätzlicher Datenpunkte.
Z.B. Ausgabe eines Datums von einem State in "Heute, um 20:15 Uhr" anstatt "25.02.2020, um 20:15 Uhr" usw.
Man kann also mittels JavaScript die State-Daten entsprechend verarbeiten und zur Anzeige bringen, gerade wenn es dafür noch keine Widgets gibt oder diese Optionen nicht bieten. -
@Mic
Hinweis:
Apollon77 hatte in deinem verlinkten Thread folgendes gepostet:getState liefert den Wert des States. GetObject liefert das Objekt. Und bei getState ist es state.val (wenn state die Variable des response callbacks ist)
Du benutzt in deinem Beispiel oben getStates und greifst im Nachgang auf das eigentliche Objekt des json mit [objID] zu. Dürfte einfacher sein, wenn getState genutzt wird. Habe es selbst nie getestet, da ich nie states auslese.
-
-
@GiuseppeS sagte in [Tipp] In HTML-Widget States verarbeiten/anzeigen:
@Mic
Hinweis:
Apollon77 hatte in deinem verlinkten Thread folgendes gepostet:getState liefert den Wert des States. GetObject liefert das Objekt. Und bei getState ist es state.val (wenn state die Variable des response callbacks ist)
Du benutzt in deinem Beispiel oben getStates und greifst im Nachgang auf das eigentliche Objekt des json mit [objID] zu. Dürfte einfacher sein, wenn getState genutzt wird. Habe es selbst nie getestet, da ich nie states auslese.
Danke für den Hinweis. Ich hatte kurz getState() getestet, aber hatte nicht funktioniert bei mir, daher blieb ich bei getObject.
@Glasfaser sagte in [Tipp] In HTML-Widget States verarbeiten/anzeigen:
oder mit Emoji den Zustand anzeigen ...
Auch schön.
-
@Mic
Vielleicht würde es so auch funktionieren...servConn.getStates(objID, (error, states) => { let stateValue = states[objID].val; // evtl so funktioniert es auch servConn.getState(objID, (error, state) => { let stateValue = state.val;
-
@GiuseppeS sagte in [Tipp] In HTML-Widget States verarbeiten/anzeigen:
@Mic
Vielleicht würde es so auch funktionieren...Geht leider nicht, Widget bleibt dann komplett leer.
-
Wollte nur mal erwähnen , habe mir letztens ein Wolf gesucht !
Hat ein Nachteil , sperrt die Funktion "View export" im Vis Editor .
-
@Glasfaser sagte in [Tipp] In HTML-Widget States verarbeiten/anzeigen:
Wollte nur mal erwähnen , habe mir letztens ein Wolf gesucht !
So gings mir auch
Hat ein Nachteil , sperrt die Funktion "View export" im Vis Editor .
Grad getestet, das ist bei mir leider auch so. Du hast ja hier auch gepostet, wo ein Widget-JS die Export-Funktion sperrt: https://forum.iobroker.net/post/433242
Vielleicht machst du am besten im VIS-Adapter ein Issue auf? Danke. -
Ist mir letztens aufgefallen , da ich mein View auf Logparser komplett umgestellt habe .
( Ja ... ich habe es jetzt komplett umgestellt )
-
@Mic
Hallo Mic, könntest du erläutern, wie das mit dem Umwandeln in "heute, um 20:15 Uhr" funktioniert ?Ich weiß, es passt nicht ganz zum eigentlichen Thema ... aber genau diese Funktion suche ich schon länger, habe aber bisher nichts dazu gefunden
-
@Förster sagte in [Tipp] In HTML-Widget States verarbeiten/anzeigen:
Ich weiß, es passt nicht ganz zum eigentlichen Thema ... aber genau diese Funktion suche ich schon länger, habe aber bisher nichts dazu gefunden
Passt nun wirklich gar nicht hier rein Daher nur kurze Antwort: Umsetzung kannst du dir im Adapter-Code ansehen:
https://github.com/Mic-M/ioBroker.logparser/blob/master/lib/mic-functions.js#L104
Zu weiteren Fragen machst du am besten separaten Thread auf mit genauer Beschreibung, Use Case, usw.