NEWS
Neue und gelöschte States in Script erst nach Neustart?
-
@Waly_de sagte in Neue und gelöschte States in Script erst nach Neustart?:
Über ein MQTT-Gateway sammle ich Bluetooth-ID's ein. Ich lese damit Pflanzensensoren und ein paar Bacons zur Positionsbestimmung aus
Hast du schon mal den BLE-Adapter probiert? Da kannst du zumindest deaktivieren, dass neue Objekte angelegt werden.
-
@paul53 sagte:
Allerdings glaube ich, dass der $Selector auch auf den Puffer zurück greift.
Habe es mal mit Erzeugen eines DP per Admin, dem $Selector und Löschen per Script getestet: Ohne Instanz-Neustart hat der $Selector den neuen DP gefunden und nach dem Löschen nicht mehr.
-
@paul53 sagte in Neue und gelöschte States in Script erst nach Neustart?:
Habe es mal mit Erzeugen eines DP per Admin
Es könnte mit der Struktur
device.channel.state
zusammen hängen. Ich konnte das vor einer halben Ewigkeit wie folgt reproduzieren:
https://github.com/ioBroker/ioBroker.javascript/issues/109 -
@AlCalzone sagte:
Es könnte mit der Struktur device.channel.state zusammen hängen.
Gerade getestet: "ESP_Easy_1" ist device, "GARTEN_Stromsensor" ist channel, "Power" ist gerade per Admin erzeugter Datenpunkt.
Das synchrone existsState(id) zeigt übrigens, dass der Puffer der JS-Instanz aktualisiert wurde, sonst wäre nicht gelöscht worden.
-
@paul53
Bei per Admin angelegten Datenpunkten hatte ich die Probleme auch nicht.hier was zum rekonstruieren:
zunächst ein paar states Anlegen:
createState("Personen.Test.sub.sub1",false,false,{role: 'state', type: 'boolean'}); createState("Personen.Test.sub.sub2",false,false,{role: 'state', type: 'boolean'}); createState("Personen.Test.sub3","Testwert",false);
dann durchlaufen und löschen:
$('channel[state.id=javascript.0.Personen.Test.*]').each(function (id, i) { log(i + " - " + id + " existsObject: " + existsObject(id)) deleteObject(id,true); });
Ester Aufruf der schleife:
16:33:26.060 info javascript.0 (22097) Start javascript script.js.common.StateDeleteTest 16:33:27.316 info javascript.0 (22097) script.js.common.StateDeleteTest: 0 - javascript.0.Personen.Test.sub.sub1 existsObject: true 16:33:27.319 info javascript.0 (22097) script.js.common.StateDeleteTest: 1 - javascript.0.Personen.Test.sub.sub2 existsObject: true 16:33:27.320 info javascript.0 (22097) script.js.common.StateDeleteTest: 2 - javascript.0.Personen.Test.sub3 existsObject: true
zweiter bis x-ter Aufruf der Schleife:
16:33:48.202 info javascript.0 (22097) Start javascript script.js.common.StateDeleteTest 16:33:49.081 info javascript.0 (22097) script.js.common.StateDeleteTest: 0 - javascript.0.Personen.Test.sub.sub1 existsObject: false 16:33:49.083 info javascript.0 (22097) script.js.common.StateDeleteTest: 1 - javascript.0.Personen.Test.sub.sub2 existsObject: false 16:33:49.084 info javascript.0 (22097) script.js.common.StateDeleteTest: 2 - javascript.0.Personen.Test.sub3 existsObject: false
nach Neustart von Javascript:
6:36:15.855 info javascript.0 (26064) Start javascript script.js.common.StateDeleteTest
Bei Euch auch so?
-
@Waly_de sagte in Neue und gelöschte States in Script erst nach Neustart?:
createState("Personen.Test.sub.sub1"
Hast du die Objekte für die "Zwischenstufen" auch angelegt?
Personen
,Personen.Test
,Personen.Test.sub
? -
@AlCalzone nein... sind automatisch da..
-
@Waly_de Nur als Ordner sichtbar oder auch mit einem Objekt (device, channel) versehen?
-
@AlCalzone Nur als Ordner....
-
@Waly_de Du selektierst aber channel. Wir hatten grade vorhin erst unter den Devs die Diskussion, dass der JS-Adapter von der "klassischen" Struktur
device.channel.state
ausgeht und sich sonst extrem komisch verhält.
Daher gehts in @paul53 seinem Beispiel, er befolgt die Struktur.Bei dir nicht. Probier mal,
Personen
als device-Objekt undPersonen.Test
als channel-Objekt anzulegen, und ob es dann auf der Ebene vonPersonen.Test.sub
mit dem Löschen und selektieren geht. -
@Waly_de sagte:
Bei Euch auch so?
Ja, da falscher Selektor. So funktioniert es wie erwartet:
Seltsamerweise gibt der falsche Selektor nicht vorhandene Datenpunkte aus. Da wurde wohl eine Initialisierung vergessen ?
-
@paul53
Klasse, das ist die Lösung für mich! Wusste garnicht das es auch so geht.Danke Euch!
LG Markus