NEWS
[Vorlage] Variable Zeitsteuerung mit VIS Editor
-
Noch nicht .... da ich ja nur deine Erweiterungen bei mir Einbau / bzw. mein VIS danach ändere
Frage :
In den Raum gestellt ...
ich habe zb. 20 Zeiten diese enthalten Bedingungen und "Timer merken ".
Dann würden auf einmal bzw. Zeitversetzt alle Timer nachträglich aktiviert werden je nach Bedingung , wären dann zb. 16 die darin enthalten sind .Ist es möglich , das ich dann zb. die noch 16 anliegende "Timer merken " für diesen Moment zb. heute auf ein Schlag löschen ., bzw. stoppen kann , so das sie nicht mehr etwas triggern sollen .
-
@Glasfaser
Pro Gerät ist immer nur ein Timer im Hintergrund "aktiv".Sind in deinem Beispiel alle 20 Timer auf verschiedene Geräte verteilt? Dann würden tatsächlich alle 20 (oder zumindest die mit "Bedingungen=true") ausgeführt werden. Ansonsten ist immer nur maximal ein Timer pro Gerät im Hintergrund aktiv.
Passt das soweit? Ansonsten bräuchte ich genauere Angaben wie es gewünscht ist. Nach dem letzten Umbau des Skripts können gewisse Funktionen wahrscheinlich einfacher integriert werden.
Edit:
Alle ausstehenden Timer im Hintergrund (also über mehrere Geräte) löschen wäre per Knopfdruck ziemlich simpel. Wäre ein zusätzliches Widget im Hauptview.
Einzelne Timer im Hintergrund können "gelöscht" werden, wenn der entsprechende Timer kurz deaktiviert und wieder aktiviert wird. -
Nee ..... war nur ein Beispiel ( auch bei verschiedenen Geräten ) was mir halt dabei aufgefallen ist mit dieser neuen "Funktion" das man es auch stoppen kann ,
wenn es denn so sei ... so bei anderen Nutzern die dein Skript nutzen ! -
@Glasfaser
Was mir gerade einfällt, hatte die letzten Erkenntnisse schon wieder vergessen:
Wenn so eine Funktion "Alle löschen" Sinn macht, dann ginge das mit Sicherheit auch innerhalb der HTML Tabelle.
Wenn ein Timer im Hintergrund ist, dann kommt temporär eine zusätzliche Spalte. Neben dem im Hintergrund aktiven Timer würde dann ein Reset-Button erscheinen. In der Überschrift könnt in derselben Spalte ein Reset-Button alle Background-Timer löschen.Würde es aber gerne mit "mehr Intelligenz" im Skript lösen. Wenn z.B. immer nur ein Background-Timer ausgeführt werden soll, und die anderen immer löschen, dann wäre dieses Verhalten über eine Variable umschaltbar.
Hier wäre wiederum die Frage offen: Wenn theoretisch 20 Timer gleichzeitig aktiv werden, welcher Timer hätte dann den Vorrang? -
@GiuseppeS
Ist halt die Frage vom nutzen , bzw. von der Übersichlichkeit her .Annahme von mir :
Ein Extra Button ( Reset ) als Gesamtlöschen würde dann bei aktiven noch nicht ausgeführten Timern blinken , wie du es schon so hast und über diesen Button kann man dann die zurückliegenden Timer für den heutigen Tage löschen .Hier wäre wiederum die Frage offen: Wenn theoretisch 20 Timer gleichzeitig aktiv werden, welcher Timer hätte dann den Vorrang?
Die würden im jetzigen Skript alle auf einmal ausgeführt werden .
Wie gesagt .... ist jetzt nur im Raum gestellt diese Situation .....
-
-
@sigi234
Dort sind deine Bedingeungen hinterlegt , bei mir ist es dann so ! -
@sigi234
Hatte es bei dir nicht schonmal funktioniert?Die von dir erwähnte Aufzählung muss existieren. Darin sollten Objekt-IDs enthalten sein, die man als Bedingung nutzen möchte.
-
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Hatte es bei dir nicht schonmal funktioniert?
Ja, habe ich wieder gelöscht, Warum auch immer.
-
@Glasfaser
Bzgl. Löschung der Background-Timer könnte auch direkt die Spalte mit den Bedingungen genutzt werden. Wäre das unkomplizierteste.
Einfach Doppel-Klick auf die Bedingung innerhalb der Tabelle, löscht den einzelnen Timer.
Doppel-Klick auf die Überschrift "Bed" löscht alle Timer.Wer es nutzen möchte, hat eine Möglichkeit. Wer es nicht nutzen möchte, merkt nicht einmal dass diese Funktion existiert.
@sigi234
Wenns hängt kannst du auch einen Chat starten. -
Keine Ahnung, warum ich die Buttons nicht angezeigt bekommen?
Uhulas-CSS habe ich die Neueste, oder muss man deines nehmen?
-
@sigi234
Buttons sind unsichtbar. Werden sichtbar wenn du auf ein Geräte links klickst -
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
@sigi234
Buttons sind unsichtbar. Werden sichtbar wenn du auf ein Geräte links klickstMan sollte einfach Alles lesen.
@GiuseppeS sagte in [Vorlage] Variable Zeitsteuerung mit VIS Editor:
Die Haupt-Tabelle mit den dargestellten Timern ist interaktiv:
Sobald ein "Gerät", der "Aktiv-Status" oder die "Ist-Zeit" eines Timers einmalig angetippt wird, erscheinen zwei Buttons oben rechts. Es ist möglich, Timer hinzuzufügen (als Kopie des aktuell gewählten Timers) oder Timer zu löschen. Die Buttons verschwinden wieder nach 5s, sodass die Standardansicht immer "ungestört" ist.
Ein Doppelklick auf das Gerät oder auf die Ist-Zeit öffnet den Editor für den Timer.
Ein Doppelklick auf den Aktiv-Status schaltet diesen Status um (toggle). -
Klingt erstmal gut ... aber wie du weißt , habe ich mehrer View´s .... die dann auch noch 4 einzelne Tabellen ( Timerübersichten ) enthalten .
Mit einem Button auf dem Home View legen ... so war meine Überlegung .( vielleicht als Zusatzoption ) .
Ist halt nur ein Gedanke ............
-
@Glasfaser
Stimmt, solche Fälle gibt's auch. Dann werde ich zusätzlich zur Integration in der Tabelle noch ein Button-State erstellen. Dieser Button kann dann beliebig von der VIS getriggert werden. -
Jipp .... und hier kann man dann den Button und die Tabelle noch zusätzlich anzeigen lassen , als Übersicht im Haupt-View .. ( über Sichtbarkeit geschaltet )
Button gedrückt , dann anliegende Timer gelöscht und die Liste der anliegende Timer gelöscht .
Habe jetzt natürlich nur ein drinn als Beispiel und noch nicht angepasst :
EDIT :
Beispielausgabe ... ( Länge der Textausgabe angepasst ) -
Hallo Leute,
dass Script sieht echt super aus leider bekomme ich es nicht zum laufen ...
Ich glaube ich habe ein Verständnis Problem aber bekomme irgend wie nicht die Kurve.Herzlichen Dank schon mal für eure Unterstützung!
Fehlermeldung nach dem das Script ausgeführt wurde.
09:36:28.451 info javascript.3 (13977) Start javascript script.js.Instanz_3_comfort.Timer.Devices 09:36:28.469 info javascript.3 (13977) script.js.Instanz_3_comfort.Timer.Devices: registered 0 subscriptions and 0 schedules 09:36:29.970 warn javascript.3 (13977) State "script.js.Instanz_3_comfort.Timer.Devices.Editor.ConditionKeyDropDown" not found 09:36:29.971 warn javascript.3 (13977) at createConditionsJSON (script.js.Instanz_3_comfort.Timer.Devices:247:5) 09:36:29.972 warn javascript.3 (13977) at Object.main (script.js.Instanz_3_comfort.Timer.Devices:1167:5) 09:36:29.973 warn javascript.3 (13977) State "script.js.Instanz_3_comfort.Timer.Devices.ConditionJSON" not found 09:36:29.973 warn javascript.3 (13977) at createConditionsJSON (script.js.Instanz_3_comfort.Timer.Devices:248:5) 09:36:29.973 warn javascript.3 (13977) at Object.main (script.js.Instanz_3_comfort.Timer.Devices:1167:5) 09:36:29.974 warn javascript.3 (13977) State "script.js.Instanz_3_comfort.Timer.Devices.Editor.DropDownMinutes" not found 09:36:29.975 warn javascript.3 (13977) at setMinutesDropDown (script.js.Instanz_3_comfort.Timer.Devices:163:5) 09:36:29.975 warn javascript.3 (13977) at Object.main (script.js.Instanz_3_comfort.Timer.Devices:1169:5) 09:36:29.978 warn javascript.3 (13977) State "script.js.Instanz_3_comfort.Timer.Devices.Editor.DropDownAstroTexte" not found 09:36:29.979 warn javascript.3 (13977) at setAstro (script.js.Instanz_3_comfort.Timer.Devices:488:2) 09:36:29.979 warn javascript.3 (13977) at Object.main (script.js.Instanz_3_comfort.Timer.Devices:1170:5) 09:36:29.980 warn javascript.3 (13977) State "script.js.Instanz_3_comfort.Timer.Devices.Editor.DropDownAstroWerte" not found 09:36:29.981 warn javascript.3 (13977) at setAstro (script.js.Instanz_3_comfort.Timer.Devices:489:2) 09:36:29.981 warn javascript.3 (13977) at Object.main (script.js.Instanz_3_comfort.Timer.Devices:1170:5) 09:36:29.982 warn javascript.3 (13977) State "script.js.Instanz_3_comfort.Timer.Devices.AstroJSON" not found 09:36:29.982 warn javascript.3 (13977) at setAstro (script.js.Instanz_3_comfort.Timer.Devices:490:2) 09:36:29.983 warn javascript.3 (13977) at Object.main (script.js.Instanz_3_comfort.Timer.Devices:1170:5) 09:36:29.984 warn javascript.3 (13977) getState "script.js.Instanz_3_comfort.Timer.Devices.TimerJSON" not found (3) 09:36:29.984 warn javascript.3 (13977) at Object.main (script.js.Instanz_3_comfort.Timer.Devices:1171:9) 09:36:29.985 info javascript.3 (13977) script.js.Instanz_3_comfort.Timer.Devices: States werden neu erstellt! Script bitte erneut starten! 09:36:29.985 warn javascript.3 (13977) State "script.js.Instanz_3_comfort.Timer.Devices.DropDownDevice" not found 09:36:29.986 warn javascript.3 (13977) at Object.main (script.js.Instanz_3_comfort.Timer.Devices:1187:9) 09:36:29.987 warn javascript.3 (13977) State "script.js.Instanz_3_comfort.Timer.Devices.TimerJSON" not found 09:36:29.987 warn javascript.3 (13977) at Object.main (script.js.Instanz_3_comfort.Timer.Devices:1188:9) 09:36:29.988 warn javascript.3 (13977) State "script.js.Instanz_3_comfort.Timer.Devices.DropDownGruppe" not found 09:36:29.990 warn javascript.3 (13977) at Object.main (script.js.Instanz_3_comfort.Timer.Devices:1254:5) 09:36:29.991 warn javascript.3 (13977) State "script.js.Instanz_3_comfort.Timer.Devices.FilterDevice" not found 09:36:29.991 warn javascript.3 (13977) at Object.main (script.js.Instanz_3_comfort.Timer.Devices:1256:5) 09:36:30.475 warn javascript.3 (13977) getState "script.js.Instanz_3_comfort.Timer.Devices.TimerJSON" not found (3) 09:36:30.476 warn javascript.3 (13977) at Object.updateCond (script.js.Instanz_3_comfort.Timer.Devices:255:32) 09:36:30.478 error javascript.3 (13977) at Object.updateCond (script.js.Instanz_3_comfort.Timer.Devices:256:12) 09:36:31.492 warn javascript.3 (13977) State "script.js.Instanz_3_comfort.Timer.Devices.Editor.Device" not found 09:36:31.792 warn javascript.3 (13977) State "script.js.Instanz_3_comfort.Timer.Devices.Editor.Nummer" not found 09:36:31.994 warn javascript.3 (13977) getState "script.js.Instanz_3_comfort.Timer.Devices.TimerJSON" not found (3) 09:36:31.994 warn javascript.3 (13977) at buildJson (script.js.Instanz_3_comfort.Timer.Devices:1273:32) 09:36:31.994 warn javascript.3 (13977) at Object.tableMain (script.js.Instanz_3_comfort.Timer.Devices:1440:89) 09:36:31.995 warn javascript.3 (13977) getState "script.js.Instanz_3_comfort.Timer.Devices.DropDownDevice" not found (3) 09:36:31.995 warn javascript.3 (13977) at buildJson (script.js.Instanz_3_comfort.Timer.Devices:1275:21) 09:36:31.996 warn javascript.3 (13977) at Object.tableMain (script.js.Instanz_3_comfort.Timer.Devices:1440:89) 09:36:31.997 error javascript.3 (13977) at buildJson (script.js.Instanz_3_comfort.Timer.Devices:1276:35) 09:36:31.997 error javascript.3 (13977) at Object.tableMain (script.js.Instanz_3_comfort.Timer.Devices:1440:89)
Jetzt zur Config.
- ich habe alles was mal javascript.0 ... war in script.js.Instanz_3_comfort. geändert. Ganz einfach mit Suchen und ersetzen.
/* ####################################################################### */ // Nachfolgende Einträge zwingend anpassen: // Eine Aufzählung für Geräte (z.B. Rollläden) angeben: var deviceEnum = "enum.blinds"; // Eine Aufzählung für States der Bedingungen: var deviceCond = "enum.functions"; // Widget-Nummer für Widget "EDIT" (View in Dialog) var DlgWidget = 'w00251'
Vis Vorlage
[{"tpl":"tplContainerButtonDialog","data":{"g_fixed":true,"g_visibility":true,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"buttontext":"","padding":"0","contains_view":"cardRollladenPopUp","noHeader":true,"dialog_width":"352px","dialog_height":"740px","class":"mdui-flatbutton noSwipe mdui-blue","no_style":true,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"modal":true,"locked":false,"visibility-cond":"==","visibility-val":"","visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"html_prepend":"<font size=\"5\">EDIT</font>","html_append":"","title":"Timer Bearbeiten","dialog_top":"13px","dialog_left":"calc((100% - 352px)/2)","setValue":"","visibility-oid":"script.js.Instanz_3_comfort.Timer.Devices.FilterDevice"},"style":{"left":"calc(100% - 61px)","top":"5px","width":"auto","height":"auto","z-index":"10"},"widgetSet":"jqui"}]
Vis PopUp
[{"tpl":"tplJquiSelectList","data":{"oid":"script.js.Instanz_3_comfort.Timer.Devices.Editor.Gruppe","g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"values":"{script.js.Instanz_3_comfort.Timer.Devices.DropDownGruppe}","texts":"{script.js.Instanz_3_comfort.Timer.Devices.DropDownGruppe}","height":"100","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"no_style":true,"class":"mdui-select noSwipe","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide"},"style":{"left":"91px","top":"26px","height":"39px","width":"247px","z-index":"1"},"widgetSet":"jqui"}]
-
wie kann ich meine eigene Sollwerte einfügen
z.b für ein thermostatt den status Eco oder Normal.var sollDropDown = "0;5;10;15;20;30;40;50;60;70;80;90;100;Up;Down;Eco:Normal";
-
@Danny-0
Die States werden nicht gefunden, also anscheinend nicht korrekt erstellt. Hier stimmt was nicht. Evtl lief mit suchen/ersetzen etwas falsch. Kannst du es zunächst mit Instanz 0 testen?
Deine Aufzählungen haben eine "1" am Ende. Wenn die Eins zum Namen gehört, dann muss die hier auch oben rein. -
@Stratos-Gkrekidis
Wo die jetzt stehen ist es korrekt. Zusätzlich muss aber weiter unten dieser Name wieder in reale Werte interpretiert werden.
Suche mal nach den Mappings innerhalb der Funktion "autoScheduler":if (sollwert == "An"){sollwert = true} else if (sollwert == "Aus"){sollwert = false} else if (sollwert == "Auf"){sollwert = 100} else if (sollwert == "Ab"){sollwert = 0} else (sollwert = parseInt(sollwert));
Hier kannst du deine Werte nach dem selben Muster integrieren, bitte mittendrin mit "else if"
else if (sollwert == "eco"){sollwert = 123} else if (sollwert == "normal"){sollwert = 123}
EDIT:
Du kannst aus dem Dropdown die Werte entfernen, die nicht benötigt werden. Thermostat macht ja eher Sinn mit Werten 15 bis 25 o.ä.