NEWS
[gelöst] [Frage] Erstellung virtueller Taster für .vis
-
Hallo zusammen,
ich habe eine absolute Anfängerfrage. Folgender Use-Case:
-
ich will in einer Visualisierung einen virtuellen Button (Taster) einbinden, d.h. dieser Taster wird nicht direkt mit einem Hardware-Taster verbunden
-
dieser virtuelle Taster soll eine der Variable für eine Abfrage sein (z.B. wenn Taster = True UND Uhrzeit = 18:00 - 19:30 UND Dämmerung = True; Dann steuere ein "Hardware"-Objekt (z.B. Netzwerkeingang einer Logo!).
"Schematisch" dargestellt:
Virtueller_Taster == TRUE
18:00 <uhrzeit<19:30<br>Daemmerung == TRUE
==> s7.0.DBs.DB0.NI3 => TRUE
Nun suche ich schon ewig nach einer Lösung diesen virtuellen Taster zu erzeugen.
In der Doku und im Forum habe ich schon Beiträge mit den Stichwörtern "dummy", "virtueller Taster" etc. gefunden. Aber leider konnte ich mein Problem nicht lösen.
Ich habe schon versucht in einem Javascript eine Variable zu erzeugen (var Test_Virt_Taster = false;) aber das macht ja noch kein Objekt daraus.
Ich hoffe jemand kann mir bei meiner Anfängerfrage weiterhelfen. Ich danke euch schon mal für eure Unterstützung!</uhrzeit<19:30<br>
-
-
1. Erzeuge bei Objekten manuell ein Objekt, z.B.
unter JavaScript; also
"JavaScript.0.Taster"
(den Namen kannst du individuell vergeben.)
Nimm als typ "boolean"; du willst ja true und false
2. In vis nimmst du ein widget und gibst als objekt o.g. neu erstellte variable ein.
in vis siehst du dann den Zustand (also true und false)
3. Script schreiben.
Was willst du als Auslöser wählen;
Entweder "on" Befehl oder Trigger mit schedule (Uhrzeit).
Dann script wie du es schon geschrieben hast
Die Prüfung der Uhrzeit mache ich mit dem Muster-Script auf der iobroker Seite.
mfg
P.S.
Schnell mal zusammen geschrieben. Wenn noch Fragen sind, dann …
-
Einfach ein Datenpunkt manuell erstellen und diesen Datenpunkt im VIS über einen Button immer zwischen true/false wechseln lassen.
Gruß
-
Vielen, Vielen Dank für die schnelle Hilfe!
Leider stelle ich mich scheinbar zu blöd an.
Ich habe nun im Vis ein Widget "Button State" angelegt und diesem die Object-ID des virtuellen Tasters zugewiesen.
Muss ich hier unter "value" noch etwas angeben (False; True)?
Ohne eine Angabe scheint es nicht zu funktionieren. Ich wollte den Zustand des virtuellen Taster via "Wert" unter "Objekte" prüfen - leider ohne Ergebnis. Vor dem Betätigen des Taster ist der Wert (rot) "no(false)", danach ist das Feld leer.
3428_unbenannt.jpg -
Leider schneidest du die vollstüändige Bezeichnung deines Datenpunktes ab.
Ist das der State?
Bitte screenshot deines Objektes
Danke
rainer
-
-
Danke für die umfangreiche Bildsammlung
mir fehlt einfach der reiter Objekte, bei dem du diesen Datenpunkt: javascript.0.Virtueller_Taster_test mit allen UNterpunkten aufgeklappt hast.
Gruß
Rainer
-
tut mir wirklich leid! Ich habe leider noch kein Gefühl dafür, welche Infos benötigt werden.
3428_unbenannt6.jpg -
Mit dem Widget "Button State" kannst du nur den bestimmten Wert setzen, und nicht hin und her wechseln.
Du brauchst einen Schalter mit Boolcontrol..
Bzw gib mal als Filter links in der Widgetübersicht "Switch" ein..
Gruß
-
Mit dem Widget "Button State" kannst du nur den bestimmten Wert setzen, und nicht hin und her wechseln.
Gruß `
Es sollte aber eben ein "Taster" sein und kein ON/OFF Schalter.
Ich habe versucht aus diesem Beitrag http://forum.iobroker.net/viewtopic.php … 240#p52927 mir den virtuellen Taster nachzubauen. Aber ich kann nicht herausfinden welches Widget hier genau verwendet wird.
WEnn ich bei mir unter Widgets nach "switch" filtere kommt gar kein Eintrag. Kann ich dieses Widgets irgendwie nachladen?
-
Du willst also reagieren wenn der Knopf im VIS gedrückt wird - der Wert ist also komplett egal.
Dann ist der Punkt doch der richtige (Button State).
Du musst dein Script nur so schreiben dass es den manuell erzeugten Datenpunkt überwacht und bei "neu beschreiben" vom Datenpunkt ein entsprechenden Befehl ausführt..
on({id: 'javascript.0.Virtueller_Taster_Test', change: 'any'}, function (obj) { befehle; }
Gruß
-
Der Zustand des Tasters sollte bei Betätigen von FALSE auf TRUE wechseln. Sobald man den Taster loslässt soll er wieder von TRUE auf FALSE wechseln.
Kann das von mir erzeugte Javascript-Objekt (also der virtuelle Taster) diesen Zustand nicht irgendwie annehmen?
-
hq-widgets on/of mit Option Taster
-
Kann das von mir erzeugte Javascript-Objekt (also der virtuelle Taster) diesen Zustand nicht irgendwie annehmen? `
Optional kannst du in den Objekteigenschaften auch read="false" setzen, dann wird der State in der Objektliste im Admin auch als Button dargestellt. Den Wert false nimmt der zwar nicht an wenn du in der Adminoberfläche drauf drückst, jeder Knopfdruck schreibt aber den Wert true in den State. Sofern du nicht unbedingt den Status "false" erreichen willst, sondern nur dass bei Knopfdruck etwas passiert, sollte das deinen Anforderungen entsprechen. Die Überwachung mit Buzzy's Skript funktioniert weiterhin. -
Nochmals vielen, vielen Dank für die Hilfen! Echt klasse!!!
Jetzt funktioniert es wie gewünscht:
Taster in der Vis schaltet Licht im Flur ein und wieder aus.
Ich weiß - das klingt absolut trivial, aber mir ging es darum es zu verstehen (quasi mein "Hello, World").
Lösung (evtl. stellt sich ja noch mal jemand so dumm…)
1. Wie von bahnuhr und BuZZy beschrieben habe ich ein Objekt manuell erzeugt http://forum.iobroker.net/viewtopic.php?p=83309#p83309
==> "javascript.0.Virtueller_Taster_Test"
2. In der Vis habe ich ein hqwidget - On/Off angelegt
-
vorher im Reiter "Adapter" eine Instanz des Adapters "hqwidgets style Widgets" hinzufügen (+ ganz rechts)
-
dieses Widget muss man aufgrund eines bekannten Problems manuell uploaden. Siehe http://forum.iobroker.net/viewtopic.php … ets#p66581
-
im Vis habe ich also via Drag&Drop dieses Widget hinzugefügt (ohne den manuellen Upload oben sieht man das Widget nicht…) und unter "Eigenschaften" und "Allgemein" -> "Taster" aktiviert
3. Via Blockly habe ich nun ein einfaches Script geschrieben, das den Zustand es virtuellen Tasters an einen Netzwerkeingang meiner Logo! weitergibt und damit das Licht einschaltet:
on({id: 'javascript.0.Virtueller_Taster_Test', change: "ne"}, function (obj) { //var value = obj.state.val; //var oldValue = obj.oldState.val; setState("s7.0.DBs.DB0.NI3", getState("javascript.0.Virtueller_Taster_Test").val); });
==> Ich weiß, ich hätte auch direkt den Taster im Vis mit dem Netzwerkeingang meiner Logo verbinden können. Aber später will ich eben noch weitere Bedinungen einbauen.
-
-
Schön, dass es jetzt läuft!
Nur ein Schönheitsfehler:
@George_Best:dieses Widget muss man aufgrund eines bekannten Problems manuell uploaden. `
das sollte schon lange behoben sein!Welche Versionen js-controller und admin verwendest du denn?
Gruß
Rainer
-
Schön, dass es jetzt läuft!
Nur ein Schönheitsfehler:
@George_Best:dieses Widget muss man aufgrund eines bekannten Problems manuell uploaden. `
das sollte schon lange behoben sein!Welche Versionen js-controller und admin verwendest du denn?
Gruß
Rainer `
Javascript/Blockly Script Engine => installiert: 3.4.0
ioBroker Admin => installiert: 2.0.2
hqwidgets style Widgets => installiert: 1.0.10 (wobei unter Version (grün) 1.0.6 steht)
-
Danke!
@George_Best:Javascript/Blockly Script Engine => installiert: 3.4.0 `
nicht den Javascript-Adapter sondern den js-controller.Die Version befindet sich unter dem Reiter Hosts.
Der admin ist ok!
@George_Best:hqwidgets style Widgets => installiert: 1.0.10 (wobei unter Version (grün) 1.0.6 steht) `
Also bist du deiner Zeit vorausGruß
Rainer
-
Also bist du deiner Zeit voraus `
Das lässt sich anhand meiner Fragen sehr einfach widerlegen
Der js-controller ist tatsächlich nicht aktuell:
Verfügbar: 1.1.2
Installiert: 1.0.0
Aber eine Frage noch: Ich bin auf der Suche nach einem Widget, dass mir sowohl als Taster dient (den Wert also in meinen virt. Taster schreibt) und zugleich den Status meines Logo!-Ausgangs anzeigt (andere Objekt-ID). Bis jetzt habe ich das mittels zweier Widgets gelöst.
-
Aber eine Frage noch: Ich bin auf der Suche nach einem Widget, dass mir sowohl als Taster dient (den Wert also in meinen virt. Taster schreibt) und zugleich den Status meines Logo!-Ausgangs anzeigt (andere Objekt-ID). Bis jetzt habe ich das mittels zweier Widgets gelöst. `
Gute Entscheidung.Kein Widget kann zum einen einen Datetenpunkt schalten (bool true/false) und einen anderen Datenpunkt (ebenfalls bool true/false) darstellen. Dazu müssten zwei verschiedene OIDs verwaltet werden können. (Wobei dann auch ioBroker gesagt werdn müssten welche OID geschaltet, und welche OID visualisiert werden muss. Zusätzlich soll die visualisierte ja NICHT geschaltet werden.
Bei einigen Widgets gibt es noch ganz unten die Option Extrasteuerung. Ich habe zwar auch schon damit eine ähnliche Fragestellung erfolgreich getestet, aber kann mich nicht mehr exakt an das Vorgehen erinnern.
IMHO musstest du oben die zu visualisierende eingeben und unten die zu steuernde. Ich glaube aber, dass die obere (natürlich) auch gesteuert wurde.
Gruß
Rainer