NEWS
IoBroker.homepilot Adapter
-
Du hast recht. Macht ja auch Sinn. Ich war immer noch überzeugt, true sei Position 100, false sei 0; auch beim Setzen. Aber Cid ist ja genau dafür da. Mach ich morgen!
Muss mir wohl auch mal so einen Aktor zulegen.
Gute Nacht,
Pix
Gesendet mit Tapatalk
-
@pix:Du hast recht. Macht ja auch Sinn. Ich war immer noch überzeugt, true sei Position 100, false sei 0; auch beim Setzen. Aber Cid ist ja genau dafür da. Mach ich morgen!
Muss mir wohl auch mal so einen Aktor zulegen.
Gute Nacht,
Pix
Gesendet mit Tapatalk `
Cool. Kannst du evtl. noch die Synctime in den Settings einstellbar machen? Und was noch schick wäre: Eine Fehlermeldung, wenn der Homepilot nicht erreichbar ist, oder ist das schon drin? Ich würde gerne eine "Servicemeldung" à la Homematic einblenden lassen, wenn die Verbindung nicht möglich ist. -
Hallo Pix,
das Design von deinem widget passt leider nicht zu meiner Visu
Ich glaube das Widget, das ich nutze ist von Bluefox.
Im Moment kann ich mit der Tastensteuerung leben, die Gurtwickler laufen automatisch über
die Dämmerungs- und Sonnenaufgangsfunktion, sowie Beschattung bei starken Sonneneinfall.
Ich habe fast meine komplette Dashui-Visu auf iobroker umgestellt, muss nur noch meine beiden Homeduino einbinden
Nochmals herzlichen Dank für die schnelle Umsetzung!
Gruß
Wolfgang
-
Hallo,
0.0.5 ist fertig
https://github.com/Pix–-/ioBroker.homepilot
Neu:
-
Die Dauer in Sekunden zwischen den Synchronisierungen Homepilot <> ioBroker lässt sich nun einstellen (default 12s).
-
Switches/Schalter (Serie 43 und 46) werden nun per Commad ID gesetzt, aber noch über Position/Level aus Homepilot gelesen.
-
Datenpunkt UNREACH erstellt.
Wenn Homepilot nicht erreichbar, wird UNREACH auf true gesetzt (zB für Alarmierung). Bitte prüfen, ob das Setzen auf true bei Adapter Installation bis zum ersten einlesen schon die Alarmierung auslöst. Dann muss ich das ändern.
-
Readme aufgehübscht
Gruß
Pix
-
-
Hallo,
bei mir geht die Installation leider nicht. Sowohl über die GUI, als auch die Konsole.
Müsste es gehen????
404 https://registry.npmjs.org/iobroker.homepilot
npm ERR! TypeError: Cannot read property 'latest' of undefined
npm ERR! at next (/usr/local/lib/node_modules/npm/lib/cache.js:687:35)
npm ERR! at /usr/local/lib/node_modules/npm/lib/cache.js:675:5
npm ERR! at saved (/usr/local/lib/node_modules/npm/node_modules/npm-registry-client/lib/get.js:142:7)
npm ERR! at /usr/local/lib/node_modules/npm/node_modules/graceful-fs/polyfills.js:133:7
npm ERR! at Object.oncomplete (fs.js:107:15)
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! npm-@googlegroups.com
-
@pix:Hallo,
0.0.5 ist fertig
https://github.com/Pix–-/ioBroker.homepilot
Neu:
-
Die Dauer in Sekunden zwischen den Synchronisierungen Homepilot <> ioBroker lässt sich nun einstellen (default 12s).
-
Switches/Schalter (Serie 43 und 46) werden nun per Commad ID gesetzt, aber noch über Position/Level aus Homepilot gelesen.
-
Datenpunkt UNREACH erstellt.
Wenn Homepilot nicht erreichbar, wird UNREACH auf true gesetzt (zB für Alarmierung). Bitte prüfen, ob das Setzen auf true bei Adapter Installation bis zum ersten einlesen schon die Alarmierung auslöst. Dann muss ich das ändern.
-
Readme aufgehübscht
Gruß
Pix `
Neue Version installiert, leider geht das ausschalten der Schaltaktoren über STATE false immer noch nicht. Edit: Einschalten geht, aber ausschalten dann nicht mehr. -
-
Seltsam, hier der Code, der das Schalten übernimmt:
else if (controller == 'state') { // control via state e.g. Universal-Aktor switch if (input.search(/(true)|(false)\b/gmi) != -1) { // check if "true" or "false" valid = true; newcid = (input || input === 'true') ? '10' : '11'; // hier sollte bei 'false' eigentlich '11' gesetzt werden if (valid) url = 'http://' + ip + '/deviceajax.do?did=' + deviceid + '&cid=' + newcid + '&command=1'; // switch ON / OFF adapter.log.debug('Switch ' + deviceid + ' new status detected: ' + input + ' URL: ' + url); } else valid = false; }
Was sagt das Log (hier 6. Zeile, also Adapter bitte auf debug stellen)?
Gruß
Pix
-
Log sagt:
! ````
homepilot-0 2016-06-19 15:09:24.490 warn Wrong type of data input. Please try again
homepilot-0 2016-06-19 15:09:20.895 warn Wrong type of data input. Please try again
homepilot-0 2016-06-19 15:09:19.959 info Command sent to Homepilot because "false" written to State "homepilot.0.devices.Steckdosenaktor.10006.state"
homepilot-0 2016-06-19 15:09:13.213 warn Wrong type of data input. Please try again
homepilot-0 2016-06-19 15:09:12.220 info Command sent to Homepilot because "true" written to State "homepilot.0.devices.Steckdosenaktor.10006.state"
homepilot-0 2016-06-19 15:09:09.915 warn Wrong type of data input. Please try again
homepilot-0 2016-06-19 15:08:57.730 warn Wrong type of data input. Please try againHätte ich jetzt seit dem du geantwortet hast nochmal updaten müssen?
-
Nein, hätest du nicht. Habe nichts verändert.
Du sagst ja, dass das Einschalten funktioniert, nur das Ausschalten nicht.
Also true geht, false nicht.
Seltsam ist ja, dass durch diese Zeile
newcid = (input || input === 'true') ? '10' : '11'; // hier sollte bei 'false' eigentlich '11' gesetzt werden
genau nach "true" gefragt wird (sowohl als boolean, als auch als Zeichenkette) und falls kein true kommt, und dazu gehört 'false' ja, dann soll die 11 gesetzt werden (für AUS).
Mir fehlt nur diese Zeile in der Logausgabe:
adapter.log.debug('Switch ' + deviceid + ' new status detected: ' + input + ' URL: ' + url);
Deshalb bitte mal den Adapter auf DEBUG stellen (Reiter Instanzen, Expertenmodus. Logstufe)
Gruß
Pix
-
Ok, hier die Debug-Ausgabe nachdem ich ausgeschaltet habe:
homepilot.0 Wrong type of data input. Please try again homepilot.0 2016-06-19 22:25:51.217 debug homepilot.0 State: state device: 10006 command: 0 homepilot.0 2016-06-19 22:25:51.216 debug homepilot.0 input value: 0 homepilot.0 2016-06-19 22:25:51.216 debug homepilot.0 stateChange homepilot.0.devices.Steckdosenaktor.10006.state {"val":"0","ack":false,"ts":1466367951198,"q":0,"from":"system.adapter.web.0","lc":1466367951198} homepilot.0 2016-06-19 22:25:51.214 debug inMem message homepilot.0.* homepilot.0.devices.Steckdosenaktor.10006.state homepilot.0 2016-06-19 22:25:50.318 info homepilot.0 Command sent to Homepilot because "false" written to State "homepilot.0.devices.Steckdosenaktor.10006.state" homepilot.0 2016-06-19 22:25:50.318 debug homepilot.0 Switch 10006 new status detected: false URL: http://192.168.178.5/deviceajax.do?did=10006&cid=10&command=1 homepilot.0 2016-06-19 22:25:50.317 debug homepilot.0 State: state device: 10006 command: false homepilot.0 2016-06-19 22:25:50.317 debug homepilot.0 input value: false homepilot.0 2016-06-19 22:25:50.317 debug homepilot.0 stateChange homepilot.0.devices.Steckdosenaktor.10006.state {"val":false,"ack":false,"ts":1466367950226,"q":0,"from":"system.adapter.web.0","lc":1466367950226} homepilot.0 2016-06-19 22:25:50.315 debug inMem message homepilot.0.* homepilot.0.devices.Steckdosenaktor.10006.state homepilot.0 2016-06-19 22:25:46.005 debug homepilot.0 Homepilot adapter started... homepilot.0 2016-06-19 22:25:46.005 debug homepilot.0 Homepilot station and ioBroker synchronize every 12s homepilot.0 2016-06-19 22:25:46.004 debug homepilot.0 initializing objects
Edit: Ok, jetzt habe ich herausgefunden, dass der CID falsch ist, bei STATE false wird 10, also Einschalten benutzt anstatt 11.
Gesendet von meinem iPad mit Tapatalk HD
-
Vielen Dank für die Rückmeldung. Jetzt habe ich den Fehler wohl gefunden:
newcid = (input || input === 'true') ? '10' : '11';
Input ist ja kein Typ boolean, sondern ein Typ String. Deshalb wird die obige Abfrage immer '10' ergeben, da auch der übergebene String 'false' eben ein String ist und die Variable füllt. Es wird ja nur gerpüft, ob was drin steht, erst nach dem ODER wird geprüft, obt das auch "true" ist.
Da ich oben weiter eh schon die Regex-Abfrage für plausible Eingaben habe, konnte ich die natürlich weiter unten auch nutzen.
if (input.search(/(true)(EIN)(AN)(ON)|([10-11])|(false)(AUS)(OFF)\b\b/gmi) != -1) { // check if "true" or "false" valid = true; if (input.search(/(true)(EIN)(AN)(ON)|(10)\b\b/gmi) != -1 ) newcid = '10'; if (input.search(/(false)(AUS)(OFF)|(11)\b\b/gmi) != -1 ) newcid = '11'; url = 'http://' + ip + '/deviceajax.do?did=' + deviceid + '&cid=' + newcid + '&command=1'; // switch ON / OFF adapter.log.debug('Switch ' + deviceid + ' new status detected: ' + input + ' URL: ' + url); } else valid = false;
Es sind jetzt eben auch die in der https://github.com/Pix–-/ioBroker.homepilot/blob/master/README.md#command-id aufgezählten CID Anweisungen möglich (zB "AUS" oder "off" oder "EiN", wenn es sein muss )
Neue Version 0.0.6 mit Korrektur ist da.
https://github.com/Pix–-/ioBroker.homepilot
Gruß
Pix
-
Nach Update kann ich jetzt nur noch an- der ausschalten, wenn ich "10" oder "11" in STATE schreibe. "true" oder "false" oder "AN" oder "AUS", gehen nicht.
Geht nicht:
! ````
homepilot.0 2016-06-20 15:11:40.520 debug homepilot.0 finished reading Homepilot Data
homepilot.0 2016-06-20 15:11:40.518 debug homepilot.0 reading homepilot JSON ...
TypeError: 2016-06-20 13:11:36.854 error at Manager.ondecoded (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/manager.js:333:8)
TypeError: 2016-06-20 13:11:36.854 error at Manager.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:131:20)
TypeError: 2016-06-20 13:11:36.854 error at Manager. (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-bind/index.js:21:15)
TypeError: 2016-06-20 13:11:36.854 error at Socket.onpacket (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:221:12)
TypeError: 2016-06-20 13:11:36.854 error at Socket.onevent (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/lib/socket.js:263:10)
TypeError: 2016-06-20 13:11:36.854 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:131:20)
TypeError: 2016-06-20 13:11:36.854 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:45:30)
TypeError: 2016-06-20 13:11:36.854 error at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2036:80)
TypeError: 2016-06-20 13:11:36.854 error at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.homepilot/main.js:22:9)
TypeError: 2016-06-20 13:11:36.854 error at controlHomepilot (/opt/iobroker/node_modules/iobroker.homepilot/main.js:166:23)
TypeError: 2016-06-20 13:11:36.854 error Cannot read property 'warn' of undefined
message 2016-06-20 13:11:36.836 error homepilot.0.devices.Steckdosenaktor.10006.state [object Object] Cannot read property 'warn' of undefined
homepilot-0 2016-06-20 13:11:36.832 debug State: state device: 10006 command: true
homepilot-0 2016-06-20 13:11:36.828 debug input value: true
homepilot-0 2016-06-20 13:11:36.826 debug stateChange homepilot.0.devices.Steckdosenaktor.10006.state {"val":true,"ack":false,"ts":1466428296807,"q":0,"from":"system.adapter.admin.0","lc":1466428296807}
inMem 2016-06-20 13:11:36.816 debug message homepilot.0.* homepilot.0.devices.Steckdosenaktor.10006.state val=true, ack=false, ts=1466428296807, q=0, from=system.adapter.admin.0, lc=1466428296807
homepilot-0 2016-06-20 13:11:28.451 debug Homepilot adapter started...
homepilot-0 2016-06-20 13:11:28.450 debug Homepilot station and ioBroker synchronize every 12s
homepilot-0 2016-06-20 13:11:28.446 debug initializing objects
homepilot-0 2016-06-20 13:11:28.431 info starting. Version 0.0.6 in /opt/iobroker/node_modules/iobroker.homepilot
homepilot-0 2016-06-20 13:11:28.208 debug statesDB connected
homepilot-0 2016-06-20 13:11:28.158 debug objectDB connectedGeht schon: (mit "10") >! ```` homepilot.0 2016-06-20 15:14:04.759 debug homepilot.0 reading homepilot JSON ... homepilot-0 2016-06-20 13:14:01.388 info Command sent to Homepilot because "10" written to State "homepilot.0.devices.Steckdosenaktor.10006.state" homepilot-0 2016-06-20 13:14:01.377 debug Switch 10006 new status detected: 10 URL: http://192.168.178.5/deviceajax.do?did=10006&cid=10&command=1 homepilot-0 2016-06-20 13:14:01.374 debug State: state device: 10006 command: 10 homepilot-0 2016-06-20 13:14:01.374 debug input value: 10 homepilot-0 2016-06-20 13:14:01.373 debug stateChange homepilot.0.devices.Steckdosenaktor.10006.state {"val":10,"ack":false,"ts":1466428441359,"q":0,"from":"system.adapter.admin.0","lc":1466428441359} inMem 2016-06-20 13:14:01.370 debug message homepilot.0.* homepilot.0.devices.Steckdosenaktor.10006.state val=10, ack=false, ts=1466428441359, q=0, from=system.adapter.admin.0, lc=1466428441359
-
Danke für die Rückmeldung. Tut mir leid, waren Flüchtigkeitsfehler. Hab schon einen Schreibfehler gefunden: "adapter.lo.warn"
Ausserdem fehlte in der RegEx Abfrage wohl einige ODER :oops:
Ich lade mal schnell eine neue Version hoch 0.0.7. 8-)
Gruß
Pix
-
@pix:Danke für die Rückmeldung. Tut mir leid, waren Flüchtigkeitsfehler. Hab schon einen Schreibfehler gefunden: "adapter.lo.warn"
Ausserdem fehlte in der RegEx Abfrage wohl einige ODER :oops:
Ich lade mal schnell eine neue Version hoch 0.0.7. 8-)
Gruß
Pix `
Danke, jetzt läufts! -
Ich wollte nochmal auf die Einstellungsmöglichkeit des Manuellbetriebs der Aktoren/Rollotrons zurückkommen.
Wäre es möglich einen Datenpunkt "OVERALL_AUTOMATION" mit Typ boolean (true/false) für jedes Gerät einzuführen?
Das Setzen der Automation bzw. des Manuellbetriebs geschieht mittels folgender Anfrage:````
http://homepilot/deviceajax.do?automation=1&data={"did":10005,"automation":3,"state":false}Dabei ist "automation:3" die Funktion, um den Manuellmodus zu aktivieren "state:true" bzw. zu deaktiveren "state:false". Ausgelesen werden kann der Status des Geräts mittels```` "statusesMap":{"Position":100,"Manuellbetrieb":0} ````innerhalb der Standardabfrage von```` http://homepilot/deviceajax.do?devices=1 ````, also "Manuellbetrieb":0 für deaktiviert bzw. "Manuellbetrieb":1 für aktivert. Wäre vielleicht für den ein oder anderen eine sinnvolle Ergänzung! :idea: EDIT: Habe gerade eine weitere sinnvolle Ergänzung gefunden, eine Rückmeldung, ob der Aktor erreichbar ist und sich zurückmeldet. Diese Info verbirgt sich hinter der Rückmeldung auf die Abfrage mit```` http://homepilot/deviceajax.do?devices=1 ````bei```` "statusValid":false, ````, "true", wenn der Befehl angekommen ist und das Gerät sich zurückmeldet und "false", wenn nicht. Habe es eben ausprobiert mit einer Schaltsteckdose. Gilt aber m.E. für alle Geräte. Damit könnte man noch einen "UNREACH"-Datenpunkt einführen.
-
Hallo pustekuchen,
die nächsten Tage wird das erstmal nix. Habe da beruflich viel zu tun.
Vielleicht danach. Wozu ist denn der manuelle Modus?
Gruß
Pix
-
Beispiel: Terrasse. Ich benutze den FDK bzw TFK der Homematic für den Fensterstatus. Ist an der Terrasse die Türe offen oder gekippt, dann geht der Rollo auf manuell und fährt abends nicht herunter, damit man sich nicht aussperrt, wenn man noch draußen sitzt. Sobald die Türe geschlossen wird, geht der Rollo wieder auf Automatik.
-
Ah verstehe. Das braucht man aber nur, wenn die Steuerung /Automatik von Homepilot gemacht wird, oder?
Ist jedenfalls sinnvoll. Vielleicht kann ich nächste Woche was machen.
Gruß
Pix
Gesendet mit Tapatalk
-
Bei mir ist die Steuerung momentan folgendermaßen:
Der Homepilot übernimmt das Hoch- und Runterfahren aller Rollos z.T. per Morgen- und Abenddämmerungsautomatik. Somit steuere ich die Zeiten, die man normalerweise bei jedem Rollo eingeben muss, zentral im Homepilot. Um das zentrale Steuern nach Dämmerungsautomatik nutzen zu können, muss man aber bei den Gurtwicklern die Automatik einschalten. Das wiederum bedeutet, dass diese nach ihrer internen Uhrzeit hoch- und runterfahren wollen.
Ich habe nun bei allen Rollos intern die Uhrzeit zum Herunterfahren auf 8:00 Uhr gesetzt und zum Hochfahren auf 8:05 Uhr. In dieser Zeitspanne (-1/+1Min.) lasse ich vom Homepilot alle Gurtwickler auf Modus Manuell schalten. Somit "überspringe" ich sozusagen die internen Fahrzeiten der einzelnen Rollos und kann den Rest der Automation, wie Sonnensensor, Dämmerungsautomatik, Fahrzeit am Wochenende, etc. komplett über den Homepilot zentral steuern und automatisierte Szenen aktiveren und deaktiveren. Das läuft bei mir schon lange sehr stabil!
Die Steuerung mittels Dashui ist die Verbindung zu den Tür-Fenster-Kontakten / FDKs, welche den Manuell-Modus aktiveren, wenn mal das Fenster oder die Türe noch offen steht und natürlich noch eine zusätzliche Möglichkeit, die Rollos zu fahren.
Allerdings möchte ich in Zukunft komplett auf iobroker (mit zwei CCUs und Homepilot) setzen und die komplette Logik der Steuerungen in iobroker realisieren. Da es jetzt den Homepilot-Adapter gibt und iobroker immer stabiler wird, wird mich nicht mehr allzu viel davon abhalten können
Ich bin es mittlerweile Leid, mit den Homematic-Skripten zu hantieren, vor allem wegen der 200-Variablen-Begrenzung und den damit einhergehenden Instabilitäten.
-
Ok, ich verstehe die Steuerung. Den Aussperrschutz kannst du natürlich auch leicht in Javascript realisieren. Beim Runterfahren wird immer erst gerprüft, ob der entsprechende Fenstersensor "offen" zeigt. Geht ja auch umgekehrt: Abends (schon dunkel) sind die Rollläden für die Nacht unten. Ich will lüften vorm Schlafen und mache nur das Fenster auf. Der Rollladen fährt automatisch hoch. Nur runter fährt er danach beim Fensterschließen nicht automatisch, das könnte ich nochmal probieren.
Habe bei mir auch mal zum Spaß eine Gruppe in Homepilot angelegt. Zwei Rollläden eines Zimmers in eine Gruppe. Diese Gruppe wird dann auch in der Statusabfrage
http://homepilot.local/deviceajax.do?devices=1
angezeigt.
Die Geräte stehen alle auf manuell. Denn meine Logik liegt auch hier komplett in ioBroker. Macht ja keinen Sinn, alle Scripte und Webui-Programme von der Homematic in Javascript Skripte bzw. Adapter auf ioBroker zu übertragen und dann den Homepilot doch wieder für sich zu programmieren. Die Zeiten gebe ich in VIS (-> Javascript) ein (such mal subscribe / unsubscribe hier im Forum) und der Sonnensensor ist ein Homematic Differenztemp-Sensor.
Gruß
Pix