NEWS
[Aufruf] deConz Adapter Testen 1.1.2
-
@CKMartens sagte in [Aufruf] deConz Adapter Testen 1.1.2:
Und auf dem Conbee Stick läuft die aktuelle Firmware von Dresden Elektronik. Das sollte auch funktionieren.
Das habe ich damals auch gedacht, weil ich die Software von der Dresden Eletronik Seite heruntergeladen habe. Die aktuellsten Versionen bekommt an aber von Github. Hier aber am besten nach stable Versionen gucken.
Im Gesichtsbuch wurde mir geraten mal den Kontakt mit dem Magneten auszulösen beim anlernen.
Das könnte auch klappen. Falls das auch nichts bringt kannst du dich ja zur Not mal an DE wenden.
-
@CKMartens sagte in [Aufruf] deConz Adapter Testen 1.1.2
Im Gesichtsbuch wurde mir geraten mal den Kontakt mit dem Magneten auszulösen beim anlernen. Das werde ich auch noch probieren.
Genau das war die Lösung. Einmal den Magnet hingehalten und Conbee hat den Sensor sofort erkannt.
-
Ich fände es cool wenn der Adapter beim Xiaomi Vibrationssensor noch die X Y Z die in einem Objekt sind verteilen könnte.
Hab mir jetzt aber erstmal Manuell geholfen -
Edit: Falscher Beitrag
-
So. Ich habe mich nun mal an das Update von 0.4.0 > 1.1.2 gemacht.
Wie bereits erwähnt, ist es nötig, alle Logging Datenpunkte neu zu setzen. Das hängt damit zusammen, weil man den Objekt Ordner Deconz vor dem update löschen sollte.
Dabei werden auch alle Datenpunkte die sonst geloggt wurden, in meinem Falle via mySQL gelöscht.
Nun gibt es die Möglichkeit in den neu erstellten Datenpunkten, nach dem Update, jeweils das Logging zu aktivieren und einen Alias mit dem alten Namen einzufügen.
Da ich das allerdings nur für eine Notlösung halte, habe ich mich auf der Suche nach einer anderen Lösung gemacht.Anbei nun mein "Lösungsansatz" / Tutorial.
Vorher sei gesagt: Keine Gewehr! Alles auf eigener Gefahr. Macht Backups! Am besten vom kompletten System. In jedem Falle aber von der Datenbank und von ioBroker. Überprüft ob die Backups funktionieren!Benötigte Sachen:
Zeit, Gedult.
HeidiSQL > ein Datenbank tool. Ich betreibe es auf meinem iMac via Virtualmachine in Win7.In ioBroker den mySQL Adapter stoppen.
HeidiSQL installieren und auf die Datenbank des RaspberryPis einloggen.
Im Reiter SSH Tunnel
Putty ggf. Downloaden und Pfad auswählen.
SSHHOST und Port: IP Adresse des RaspberryPi
SSH Passwort des Raspi
Im Reiter Einstellungen:
Verbindungstyp: MariaDB or mySQL SSHTunnel wählen.
IP: localhost
Benutzername und Passwort der Datenbank eingeben.
So sollte es für gewöhnlich Funktionieren.Als nächstes seht ihr auf der linken Seite eure Datenbank (ioBroker).
Wenn ihr diese öffnet findet ihr dort die Datenbank "datapoints","sources","ts_bool","ts_number","ts_string"Über den Reiter Datei / Neuer Query Tab erstellt ihr eine neue Abfrage.
In das Abfrage Fenster schreibt ihr folgenden Befehl:
CREATE TABLE datapointsBak AS SELECT * FROM datapoints;
Abfrage ausführen in dem ihr auf den blauen Pfeil in der oberen Symbolleiste drückt.
Zur Sicherheit nun eine Kontrolle:
Setzt ein "#" vor "CREATE TABLE" um diese Zeile zu deaktivieren und fügt in der nächsten Zeile folgenden Code ein.SELECT * from datapoints WHERE NAME LIKE '%deconz%' ;
Abfrage ausführen.
und:SELECT * from datapointsBak WHERE NAME LIKE '%deconz%' ;
Wieder ein "#" vor der ersten Codeeingabe setzen und die zweite Eingabe ausführen.Normalerweise müssten diese beiden Tabellen nun identisch aussehen.
In meinem Falle waren für mich vor allem die Xiaomi Sensoren interessant. Deshalb kommt nun die eigentlich Änderung.
Wir geben den alten Datenpunkten den neuen Namen den der iobroker deconz Adapter nun vergibt. Dadurch haben wir kein Alias beim Logging mehr nötig.Achtung ab jetzt ändern wir etwas an euren bestehenden Daten!
"#" vor den oberen Code setzen und in der nächsten Zeile:
UPDATE datapoints SET NAME = REPLACE(NAME,'Sensor_','Sensors.') WHERE NAME LIKE '%Sensor_%' ;
einfügen und ausführen.
Damit ändern wir alle Datenpunkte die "Sensor_XX" heißen in "Sensors.XX".
Zur Kontrolle ob es funktioniert hat, kann nun gerne noch einmal:
SELECT * from datapoints WHERE NAME LIKE '%deconz%' ;
in der Abfrage ausgeführt werden. Vorher unbedingt daran denken, wieder ein "#" vor "UPDATE" zusetzen.
Sollte irgendetwas schief gelaufen sein, lässt sich die veränderte Datenbank mit dem Bakup "datapointsBak" wiederherstellen. Dazu bitte Google benutzen.
Fürs erste sind wir hier nun Fertig.
-
In ioBroker den deconzAdapter Stoppen und unter Objekte den Ordner deconz.0 löschen.
-
deconz Adapter updaten.
-
Ein neues Javaskript im Skripteditor erstellen.
Folgenden "quick and dirty" Code einfügen:
var array = []; sendTo('sql.0', 'query', 'SELECT NAME from iobroker.datapoints WHERE NAME LIKE \'%deconz%\'', function (result) { console.log('Rows: ' + JSON.stringify(result.result)); if (result.error) { console.error(result.error); console.log("Das ist ein Error!!"); } else { // show result console.log("Hat geklappt!!"); console.log('Rows: ' + JSON.stringify(result.result)); array = JSON.parse(JSON.stringify(result.result)); //console.log("array: " + array); // log('Type: ' + array[Object.keys(array)[0]].NAME); for (var j = 0; j < array.length; j++) { rand = Math.floor((Math.random() * 300) + 1); //Debounce Random log('Type: ' + array[Object.keys(array)[j]].NAME); sendTo('sql.0', 'enableHistory', { id: array[Object.keys(array)[j]].NAME, options: { changesOnly: true, // Nur Änderungen Speichern debounce: rand, retention: 63072000, // 2 Jahre changesMinDelta: 0, aliasId: "" } }, function (result) { if (result.error) { console.log(result.error); } if (result.success) { //successfull enabled } }); } } });
-
Speichern! Der Code dient dazu, auszulesen welche Datenpunkte in mySQL für deconz gespeichert sind und diese wieder fürs Logging zu aktivieren. Die Werte können gerne nach den eigenen Wünschen angepasst werden. Noch nicht ausführen!
-
deconz Adapter v 1.2.0 starten und warten bis alle Daten geladen sind.
-
Nun müsstet ihr unter Objekte die neue Ordnerstruktur sehen.
-
mySQL Adapter starten und warten bis er vollständig gestartet hat.
-
Das JavaSkript starten.
-
Im Log müsstet ihr nachvollziehen können was nun passiert.
-
Unter Objekte müsstet ihr nun sehen, dass wieder die alten Datenpunkte fürs Logging aktiviert wurden.
-
Sollten neue leere Ordner oder Datenpunkte durch das Skript erstellt worden sein, liegt es daran, dass sich in der Datenbank diese "Leichen" befunden haben. Ihr könnt sie für gewöhnlich einfach löschen.
-
Skript deaktivieren.
-
Nun müsst ihr evtl. noch die Daten in VIS, FLOT, JAVASKRIPT oder YAHKA anpassen.
Sollte alles wie gewünscht Funktionieren, solltet ihr ein neues Backup eures Systems erstellen und könnt die "datapointsBak" Tabelle aus eurer Datenbank löschen.
Viel Erfolg.
-
-
@Kugelkopf sagte in [Aufruf] deConz Adapter Testen 1.1.2:
So. Ich habe mich nun mal an das Update von 0.4.0 > 1.2.0 gemacht.
1.2.0?
-
@Arnulf 1.1.2 meinte ich natürlich! Es war schon sehr spät
-
@Jey-Cee Moin!! Ich weiß garnicht, ob du es schon in der letzten Version integriert hattest, und es dresden elektronik wieder geändert wurde... aber wäre es noch möglich, dass man die Duration von den Xiaomi/Aqara PIR Sensoren ändern kann? Die URL Dazu wäre:
curl -X PUT -d '{"duration":5 }' -s http://PHOSCON_IP:8080/api/APICODE/sensors/18/config
In dem Falle also für den Sensor mit der ID 18 und einer Duration von 5 Sek.
Und vielleicht als kleiner Tipp, für alle, die ihre Xiaomi / Aqara Sensoren Hardwaretechnisch beschleunigen wollen:
Aqara PIR Sensor Hardware Hack:
https://community.smartthings.com/t/making-xiaomi-motion-sensor-a-super-motion-sensor/139806
Hab es selbst ausprobiert, es funktioniert. -
@Kugelkopf ich bin der Meinung ich hab das schon eingebaut. Werde bei Gelegenheit nach sehen.
-
So.
Endlich kamen die PIR aus Chinaland und ich konnte die Hardwaremodifikation vornehmen.
War einfacher als befürchtet.
Und die PIR sind sooo niedlich. Nix im Vergleich zu den Sonoff-Riesen.Jetzt alber mal zu meinen Fragen:
Seit wann ist die Baumstruktur bei den Objekten geändert?
Ich habe noch alte Objekte , die sich Sensor_1, Sensor_2... Sensor_n nennen.
Ich vermute, das sind die Alten.Dann gibt es einen Knoten mit "Sensors"
Da sind jetzt alle Sensoren durchnummeriert eingehängt.
Ich vermute, das ist jetzt neu.Wie auch schon bei den "Zauberwürfeln" werden mehrere IDs für den PIR generiert.
Das ist immer noch unschön.
In der Deconz-Software wird der Sensor als ein Gerät erkannt.
Im Adapter erscheint er nun als 3 Geräte.
Und unter jedem ID-Knoten gibt es Objekte. Und die sind noch nicht einmal eindeutig sortiert.
So ist "battery" bei allen Knoten zu finden. "tampered" nur bei einem.Das macht es etwas unübersichtlich, weil ich nicht weiß, welchen der Objekte ich nun verwenden muss.
Ist es nicht möglich, in einer zukünftigen Adapter-Version die Objekte so zusammen zu fassen, dass ein Gerät auch nur unter einem ID-Knoten zu finden ist?
-
hallo, ich bekomme den adapter absolut nicht zum laufen. bzw hängt er sich ständig auf und startet neu. verbindung und api funktioniert. er synct auch eine gruppe die ich unter der webapp phoscon angelegt habe. getestet habe ich version 1.1.2 und 1.0.2.
npm 6.9.0
node js 10.16.0
deconz 2.05.66das steht im Log
debug ein
host.ioBroker-rock64 2019-06-26 19:56:17.814 info Restart adapter system.adapter.deconz.0 because enabled
host.ioBroker-rock64 2019-06-26 19:56:17.814 error instance system.adapter.deconz.0 terminated with code 0 (OK)
host.ioBroker-rock64 2019-06-26 19:56:17.814 error Caught by controller[0]: at TCP.onStreamRead (internal/stream_base_commons.js:94:17)
host.ioBroker-rock64 2019-06-26 19:56:17.813 error Caught by controller[0]: at Socket.Readable.push (_stream_readable.js:224:10)
host.ioBroker-rock64 2019-06-26 19:56:17.813 error Caught by controller[0]: at readableAddChunk (_stream_readable.js:269:11)
host.ioBroker-rock64 2019-06-26 19:56:17.813 error Caught by controller[0]: at addChunk (_stream_readable.js:288:12)
host.ioBroker-rock64 2019-06-26 19:56:17.813 error Caught by controller[0]: at Socket.emit (events.js:198:13)
host.ioBroker-rock64 2019-06-26 19:56:17.812 error Caught by controller[0]: at Socket.socketOnData (_http_client.js:442:20)
host.ioBroker-rock64 2019-06-26 19:56:17.812 error Caught by controller[0]: at HTTPParser.parserOnHeadersComplete (_http_common.js:109:17)
host.ioBroker-rock64 2019-06-26 19:56:17.812 error Caught by controller[0]: at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:556:21)
host.ioBroker-rock64 2019-06-26 19:56:17.812 error Caught by controller[0]: at ClientRequest.emit (events.js:198:13)
host.ioBroker-rock64 2019-06-26 19:56:17.811 error Caught by controller[0]: at ClientRequest.req.on (/opt/iobroker/node_modules/iobroker.deconz/node_modules/ws/lib/websocket.js:595:7)
host.ioBroker-rock64 2019-06-26 19:56:17.810 error Caught by controller[0]: Error: Unexpected server response: 400
deconz.0 2019-06-26 19:56:17.207 error Error: Unexpected server response: 400 at ClientRequest.req.on (/opt/iobroker/node_modules/iobroker.deconz/node_modules/ws/lib/websocket.js:595:7) at ClientRequest.emit (events.js:198:13)
deconz.0 2019-06-26 19:56:17.205 error uncaught exception: Unexpected server response: 400
deconz.0 2019-06-26 19:56:07.896 info {"type":"device","common":{"name":"test","role":"group"},"native":{"devicemembership":[],"etag":"f40764ce0d2ad189b11c4e9ef08ea062","id":"1","lights":[]},"from":"system.adapter.deconz.0","user":"system
deconz.0 2019-06-26 19:56:07.896 info [object Object]
deconz.0 2019-06-26 19:56:07.896 info Groups.1
deconz.0 2019-06-26 19:56:07.636 debug getGroupAttributes: {"action":{"bri":128,"colormode":"hs","ct":0,"effect":"none","hue":0,"on":false,"sat":128,"scene":null,"xy":[0,0]},"devicemembership":[],"etag":"f40764ce0d2ad189b11c4e9ef08ea062","
deconz.0 2019-06-26 19:56:07.285 debug getAllSensors: {"1":{"config":{"configured":false,"on":true,"sunriseoffset":30,"sunsetoffset":-30},"etag":null,"manufacturername":"Philips","modelid":"PHDL00","name":"Daylight","state":{"dark":null,"d
deconz.0 2019-06-26 19:56:07.285 debug SzenenID (JSON): []
deconz.0 2019-06-26 19:56:07.285 debug getAllGroups: {"1":{"action":{"bri":128,"colormode":"hs","ct":0,"effect":"none","hue":0,"on":false,"sat":128,"scene":null,"xy":[0,0]},"devicemembership":[],"etag":"f40764ce0d2ad189b11c4e9ef08ea062","i
deconz.0 2019-06-26 19:56:07.285 debug getAllLights: {}
deconz.0 2019-06-26 19:56:07.233 debug API version: 1.16.0
deconz.0 2019-06-26 19:56:07.174 info starting. Version 1.0.2 in /opt/iobroker/node_modules/iobroker.deconz, node: v10.16.0kann mir jemand sagen was ich verkehrt mache?
-
@Arnulf sagte in [Aufruf] deConz Adapter Testen 1.1.2:
Seit wann ist die Baumstruktur bei den Objekten geändert?
Seit Version 1.x.x
@Arnulf sagte in [Aufruf] deConz Adapter Testen 1.1.2:
Ist es nicht möglich, in einer zukünftigen Adapter-Version die Objekte so zusammen zu fassen, dass ein Gerät auch nur unter einem ID-Knoten zu finden ist?
Nein, der Zauberwürfel meldet sich als 3 Geräte. Die Phoscon APP erkennt ihn nur als ein Gerät weil man es ihr beim An lernen sagt das es eins ist. Die API gibt es aber weiter als 3 einzelne Geräte aus, weil es auch so ist.
@intruder7 da stimmt was nicht mit der Websocket Verbindung, aus dem Log geht aber nicht hervor was. Möglich das der falsche Port verwendet wird das gab es schon mal.
Geh in den Objekte Tab zur deconz Instanz, dort findest du das Objekt Gateway_info. Öffne es mit dem Stift Symbol rechts und Wechsel in den Tab native.
Ganz unten steht der Port für den Websocket, normal ist der 443. Entweder hat deine deconz Installation einen anderen port dann musst du ihn in iobroker, also dem Objekt anpassen, oder du musst warten bis ich Zeit habe das zu Untersuchen.@all wegen Umzug kann ich eine Weile nicht Entwickeln und Testen. Es geht weiter sobald ich kann.
-
@Jey-Cee der websocket port war das Problem. Habe Deconz im Container installiert auf meiner Synology und dort war er nicht richtig eingestellt.
der Adapter läuft erstmal. Mal schauen wie es mit dem Anlernen klappt.
Danke dir
-
Ich steuere Lampen, die in Deconz eingebunden sind, direkt über den Alexa Hub. Durch diesen Adapter habe ich die Geräte auch in ioBroker. Ändert sich nun ein State per Sprachbefehl wird dieser nicht an das Objekt in ioBroker in der deConz Ordnerstruktur übergeben.
Wie löst ihr das; sodass ihr den State in Visualisierungen usw aktuell habt wenn ihr per Alexa Sprache steuert? -
Kann das jemand nachvollziehen oder hat eine Lösung dafür? Wie werden die States bei euch gesetzt wenn ihr per Sprache steuert? Vielleicht liegt es ja irgendwo in meiner Konfig.
-
@Gerni Du steuerst die Zigbee Komponenten also die sowohl über den Echo als auch über Deconz? Glaube das macht Probleme wenn man ein System an zwei Gateways betreiben möchte. Dachte das ist gar nicht möglich?!
Wenn du die Systeme nur mit Deconz (also ohne den Echo als Gateway) schaltest und dann per iot Adapter über Alexa steuerst, sollte der Status immer den aktuellen Stand haben. -
@siggi85 wenn man das deconz Gateway öffnet, in Alexa neue Geräte sucht verbindet die sich mit dem Gateway und Geräte sind in Alexa vorhanden. Dort passen die States dann auch jedoch nicht in iobroker.
Im Alexa 2 Adapter nicht weil der sich die Info holen muss aber auch im deconz Adapter nicht - obwohl in deconz selbst ja richtig gesetzt. Ich glaube da liegt das Problem; der Adapter zieht sich die Infos nicht vom Gateway sondern übergibt sie nur ans Gateway.
@Jey-Cee vielleicht hast Du noch eine Idee. -
@Gerni sagte in [Aufruf] deConz Adapter Testen 1.1.2:
der Adapter zieht sich die Infos nicht vom Gateway
Richtig das macht der Adapter nicht, nie, er bekommt sie von deConz geschickt.
Bitte stelle das Log Level vom Adapter mal auf debug in der Instanzen Übersicht. Wenn du per Alexa eine Lampe Steuerst sollte im Log dazu eine entsprechende Nachricht von deConz zu sehen sein. Wenn nicht kommt schon gar nichts von deConz. -
@Jey-Cee Schalte ich eine Lampe per Sprache an bekomme ich im Log zu Deinem Adapter:
Hilft das weiter?
-
@Gerni Die letzte Zeile in deinem Screenshot ist die Lampe mit der ID 10 die Lampe die du gesteuert hast?