NEWS
[Vorlage] Variable Zeitsteuerung mit VIS Editor
-
Error in callback: TypeError: Cannot convert undefined or null to object
https://forum.iobroker.net/topic/23346/vorlage-variable-zeitsteuerung-mit-vis-editor/126
-
@smartboart
Wenn ich es richtig sehe, hast du das Skript mit Javascript Instanz 1 gestartet, oder? Bitte ausschließlich mit Instanz 0 nutzen. Habe es im Skript nicht dynamisch programmiert. Falls der ausdrückliche Wunsch besteht, kann ich es auch dynamisch einrichten. Allerdings würden die Zuordnungen im Editor dann auch nicht mehr passen. -
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Wenn ich es richtig sehe, hast du das Skript mit Javascript Instanz 1 gestartet, oder? Bitte ausschließlich mit Instanz 0 nutzen. Habe es im Skript nicht dynamisch programmiert. Falls der ausdrückliche Wunsch besteht, kann ich es auch dynamisch einrichten. Allerdings würden die Zuordnungen im Editor dann auch nicht mehr passen.
danke für die Antwort...habe das aber alles im script angepasst, damit es auf javascript.1 läuft und die Vis ebenfalls... also alles von javascript.0 auf javascript.1 im script geändert..sollte doch dann gehen oder?
Die Popup Umschaltung habe ich ebenfalls umgeschrieben, da ich meine views mittels State und view in widget umschaltet... Sollte damit alles nix zu tun haben.Korrigiere mich, wenn der Wechsel der Instanz so nicht ohne weiteres möglich ist...
Nachtrag...Hinweis von Glasfaser hats gebracht...
-
@Glasfaser sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Error in callback: TypeError: Cannot convert undefined or null to object
https://forum.iobroker.net/topic/23346/vorlage-variable-zeitsteuerung-mit-vis-editor/126
Danke das wars....
kann man das nicht anders abfangen? -
@smartboart
Ich muss zugeben, dass ich im Gegensatz zu Glasfaser die Problematik (Ursache des Fehlers) nicht verstanden habe.
Kommt dieser Fehler immer wenn die Variable splitHtml auf true gesetzt ist? Nutze diese Funktion selbst gar nicht, hatte es aber bisher nicht als Fehlerhaft in Erinnerung. Wenn ich es reproduzieren kann, werde ich den Fehler aber zügig beheben, kann nicht kompliziert sein. -
@GiuseppeS
Wenn javascript.0.Timer.Devices.FilterDevice auf alle steht und javascript.0.Timer.Devices.Editor.Del auf true gesetzt wird... -
@smartboart
Da muss aber was an Rahmenbedingungen für das Reproduzieren deiner Error-Meldungen fehlen.
Bei mir steht der Filter immer auf "alle". Wenn ich einen Timer antippe erscheinen die Buttons "del" und "add". "del" funktioniert dann einwandfrei.Ist bei dir die Split Ansicht aktiviert? Das behandelte ja der verlinkte Beitrag von Glasfaser.
-
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Ist bei dir die Split Ansicht aktiviert?
nein steht auf false...Der verlinkte Beitrag hat mich nur veranlasst über den Auswahl Filter das device auszuwählen bei welchem ich das Löschen getestet habe..Dann gings...
"Wenn ich einen Timer antippe erscheinen die Buttons "del" und "add".
ok, dann stimmt in vis die sichtbarkeitseinstellung nicht mehr bei mir, weil bei mir werden add und dell ständig angezeitgt... -
@smartboart gut habe hier material design buttons benutzt und dabei die Sichtbarkeitseinstellungen nicht übernommen... sorry...
Hatte die vis schon für meine views angepasst... -
@smartboart sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
"Wenn ich einen Timer antippe erscheinen die Buttons "del" und "add".
Danke für die Hilfe und sorry für die Verwirrung...Der Fehler hat sich beim Umbau der Vis eingeschlichen...
-
@smartboart
Kein Thema. Dann funktioniert jetzt hoffentlich alles wie gewünscht, also auch mit Filter.Werde in der nächsten Version diesen Fehler "kein Timer ausgewählt" abfangen...
Hintergrund zu Deinem Fehler:
Wenn Du einen Timer anklickst, wird diese Auswahl für nur 5s gemerkt. Und nur in diesem Zeitfenster funktioniert ein Löschen bzw Duplizieren des Timers. Ich wollte ein versehentliches Löschen aufgrund dauerhaft dargestellter Buttons vermeiden. -
Habe eine neue Version hochgeladen:
Changelog 30.06.2020 (Skript)
- Codeoptimierung, Error-Handling wenn Buttons nicht gemäß Standard genutzt werden
- Bugfix: Alle gemerkten Timer werden nun ausgeführt, wenn Bedingungen nachträglich erfüllt werden.
Für diejenigen, die "Timer merken" verwenden, ist ein Update empfohlen. Hier war ein Bug im alten Skript, wobei unter bestimmten Umständen nicht alle gemerkten Timer nachträglich ausgeführt wurden. Ich konnte den Fehler nur unter bestimmten Bedingungen nachstellen; ihr habt evtl. nichts davon gemerkt. Habe den Skript-Aufbau bzgl. "Timer merken" stark vereinfachen können; Fehlerhaftes Verhalten trat bei mir nicht mehr auf.
-
Update durchgeführt ..... wie immer
Test mit Timer im Hintergrund ... meine Popup Liste wird angezeigt ... Bedingung erfüllt ... Timer wird ausgeführt und die Popup Liste wird wieder gelöscht ...
-
@Glasfaser
Danke für die schnelle Rückmeldung -
ja kein Problem ...
hatte das letzte Update nicht gemacht mit dem "Minimaler Zeitversatz" ... war aber für mich erstmal nicht interessant . -
@sigi234 sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Geht jetzt.
Frage, sehe ich das Richtig das ich für jede Funktion (var deviceEnum = "enum.functions.blinds";) eine Vis und ein Skript anlegen muss?@GiuseppeS
Da wurde eine Frage von sigi übersehen ... habe ich auch erst jetzt gelesenDer Schlingel hat EDIT gemacht ... ahh deshalb Sorry @sigi234 haben wir nicht gesehen
-
@Glasfaser
Danke für den Hinweis. Hatte ich auch nicht gesehen. Beim Edit bekommt man keine Benachrichtigung...@sigi234
Für jede Aufzählung wird ein Skript benötigt und zugehörig die VIS (Tabelle + Editor-PopUp).Was möglich wäre, wenn Bedarf besteht (allgemein):
- statt Aufzählung, könnte alternativ auch ein Array mit States angegeben werden "[objID1, objID2,...]. So wäre man von Aufzählungen unabhängig. Ich wollte über Aufzählungen den notwendigen Anpassungsaufwand im Skript so gering wie möglich halten. Aber bei Bedarf ist das schnell umgesetzt.
- zur Vereinfachung der Mehrfachnutzung des Skripts, wäre es möglich, den Editor-PopUp "allgemein" zu gestalten. D.h.: Wenn zwei unterschiedliche Timer-Tabellen genutzt werden soll, müsste man Skript und VIS-Tabelle kopieren, aber der Editor-View müsste nur einmalig existieren.
Edit: Für Mehrfachnutzung des Skripts gibt's die Variable "path". Diese muss bei der zweiten Nutzung einen anderen Namen bekommen. Vis muss entsprechend des neuen Namens angepasst werden. Tip: vis Views vor Import mit suchen/ersetzen gemäß neuem Namen ändern.
-
@Glasfaser sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Der Schlingel hat EDIT gemacht ... ahh deshalb Sorry @sigi234 haben wir nicht gesehen
Kein Problem, ich war ja ein Schlingel.
-
Hallo zusammen,
auch von mir erstmal ein riesiges Dankeschön an @GiuseppeS für das Skript.
Hatte mir selbst ein Skript für meine Rolladensteuerung gebastelt, allerdings ist so mit VIS-Unterstützung natürlich noch besser.Ich habe einen Feature-Request:
Folgendes Szenario: Ich habe meine Rolladen bisher immer in Abhängigkeit von der Sonnenuntergangszeit +- eine Random-Zeit runterfahren lassen (so, dass sie 1. nicht alle gleichzeitig und 2. nicht jeden Tag zur gleichen Zeit runterfahren).
Allerdings habe ich dies außerdem noch von meinem Helligkeitssensor abhängig gemacht (d.h. die Rolladen sollten nur runterfahren, wenn auch ein gewisser Helligkeitswert unterschritten ist, da der Helligkeitswert verlässlicher ist, als die Sonnenzeit).Dieses Szenario kann ich mit dem Skript durch das Setzen von Bedingungen ebenfalls umsetzen. Nun ist es aber so, dass der Helligkeitswert immer erst nach der Sonnenuntergangszeit erreicht wird. Im Skript kann ich für diesen Fall natürlich "Timer merken" einstellen. Das klappt auch.
Es ist allerdings ärgerlich, dass dann die Random-Werte natürlich nicht mehr gelten. D.h. sobald dann diese Bedingung erfüllt ist, fahren doch alle Rolladen gleichzeitig runter und das würde ich gerne vermeiden.Gibt es eine Möglichkeit, dass so einzubauen, dass, nachdem die "Timer merken"-Funktion greift, dennoch +- Random-Werte berücksichtig werden?!
(ich weiß, ist recht speziell, aber wollte zumindest gefragt haben).
-
@gender
Freut mich, dass du mit dem Skript gut zurecht kommst und alle Funktionen nutztZum Anliegen: Es ist mit Einschränkungen umsetzbar. Aufwand hält sich unter Berücksichtigung der Einschränkungen in Grenzen.
Zur Umsetzung:
- Random Zeit würde als Betrag übernommen. Z.Bsp.: Random "-5" wird als "+5" gewertet. Wenn eine Bedingung erfüllt wird, können wir nicht in die Vergangenheit reisen.
- wenn eine Bedingung erfüllt wird und die Random-Zeit läuft, lässt sich dieser Countdown nicht unterbrechen! Auch nicht durch einen nachfolgenden Timer oder falls ein Rollladen zwischenzeitlich manuell verfahren wird. Wenn die Bedingungen zwischenzeitlich nicht mehr erfüllt sind, würde dieser Timer dennoch auslösen!
- Umsetzung würde ich mit einer "optionalen" Variable im oberen Skript-Bereich anstreben. Wer es nicht braucht, muss die Variable nicht anlegen und merkt bei zukünftigen Updates nichts davon. Im VIS PopUp würde ich es nicht unterbringen wollen, da die vielen Optionen einen noch mehr erschlagen würden.
Zum zweiten Punkt würde ich nochmal schauen, ob zumindest die Bedingungen zur Ausführung hin beachtet werden können. Müsste ich testen...
Aktuell habe ich bereits ein anderes Update bei mir laufen, wobei ich noch testen muss. Das müsste ich erstmal abschließen. Es würde zukünftig nur ein PopUp benötigt werden. Wenn das Skript mehrfach genutzt wird, müsste somit nur das Tabellen-View erneuert importiert/kopiert werden. Das Skript müsste natürlich auch in diesem Fall mehrfach laufen, das geht nicht anders.