NEWS
Google Home/Assistant ioBroker einrichten/nutzen
-
@tombox Verzeihung. Hier isse: deconz.0.Sensors.2.json
-
@tombox said in Google Home/Assistant ioBroker einrichten/nutzen:
https://issuetracker.google.com/issues/new?component=655104&template=1284148
Mache ich danke.
Aber der Zustand, dass der Adapter Abstürzt wenn ich in der GHome App ein Thermostat aufrufe wäre noch zu klären. Ich habe mal den iot Adapter etwas debugt und folgendes rausgefunden:
der Fehler Steckt in folgender Datei:
/opt/iobroker/node_modules/iobroker.iot/lib/GoogleHome.jsUnd zwar in der Zeile 2073:
getStates(ids, callback, states) { states = states || {}; if (!ids || !ids.length) { callback(states); } else { const id = ids.shift(); this.adapter.getForeignState(id, (err, state) => { <-- Hier steck der Fehler! states[id] = state && state.val; setImmediate(() => this.getStates(ids, callback, states)); }); } }
ids ist ein Array der zwei Elemente hat, das erste ist bestückt das zweite ist leer. Warum auch immer liefert hier das ids.length in der If trotzdem eine 1 für das leere Element. Dadurch geht der If zum zweiten mal in den Else-Zweig. Beim shift kommt's dann zur "Tragödie", die Konstante id wird undefined, wodurch der getForeignState abbricht weil er .startwith(ALIAS_STARTS_WITH) nicht auf ein undefiniertes Objekt machen kann. Dadurch schmiert der Adapter dann ab und Google Home App bekommt keine Antwort.
Ich habe die Funktion wie folgt abgeändert:
getStates(ids, callback, states) { states = states || {}; const id = ids.shift(); if (!id || !id.length) { callback(states); } else { //const id = ids.shift(); this.adapter.getForeignState(id, (err, state) => { states[id] = state && state.val; setImmediate(() => this.getStates(ids, callback, states)); }); } }
Also den Shift vor die If gezogen und in der If Frage ich die Konstante ab.
Jetzt läuft es durch und man kann Thermostate über die App auch bedienen.
Hat noch jemand anders den Fehler gehabt?
Und reicht es hier als Lösung oder soll ich das noch wo anders posten?Viele Grüße, David
-
Hallo,
ich hab jetzt auch mal diese Zeilen abgeändert und es funktionieren jetzt auch die Thermostate. Vorher ist der Adapter sofort abgestürzt, sobald irgendetwas mit Temperatur zu tun hatte.
Allerdings kann ich sie nur über die Google Home App bedienen und nicht auf Zuruf, hier kommt das das Gerät aktuell nicht erreichbar ist. -
@echoDave Hi danke für das Feedback, In meiner Version ist der Fehler schon länger behoben aber ich hatte noch keine Zeit es in die offizielle Version zu kopieren. Werde ich zeitnah machen.
Bzw teste doch mal meine Version ob da der Fehler auch weg ist.
-
@Maximilian-Klie Der schnellste Weg dein Problem zu fixen ist Sensor.2 manuell zu löschen und durch deconz neuerzeugen lassen und dann wie beschrieben dem Device Sensors.2 ein Raum und Funktion zu weisen und nicht dem State temperature
-
@tombox welche ist deine hast du mal nen Link zum github?
-
@echoDave https://github.com/TA2k/ioBroker.iot Anleitung zur Installation in Beitrag 1
-
@hollywoot Also die Jalousie wird erkannt wenn man dem Channel hm-rpc.0.OEXXXXXXXX.1 einen Raum und Funktion zuweist. Das Problem ist das der Türsensor bei mir im gleichen Channel liegt. Damit ist es schwer zwei Geräte automatisch zu erkennen. Ist es möglich den Sensor von der Jalousie zu trennen?
-
@tombox said in Google Home/Assistant ioBroker einrichten/nutzen:
ok Danke
aber welcher Brunch ist deiner? den Master 1.1.9 habe ich bereits von da.
Sorry übersehen, dass es dein repo ist nicht das vom iobroker. ich teste mal.Wieso kann man die Thermostate nicht per Sprache steuern?
-
Hmm also deine Version hat schon mal Probleme die Thermostate überhaupt einzufügen:
iot.0 2019-12-31 16:33:19.970 warn (10126) Missing name, type or treat for: hm-rpc.0.MEQ1457539.1.SET_TEMPERATURE. Not added to GoogleHome iot.0 2019-12-31 16:33:19.970 warn (10126) Missing name, type or treat for: hm-rpc.0.MEQ1773490.1.SET_TEMPERATURE. Not added to GoogleHome iot.0 2019-12-31 16:33:19.969 warn (10126) Missing name, type or treat for: hm-rpc.0.MEQ1773431.1.SET_TEMPERATURE. Not added to GoogleHome iot.0 2019-12-31 16:33:19.969 warn (10126) Missing name, type or treat for: hm-rpc.0.MEQ1452909.1.SET_TEMPERATURE. Not added to GoogleHome iot.0 2019-12-31 16:33:19.969 warn (10126) Missing name, type or treat for: hm-rpc.0.MEQ1450924.1.SET_TEMPERATURE. Not added to GoogleHome iot.0 2019-12-31 16:33:19.968 warn (10126) Missing name, type or treat for: hm-rpc.0.MEQ1773015.1.SET_TEMPERATURE. Not added to GoogleHome
mit Blinds gibts auch Probleme, irgendwie fügt die Adapter Version einen Doppelten Eintrag hinzu ohne Namen.
Der Führt zu Fehlern:
Meine Ikea Glühbirne (Zigbee) wurde auch nicht wirklich gut erkannt, konnte die nicht steuern.
-
@echoDave Wenn du MEQ1457539.1 und PEQ2266365.1 und die Lampe kurz als Export bereitstellen könntest, kann ich mir das bei mir anschauen.
-
@tombox gerne aber erst im neuen Jahr, habe die master vom iobroker wieder installiert damit das System über die Tage läuft stelle es im Neuen Jahr wieder auf deine Version.
Guten Rutsch euch allen!
-
Ich habe jetzt auch wieder die Version von tombox installiert. Thermostate kann ich damit hinzufügen und beim Synchronisieren der Geräte wird der Adapter jetzt nicht mehr rot.
Wenn ich Geräte manuell hinzufüge und dann Type und Funktion auswähle z.B. Thermostat dann steht nach dem speichern plötzlich Light drin oder switch. Nach ca. 3-5 mal korrigieren und neu speichern bleibt es dann.
Eine Zeile bei den google devices kann ich nicht mehr löschen, hier steht nur Blinds und Wohnzimmer das sich immer mal wieder verändert. -
@echoDave Der Export ist unabhängig davon welche Version gerade installiert ist. Bei den Thermostaten überprüfe nochmal das der Raum und Funktion auf dem Channel zugewiesen ist und nicht SET_TEMPERATURE
-
@tombox ok, kann schon mal sagen, dass bei mir die functions/räume auf den states liegen und nicht auf Channels.
-
@tombox said in Google Home/Assistant ioBroker einrichten/nutzen:
@Maximilian-Klie Der schnellste Weg dein Problem zu fixen ist Sensor.2 manuell zu löschen und durch deconz neuerzeugen lassen und dann wie beschrieben dem Device Sensors.2 ein Raum und Funktion zu weisen und nicht dem State temperature
Heya! Danke, werde ich testen. Das Ergebnis teile ich hier mit.
-
Hallo,
hab die neue Version von heute installiert, hier sind die fehlerhaften Einträge jetzt verschwunden, Thermostate lassen sich einbinden und per Sprache abfragen, auch beim Speichern bleibt es unter Google Devices nicht mehr grau. Läuft jetzt super, Danke. -
@tombox said in Google Home/Assistant ioBroker einrichten/nutzen:
Bei mir bringt die Version von heute ganz andere Probleme:
iot.0 2020-01-01 14:55:18.147 error (19946) iot.0 2020-01-01 14:55:18.147 error (19946) [object Object] iot.0 2020-01-01 14:55:18.147 error (19946) 3799978283214788838 iot.0 2020-01-01 14:55:18.146 error (19946) TypeError: Cannot convert undefined or null to object at Function.keys (<anonymous>) at devices.forEach.dev (/opt/iobroker/node_modules/iobroker.iot/lib/GoogleHome.js:2476:28) at A iot.0 2020-01-01 14:55:18.144 error (19946) TypeError: Cannot convert undefined or null to object <-- jetzt folgt der Aufruf ind er App -> iot.0 2020-01-01 14:54:52.565 error (19946) [GHOME] devices are unknown to google home iot.0 2020-01-01 14:54:49.191 warn (19946) Missing name, type or treat for: hm-rpc.0.MEQ1450924.1.ACTUAL_TEMPERATURE. Not added to GoogleHome iot.0 2020-01-01 14:54:49.190 warn (19946) Missing name, type or treat for: hm-rpc.0.MEQ1450924.1.SET_TEMPERATURE. Not added to GoogleHome iot.0 2020-01-01 14:54:29.507 info (19946) hm-rpc.0.MEQ1450924.1 is auto added with type thermostat.
Hier der JSON des Objects:
-
@echoDave Ich habe den Fehler auch kurz gesehen. Es war anscheinend ein Problem bei Google.
Bezüglich deines Thermostat wir der korrekt automatisch erkannt. Nur sind Custom sachen für actual und set eingegeben und auch ein Raum vergeben. Einfach das Objekt löschen und durch den hm-rpc adapter neu erstellen lassen und nur dem channel ein Raum und Funktion zuweisen.
Der Fehler müsste nichts mit dem Thermostat zu tun ich habe aber die Fehlerausgabe nochmal verbessert.
Einfach neuinstallieren via github und instanz neustarten. -
hmm die sind wieder rausgeflogen und lassen sich nicht per GHome Steuern.
Habe die Geräte in ioBroker gelöscht und neu einlesen lassen:
hm-rpc.0.MEQ1450924 (1).json2020-01-01 22:03:42.405 - warn: iot.0 (25784) Missing name, type or treat for: hm-rpc.0.MEQ1450924.1.SET_TEMPERATURE. Not added to GoogleHome 2020-01-01 22:03:42.405 - debug: iot.0 (25784) {"traits":["action.devices.traits.TemperatureSetting_thermostatTemperatureSetpoint"],"roomHint":"Gaestezimmer","smartEnum":"X","type":"action.devices.types.THERMOSTAT","ioType":"state","displayTraits":["action.devices.traits.TemperatureSetting_thermostatTemperatureSetpoint"],"parentId":"hm-rpc.0.MEQ1450924.1","name":{"nicknames":["hm-rpc.0.MEQ1450924.1.SET_TEMPERATURE"]},"id":"hm-rpc.0.MEQ1450924.1.SET_TEMPERATURE"} 2020-01-01 22:03:42.406 - warn: iot.0 (25784) Missing name, type or treat for: hm-rpc.0.MEQ1450924.1.ACTUAL_TEMPERATURE. Not added to GoogleHome 2020-01-01 22:03:42.406 - debug: iot.0 (25784) {"traits":["action.devices.traits.TemperatureSetting_thermostatTemperatureAmbient"],"roomHint":"Gaestezimmer","smartEnum":"X","type":"action.devices.types.THERMOSTAT","ioType":"state","displayTraits":["action.devices.traits.TemperatureSetting_thermostatTemperatureAmbient"],"parentId":"hm-rpc.0.MEQ1450924.1","name":{"nicknames":["hm-rpc.0.MEQ1450924.1.ACTUAL_TEMPERATURE"]},"id":"hm-rpc.0.MEQ1450924.1.ACTUAL_TEMPERATURE"}
Mit dem Alten Adapter funktioniert jedoch alles Einwand frei