NEWS
[gelöst]State per Script löschen
-
@dslraser sagte:
In javascript.0 funktioniert es nicht
Ja, das kann ich nachvollziehen. Bitte Issue auf Github erstellen.
-
@dslraser
Aber das folgende Löschen funktioniert, wenn man es aus der Instanz macht, unter der die Datenpunkte erstellt sind:if(existsState(id)) deleteState(id.substring(13));
Erläuterung: Habe erst mit einem Test-Script in der Instanz 0 einen Datenpunkt unter "javascript.1" so löschen wollen, was nicht funktionierte. Habe dann die Script-Instanz auf 1 geändert, womit dann das Löschen funktioniert hat.
-
@paul53 sagte in State per Script löschen:
@dslraser sagte:
In javascript.0 funktioniert es nicht
Ja, das kann ich nachvollziehen. Bitte Issue auf Github erstellen.
Ich hatte es eben schon gemeldet...
-
@dslraser sagte in State per Script löschen:
@paul53 sagte in State per Script löschen:
@dslraser sagte:
In javascript.0 funktioniert es nicht
Ja, das kann ich nachvollziehen. Bitte Issue auf Github erstellen.
Ich hatte es eben schon gemeldet...
Ich verstehe nicht wie Du es meinst. (ich habe nur javascript.0 und 0_userdata.0---weitere Instanzen habe ich nicht)
Die Datenpunkte werden bei mir per Script erstellt. Zum Testen nehme ich immer javascript.0 und "produktive" Sachen nehme ich 0_userdata.0. Jetzt kann man ja per Script den Installationsort zum erstellen der Datenpunkte festlegen.Hintergrund, warum ich diese löschen Funktion gerne hätte ist folgender:
Ich habe ein Blockly, womit mann mehrere DP erstellen kann und dann auch nutzen kann. Über eine Variable, die auf wahr oder falsch gestellt werden kann, möchte ich festlegen was im Blockly benutzt wird. Erstellt, aber unbenutzte Datenpunkte, also bei Variable auf falsch gestellt, sollen diese DP dann wieder gelöscht werden.
-
@dslraser
Du kannst die Datenpunkte unter "javascript.0" und "0_userdata.0" so löschen:if(existsState(id)) { if(id.substring(0, 11) == 'javascript.') deleteState(id.substring(13)); else deleteState(id); }
-
@paul53 sagte in State per Script löschen:
Du kannst die Datenpunkte unter "javascript.0" und "0_userdata.0" so löschen:
Danke, das funktioniert.
Wie kann ich mehrere auf einmal löschen, also z.B. alles ab Batterien_zaehlen (einschließlich Batterien_zaehlen)
-
@dslraser sagte:
Wie kann ich mehrere auf einmal löschen, also z.B. alles ab Batterien_zaehlen
Mittels $Selector.
const ids = $('javascript.0.xxx.Batterien_zaehlen.*'); // xxx ersetzen ! ids.each(function(id, i) { if(existsState(id)) deleteState(id.substring(13)); });
-
-
@paul53 sagte in [gelöst]State per Script löschen:
Mittels $Selector.
das geht mit
substring
nur in javascript.x (in 0_userdata.0 funktioniert es bei mir nicht, da kommt dann auchNot found
)ich mache es aktuell so
javascript Instanz
const idsjs = $('javascript.*.Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Batterien*'/*Batterien Zaehlen*/); idsjs.each(function(id, i) { if(existsState(id)) deleteState(id.substring(13)); });
0_userdata.0
const idsud = $('0_userdata.0.Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Batterien*'/*Batterien Zaehlen*/); idsud.each(function(id, i) { if(existsState(id)) deleteState(id); });
Oder habe ich was falsch gemacht ?
-
@dslraser sagte:
Oder habe ich was falsch gemacht ?
Nein, siehe hier. Wenn Du nur eine .each-Schleife haben möchtest, dann bau die Abfrage mit ein. Oder so:
const ids = $('javascript.0.*.Batterien_zaehlen.*'); ids.each(function(id, i) { if(existsState(id)) { if(id.startsWith('0_userdata.0.')) deleteState(id); else deleteState(id.substring(13)); } });
-
@paul53 sagte in [gelöst]State per Script löschen:
Nein, siehe hier. Wenn Du nur eine .each-Schleife haben möchtest, dann bau die Abfrage mit ein. Oder so:
Danke, das funktioniert so, aber mir ist eben erst aufgefallen das dann unter javascript.x auch scriptEnabled gelöscht wird.
-
@dslraser sagte:
unter javascript.x auch scriptEnabled gelöscht wird.
Wenn "Batterien_zaehlen" auch als Skript-Name verwendet wurde, dann darf man mit dem "*" nicht so großzügig umgehen, sondern muss genauer selektieren.
-
@paul53
Es werden alle scriptEnabled gelöscht, auch die, die nichts mit dem Namen zu tun haben. -
@dslraser sagte:
auch die, die nichts mit dem Namen zu tun haben.
Das wundert mich und kann ich bei mir mit dem $Selector nicht nachvollziehen.
Ein Buchstabe != "s" direkt hinter "javascript.0." sollte ausreichen, dies zu verhindern. -
@paul53
ich probiere nochmal. -
@dslraser sagte in [gelöst]State per Script löschen:
@paul53
ich probiere nochmal.ich jetzt auch nicht mehr, bleibt alles da. Da werde ich dann wohl beim probieren was falsch gehabt haben.
-
@paul53 sagte in [gelöst]State per Script löschen:
@dslraser sagte:
Oder habe ich was falsch gemacht ?
Nein, siehe hier. Wenn Du nur eine .each-Schleife haben möchtest, dann bau die Abfrage mit ein. Oder so:
const ids = $('javascript.0.*.Batterien_zaehlen.*'); ids.each(function(id, i) { if(existsState(id)) { if(id.startsWith('0_userdata.0.')) deleteState(id); else deleteState(id.substring(13)); } });
Ich habe jetzt eine Weile an einem Blockly was gemacht und als Ort zum erstellen und löschen der Datenpunkte immer javascript.0 benutzt, da funktioniert das löschen.
Eben habe ich dann mal die gleichen Datenpunkte in 0_userdata.0 erstellt und wollte diese anschließend mit dieser Schleife löschen, dort wird nicht gelöscht.
Nehme ich die zwei Schleifen wie hier funktioniert an beiden Orten das löschen. -
@dslraser sagte:
Datenpunkte in 0_userdata.0 erstellt und wollte diese anschließend mit dieser Schleife löschen, dort wird nicht gelöscht.
Habe es gerade getestet und die 3 Datenpunkte unter "0_userdata.0", die ".on_off" in der ID hatten, wurden gelöscht:
const ids = $('0_userdata.0.*.on_off*'); ids.each(function(id, i) { if(existsState(id)) { if(id.startsWith('0_userdata.0.')) deleteState(id); else deleteState(id.substring(13)); } });
-
verstehe ich das richtig, das man datenpunkte, die nicht in javascript.x oder 0_userdata... niemals mit einem script löschen kann ?
warum ich frage:
der unifi adapter löscht keine datenpunkte, da er nicht entscheiden kann, ob das ein "falscher" client ist - also z.b ein gast, der nur einmal im netz eingloggt war, und für ewig in den datenpunkten bleibt
habe ein tabellen script, welches mir alle clients anzeigt und wollte über dieses script/tabelle, die datenpunkte löschen lassen -
@liv-in-sky sagte:
datenpunkte, die nicht in javascript.x oder 0_userdata... niemals mit einem script löschen kann ?
Doch, mit deleteObject(id).