NEWS
Yet another HomeKit adapter
-
Ich habe seit längerem das Problem, das ich über den HomeKit Adapter nur noch "false" Befehle senden kann.
Nutze den Adapter um Sonoff Switches zu steuern. Ob an oder aus aufm iPhone, der Status im ioBroker bleibt false.
Wenn der Status true ist und ich die Lampe ausschalte, geht er auf false, andersrum nicht mehr. Seitdem nutze ich diesen eigentlich sehr hilfreichen Adapter nicht mehr. Kann mir da jemand helfen?
EDIT:
Gelöst. Lag wohl daran, dass der RAM meines Pis zu voll war. Hab ein paar Adapter aussortiert.
Wird wohl langsam Zeit für ne größere Maschine
-
Besten Dank für das Update auf v9! Toll ist natürlich die Skript-Möglichkeit.
Dazu gleich eine Frage: Ich verstehe, wie ich nun relativ frei Datenpunkte übersetzen kann. Für meine Alarmanlage etwa sieht das so aus:
if (value === false) { return 3; } if (value === true) { return 1; }
Dazu aber auch gleich meine Frage: Ist es innerhalb eines solchen Skripts möglich, auch andere Datenpunkte auszuwerten? Dazu ist die Alarmanlage ein schönes Beispiel: Innerhalb eines HK-Datenpunktes SecuritySystemCurrentState beschreiben die Werte 0 bis 3 den Zustand der Alarmanlage, aber in Eben dem Datenpunkt SecuritySystemCurrentState beschreibt dann der Wert 4 eine ausgelösten Alarm. Ob aber die Alarmanlage scharf oder nicht scharf ist, ist bei mir in ein anderer Datenpunkt als jener zur Beschreibung Alarm ja / ein. Ich müsste also die zwei Datenpunkte aus ioBroker zu einem Datenpunkt in yahka kombinieren. An der Stelle komme ich nicht weiter. Denn im Skript funktioniert so etwas wie var alarm = getState("hm-rpc.2.xyz").val; nicht. Insgesamt benötige ich als Skript also so etwas:
var alarm = getState("hm-rpc.2.xyz").val; if (alarm === true) { return 4; } if (value === false) { return 3; } if (value === true) { return 1; }
Ist das überhaupt möglich? Danke!
Marc
-
Besten Dank für das Update auf v9! Toll ist natürlich die Skript-Möglichkeit.
Dazu gleich eine Frage: Ich verstehe, wie ich nun relativ frei Datenpunkte übersetzen kann. Für meine Alarmanlage etwa sieht das so aus:
if (value === false) { return 3; } if (value === true) { return 1; }
Dazu aber auch gleich meine Frage: Ist es innerhalb eines solchen Skripts möglich, auch andere Datenpunkte auszuwerten? Dazu ist die Alarmanlage ein schönes Beispiel: Innerhalb eines HK-Datenpunktes SecuritySystemCurrentState beschreiben die Werte 0 bis 3 den Zustand der Alarmanlage, aber in Eben dem Datenpunkt SecuritySystemCurrentState beschreibt dann der Wert 4 eine ausgelösten Alarm. Ob aber die Alarmanlage scharf oder nicht scharf ist, ist bei mir in ein anderer Datenpunkt als jener zur Beschreibung Alarm ja / ein. Ich müsste also die zwei Datenpunkte aus ioBroker zu einem Datenpunkt in yahka kombinieren. An der Stelle komme ich nicht weiter. Denn im Skript funktioniert so etwas wie var alarm = getState("hm-rpc.2.xyz").val; nicht. Insgesamt benötige ich als Skript also so etwas:
var alarm = getState("hm-rpc.2.xyz").val; if (alarm === true) { return 4; } if (value === false) { return 3; } if (value === true) { return 1; }
Ist das überhaupt möglich? Danke!
Marc `
Kannst dir in einen virtuelles Objekt (z.B. custom.0.alarmanlage.yahka) die passenden states schreiben (per Javascript/Blockly) und dann diese in Yahka bringen.
-
Was muss ich eigentlich tun, um die v 0.9 zu installieren? Es will mir nicht gelingen ..
-
Was muss ich eigentlich tun, um die v 0.9 zu installieren? Es will mir nicht gelingen .. `
Hi,
Die Katze öffnen und das hier https://github.com/jensweigele/ioBroker.yahka.git eingeben.
Grüße
-
Danke!
Ich hatte es vorher mit https://github.com/jensweigele/ioBroker.yahka (also ohne .git) erfolglos probiert.
Aber auch jetzt klappt es leider nicht
$ ./iobroker url "https://github.com/jensweigele/ioBroker.yahka.git" install https://github.com/jensweigele/ioBroker.yahka/tarball/master npm install https://github.com/jensweigele/ioBroker.yahka/tarball/master --production --save --prefix "/opt/iobroker" (System call) npm WARN addRemoteGit Error: not found: gitnpm WARN addRemoteGit at getNotFoundError (/usr/lib/node_modules/npm/node_modules/which/which.js:13:12) npm WARN addRemoteGit at F (/usr/lib/node_modules/npm/node_modules/which/which.js:68:19) npm WARN addRemoteGit at E (/usr/lib/node_modules/npm/node_modules/which/which.js:80:29) npm WARN addRemoteGit at /usr/lib/node_modules/npm/node_modules/which/which.js:89:16 npm WARN addRemoteGit at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/index.js:42:5 npm WARN addRemoteGit at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/mode.js:8:5 npm WARN addRemoteGit at /usr/lib/node_modules/npm/node_modules/graceful-fs/polyfills.js:284:29 npm WARN addRemoteGit at FSReqWrap.oncomplete (fs.js:152:21) npm WARN addRemoteGit git+https://github.com/homespun/hap-nodejs-community-types.git resetting remote /root/.npm/_git-remotes/git-https-github-com-homespun-hap-nodejs-community-types-git-63d7748d because of error: { Error: not found: git npm WARN addRemoteGit at getNotFoundError (/usr/lib/node_modules/npm/node_modules/which/which.js:13:12) npm WARN addRemoteGit at F (/usr/lib/node_modules/npm/node_modules/which/which.js:68:19) npm WARN addRemoteGit at E (/usr/lib/node_modules/npm/node_modules/which/which.js:80:29) npm WARN addRemoteGit at /usr/lib/node_modules/npm/node_modules/which/which.js:89:16 npm WARN addRemoteGit at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/index.js:42:5 npm WARN addRemoteGit at /usr/lib/node_modules/npm/node_modules/which/node_modules/isexe/mode.js:8:5 npm WARN addRemoteGit at /usr/lib/node_modules/npm/node_modules/graceful-fs/polyfills.js:284:29 npm WARN addRemoteGit at FSReqWrap.oncomplete (fs.js:152:21) code: 'ENOGIT' } npm ERR! git clone --template=/root/.npm/_git-remotes/_templates --mirror https://github.com/homespun/hap-nodejs-community-types.git /root/.npm/_git-remotes/git-https-github-com-homespun-hap-nodejs-community-types-git-63d7748d: undefinednpm ERR! git clone --template=/root/.npm/_git-remotes/_templates --mirror https://github.com/homespun/hap-nodejs-community-types.git /root/.npm/_git-remotes/git-https-github-com-homespun-hap-nodejs-community-types-git-63d7748d: undefined npm ERR! code ENOGIT npm ERR! not found: gitnpm ERR! npm ERR! Failed using git. npm ERR! This is most likely not a problem with npm itself. npm ERR! Please check if you have git installed and in your PATH. npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2019-01-06T19_32_39_887Z-debug.log process exited with code 0
-
Dir fehlt scheinbar GIT in deiner Installation
npm ERR! code ENOGIT
Musst also GIT installieren und dann den Adapter
-
Danke - das hat geklappt!
-
Hallo, versuche nun schon etwas länger eine Klingel mit Push Funktion in HomekIt zu bringen.
Der Gedanke ist sobal jemand meinen HomeMatic HMIP BSM Taster am EIngang drückt ich eine Push Notification auf mein iPhone erhalte.
Hierzu habe ich ein Gerät hinzugefügt und den Service "Doorbell" ausgewählt.
Allerdings bekomme ich das Ding nicht zum laufen - in Homekit siehts dann so aus:
Frage, hat das jemand hier in der Community eventuell schon Ähnlich umgesetzt? Dachte auch schon daran in Yahka einen ContactSensor Service auszuwählen - allerdings funktioniert das bei mir ebenfalls nicht
Vielen Dank für jegliche Tipps und Tricks
-
Eine Doorlock mit zweitem Service DoorBell funktioniert
Wenn du eine Kamera im gleichem (Apple) Raum hast sogar mit Screenshot und Livebild
-
Eine Doorlock mit zweitem Service DoorBell funktioniert
Wenn du eine Kamera im gleichem (Apple) Raum hast sogar mit Screenshot und Livebild `
danw! Vielen Dank!
Hab ich direkt versucht: Bei Geräteeigenschaften Door Lock ausgewählt und bei Service so belassen wie oben in den Screenshots… hat allerdings keine Auswirkungen, steht noch immer "Nicht unterstützt" in Homekit.
Meinst Du kannst mir ein Screenshot von deiner Konfig zuschicken? Hab tatsächlich eine Kamera daneben - wäre natürlich der hammer :mrgreen:
Danke Danke!
-
Ich glaube dass der Service "Doorbell" entweder von Homekit oder ioBroker nicht unterstützt wird - mit der Konfig hat das glaube ich nichts zu tun… :?:
-
Das funktioniert. Ich hab es im einsatz.
Screenshot kommt, wenn ich zuhause bin.
Ist ehrlich gesagt aber sehr einfach. Glaub es hieß ProgrammableSwitchEvent. Das auf irgendein Objekt was true wird, wenn jemand klingelt, und fertig.
-
Vielen Dank schonmal!
Gerade als Service Typ: StatelessProgrammableSwitch versucht - allerdings funktioniert es so auch nicht :oops:
Sorry, hänge hier glaub gerade etwas in der Leitung :oops:
-
Also jetzt mal nachgeschaut.
LockMechanism als ersten Service, Doorbell als zweiten.
Im LockMechanism LockCurrentState und LockTargetState ist meine Türsummer zum öffnen der Tür (es wird dann ein Objekt auf true gesetzt, dass ich per MQTT auf dem NodeMCU subscribed habe, was wiederrum ein Relay schaltet = Türsummer) und bei Doorbell "ProgrammableSwitchEvent" ist ein Objekt das bei mir per MQTT von einem NodeMCU auf eine "1" geändert wird, wenn jemand an der Tür klingelt. Ich habe die Klingel einfach über einen Spannungsteiler (einfach nur zwei Widerstände; https://de.wikipedia.org/wiki/Spannungsteiler) an einen GPIO des NodeMCU angeschlossen.
16600_bildschirmfoto_2019-01-09_um_21.54.13.png
16600_bildschirmfoto_2019-01-09_um_21.54.23.png
16600_bildschirmfoto_2019-01-09_um_21.54.39.png -
Ich hab hier drüben -> viewtopic.php?f=20&t=8187#p217610
meine Variante der HomeMatic Heizungsanbindung an YAHKA beschrieben.
Auch für das Thema HomeMatic Dimmer habe ich ein Hilfs-Script gebaut, da HomeKit ja gerne noch einen on-off-State hätte, den HomeMatic bei Dimmern so nicht hat (schönerweise verhalten sich HomeKit manuell und Siri-zu-HomeKit da auch noch unterschiedlich).
Was mir noch fehlt, ist die Übertragung von Strom-Verbrauchswerten, die in der Eve-App darstellbar wären. Aber dazu gibt es noch keine Lösung oder?
-
Auch für das Thema HomeMatic Dimmer habe ich ein Hilfs-Script gebaut, da HomeKit ja gerne noch einen on-off-State hätte, den HomeMatic bei Dimmern so nicht hat (schönerweise verhalten sich HomeKit manuell und Siri-zu-HomeKit da auch noch unterschiedlich). `
Du brauchst kein On/Off bei "LightBulb".
@ronnyw:Was mir noch fehlt, ist die Übertragung von Strom-Verbrauchswerten, die in der Eve-App darstellbar wären. Aber dazu gibt es noch keine Lösung oder? `
Ist nicht möglich. Gibt es in der API von Apple nicht.Deine Beschreibung von CurrentCoolingState und TargetCoolingState stimmt denke ich auch nicht mit der API von Apple überein.
Alle Current* und Target* States funktionieren so, dass z.B. wenn per HomeKit ein Wert geändert wird dieser erst quittiert fertig ist, wenn der Current*-State identisch ist.
z.B. ein Schloss (LockMechanism)
Wenn CurrentLockState und TargetLockState = 1 ist, sagt er "Gesperrt".
Wenn TargetLockState = 0 und CurrentLockState = 1 sagt er "Öffnen" (Weil öffnen angefordert und aktueller Zustand des Schlosses aber "1", also zu)
Wenn TargetLockState = 1 und CurrentLockState = 0 sagt er "Schliessen" (weil schließen angefordert und aktueller Zustand des Schlosses aber "0", also geöffnet)
Wenn TargetLockState = 0 und CurrentLockState = 0 sagt er "Geöffnet"
-
Deine Beschreibung von CurrentCoolingState und TargetCoolingState stimmt denke ich auch nicht mit der API von Apple überein.
Alle Current* und Target* States funktionieren so, dass z.B. wenn per HomeKit ein Wert geändert wird dieser erst quittiert fertig ist, wenn der Current*-State identisch ist.
z.B. ein Schloss (LockMechanism)
Wenn CurrentLockState und TargetLockState = 1 ist, sagt er "Gesperrt".
Wenn TargetLockState = 0 und CurrentLockState = 1 sagt er "Öffnen" (Weil öffnen angefordert und aktueller Zustand des Schlosses aber "1", also zu)
Wenn TargetLockState = 1 und CurrentLockState = 0 sagt er "Schliessen" (weil schließen angefordert und aktueller Zustand des Schlosses aber "0", also geöffnet)
Wenn TargetLockState = 0 und CurrentLockState = 0 sagt er "Geöffnet" `
Das kann gut sein. Ich habe mich mit den API Vorgaben nicht beschäftigt, nur was passiert, wenn ich die States mit Werten füttere. Anhand Deines Beispieles klingt ein so gewolltes Verhalten zwischen Current- und Targetstate auch logisch. Auch im Falle des Thermostates ergeben manche Kombinationen nicht viel Sinn (Target Cooling, Current Heat oder so).
-Aber- in diesem Fall eine Heizung/Klimaanlage im Targetstate Auto mit Zieltemperatur laufen zu lassen und als Currentstate die Rückmeldung zu bekommen, ob sie gerade heizt (Currentstate Heat), kühlt (Currentstate Cool) oder vielleicht aus ist weil die Temperatur stimmt (Currentstate off), erscheint mir schon sinnvoll und ist mit farbiger Visualisierung und entsprechendem Wording auch berücksichtigt.
-
Moin!
Ich habe mich auf Grund der tollen neuen Funktionen in der v.9.0.2 zu einem update verleiten lassen.
Ein Fehler.
Was unter der v8.2. noch wunderbar lief, produzierte in der neuen Version nur Fehler.
Die Geräte in der Home App wurden als nicht erreichbar angezeigt.
Schon bei der installation fiel mir der Hinweis auf ein fehlendes "react" hin welches ich via npm nach installiert habe. // Neustart iobroker
Weiterhin waren alle Geräte offline. //Neustart RaspberryPi // Neustart iPhone
Keine Besserung.
Versuchsweise einfach mal den Port von Yahka verändert. Das produzierte folgenden Fehler im Log:
! ```
2019-01-15 20:44:08.769 - [32minfo[39m: yahka.0 cleaning up ... 2019-01-15 20:44:08.770 - [32minfo[39m: yahka.0 cleaned up ... 2019-01-15 20:44:09.773 - [32minfo[39m: yahka.0 cleaning up ... 2019-01-15 20:44:10.950 - [31merror[39m: Caught by controller[0]: HAP Warning: Characteristic 00000073-0000-1000-8000-0026BB765291 not in required or optional characteristics for service 00000049-0000-1000-8000-0026BB765291\. Adding anyway. 2019-01-15 20:44:10.951 - [31merror[39m: Caught by controller[1]: { Error: listen EACCES 0.0.0.0:1 2019-01-15 20:44:10.952 - [31merror[39m: Caught by controller[1]: at Server.setupListenHandle [as _listen2] (net.js:1343:19) 2019-01-15 20:44:10.952 - [31merror[39m: Caught by controller[1]: at listenInCluster (net.js:1401:12) 2019-01-15 20:44:10.952 - [31merror[39m: Caught by controller[1]: at Server.listen (net.js:1485:7) 2019-01-15 20:44:10.952 - [31merror[39m: Caught by controller[1]: at EventedHTTPServer.listen (/opt/iobroker/node_modules/hap-nodejs/lib/util/eventedhttp.js:60:19) 2019-01-15 20:44:10.952 - [31merror[39m: Caught by controller[1]: at HAPServer.listen (/opt/iobroker/node_modules/hap-nodejs/lib/HAPServer.js:158:20) 2019-01-15 20:44:10.953 - [31merror[39m: Caught by controller[1]: at Bridge.Accessory.publish (/opt/iobroker/node_modules/hap-nodejs/lib/Accessory.js:607:16) 2019-01-15 20:44:10.953 - [31merror[39m: Caught by controller[1]: at THomeKitBridge../yahka.homekit-bridge.ts.THomeKitBridge.init (/opt/iobroker/node_modules/iobroker.yahka/main.js:1562:27) 2019-01-15 20:44:10.953 - [31merror[39m: Caught by controller[1]: at new THomeKitBridge (/opt/iobroker/node_modules/iobroker.yahka/main.js:1533:14) 2019-01-15 20:44:10.953 - [31merror[39m: Caught by controller[1]: at TIOBrokerAdapter../yahka.ioBroker-adapter.ts.TIOBrokerAdapter.createHomeKitBridges (/opt/iobroker/node_modules/iobroker.yahka/main.js:2140:27) 2019-01-15 20:44:10.953 - [31merror[39m: Caught by controller[1]: at TIOBrokerAdapter../yahka.ioBroker-adapter.ts.TIOBrokerAdapter.adapterReady (/opt/iobroker/node_modules/iobroker.yahka/main.js:2117:14) 2019-01-15 20:44:10.953 - [31merror[39m: Caught by controller[1]: errno: 'EACCES', 2019-01-15 20:44:10.953 - [31merror[39m: Caught by controller[1]: code: 'EACCES', 2019-01-15 20:44:10.954 - [31merror[39m: Caught by controller[1]: syscall: 'listen', 2019-01-15 20:44:10.954 - [31merror[39m: Caught by controller[1]: address: '0.0.0.0', 2019-01-15 20:44:10.954 - [31merror[39m: Caught by controller[1]: port: 1 } 2019-01-15 20:44:10.954 - [31merror[39m: host.raspi3 instance system.adapter.yahka.0 terminated with code 6 (uncaught exception) 2019-01-15 20:44:10.954 - [32minfo[39m: host.raspi3 Restart adapter system.adapter.yahka.0 because enabled[/code]
! Und führte zu nichts. Also wieder zurück auf 0.
! Inzw. waren mir die Ideen ausgegangen, deshalb fügte ich einen weiteren Yahka Adapter hinzu. Instanz: 1.
! Ich erstellte in Ihr eine Lightbulb nur mit der ON Eigenschaft und fügte diese Bridge dann in der Homeapp als ein weiteres Zuhause hinzu. Das funktionierte überraschend.
! Mutig probierte ich auch CT und BRI dazu aus. Auch das funktionierte weiterhin.
! Weiterhin fügte ich einen meiner Sensoren hinzu. Bewegungsmelder von Aqara PIR-Sensor. Als Service: MotionSensor, Lightsensor, BatteryService.
! Plötzlich ging nichts mehr. Jedes Gerät zeigte in der Home-App "Nicht verfügbar" an.
! Also.. Neustart iPhone, Neustart Raspberrypi.
! Keine Besserung.
! Die Bridge aus dem Zuhause gelöscht und versucht neu Hinzuzufügen. Nicht möglich. In der Vergangenheit hat es ab und zu geholfen den Benutzernamen der Bridge im Adapter zu ändern (die MAC -Adresse). Also tat ich dies. Auch das half nicht.
! Ich deaktivierte den BWM im Adapter, änderte wieder die MAC-Adresse und plötzlich war es möglich die Bridge in der Home-App hinzuzufügen.
! Alle Geräte waren online. // Neustart aller Geräte
! Immer noch alles da!
! BWM wieder aktivieren.
! Gleiche Fehlerbild. Alle Geräte wieder auf "Nicht verfügbar".
! BWM wieder deaktiviert. > Alles neugestartet. Weiterhin "Nicht verfügbar"
! Bridge gelöscht und wieder neu hinzugefügt. Alles läuft wieder.
! Den Service BatteryService aus dem BWM gelöscht und BWM aktiviert.
! BWM wird angezeigt in der HomeApp. Weiterhin funktioniert alles.
! Offensichtlich verträgt sich der BatteryService also nicht.
! Das könnte man noch verkraften, wenn denn nicht dadurch jedesmal ein heiden Aufwand betrieben werden müsste um bei einer fehlerhaften Eingabe oder eines Fehlerhaften Services, alles neu Installiert werden muss.
! Mit der Erfahrung wechselte ich wieder zur alten Instanz 0 die noch alle Geräte inne hat.
! Ich deaktivierte jedes Gerät welches einen BatteryService hat. Keine Besserung. Ich deaktivierte alle Geräte. Auch keine Besserung. Es bleibt hier bei "Keine Antwort".
! Das ist ziemlich nervig, denn ich habe doch inzw. eine beachtliche Menge an Schaltern und Sensoren in dem Adapter.
! Hier eine kurze Zusammenfassung der Geräte und den verwendeten Services im Adapter:
! 1. 8x Aqara Temp/Luftfeuchte/Luftdruck Sensor mit: TempSensor,HumiditiySensor,BatteryService
! 2. 6x Aqara ContactSensor mit: ContactSensor, BatteryService
! 3. 4x Aqara PIR BWM mit: MotionSensor,LightSensor,BatteryService
! 4. 5x div. TempSensoren des NAS mit: TempSensor
! 5. 8x Osram Smart+ Plugs mit: Outlet
! 6. 3x Comet Heizkörper Thermostat mit: Thermostat, BatteryService
! 7. 4x div. Schalter zum setzen von Datenpunkten in ioBroker mit: Switch
! Log mässig ist nichts auffällig. Auch im Debugmode des Adapters fällt mir im Vergleich nichts auf was anders ist.
! Als letzten Test, löschte ich in der Instanz 1 noch einmal den BWM komplett und deaktivierte ihn nicht nur. Dennoch keine Änderung. Es bleib auch jetzt weiterhin bei "Nicht verfügbar" bei allen Geräten in der Home app.
! Jetzt müsste man also wieder die Bridge entfernen, und diese dann wieder hinzufügen.
! Übrigens. Solange der "defekte" BatteryService sich in der Geräteliste befindet, ist es nicht möglich die Bridge hinzuzufügen. Erst wenn man ihn rauslöscht lässt sich die Bridge neu hinzufügen.
! Woran kann das alles liegen? Habt ihr ähnliche Probleme?
! Grüße! -
Mehr Logs und am besten im GitHub ein issue aufmachen