NEWS
UNSOLVED vis editor object browser andere werte als werte in admin
-
Hi Leute,
ich habe folgendes Phänomen:
Bei mir zeigt der vis editor object browser bei objekten die keinen Wert haben sollten "null" an.
Schaue ich mir dasselbe objekt in admin an, dann ist dort alles korrekt und kein Wert bzw. null dort nicht zu sehen.Ich hätte schon Browser Cache leeren, unterschiedliche Browser, downgrade vom admin adapter von 4.0.10 auf 3.7.8, sowie löschen dieser objekte versucht...
Leider alles ohne Erfolg.
Hat jemand eine Idee wie ich die objekt werte im vis editor object browser wieder synchron zu den tatsächlichen objekt werten bekomme ?
Beste Grüße
P.S.
Node.js: 10.17.0
NPM: 6.11.3
js-controller: 3.1.6 -
@Qlink sagte:
vis editor object browser wieder synchron zu den tatsächlichen objekt werten bekomme ?
Nein, Select ID zeigt keine aktuellen Werte an, was auch nicht beabsichtigt ist.
-
@Qlink sagte in vis editor object browser andere werte als werte in admin:
wie ich die objekt werte im vis editor object browser wieder synchron zu den tatsächlichen objekt werten bekomme ?
Gar nicht!
Wie @paul53 schon schrieb ist der Wert im ID Selector nicht unbedingt aktuell.
In der ID Selector Box geht es darum die ID auszuwählen, nicht um den Wert. -
ich habe aber auf Grund dessen, dass scheinbar im select ID Fenster fälschlicherweise der Wert "null" steht das Problem, dass bei mir in vis das metro tile toggle gelb aufleuchtet. Es wertet "null" genauso aus wie true.
Der Datenpunkt hat als tatsächliche Werte true wenn meine Heizung Warmwasser produziert und keinen Wert, wenn kein Warmwasser produziert wird...Wenn kein Wert im select id drin steht bleibt das metro tile toggle korrekterweise dunkel. Wenn true drin steht oder null, dann wird es gelb...
Wie kann ich das lösen, wenn ich den "null" Wert nicht loswerde ?Beste Grüße
-
@Qlink das Thema war hier irgendwo im Forum. Musst du mal suchen.
Ich würde über ein Skript die Werte umgewandelt in einen eigenen Datenpunkt schreiben und den im widget verknüpfen.
-
Hab ich einen Denkfehler im Script oder wie liegt der Fehler ?
Die Werte für den erzeugten DP "Cool VIS" bleiben immer auf true, auch wenn der true Wert vom DP "KÜHLEN" verschwindet ...Hast du eine Idee ?
Beste Grüße
-
@Qlink sagte:
Hast du eine Idee ?
Ich habe die Befürchtung, dass der Zustand des Datenpunktes vom Adapter gelöscht wird: Dann liefert der Javascript-Adapter null zurück (im Tab "Objekte" leer), aber er kann nicht mehr triggern. Wechsle mal in die Zustands-Ansicht der Objekte, und schau, ob Zeitstempel usw. vorhanden sind. Was ergibt dieses Test-Script, wenn der Datenpunkt-Wert nicht true ist ?
log(existsState("stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN"));
-
Es sind tatsächlich keine Zeitstempel vorhanden.
Hier der Output von deinem Script:
Wenn ich das richtig lese, sagt das aber eigentlich false und nicht null oder ?
Ich hätte auch schon folgende Variante mit null probiert, geht aber leider auch nicht:
-
@Qlink sagte:
Es sind tatsächlich keine Zeitstempel vorhanden.
Hier der Output von deinem Script:Damit ist meine Vermutung bestätigt, dass kein Zustand existiert, wenn der Wert nicht true ist, die Datenpunkte also auch nicht triggern können. Vorschlag: Erstelle einen eigenen Datenpunkt vom Typ Werteliste, und verwende diesen in Vis:
{ "_id": "0_userdata.0.Stiebel.Status.Betriebsstatus", "type": "state", "common": { "name": "Stiebel Betriebsstatus", "role": "", "type": "number", "read": true, "write": true, "desc": "Manuell erzeugt", "def": 0, "min": 0, "max": 3, "states": { "0": "Aus", "1": "Heizen", "2": "Warmwasser", "3": "Kühlen" } }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1596889021866, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Die vier Werte können mit einem Blockly-Skript erzeugt werden:
Inhalt der Javascript-Funktion notExistsState(id):
return !existsState(id);
Alternativ kann auch ein eigener Datenpunkt vom Typ "string" zur Anzeige in Vis verwendet werden:
-
Sorry für die späte Rückmeldung. Urlaub und Arbeit haben mich die letzten Wochen etwas ausgelastet.
Vielen Dank für deinen Input.
Weißt du auch wie ich mit den Metro Tile Toggle Widgets in Vis den aktuellen Status mit den 4 Werten entsprechend anzeigen/darstellen kann ?
Soweit ich das sehe kann das Metro Tile Toggle Widget ja "nur" true oder false auswerten, nicht aber die Werte 0 - 3 oder geht das auch ?
Beste Grüße -
-
Alles klar, ich denke ich habe eine Lösung gefunden.
Habe versucht dein Blockly nachzubauen.
Es reagiert auch, sobald z.B. Warmwasser auf true gesetzt wird, aber sobald Warmwasser wieder null hat, bleibt der Datenpunkt Betriebsstatus auf 2 (Warmwasser) und wird nicht auf 0 (Aus) gesetzt...Hier mein nachgebautes Script:
Hab ich wo was falsch verstanden oder übersehen ?
Beste Grüße
-
@Qlink sagte:
Hab ich wo was falsch verstanden oder übersehen ?
Du hast als Vergleichswert die Datenpunkt-ID, vergleichst aber mit Name. Nimm zum Vergleich die Objekt ID aus "Trigger".
@Qlink sagte in vis editor object browser andere werte als werte in admin:
sobald Warmwasser wieder null hat, bleibt der Datenpunkt Betriebsstatus auf 2 (Warmwasser) und wird nicht auf 0 (Aus) gesetzt...
Wenn keiner der 3 Datenpunkte mehr einen Zeitstempel hat, muss nach spätestens 15 s der Wert auf 0 ("Aus") schalten.
-
du meinst so ?
-
-
Leider klappt das Umschalten des Wertes nach 15s auf 0(Aus) leider nach wie vor nicht ...
Er bleibt auf 2(Warmwasser) ...Hast du noch eine Idee ?
Beste Grüße
-
@Qlink sagte:
Leider klappt das Umschalten des Wertes nach 15s auf 0(Aus) leider nach wie vor nicht
Haben alle 3 Datenpunkte keinen Zeitstempel mehr ? Wir hatten hier geprüft, dass exisitsState(id) false zurück liefert, wenn der Datenpunkt keinen Zustand hat. Folglich müssen alle 3 notExistsState(id) true zurück liefern, wenn keiner der Datenpunkte mehr einen Zustand hat. Bau mal zusätzlich einen Debug-Block in das Intervall ein:
-
das log spuckt folgendes aus:
javascript.0 2020-09-02 13:38:39.633 info (2804) script.js.vis_Optik_Scripte.ISG_Betriebsstatus: Heizen:falseKühlen:trueWW:true javascript.0 2020-09-02 13:38:24.619 info (2804) script.js.vis_Optik_Scripte.ISG_Betriebsstatus: Heizen:falseKühlen:trueWW:false javascript.0 2020-09-02 13:38:09.612 info (2804) script.js.vis_Optik_Scripte.ISG_Betriebsstatus: Heizen:falseKühlen:trueWW:false javascript.0 2020-09-02 13:37:54.601 info (2804) script.js.vis_Optik_Scripte.ISG_Betriebsstatus: Heizen:falseKühlen:trueWW:false javascript.0 2020-09-02 13:37:39.599 info (2804) script.js.vis_Optik_Scripte.ISG_Betriebsstatus: Heizen:falseKühlen:trueWW:false javascript.0 2020-09-02 13:37:24.588 info (2804) script.js.vis_Optik_Scripte.ISG_Betriebsstatus: Heizen:falseKühlen:trueWW:false javascript.0 2020-09-02 13:37:09.562 info (2804) script.js.vis_Optik_Scripte.ISG_Betriebsstatus: Heizen:falseKühlen:trueWW:false javascript.0 2020-09-02 13:36:54.565 info (2804) script.js.vis_Optik_Scripte.ISG_Betriebsstatus: Heizen:falseKühlen:trueWW:false javascript.0 2020-09-02 13:36:39.553 warn (2804) at process.topLevelDomainCallback (domain.js:126:23) javascript.0 2020-09-02 13:36:39.553 warn (2804) at processImmediate (timers.js:658:5) javascript.0 2020-09-02 13:36:39.553 warn (2804) at tryOnImmediate (timers.js:676:5) javascript.0 2020-09-02 13:36:39.553 warn (2804) at runCallback (timers.js:705:18) javascript.0 2020-09-02 13:36:39.553 warn (2804) at Immediate.setImmediate (C:\iobroker\iob01\node_modules\iobroker.js-controller\lib\adapter.js:5384:37) javascript.0 2020-09-02 13:36:39.553 warn (2804) at Object.stateChange (C:\iobroker\iob01\node_modules\iobroker.javascript\main.js:451:25) javascript.0 2020-09-02 13:36:39.553 warn (2804) at Object.callback (C:\iobroker\iob01\node_modules\iobroker.javascript\lib\sandbox.js:1052:38) javascript.0 2020-09-02 13:36:39.553 warn (2804) at Object.<anonymous> (script.js.vis_Optik_Scripte.ISG_Betriebsstatus:11:7) javascript.0 2020-09-02 13:36:39.553 warn (2804) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN" not found (3) states[id]=null javascript.0 2020-09-02 13:36:24.570 info (2804) script.js.vis_Optik_Scripte.ISG_Betriebsstatus: Heizen:falseKühlen:trueWW:false javascript.0 2020-09-02 13:36:09.556 info (2804) script.js.vis_Optik_Scripte.ISG_Betriebsstatus: Heizen:falseKühlen:trueWW:false javascript.0 2020-09-02 13:35:54.543 info (2804) script.js.vis_Optik_Scripte.ISG_Betriebsstatus: Heizen:falseKühlen:trueWW:false javascript.0 2020-09-02 13:35:39.527 warn (2804) at process.topLevelDomainCallback (domain.js:126:23) javascript.0 2020-09-02 13:35:39.527 warn (2804) at processImmediate (timers.js:658:5) javascript.0 2020-09-02 13:35:39.527 warn (2804) at tryOnImmediate (timers.js:676:5) javascript.0 2020-09-02 13:35:39.527 warn (2804) at runCallback (timers.js:705:18) javascript.0 2020-09-02 13:35:39.527 warn (2804) at Immediate.setImmediate (C:\iobroker\iob01\node_modules\iobroker.js-controller\lib\adapter.js:5384:37) javascript.0 2020-09-02 13:35:39.527 warn (2804) at Object.stateChange (C:\iobroker\iob01\node_modules\iobroker.javascript\main.js:451:25) javascript.0 2020-09-02 13:35:39.527 warn (2804) at Object.callback (C:\iobroker\iob01\node_modules\iobroker.javascript\lib\sandbox.js:1052:38) javascript.0 2020-09-02 13:35:39.527 warn (2804) at Object.<anonymous> (script.js.vis_Optik_Scripte.ISG_Betriebsstatus:11:7) javascript.0 2020-09-02 13:35:39.527 warn (2804) getState "stiebel-isg.0.Info.STATUS.BETRIEBSSTATUS.KUEHLEN" not found (3) states[id]=null
und in blockly kommt diese meldung:
13:36:39.553 warn javascript.0 (2804) at Object.<anonymous> (script.js.vis_Optik_Scripte.ISG_Betriebsstatus:11:7)
-
@Qlink
"Heizen" hat die ganze Zeit einen Zustand. Was wird im Tab "Objekte" in der Statusansicht gezeigt ?
Die Abfrage von "Wert von ..." erzeugt bei nicht vorhandenem Zustand die Warnung. Deshalb vergleiche besser die Objekt ID des Triggers. -