alexa-fhem test version mit proaktiven events

Begonnen von justme1968, 15 Februar 2020, 18:44:06

Vorheriges Thema - Nächstes Thema

justme1968

ich habe eben eine erste alexa-fhem test version mit proaktivem event reporting auf GitHub hochgeladen. noch ungestestet. also wer testen kann und mag... feedback erwünscht.

diese proaktiv gemeldeten events sollten sich in der alexa app in routinen verwenden lassen.

voraussetzung: server.js und fhem.js selber von GitHub holen und einspielen, danach alexa-fhem neu starten. wer nicht weiss wie: warten bis es offiziell per npm verteilt wird.

- wichtig: beim starten von alexa-fhem muss eine 'got .eventToken' nachricht (im log) sichtbar sein. (wer das nicht hat: skill neu verknüpfen und auf eventToken zeilen achten.)
- danach kommt noch ein 'refreshing token' und 'got fresh token'. das token ist die voraussetzung damit das senden von events an amazon möglich ist. darüber läuft auch das set <alexa> add kommando.
- sobald sich ein reading ändert sollte man im log das ein oder mehrere werte gecached werden und das event an amazon gesendet wird
- das senden des events sollte mit einem 202 code bestätigt werden.
- was danach kommt ist der ungetestete teil:
  - funktioniert das triggern einer routine?
  - pollt amazon seltener wenn man ein device in der app offen hat?

pro connection der alexa config kann man das reporting mit einem "report": true|false an und aus schalten.

achtung: aktuell ist der default für das proaktive reporting true. d.h. es ist an der config nichts zu ändern wenn man testen möchte. das ändert sich eventuell noch.


neben dem reporting ist in der version noch eingebaut:
- reachable wird ausgewertet und an alexa gemeldet.
- minValue, maxValue und factor aus dem homebridgeMapping wird angewendet
- die farbe einer lampe (hue, saturation, brightness) kann an alexa gemeldet werden

feedback hierzu ist auch erwünscht :)
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

MadMax-FHEM

Hallo Andre,

da häng ich mich mal dran... :)

Testen geht leider erst frühestens morgen abend...

Danke, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

stefanru

#2
Hi justme,

das klingt super.
Habe gerade deine server.js und fhem.js von GitHub gezogen und eingespielt.
Scheint auch prinzipiell geklappt zu haben ich bekomme:
[15.2.2020, 19:53:10] [FHEM] will try to proactively report

Aber ich bekomme kein got .eventToken.

Habe den Skill schon deaktiviert und aktiviert. Ich benutze den Basic Skill.
Hast du noch einen Tip?

Danke und Gruß,
Stefan


TomLee

#3
Bei mir das gleiche.

[2020-2-15 10:50:10 PM] [FHEM] will try to proactively report

Skill auch schon de.- und wieder aktiviert.

Unter allen gecacheden Werten steht no event token available

Unter den gecacheden Werten einer per MQTT2 eingebundenen Milight-Bulb steht error processing event data: TypeError: Cannot read property 'informId' of undefined

Gruß

Thomas

edit:

Es werden auch keine neuen Geräte oder gelöschte Geräte (wieder)gefunden, gehe ich zurück auf die vorherige server.js und fhem.js funktioniert die Gerätesuche wieder.

justme1968

zum event token: bitte mit list <alexa> .eventToken schauen ob es das token gibt. wenn nicht -> wie oben geschrieben den skill trennen und neu verknüpfen. dabei mit -D die debug ausgabe von alexa-fhem zeigen. achtung: danach gelten die erkannten devices als neu.

für den undefined fehler habe ich einen möglichen fix eingecheckt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

TomLee

list <alexa> .eventToken gibt einfach nur 1 zurück

Den Skill hab ich nochmal de/aktiviert, nach der Gerätesuche gelten die Devices nicht als neu erkannt.

Das steht mit -D nach dem wiederverknüpfen gleich am Anfang im Log:

[2020-2-16 12:12:05 PM] >>>> [srv] {"directive":{"header":{"namespace":"Alexa.Discovery","name":"Discover","payloadVersion":"3","messageId":"754f3b35-db8d-47a4-995e-3a91bbf84f2f"},"payload":{"scope":{"type":"BearerToken","token":"Atza|IwEBIIL-MMRf0lQyBpjgYwDvN11QuVUVLBTf83N0juXq8NtcmPauyjbrPWdmn5CIYEEm3RRLZooHJgN4cFpX3Nr3tg9SFeqZ2GmwYbLo_k6yeHtTuh173SMOl7Fq9sXfmPY2jeiXKmHjL6EChRSLHveLboMFb-1tMvYPi8bEjw7MY5cWGJqOZd5w0Po4gw9ksnpKGQBjGlzFlmKxvgRRPtUJg98ezxqyfPqsZqBW6r1gl_VnW3oOpcLv0cjVQHa6L-ecQROZHWPUFf8AZZKKWVcWtf-mBkJ3kqCAOwhgAg4vp2vPDRaIWtCy4sZiEAU3aqeWoa1NNPifhYyr3zb6ST6RaUrTEG48xfLPgasui1EkwlqXRcmEEB95EAl6n6OdRWva6oh4j9XNI5mDQIx0ag3PuExUhN3JhEOSI6JCZG6-jTbc_74-CB_XengvXyWAX3GFSaXlF9ZYK_Xh15WpfmnEhncX2F6XqsgLiTKgLJqQTN97WWdI-4-0BHC8ZP0F3NV4SlOzeQ5mqcU-qjTXLbZewZpO86W6n2rxinBJrzxOCcVX9A"}}}}
[2020-2-16 12:12:06 PM] accepted new token
[2020-2-16 12:12:06 PM] { aud:
   'amzn1.application-oa2-client.xxxxxxxx',
  user_id: 'amzn1.account.xxxxxxxxxxx',
  iss: 'https://www.amazon.com',
  exp: 3597,
  app_id: 'amzn1.application.xxxxxxxxxxx',
  iat: 1581851523 }
[2020-2-16 12:12:06 PM] TypeError: Cannot read property 'mappings' of undefined
    at deviceToEndpoints (/usr/lib/node_modules/alexa-fhem/lib/server.js:2935:12)
    at Server.handleDiscovery3 (/usr/lib/node_modules/alexa-fhem/lib/server.js:3341:25)
    at Server.handler (/usr/lib/node_modules/alexa-fhem/lib/server.js:2281:47)
    at Server.<anonymous> (/usr/lib/node_modules/alexa-fhem/lib/server.js:1460:33)
    at IncomingMessage.emit (events.js:203:15)
    at endReadableNT (_stream_readable.js:1129:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)
[2020-2-16 12:12:06 PM] <<<< [srv] null
[2020-2-16 12:12:20 PM] >>>> [srv] {"directive":{"header":{"namespace":"Alexa.Discovery","name":"Discover","payloadVersion":"3","messageId":"ab50fc58-042f-45d8-a544-0a6a91a78101"},"payload":{"scope":{"type":"BearerToken","token":"Atza|IwEBIIL-MMRf0lQyBpjgYwDvN11QuVUVLBTf83N0juXq8NtcmPauyjbrPWdmn5CIYEEm3RRLZooHJgN4cFpX3Nr3tg9SFeqZ2GmwYbLo_k6yeHtTuh173SMOl7Fq9sXfmPY2jeiXKmHjL6EChRSLHveLboMFb-1tMvYPi8bEjw7MY5cWGJqOZd5w0Po4gw9ksnpKGQBjGlzFlmKxvgRRPtUJg98ezxqyfPqsZqBW6r1gl_VnW3oOpcLv0cjVQHa6L-ecQROZHWPUFf8AZZKKWVcWtf-mBkJ3kqCAOwhgAg4vp2vPDRaIWtCy4sZiEAU3aqeWoa1NNPifhYyr3zb6ST6RaUrTEG48xfLPgasui1EkwlqXRcmEEB95EAl6n6OdRWva6oh4j9XNI5mDQIx0ag3PuExUhN3JhEOSI6JCZG6-jTbc_74-CB_XengvXyWAX3GFSaXlF9ZYK_Xh15WpfmnEhncX2F6XqsgLiTKgLJqQTN97WWdI-4-0BHC8ZP0F3NV4SlOzeQ5mqcU-qjTXLbZewZpO86W6n2rxinBJrzxOCcVX9A"}}}}
[2020-2-16 12:12:21 PM] accepted new token
[2020-2-16 12:12:21 PM] { aud:
   'amzn1.application-oa2-client.xxxxxxxxxxx',
  user_id: 'amzn1.account.xxxxxxxxxxxx',
  iss: 'https://www.amazon.com',
  exp: 3582,
  app_id: 'amzn1.application.xxxxxxxxxxxxx',
  iat: 1581851523 }
[2020-2-16 12:12:21 PM] TypeError: Cannot read property 'mappings' of undefined
    at deviceToEndpoints (/usr/lib/node_modules/alexa-fhem/lib/server.js:2935:12)
    at Server.handleDiscovery3 (/usr/lib/node_modules/alexa-fhem/lib/server.js:3341:25)
    at Server.handler (/usr/lib/node_modules/alexa-fhem/lib/server.js:2281:47)
    at Server.<anonymous> (/usr/lib/node_modules/alexa-fhem/lib/server.js:1460:33)
    at IncomingMessage.emit (events.js:203:15)
    at endReadableNT (_stream_readable.js:1129:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)




Unter dem Milight-Bulb steht jetzt auch no event token available

justme1968

bitte lösch mal das .eventToken reading mit deletereading vor der neu verknüpfung.

vor der discovery muss noch mehr im log stehen wenn du den skill neu verknüpfst.

da sollte etwas von einem AcceptGrant event stehen.

danach sollte das .eventToken reading etwas vernünftiges enthalten.



dan undefined fehler habe ich jetzt gefunden und behoben.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

TomLee

Meine Rosine (genericDeviceType contact) wird mit der neuen server.js jetzt von einer Routine erkannt.  :)

list <alexa> .eventToken ergibt immer noch 1

Weiter hab ich noch nicht getestet, wollte nur schonmal positive Rückmeldung geben.


TomLee

deletereading hab ich vor der Verknüpfung gemacht, es beibt bei 1mit einem list.

Es steht jetzt noch weniger vor der Discovery im Log.
Hab es auch nach AcceptGrant durchsucht, nicht vorhanden.

[2020-2-16 2:09:59 PM] no event token available
[2020-2-16 2:10:32 PM] >>>> [srv] {"directive":{"header":{"namespace":"Alexa.Discovery","name":"Discover","payloadVersion":"3","messageId":"f90b5a78-6381-4716-a66a-e4fb8bbc1783"},"payload":{"scope":{"type":"BearerToken","token":"Atza|IwEBIK6eonpb_F9-R5KjmiHnRAvBkYME-8SIKW9lqrzLUzXkussaVoxzYOdQPl1i7IgyFM1FBA8VvGuTexNxcKNpbMEjRosAqAzkjywz44zqKmit7HghMuN-WtCTnT-ySh4qDXwfBMnuXhqIcWCXuW9Ut0nGuGfFjfAFnMdginhsrl6O4QOto6rtOwvdyT04CMk-3e02Snmb9nYVqmq0rY9gkhIdAMWy9SiafG0HE6tMy4eNUl5HOAXccs9sW3clCbUIwDJm2Q4MhACKH0YbC07CDNpe0e8XASy7HG7o6wR-aVw9DxvxpUeSxtIiB_22LF8ru-Z7gQ8RmhiPFYJGlbc5DBV1RjH10iVvDatJsNjoMzpYcTgCM8ojPWFLQZQwOTP41Crbje_0933QsF0IeEdyw5zjGF2RkLJIqCmKeI23Xtdyy0kY-hTr1oNDSZNeVHI7Ohmorc7uXG-E45Pyy_MfFJCTL4uAMusZ5IA1mCwJbH-dQ25HoyqzN5mXf98OGNaScjvYP8UmUhRtbAioMkhqRrjltp8HYYqanZuSpXtCwDhDlQ"}}}}
[2020-2-16 2:10:33 PM] accepted new token
[2020-2-16 2:10:33 PM] { aud:
   'amzn1.application-oa2-client.xxxxxxx',
  user_id: 'amzn1.account.AH6IOT3GZ6EL36WJP5M2USNZTXXA',
  iss: 'https://www.amazon.com',
  exp: 3595,
  app_id: 'amzn1.application.xxxxxxxxxxx',
  iat: 1581858628 }
[2020-2-16 2:10:33 PM] found 35 device(s)



stefanru

#9
Hi,

bei mir ähnlich.
list <alexa> .eventToken
gibt bei mir nichts zurück.

Mit der neuen Version von heute bekomme ich aber meine Fensterkontakte in Routinen angezeigt.
Neue Geräte wurden nicht erkannt.

Das die Kontakte da sind ist doch schonmal gut, oder?

Ich wollte eigentlich einen Bewegungssensor einbinden.
Den habe ich als switch in Alexa. Wei müsste man den denn für alexa bekannt machen?
Auch als Contact?

P.S.:
Habe eine Routine mit Bürofenster offen als Trigger angelegt.
Der Status des Bürofensters wird auch sauber angezeigt und der Status wechselt, aber die Routine startet leider nicht.

Gruß,
Stefan



justme1968

#10
die anzeige der sensoren in den routinen nützt leider nichts so lange die events nicht an amazon gesendet werden. und das geht ohne das token nicht.

nur um sicher zu sein: ihr verwendet beiden den connector über den ssh proxy ?
mit skill verknüpfen ist gemeint ihn in der alexa app unter meine skills deaktivieren und dann neu verknüpfen.

alexa kennt inzwischen bewegungssensoren. die sind in alexa-fhem noch nicht eingebaut weil sie ohne das produktive senden der events nicht sehr sinnvoll sind. die kommen erst wenn die events gehen.

edit: bewegungssensoren scheinen aktuell nur in den usa und kanada zu gehen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

TomLee

ZitatMit der neuen Version von heute bekomme ich aber meine Fensterkontakte in Routinen angezeigt.
Neue Geräte wurden nicht erkannt.

Neue Geräte werden bei mir mit der server.js-Version von vor knapp einer Stunde gefunden.
Mit der vorherigen wurden bei mir auch keine neuen Geräte gefunden.


Connector hab ich noch nie genutzt, nutze nach wie vor meinen eigenen SHS.

justme1968

wenn du den eigenen skill verwendest sollte das debuggen etwas einfacher sein. im prinzip ist aber alles gleicht. ohne das event token kann fhem keine events an amazon senden.

das token wird bei der skill verknüpfung erzeugt und gespeichert.

in den logs von oben sieht nichts nach verknüpfung aus.

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

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

TomLee

Dann weiß ich ehrlich gesagt nicht weiter.
Das Log lösche ich der Übersicht wegen, mache einen restart, deaktiviere und aktiviere meinen Skill in der App, folge der Anweisung neue Geräte zu erkennen, schaue dann ins Log und hoffe das dort steht was du erwartest.


Zitatwenn du den eigenen skill verwendest sollte das debuggen etwas einfacher sein.

Mag sein, wenn man weiß wie man die Ergebnisse alle zu interpretieren hat und das tue ich gewiss (auch nach langer Zeit ) immer noch nicht.

justme1968

da fällt mir ein...

du musst deinem skill in der alexa developer console unter permissions das senden von events erlauben. wenn du das nicht machst wird der entsprechende teil bei der verknüpfung überhaupt nicht durchlaufen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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