NEWS
INSTAR Alarm I/O über vis schalten
-
Hallo,
ich bin ein völliger Newbie im Umgang mit dem raspberry pi und ioBroker.
Über die SuFu habe ich dieses Skript gefunden: http://forum.iobroker.net/viewtopic.php?p=46505#p46505
Ich würde gerne mit einem "Schieber" den Alarmeingang meiner INSTAR Kameras schalten können, welche über ein homematic Programm angesteuert werden.
Leider klappt die Einbindung in vis nicht, bzw. lässt sich der Kameraeingang nicht schalten.
Vielleicht kann mir jemand auf die Sprünge helfen?
In vis habe ich einen ctrl-bool Schieber angelegt, nachfolgenden code unter "Skript" eingefügt und als object-ID "javascript.0.Schalter" eingetragen.
var idEin = "hm-rpc.0.MEQ1848985.2.PRESS_SHORT", idAus = "hm-rpc.0.MEQ1848985.1.PRESS_SHORT"; var idSchalter = "javascript.0.Schalter"; // Instanz anpassen createState(idSchalter, false, { type: "boolean", name: "INSTAR schalten", desc: "1999" }); // Variable setzt INSTAR on(idSchalter, function (obj) { if (obj.state.val) setState(idEin, true, false); // ack false = Wert setzen else setState(idAus, false, false); }); // INSTAR setzt Variable (falls INSTAR woanders geschaltet wird) on(idEin, val= true, function (obj) { setState(idSchalter, true); log("INSTAR wurde eingeschaltet"); }); on(idAus, val= true, function(obj) { setState(idSchalter, false); log("INSTAR wurde ausgeschaltet"); });
Was ich nicht verstanden habe: Wofür dient die Variable "desc" und wo muss ich die ggf. noch eintragen?
Habe ich das Skript an falscher Stelle eingetragen?
Muss ich noch etwas anders anlegen?
Wenn ich den Schieber in vis betätige, werden die Alarmeingänge der Kameras leider nicht geschaltet.
Wo liegt mein Fehler?
Vielen Dank für die Unterstützung.
3280_bildschirmfoto_2017-08-15_um_09.37.47.png
3280_bildschirmfoto_2017-08-15_um_09.10.29.png -
desc = description = Beschreibung des Punktes
-
desc = description = Beschreibung des Punktes `
Hat also keine weiteren Auswirkungen? Also im Prinzip nur eine Beschreibung des Namens?Danke bleiben noch die Hauptprobleme…
-
Anbei noch ein Screenshot aus den ioBroker Objekten.
Schalten des Alarm I/0 funktioniert, wenn ich unter den Objekten jeweils manuell auslöse (anklicken der icons mit dem Pfeil nach unten unter Wert).
hm-rpc.0.MEQ1848985.1.PRESS_SHORT = Alarmeingang aus
hm-rpc.0.MEQ1848985.2.PRESS_SHORT = Alarmeingang ein
Nur über den "Schieber" funktioniert es leider immer noch nicht.
3280_bildschirmfoto_2017-08-15_um_17.55.04.png -
Bitte ändere dein Kode:
var idEin = "hm-rpc.0.MEQ1848985.2.PRESS_SHORT", idAus = "hm-rpc.0.MEQ1848985.1.PRESS_SHORT"; var idSchalter = "javascript.0.Schalter"; // Instanz anpassen createState(idSchalter, false, { type: "boolean", name: "INSTAR schalten", desc: "1999" }); // Variable setzt INSTAR on(idSchalter, function (obj) { log("Received: " + !!obj.state.val); setState(idAus, !!obj.state.val); }); // INSTAR setzt Variable (falls INSTAR woanders geschaltet wird) on({id: idEin, val: true}, function (obj) { setState(idSchalter, true); log("INSTAR wurde eingeschaltet"); }); on({id: idAus, val: true}, function(obj) { setState(idSchalter, false); log("INSTAR wurde ausgeschaltet"); });
Kommen die Meldungen im Log?
-
Danke dafür. Habe den Code ersetzt. Leider keine Änderung.
Im Log (ich nehme an du meinst ioBroker.admin, Reiter Log). Ich habe die history für die Objekte aktiviert. Beim Schalten kommt kein Logeintrag.
` > history.0 2017-08-15 18:16:25.480 info enabled logging of hm-rpc.0.MEQ1848985.2.PRESS_SHORTweb.0 2017-08-15 18:16:22.305 info 2017-08-15T16:16:22.305Z Connected system.user.admin
history.0 2017-08-15 18:16:16.896 info enabled logging of hm-rpc.0.MEQ1848985.1.PRESS_SHORT
web.0 2017-08-15 18:16:14.059 info 2017-08-15T16:16:14.059Z Connected system.user.admin `
-
Danke dafür. Habe den Code ersetzt. Leider keine Änderung.
Im Log (ich nehme an du meinst ioBroker.admin, Reiter Log). Ich habe die history für die Objekte aktiviert. Beim Schalten kommt kein Logeintrag.
` > history.0 2017-08-15 18:16:25.480 info enabled logging of hm-rpc.0.MEQ1848985.2.PRESS_SHORTweb.0 2017-08-15 18:16:22.305 info 2017-08-15T16:16:22.305Z Connected system.user.admin
history.0 2017-08-15 18:16:16.896 info enabled logging of hm-rpc.0.MEQ1848985.1.PRESS_SHORT
web.0 2017-08-15 18:16:14.059 info 2017-08-15T16:16:14.059Z Connected system.user.admin
Schaltest du über vis oder MEQ1848985.2? -
Schaltest du über vis oder MEQ1848985.2? `
Ich kann grade nicht ganz folgen, was du meinst, sry.Ich hatte das Skript so interpretiert, dass der Schieber je nach Stellung auf Tasterstellung .2 oder .1 zugreift.
Schalten funktioniert aktuell nur unter ioBroker.admin > Objekte, indem ich das jeweilige icon anklicke.
Wenn ich vis in meinem Browser aufrufe und dort schalte, funktioniert es nicht.
-
Hallo,
wenn du in VIS einen Schiebeschaltr verwendest, kannst du in den Widget-Einstellungen unter OID nur eine ID eintragen. Entweder MEQ1848985.2 oder MEQ1848985.1. Diese ID wird über den Schalter jeweils false oder true gesetzt.
Hier im Skript wird die Steuervariable idSchalter (die du bitte als OID "javascript.0.Schalter" in VIS verwendest) durch PRESS_SHORT auf Kanal 2 eingeschaltet und durch PRESS_SHORT auf Kanal 1 ausgeschaltet.
Gruß
Pix
-
@pix:Hallo,
wenn du in VIS einen Schiebeschaltr verwendest, kannst du in den Widget-Einstellungen unter OID nur eine ID eintragen. Entweder MEQ1848985.2 oder MEQ1848985.1. Diese ID wird über den Schalter jeweils false oder true gesetzt.
Hier im Skript wird die Steuervariable idSchalter (die du bitte als OID "javascript.0.Schalter" in VIS verwendest) durch PRESS_SHORT auf Kanal 2 eingeschaltet und durch PRESS_SHORT auf Kanal 1 ausgeschaltet.
Gruß
Pix `
Ok, siehe mein Ausgangsbeitrag im letzten Screenshot. Im Widget für den Schalter unter Allgemein > OID ist die Steuervariable eingetragen.OID gibt es im Widget ja 2x… unter Sichtbarkeit und unter Allgemein. Hab ich hier etwas falsch eingetragen??
-
Die Eintragung ist korrekt. Unter Sichtbarkeit steuert eine woanders geschaltete OID die Sichtbarkeit des Widgets. Alles richtig.
Schaltest du über vis oder MEQ1848985.2? `
Ich kann grade nicht ganz folgen, was du meinst, sry.Ich hatte das Skript so interpretiert, dass der Schieber je nach Stellung auf Tasterstellung .2 oder .1 zugreift. `
Das Skript steuert nicht die Taster, damit diese etwas bewirken. Die Taster und der VIS-Schieber steuern die Variable. Und diese regelt dann AN und AUS. Es sind also vier Kanäle, die die Variable steuern (.2, .1, Schieber true und Schieber false), wobei jeweils zwei die gleiche Wirkung haben.Pix
-
@pix:Die Eintragung ist korrekt. Unter Sichtbarkeit steuert eine woanders geschaltete OID die Sichtbarkeit des Widgets. Alles richtig. `
Nur leider wird der Alarmeingang der Kameras nicht geschaltet. Über den homematic Taster, per Handy Anwesenheit im WLAN und manuell über das jeweilige Objekt funktioniert es.Nun ist die Frage, wo liegt der Fehler?
****Muss die Instanz javascript.0 laufen?
Kann ich den Fehler weiter eingrenzen? Ich hatte verstanden im Log müsste etwas angezeigt werden… wird es ja nicht.
Das Skript wird in den Einstellungen des widget abgelegt?****
Wäre klasse, wenn ihr weiter am Ball bleiben könntet 8-)
PS: Schalten einer über die homematic verknüpften Lampe mit einem bulb-widget funktioiniert. D.h. an der Verbindung zur homematic kann es nicht liegen. Auch das Bild der Kameras ist in vis bereits eingebunden und funktioniert.
//edit: Ich habe es jetzt MEQ1848985.2 einmal mit einem bulb-widget als OID verbunden… damit klappt das Einschalten. Es muss irgendwo am Skript, meiner Einbindung oder dem "Schieber"-widget liegen...
@pix:Das Skript steuert nicht die Taster, damit diese etwas bewirken. Die Taster und der VIS-Schieber steuern die Variable. Und diese regelt dann AN und AUS. Es sind also vier Kanäle, die die Variable steuern (.2, .1, Schieber true und Schieber false), wobei jeweils zwei die gleiche Wirkung haben.
Pix `
Das hatte ich so aus dem Skript interpretiert (ich hab davon keine Ahnung), weil dort als Kommentar "…wird woanders geschaltet" gelesen habe.Schalte ich über den homematic Taster, wird die Statusänderung auch angezeigt, siehe Screenshot.
3280_bildschirmfoto_2017-08-15_um_22.01.07.png -
Das Skript kommt in den Reiter Skripte in Admin, nicht im Vis Editor.
javascript.0 muss natürlich laufen (grün).
-
@pix:Das Skript kommt in den Reiter Skripte in Admin, nicht im Vis Editor.
javascript.0 muss natürlich laufen (grün). `
Ah… ok...danke!! Einen Schritt weiter. javascript.0 Instanz läuftIm Log kommt jetzt eine Fehlermeldung. Der "Schieber" geht sofort wieder auf off.
//edit: ich nehme an, die Skriptänderung von bluefox diente nur dem testen... mit dem alten Code funktioniert jetzt das Schalten über vis 8-)
Wenn ich jetzt allerdings über den Homematic-Taster ausschalte, wird in vis weiterhin eingeschaltet angezeigt...
Sollte das Skript über die Variable nicht merken, dass sich der Status geändert hat?
Ich nehme an, nur der Status wird geändert, aber nicht die Anzeige des "Schiebers"?
Wenn "Instar woanders ausgeschaltet", dann Variable false und "Schieber Anzeige vis off"?
Geht das?
Ich hab das Skript jetzt unter "common" eingesetzt. Oder sollte es unter "global"? Wo ist der Unterschied?
3280_bildschirmfoto_2017-08-16_um_00.15.13.png
3280_bildschirmfoto_2017-08-15_um_23.55.47.png -
Hallo,
nochmal grundsätzlich. Der ursprüngliche Code aus dem anderen Thread war gedacht, um einen CUxD Taster zu setzen. Dieser Taster hat dann den Befehl an die Kamera geschickt.
Wie ist das bei dir? Wo ist denn hier die Verbindung zur Kamera?
Dein aktuelles Skript reagiert auf Tastendruck des Homematic-Wandtasters und setzt dann entsprechend ein Objekt. Dieses Objekt ist auch in VIS verlinkt und kann auch das verändert werden. Aber wo ist der Teil, der auf das Objekt reagiert und dann einen sinnvollen Befehl an die Kamera schickt? Ist das evtl. ein Verknüpfung / Programm in Homematic WebUI?
Dann muss der Mittelteil ersetzt werden:
//Variable setzt INSTAR on(idSchalter, function (obj) { // nur bei Änderung if (obj.state.val) setState(idEIN, true); if (!obj.state.val) setState(idAus, true); });
Wenn der Schalter neu auf false geht, wird der Homematic Taster :1 "gedrückt", wenn der Schalter auf true geht, "drückt" das Skript den Homematic Taster :2. Durch dieses "Drücken" würde dann in der WebUI die Aktion ausgelöst.
Gruß
Pix
PS: Bitte in common speichern, nicht in global. Doku hier: https://github.com/ioBroker/ioBroker.ja … -functions
-
Danke!
Mitteilteil probiere ich aus. Muss gucken, ob ich das heute noch schaffe… der Flieger geht morgen
Der Alarmeingang (2 Kameras) wird über ein separates homematic-Programm geschaltet.
WriteLine("INSTAR Alarmeingang ein"); dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - 'http://meineIP:Port/cgi-bin/hi3510/param.cgi?cmd=setioattr&-io_enable=1&-io_flag=1&-usr=BENUTZER&-pwd=PASSWWORT'"); dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - 'http://meineIP:Port/cgi-bin/hi3510/param.cgi?cmd=setioattr&-io_enable=1&-io_flag=1&-usr=BENUTZER&-pwd=PASSWORT'");
io_enable=1: Alarm ein
io_enable=0: Alarm aus (im 2ten Teil des homematic-Programms)
3280_bildschirmfoto_2017-08-16_um_21.00.41.png -
Mitteilteil probiere ich aus. Muss gucken, ob ich das heute noch schaffe… der Flieger geht morgen `
Da hagelt es Fehlereinträge im LOG und in vis lässt sich der Alarmeingang nicht mehr schalten.` > javascript.0 2017-08-16 21:27:39.730 error at RedisClient.emit (events.js:194:7)
javascript.0 2017-08-16 21:27:39.730 error at emitThree (events.js:116:13)
javascript.0 2017-08-16 21:27:39.730 error at RedisClient. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:99:25)
javascript.0 2017-08-16 21:27:39.730 error at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3069:37)
javascript.0 2017-08-16 21:27:39.730 error at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:253:17)
javascript.0 2017-08-16 21:27:39.730 error at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:581:17)
javascript.0 2017-08-16 21:27:39.730 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3210:17)
javascript.0 2017-08-16 21:27:39.730 error at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:585:48
javascript.0 2017-08-16 21:27:39.730 error at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1325:48)
javascript.0 2017-08-16 21:27:39.730 error at Object. (script.js.common.Instar:19:33)
javascript.0 2017-08-16 21:27:39.730 error ReferenceError: idEIN is not defined
javascript.0 2017-08-16 21:27:39.691 error pmessage io.javascript.0.Schalter {"val":1,"ack":false,"ts":1502911659685,"q":0,"from":"system.adapter.web.0","lc":1502911659685} idEIN is not defined `
-
Sorry, vertippt: statt idEIN bitte idEin
Pix
-
Danke. Schalten geht wieder, allerdings kann ich keinen funktionalen Unterschied zu vorher feststellen.
Wenn ich über den homematic-Taster den Alarm deaktiviere, bleibt die Anzeige in vis unverändert.
3280_bildschirmfoto_2017-08-17_um_00.01.42.png
3280_bildschirmfoto_2017-08-17_um_00.06.25.png -
Hallo,
es tut mir leid. Scheinbar ist das aus der Ferne nicht so leicht zu lösen. Mein Problem ist, dass hier zuviele System im Spiel sind. All das, was du da realisierst, kann ioBroker Javascript/Szene natürlich auch. Es ist natürlich ein Schritt, alles umzuziehen, aber es lohnt.
Alarmanlagenstatus Variable, Kommandos an Kameras schicken, natürlich die VIS Anzeige - all das ist ein Kinderspiel für ioBroker. Wenn jetzt erst wieder Variablen in der Homematic WebUI getriggert werden müssen, damit dort etwas ausgelöst wird, kann man schließlich nicht die ioBroker Logs um Rat fragen…
Also nichts für ungut, ich bin raus.
Pix