NEWS
Subscribe erstellen
-
Moin,
es ist soweit. Ich bin von CCU.IO auf ioBroker umgestiegen. Aber irgendwie stell Ich mich zu duselig an.
Ich will ein Script schreiben, welches auf eine Variabe reagiert. Bei CCU.IO sah das so aus:
subscribe ({id: xxxx }, function(data)
{
});
Das scheint bei ioBroker so ja nicht zu funktionieren.
Könnt ihr mir ein Beispiel posten?
Oder muß Ihr irgend was neu starten nach speichern/neustart des Scriptes ?
Gruß Sebastian
-
Hi Sebastian,
das muss glaub ich "subscribe on" heissen. Auf jedenfall funktioniert auch "on" alleine um auf Änderungen des Objekts zu reagieren.
Gesendet von meinem Jolla mit Tapatalk
-
Momentan sieht es so aus:
on("vis.0.Szenario.TVModus.Trigger_TVModus"/Trigger_TVModus/, function(data)
{
log("TestLogEintrag","info");
});
geht aber leider auch nicht
-
Schau mal hier gabs schon ne Diskussion über subscribe. http://forum.iobroker.org/viewtopic.php?t=1479
Gesendet von meinem Jolla mit Tapatalk
-
Seh ich jetzt grad. Das muss so aussehen: on({id: id, val: value}, function(){});
Gesendet von meinem Jolla mit Tapatalk
-
Ich mach irgend etwas anderes Falsch. Mein Script sieht jetzt so aus:
subscribe({id: "vis.0.Szenario.TVModus.Trigger_TVModus", val: true}, function (obj)
{
log("TestLogEintrag","info");
});
subscribe({id: "vis.0.Szenario.TVModus.Trigger_TVModus",
change:'any',
from : 'system.adapter.web.0'
}, function (obj) {
log("ANY","info");
});
on({id: "vis.0.Szenario.TVModus.Trigger_TVModus", val: 1}, function()
{
setState('vis.0.Szenario.TVModus.Trigger_TVModus', 0);
});
Und nicht einer löst aus.
P.S. vis.0.Szenario.TVModus.Trigger_TVModus ändere Ich über VIS und sehe auch, das sich der Wert ändert
-
Ich hatte es auch mal das Trotz Änderung des Objekt wertes nichts passiert ist. Bei mir war der Javascript Adapter unter Instanzen nicht aktiviert.
Also einen Fehler erkenne ich jetzt keinen, bin aber auch Anfänger wenn es um Javascript geht.
-
Auch der ist bei mir Aktiv
-
Ok. Jetzt hab ich das mal nach gestellt und deinen code und das Objekt mit selben Namen und Pfad erstellt.
Bei mir geht das auch mit der ersten subscribe variante.
Mach mal einen Screenshot vom Instanz Tab und vom Skripte Tab und poste den hier.
-
Ich hofe das hilft dir…
681_instanz.jpg
681_skript.jpg -
Das Einzige was mir noch aufgefallen ist:
> id: "vis.0.Szenario.TVModus.Trigger_TVModus"
So sieht es bei dir aus.> id: "javascript.0.test_objekt"****/*test_objekt*/****
So wenn man ID Einfügen benutzt.Ich meine gelesen zu haben das der vermeintlich auskommentierte Text, den ich markiert habe, einen Zweck erfüllt.
-
Ich probier es mal aus.
Für mich war es bisher nur ein Kommentar
-
immer noch nicht
-
Hm…
Die Log Stufe für den Javascript Adapter auf Debug stellen, dann gibt das Log mehr Informationen was im Hintergrund läuft.
Jetzt fällt mir echt nicht mehr ein.
-
Ne auch nicht. Vielleicht weiß noch jemand anderer wo dran es liegen könnte.
Dennoch Danke :roll:
-
Nach meiner Erfahrung funktioniert
on("vis.0.Szenario.TVModus.Trigger_TVModus"/*Trigger_TVModus*/, function(data) { log("TestLogEintrag","info"); });
unter der Voraussetzung, dass die id korrekt ist und der Wert des Datenpunktes verändert wird. Nach Wertänderung muss der Log-Eintrag erzeugt werden. Kann der Wert nicht auch im Reiter "Zustände" verändert werden um zu testen ?
-
Guten Morgen,
ich ändere den Wert des Objektes über VIS. Und Der Wert ändert sich auch. Das habe Ich schon kontrolliert.
Mus das Objekt einen bestimmten Datentypen besitzen?
2858_view_alexa1.txt -
Nicht das ich wüsste. Ich lass objekte von scripten erzeugen ohne das ich den Datentyp festlege und das funktioniert.
Gesendet von meinem Jolla mit Tapatalk
2858_screenshot__829_.png
2858_screenshot__826_.png
2858_screenshot__834_.png
2858_screenshot__835_.png
2858_screenshot__841_.png
2858_screenshot__844_.png
2858_screenshot__843_.png
2858_screenshot__836_.png
2858_screenshot__848_.png
2858_screenshot__842_.png -
So, jetzt läuft es:
hab den JavaScript Adapter neu installiert. Danach ist mir auch aufgefallen, das ich die JavaScript Version 1.0.8 anstatt 1.0.7 drauf habe.
Danach stand zumindest in der Log:
` > javascript-0 Stop javascript script.js.Script1
javascript-0 script.js.Script1: registered 2 subscriptions and 0 schedules
javascript-0 Start javascript script.js.Script1 `
Danach ging es immer noch nicht, weil er das Script sofort wieder beendet hat.
Script komplett gelöscht und neu erstellt….
Taaattaaaaaa:
> script.js.Script1: TVTrigger!
So richtig nachvollziehbar ist es für mich immer noch nicht. Aber zumindest funktioniert es jetzt
Danke für die Hilfe…