Apple Homekit: die Hoffnung stirbt zuletzt

Begonnen von eldrik, 23 Januar 2015, 13:57:07

Vorheriges Thema - Nächstes Thema

justme1968

#30
so...

wie versprochen eine erste version zum testen.

- global userattr um genericDeviceType:ignore,switch,outlet,light,blind,thermostat ergänzen.
  für dle nicht eindeutig erkennbaren fhem devices setzen.
 
- zur zeit sollten gehen: schalter (alles das on/off hat), lampen (genericDeviceType=light sowie swap, hue, alle dimmer mit pct), temperatur, feuchte, hm rollläden, hm und max thermostate, hm tür und fenster sensoren und fht fenster sensoren, presence, milight, sonos, winmatic, logitech harmony

- longpoll funktioniert, alle readings werden gecached und nur angefragt wenn es noch keinen wert im cache gibt.

- in config.json dann ein oder mehrere fhem blöcke einfügen:        {
            "platform": "FHEM",
            "name": "FHEM",
            "server": "10.0.1.21",
            "port": "8083",
            "filter": "room=21 Büro"
        },
        {
            "platform": "FHEM",
            "name": "FHEM",
            "server": "10.0.1.21",
            "port": "8083",
            "filter": "room=22 Wohnzimmer"
        },


im prinzip sollte das auch ganz ohne filter gehen. dann hat man alle fhem devices auf ein mal. ich hatte anfangs damit ein problem. deshalb habe ich es aufgeteilt.


todo:
- die werte im cache sollten einen timestamp und eine gültigkeitsdauer bekommen
- diverse FIXME kommentare im code sollten angegangen werden
- ...

FHEM.js muss nach platforms.

gruss
  andre

edit: FHEM.js aktualisiert. es werden diejenigen homematic kontakt sensoren unterstütz die ein reading contact haben. also für und fenster sensoren. es gibt aber nur zwei zustände. geschlossen -> ja, alles andere -> nein. auch hier wird er zustand live an homekit gepushed.

edit: FHEM.js aktualisiert. jsonlist durch jsonlist2 ersetzt.

edit: FHEM.js aktualisiert. fs20 dimmer und PRESENCE werden jetzt unterstützt. statt genericDisplayType sollte jetzt genericDeviceType verwendet werden. das wird vermutlich der fhem standard.

edit: FHEM.js aktualisiert. EnOcean schalter werden jetzt unterstrützt. diverse kleinere fehler behoben.

edit: FHEM.js aktualisiert. max und homematic thermostate werden in einer ersten version mit ist und soll temperatur unterstützt. basic auth und ssl lassen sich konfigurieren:          "ssl": "true",
          "auth": {"user": "fhem", "pass": "fhempassword"},


edit: FHEM.js aktualisiert. homematic rolläden werden unterstützt. bessere fehlermeldungen eingebaut.

edit: FHEM.js aktualisiert. fs20 dimmer handling verbessert. sonos volume eingebaut. die dim, volume und pct kommandos für rolläden werden jetzt 1-1.5 sekunden verzögert bevor sie tatsächlich an fhem gesendet werden. d.h. man kann relativ in ruhe die slider und buttons in eve verwenden um den gewünschten wert einzustellen ohne das dauernd alle zwischenwerte gesendet werden.

edit: FHEM.js aktualisiert. internals komplett überarbeitet. zukünftige ergänzungen werden damit einfacher. EnOcean B-D gehen jetzt. wifilight lässt sich in der farbe ändern. mini debug http server auf port 8080 eingebaut.

edit: FHEM.js aktualisiert. bug fix bei vielen parallelen abfragen.

edit: FHEM.js aktualisiert. event map wird für state on/off ausgewertet. damit sollten jetzt auch die 'verdrehten' EnOcean schalter gehen. debug web server etwas erweitert.

edit: FHEM.js aktualisiert. bug fix für rgb und RGB

edit: FHEM.js aktualisiert. debug browser gibt persist info aus

edit: accessories werden nur ein mal veröffentlicht. auch wenn sie in mehreren filtern matchen
für thermostate werden min/max/step values aus dem set geparsed und gesetzt
es gibt einen neuen genericType ignore
batterie status für hm wird unterstützt
für thermostate ist eine vorläufige version des control mode eingebaut
logitech harmony support
wichtig: es ist ein update auf die neueste HAP-NodeJS version nötig

edit: thermostat mode vorläufig deaktiviert   

edit: ROOMATE, EnOcean Blinds und HM-SEC-KEY hinzugefügt

die aktuelle version findet sich hier: https://github.com/justme-1968/homebridge/blob/master/platforms/FHEM.js

edit: eine erste auf das neue plugin api umgestellte version ist hier: http://forum.fhem.de/index.php/topic,32652.msg356495.html#msg356495 beschrieben.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

MartinMuc

Bis auf die Heizungen (die werden bei mir nicht erkannt) schaut das schon recht gut aus, danke für die Arbeit :)

im FHEM.js ist glaub ich noch ein Bug

var url = encodeURI("http://" + '10.0.1.21' + ":" + '8083' + query );

da sollte denke ich nicht deine IP und dein Port stehen sondern die konfigurierten, oder ?
Cubietruck mit CUL und HM USB

justme1968

ich habe die version oben noch mal ausgetauscht. es war noch ein fehler bei den sonos devices drin.

heizungen sind wie gesagt noch nicht wirklich eingebaut. das kommt noch.

das mit der ip habe ich vergessen zu erwähnen: an der globalen stelle im code habe ich die ip aus der config nicht. ich weiss noch nicht wie man das elegant löst. d.h. hier ist tatsächlich der code von hand anzupassen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

war doch einfacher als gedacht (hoffe ich).

es gibt oben nochmal eine neue version. das eintragen der ip von hand ist nicht mehr nötig. es wird die ip und der port der ersten eingetragenen fhem platform verwendet.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

MartinMuc

Also, Lampen, Steckdosen und Sonos einschalten klappt so weit (Sonos mag bisher nur über eve bei mir)

Das Problem mit der Heizung ist, denke ich, das auf das Reading temperature abgefragt, es beim HM-CC-RT-DN aber measured-temp ist.

Was aber gerade komisch ist, das ich 2 HUE Lampen (von 4 konfigurierten)  im Wohnzimmer jetzt auf nicht erreichbar habe. die anderen funktionieren einwandfrei. Nach löschen und neu hinzufügen gehen die Lampen wieder. Da wäre die Frage ist das ein Problem von IOS oder Homebridge, da muß ich die Tage mal etwas Debuggen.
Cubietruck mit CUL und HM USB

justme1968

sonos ist als zwar im prinzip als stereoanlage angebunden aber ich weiß nicht ab welcher homekit version das geht. volume geht ja auch nich nicht.

alles was noch nicht direkt bekannt ist kannst du über siri mit dem (vergebenen) namen ansprechen oder allgemein als 'gerät'. das gilt auch als oberbgeriff. z.b. schalte alle geräte aus.

heizung bzw. thermostat ist ein eigener device typ der noch nicht eingebaut ist. für diese geräte gibt es dann zwei temperaturen. ist und soll. das mapping auf desired- und measured- kommt dann auch.

manchmal gehen noch pairings verloren. ich glaube das passier wenn die ids nicht eindheutig sind und sich die reihenfolge der geräte ändert.

gruß
  andre

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

ich habe die FHEM.js version im post oben: http://forum.fhem.de/index.php?topic=32652.msg314166#msg314166 aktualisiert.

neben ein paar kleinen reparierten fehlern werden jetzt auch kontakt sensoren unterstützt. hierzu ist ein reading contact nötig. d.h. es sollten alle homematic für und fenster sensoren gehen. da der homekit contact sensor aber nur zwei zustände hat wird closed auf ja gemapped und alles andere (auch gekippt) auf nein.

ich habe angefangen thermostate einzubauen aber ich weiss noch nicht welche characteristics zwingend nötig sind. TARGET_TEMPERATURE alleine scheint zu reichen. es geht also noch nicht.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

TheDestroyer

Hallo zusammen,

Bin ziemlich neu hier und beschäftige mich seit ein paar Tagen mit Fhem und der Hausautomatisierung.
Und die möglichkeit Geräte über Siri zu steuern kommt mir gerade recht.

Es gibt nur ein Problem, ich bekomme es einfach nicht hin. Ich sitz jetzt schon den ganzen Tag daran,
jetzt habe ich es geschafft das Homebridge einigermaßen leuft, aber die anbindung an Fhem will nicht so ganz klappen.

Ich bekomme bei jedem Raum folgende Meldung:
[FHEM] got: undefined results

Hier der komplette Log:
pi@raspberrypi ~/homebridge $ sudo npm run start

> homebridge@0.0.0 start /home/pi/homebridge
> node app.js

Starting HomeBridge server...
*** WARNING *** The program 'nodejs' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=nodejs>
*** WARNING *** The program 'nodejs' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=nodejs&f=DNSServiceRegister>
Loading 3 platforms...
[FHEM] Initializing FHEM platform...
starting longpoll: http://192.168.178.3:8083/fhem.pl?XHR=1&inform=type=status;filter=.*;since=null;fmt=JSON&timestamp=1437336577590
[FHEM] Fetching FHEM switchable devices...
[FHEM] fetching: http://192.168.178.3:8083/fhem?cmd=jsonlist%20room=Wohnzimmer&XHR=1
[FHEM] Initializing FHEM platform...
[FHEM] Fetching FHEM switchable devices...
[FHEM] fetching: http://192.168.178.3:8083/fhem?cmd=jsonlist%20room=K%C3%BCche&XHR=1
[FHEM] Initializing FHEM platform...
[FHEM] Fetching FHEM switchable devices...
[FHEM] fetching: http://192.168.178.3:8083/fhem?cmd=jsonlist%20room=Schlafzimmer&XHR=1
[FHEM] got: undefined results
[FHEM] got: undefined results
[FHEM] got: undefined results


Hier meine config.json:
{
"description": "Brachi ned",

"platforms": [
{
"platform": "FHEM",
"name": "FHEM",
"server": "192.168.178.3",
"port": "8083",
"filter": "room=Wohnzimmer"
},
{
"platform": "FHEM",
"name": "FHEM",
"server": "192.168.178.3",
"port": "8083",
"filter": "room=Küche"
},
{
"platform": "FHEM",
"name": "FHEM",
"server": "192.168.178.3",
"port": "8083",
"filter": "room=Schlafzimmer"
}
]
}


Hier ein Auszug von der Küche (Bin mir nicht sicher ob hier nicht mehr Geräte angezeigt werden sollten):
{
  "ResultSet": {
    "Results": {
      ".triggerUsed": "1",
      "ATTRIBUTES": {
        "alias": "kleine Lampe",
        "genericDisplayType": "light",
        "room": "Küche"
      },
      "DEF": "kaku_switch 11111112 2",
      "ID": "11111112",
      "IODev": "pilight",
      "LASTInputDev": "pilight",
      "MSGCNT": "4",
      "NAME": "kue_Lampe",
      "NR": "41",
      "PROTOCOL": "kaku_switch",
      "READINGS": {
        "state": {
          "TIME": "2015-07-19 22:00:00",
          "VAL": "off"
        }
      },
      "STATE": "off",
      "TYPE": "pilight_switch",
      "UNIT": "2",
      "pilight_MSGCNT": "4",
      "pilight_TIME": "2015-07-19 22:00:00"
    }
  }
}


Kann es daran liegen das ich meine Steckdosen über pilight steuere?
Oder liegt der Fehler wo anders?

Ich hoffe ich bin hier richtig und mir kann einer helfen.


Vielen Dank schon einmal.  :)

justme1968

ist dein fhem aktuell?

mach mal bitte in FHEM.js zeile 141 aus jsonlist ein jsonlist2. geht es dann ?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

TheDestroyer

Jup Fhem ist aktuell.

Bei mir ist es irgendwie nicht Zeile 141 sondern Zeile 249.
Habs geändert und es funktioniert!  :D :D

Vielen Vielen Dank!!


So ein kleiner fehler, und ich sitze hier den ganzen Tag dran.
Hätt ich mich lieber mal früher gemeldet.  ;D

justme1968

keine ahnung wie ich auf 141 gekommen bin...

habe die version oben durch eine mit jsonlist2 ersetzt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Blackcat

Hi andre,

klingt sehr interessant, habe bisher nur noch nicht verstanden was man alles brauch...
Kann das dann den siriproxy ablösen? (Dann würde ich mein ios6 aufgeben und endlich updaten)
Viele Grüße Sandra - FHEM Style Entwicklerin iOS6+12
-----
ZBox nano, Homematic, Homebridge, Hue + Mi Light, ZWave, Dyson, etc.
https://www.foodcat.de
https://www.youtube.com/c/FoodCat (hier gibt es auch immer mehr Hausautomatisierungsvideos)

justme1968

du brauchst homebridge von hier: https://github.com/nfarina/homebridge und die beiden js files von oben und iOS 8.

du bist im gegensatz zur siriproxy variante zwar im wortschatz eingeschränkt, dafür musst du aber nicht jedes kommando von hand definieren sondern kannst automatisch alle bekannten devicetypen steuern und in gruppen nach raum oder zonen schalten.

siri anrworten zu lassen geht nicht. aber man kann seine fragen wie z.b. wie viele lampen sind an. der wortschatz soll mit ios9 größer werden. ich bin noch nicht dazu gekommen das zu probieren.

mit einem appletv soll das ganze auch von unterwegs gehen ohne jedesmal von hand ein vpn aufzubauen.


gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

du brauchst homebridge von hier: https://github.com/nfarina/homebridge und die beiden js files von oben und iOS 8.

du bist im gegensatz zur siriproxy variante zwar im wortschatz eingeschränkt, dafür musst du aber nicht jedes kommando von hand definieren sondern kannst automatisch alle bekannten devicetypen steuern und in gruppen nach raum oder zonen schalten.

siri anrworten zu lassen geht nicht. aber man kann seine fragen wie z.b. wie viele lampen sind an. der wortschatz soll mit ios9 größer werden. ich bin noch nicht dazu gekommen das zu probieren.

mit einem appletv soll das ganze auch von unterwegs gehen ohne jedesmal von hand ein vpn aufzubauen.


gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

xusader