NEWS
[Vorlage] Flexibles Timerskript + Vis
-
@dominik-f Sehr seltsam. Ja, bei Einschalten wird true gesendet, das kannste auch sehen wenns nicht ausgeblendet wär (Spalte "sende" in meinem pic). Hab grad keine Idee zu dem Prob, musst mal beobachten. Kannst auch versuchen statt "EInschalten" das "Wert senden" zu nehmen und dort true einzutragen.
-
Habs mal eingeblendet und dort steht auch das true gesendet wird. Ich werde es mal beobachten. Es war auch das erste Mal, dass dieser Fehler aufgetaucht ist. Vielleicht war es einfach ein Zusammenspiel unglücklicher Umstände^^
-
@pittini said in [Vorlage] Flexibles Timerskript + Vis:
Btw. Eine alphabetische Sortierung ist nicht möglich oder?
Nein, ist nicht drin oder geplant.
Hi pittini,
arbeitest Du noch aktiv am Script?Die Sortierung scheint doch gefragt zu sein.
Und es betrifft eigentlich nur die Liste, die ja als HTML-Table codiert aufgebaut wird.
Die Nummer des Timers ist für die Anzeige eigentlich nicht relevant, ausser das er unique ist und den Index darstellt und damit den DP definiert, der editiert wird.Ich denke an ein Stringfeld, in das man irgendwelche Werte schreibt (z.b. 01.01.02, Pool-01, usw), den Wert zusätzlich als Datenpunkt (z.b. "Sort") des Timers schreibt und vor der Erstellung der VIS-Tabelle das Array danach sortiert. Eventuell die Timer-Nummer noch als zusätzlichen Vergleich in die Sortierung einbinden, bei leeren oder gleichen Stringwerten.
Damit wäre der indexer "x", zwar nicht mehr die Timernummer, aber den könnte man aus den Datenpunkt ja extrahieren.
Siehst Du darin unüberwindliche oder auch nur große Probleme?
Ansonsten würde ich es mit meinen bescheidenen Fähigkeiten in JS mal versuchen. -
@diwoma sagte in [Vorlage] Flexibles Timerskript + Vis:
Hi pittini,
arbeitest Du noch aktiv am Script?Nicht wirklich. Es tut was ich brauch.
Siehst Du darin unüberwindliche oder auch nur große Probleme?
Machbar ist (fast) alles.
Ansonsten würde ich es mit meinen bescheidenen Fähigkeiten in JS mal versuchen.
Ja klar, hau rein.
-
Hi zusammen,
kann mir jemand Helfen, folgende Meldungen zu behandeln?
In der Aufzählung für den Timer sind Aliase und wenn diese geschaltet werden, gibt es nen Eintrag ins Log.
Er fängt an mit alias.0.Licht.Ankleide existiert nicht, das stimmt auch, denn es heißt alias.0.Licht.Ankleide.Fenster, so wie es im Datenpunkt unter dem
entsprechenden Timer auch zu sehen ist.
Trotzdem macht er aber folgende Fehler.javascript.0 2022-11-28 15:29:00.031 error at processTimers (node:internal/timers:502:7) javascript.0 2022-11-28 15:29:00.031 error at listOnTimeout (node:internal/timers:559:17) javascript.0 2022-11-28 15:29:00.031 error at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:228:7) javascript.0 2022-11-28 15:29:00.031 error at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Invocation.js:268:28 javascript.0 2022-11-28 15:29:00.030 error at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/Job.js:171:15) javascript.0 2022-11-28 15:29:00.030 error at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1595:34) javascript.0 2022-11-28 15:29:00.030 error at Object.<anonymous> (script.js.Aktiv.automatik.PittiniTimer_2_2_0:621:13) javascript.0 2022-11-28 15:29:00.030 error at DoAction (script.js.Aktiv.automatik.PittiniTimer_2_2_0:810:64) javascript.0 2022-11-28 15:29:00.030 error at GetDeviceName (script.js.Aktiv.automatik.PittiniTimer_2_2_0:500:41) javascript.0 2022-11-28 15:29:00.029 error Error in callback: TypeError: Cannot read properties of null (reading 'common') javascript.0 2022-11-28 15:29:00.027 warn script.js.Aktiv.automatik.PittiniTimer_2_2_0: Object "alias.0.Licht.Ankleide" does not exist
-
@pittini Na gut. Ich schreib Dir, wenn ich es aufgebe
-
Zeig mal bitte den Alias Datenpunkt den du schalten möchtest
-
{ "type": "state", "common": { "name": "Ankleide Fenster", "type": "number", "unit": "%", "read": true, "write": true, "role": "level.dimmer", "min": 0, "max": 100, "alias": { "id": "zigbee.0.7cb03eaa00aa5715.brightness" }, "desc": "per Script erstellt", "custom": [] }, "native": {}, "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1668031650666, "_id": "alias.0.Licht.Ankleide.Fenster", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
Der Datenpunkt sieht auf dem ersten Blick richtig aus.
Ich würde jetzt folgende Dinge probieren bzw. testen.
Einfach mal den Javascript Adapter neustarten, eventuell wird dann das Problem schon gelöst.
Dann den Timer versuchen neu anzulegen und schauen ob es damit funktioniert. Adapter natürlich wieder neu starten.
Falls das nicht hilft, funktioniert der Orginaldatenpunkt? -
@dominik-f Obwohl der Fehler kommt, schaltet das Gerät ordnungsgemäß.
Benutze ich das Gerät direkt, kommt natürlich kein Fehler. -
Gut, dann wissen wir schon mal, dass es nur am Alias liegen kann.
Hast du mal versucht den Alias mit dem Alias Manager erstellen zu lassen? -
@dominik-f
Habe nun auch die Funktion gelöscht, ne neue erstellt und dann einen einzigen Alias eingefügt.
Aber ist doch irgendwie auch alles verrückt oder?
Ich mein, ich benutze alle Aliase Systemweit in total vielen Adaptern und Scripten und nur hier, macht er Theater.
Kann doch nicht am Alias liegen oder irre ich mich so sehr ? -
@fuxxz2 Liegt vermutlich daran, dass in Deiner Aliasstruktur iwo kein channel etc. existiert, dann kann das Skript den Namen nicht extrahieren weils keinen hat.
-
Hallo,
leider habe ich bisher keine Antwort auf folgende Frage gefunden:
Kann ich die erstellten Timer Einträge sichern?
Aktuell habe ich ca. 80 verschiedene Timer angelegt.
Gerade habe ich aus Unachtsamkeit alle Einträge unter "javascript.0.Timer" gelöscht.
Ja, klar ich hätte besser aufpassen können. Aber das hilft mir jetzt auch nicht weiter.Gruß Andreas
-
@andreasw63 sagte in [Vorlage] Flexibles Timerskript + Vis:
Kann ich die erstellten Timer Einträge sichern?
Klar, indem Du das System sicherst, ne separate Sicherung nur der Timer ist nicht vorgesehen.
-
Ich bekomme leider immer noch diese Fehlermeldung:
javascript.0 2022-12-14 16:18:17.029 warn You are assigning a string to the state "scene.0.Beleuchtung.Weihnachtsbeleuchtung_Innen" which expects a boolean. Please fix your code to use a boolean or change the state type to string. This warning might become an error in future versions.
Hierbei ist es egal ob ich den Wert True sende oder "einschalten" einstelle.
Dies betrifft komischerweise jedoch nur diesen einen Datenpunkt.
Hier ist der Datenpunkt:{ "common": { "name": "Weihnachtsbeleuchtung_Innen", "type": "boolean", "role": "scene.state", "desc": "Weihnachtsbeleuchtung", "enabled": true, "read": true, "write": true, "def": false, "engine": "system.adapter.scenes.0", "smartName": { "de": "Weihnachtsbeleuchtung" } }, "native": { "onTrue": { "trigger": {}, "cron": null, "astro": null }, "onFalse": { "enabled": true, "trigger": {}, "cron": null, "astro": null }, "burstInterval": 0, "members": [ { "id": "alias.0.EG_Küche.Steckdose Fenster_Rechts.state", "setIfTrue": true, "setIfFalse": false, "stopAllDelays": true, "desc": null, "disabled": false, "delay": 0, "doNotOverwrite": true }, { "id": "alias.0.EG_Küche.Steckdose ÜberKaffemaschine.Switch", "setIfTrue": true, "setIfFalse": false, "stopAllDelays": true, "desc": null, "disabled": false, "delay": 0, "doNotOverwrite": true }, { "id": "alias.0.EG_Wohnzimmer.Steckdose Fenster_Links.Switch", "setIfTrue": true, "setIfFalse": false, "stopAllDelays": true, "desc": null, "disabled": false, "delay": 0, "doNotOverwrite": true }, { "id": "alias.0.EG_Wohnzimmer.Steckdose KaminLinks.state", "setIfTrue": true, "setIfFalse": false, "stopAllDelays": true, "desc": null, "disabled": false, "delay": 0, "doNotOverwrite": true }, { "id": "alias.0.EG_Wohnzimmer.Steckdose Laterne.state", "setIfTrue": true, "setIfFalse": false, "stopAllDelays": true, "desc": null, "disabled": false, "delay": 0, "doNotOverwrite": true }, { "id": "alias.0.EG_Wohnzimmer.Steckdose Schiffchen.state", "setIfTrue": true, "setIfFalse": false, "stopAllDelays": true, "desc": null, "disabled": false, "delay": 0, "doNotOverwrite": true } ] }, "type": "state", "_id": "scene.0.Beleuchtung.Weihnachtsbeleuchtung_Innen", "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1669065373364, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Der Datenpunkt liefert neben true/false auch den Wert "uncertain". Ich glaube wenn der Datenpunkt auf uncertain steht und ich true sende, er diesen Fehler ausgibt.
-
@dominik-f sagte in [Vorlage] Flexibles Timerskript + Vis:
Der Datenpunkt liefert neben true/false auch den Wert "uncertain". Ich glaube wenn der Datenpunkt auf uncertain steht und ich true sende, er diesen Fehler ausgibt.
Naja, dann ist der Datenpunkt halt falsch definiert würd ich sagen. Mach doch einfach mal ein Miniskript, nur mit nem einzigen setstate drin und schalte damit den Problemdatenpunkt auf true oder false. Kommt dann auch die Meldung....
-
Folgendes Skript habe ich ausprobiert:
Habe es mit mehreren Konstellationen getestet, habe keine Fehlermeldung erhalten
-
@dominik-f "Ich glaube wenn der Datenpunkt auf uncertain steht und ich true sende, er diesen Fehler ausgibt." > Darauf mußt natürlich warten oder es provozieren.
-
Das meinte ich mit verschiedenen Konstellationen. Ich hab verschiedene Lampen und Steckdosen ausgeschaltet/angeschaltet und dadurch den Datenpunkt auf uncertain gestellt.
Edit: Das mit uncertain war auch nur eine Vermutung gewesen, da ich mir sonst nicht erklären konnte was das Problem sonst sein könnte