Alexa Sprachintegration mit FHEM Connector

Begonnen von superverbleit, 20 Dezember 2019, 21:49:52

Vorheriges Thema - Nächstes Thema

superverbleit

Hallo Zusammen,

ich probiere mich gerade, mein FHEM System zusammen mit Alexa sprach gesteuert zu betreiben.

Als Basis nehme ich diese Inbetriebnahmebeschreibung, die sehr schön beschrieben ist:

https://wiki.fhem.de/wiki/FHEM_Connector_für_Amazon_Alexa

An sich tut das System schon, sprich die Spracheingabe über Alexa landet in meiner FHEM und löst eine Reaktion aus.
Leider die falsche. >:(

Ich habe mein KNX Device folgendermaßen definiert.

define EG.Buero.Licht KNX 0/2/100:dpt1.001:Status 0/5/100:dpt1.001:Schalten
attr EG.Buero.Licht room Buero
attr EG.Buero.Licht group Licht
attr EG.Buero.Licht eventMap /on g2:An/off g2:Aus
attr EG.Buero.Licht webCmd An:Aus
attr EG.Buero.Licht icon icoLicht.png
attr EG.Buero.Licht alexaName Büro
attr EG.Buero.Licht genericDeviceType light
attr EG.Buero.Licht homebridgeMapping clear On=Schalten-get


Löse ich jetzt über Alexa ein Sprachbefehl aus, z.B. Alexa Licht Büro an, schickt FHEM an die Gruppenadresse 0/2/100 eine 1.
0/2/100 ist jedoch der Licht Status, ich müsste eine 1 nach 0/5/100 schicken, die zuständig ist für Licht schalten..

Muss ich das über ein homebridgeMapping  lösen, oder wie muss ich das machen.
Hab hier schon verschiedene Sachen ausprobiert, leider ohne Erfolg.

Z.B.
attr EG.Buero.Licht homebridgeMapping on:cmdOn=g2:An,off:CmdOff=g2:Aus

bzw.

attr EG.Buero.Licht homebridgeMapping on:cmdOn=Schalten:An,off:CmdOff=Schalten:Aus

Für eure Hilfe wäre ich hier sehr dankbar.

Gruß

dieda

Schau mal, du hast in Alexa, das Attribut alexaName Büro genannt. D.h. es hört auch nur auf Alexa Büro an bzw. aus.

Wenn du in dem Büro mehrere Geräte hast, dann musst du hier den Namen ändern auf LichtBüro.
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

superverbleit

Ja, das ist dann mal ein Thema, wenn ich die Rollladensteuerung hinzunehme oder so.
Aktuell will ich aber mal zum Starten das Licht ein- und ausschalten.

Das Problem ist, das ich die Gruppenadresse des Status beschreibe (g1) und nicht g2 (Licht schalten).

TomLee

Hab kein KNX, meine es so zu verstehen das es die Antwort darauf gerade vorgesten hier gab.

Gruß

Thomas

superverbleit

Leider nein. Hab ich auch schon angeschaut. Dort hat das knx device nur eine Gruppenadresse. Bei mir sind es jedoch 2.

amenomade

Mit welchem Kommando schaltest Du in Fhem an oder aus?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Shadow3561

Ändere die DEF doch mal so

0/5/100:dpt1.001:Schalten 0/2/100:dpt1.001:Status

superverbleit

Hab ich auch schon dran gedacht....jedoch wird der erste Eintrag für den Status der Icons genommen.
Da will ich ja die Rückmeldung des Aktors und nicht den Zustand des Schaltbefehls.

Hier noch das device listening:
Internals:
   DEF        0/2/100:dpt1.001:Status 0/5/100:dpt1.001:Schalten
   DEVNAME    EG.Buero.Licht
   FIRSTGADNAME Status
   FUUID      5dfcf3ae-f33f-5687-2886-8b84f7c205cb26f4
   GETSTRING  Status:noArg Schalten:noArg
   IODev      KNX
   KNX_MSGCNT 6
   KNX_RAWMSG C01107w0026400
   KNX_TIME   2019-12-20 22:33:45
   LASTInputDev KNX
   MSGCNT     6
   NAME       EG.Buero.Licht
   NR         269
   NTFY_ORDER 50-EG.Buero.Licht
   SETSTRING  Status:off,on Schalten:off,on
   STATE      off
   TYPE       KNX
   GADDETAILS:
     Schalten:
       CODE       00564
       GROUP      0/5/100
       MODEL      dpt1.001
       NO         2
       OPTION     
       RDNAMEGET  Schalten-get
       RDNAMEPUT  Schalten-put
       RDNAMESET  Schalten-set
       SETLIST    :off,on
     Status:
       CODE       00264
       GROUP      0/2/100
       MODEL      dpt1.001
       NO         1
       OPTION     
       RDNAMEGET  Status-get
       RDNAMEPUT  Status-put
       RDNAMESET  Status-set
       SETLIST    :off,on
   GADTABLE:
     00264      Status
     00564      Schalten
   READINGS:
     2019-12-20 22:33:44   Schalten-get    off
     2019-12-20 22:31:23   Schalten-set    on
     2019-12-20 22:33:45   Status-get      off
     2019-12-20 22:29:24   Status-set      on
     2019-12-20 22:33:45   last-sender     1/1/7
     2019-12-20 22:33:45   state           off
Attributes:
   IODev      KNX
   alexaName  Büro
   eventMap   /on g2:An/off g2:Aus
   genericDeviceType light
   group      Licht
   homebridgeMapping on:cmdOn=g2:An,off:CmdOff=g2:Aus
   icon       icoLicht.png
   room       Buero
   webCmd     An:Aus

Shadow3561

Laut Doku sollte erst das Set und dann der Status definiert werden.

define lamp2 KNX 0/10/12:dpt1:steuern 0/10/13:dpt1.001:status

Bei mir habe ich es lt. Doku gemacht und es funktioniert mit Alexa wie gewünscht.
Der Status in FHEM ändert sich auch beim schalten mittels Physischer Tastet

amenomade

Nochmal:
mit welchem Kommando schaltetst Du in Fhem an und aus? Dann heisst es in homeBridgeMapping:
cmdOn=<Befehl für on (ohne set)>,cmdOff=<Befehl für off (ohne set)>

Und dazu:
ist das Reading state der Status, den Du willst? Dann heisst es in homeBridgeMapping:
On=stateund wenn die Werte nicht on oder off sind, dann noch valueOn und valueOff hinterher

Insgesamt:
On=state,valueOn=EsIstAn,valueOff=EsIstAUs,cmdOn=<Befehl on>,cmdOff=<Befehl off>
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

superverbleit

Ich habe es jetzt doch so gelöst, wie es Shadow 3561 beschrieben hat.
Zuerst Set und dann Status.

Zusätzlich habe ich noch devStateIcon genommen.

Jetzt funktioniert es. :)

superverbleit

Jetzt hätte ich nochmals eine Frage.
Aktuell bin ich dabei, die Raumtemperatur abzufragen.

Dabei verwende ich folgende Attribute:

attr EG.Buero.IstTemp alexaName Büro Temperatur
attr EG.Buero.IstTemp genericDeviceType thermometer
attr EG.Buero.IstTemp homebridgeMapping CurrentTemperature:reading=state


Als Antwort meldet Alexa immer, Büro Licht unterstützt das nicht.
Wie kommt das denn?

Hier die Readings des Device:

Ist-Temp-get 23.20 &deg;C 2019-12-23 21:25:42
last-Sender 1/1/15 2019-12-23 21:25:42
state 23.20 &deg;C 2019-12-23 21:25:42


Hat Alexa hier ein Problem mit der °C Auswertung?

Hier das Device Listening:

Internals:
   DEF        3/0/100:dpt9.001:Ist-Temp
   DEVNAME    EG.Buero.IstTemp
   FIRSTGADNAME Ist-Temp
   FUUID      5dfcf3ad-f33f-5687-f2bb-819aded89239d1e4
   GETSTRING  Ist-Temp:noArg
   IODev      KNX
   KNX_MSGCNT 73
   KNX_RAWMSG C0110fw030640c92
   KNX_TIME   2019-12-23 21:55:42
   LASTInputDev KNX
   MSGCNT     73
   NAME       EG.Buero.IstTemp
   NR         111
   NTFY_ORDER 50-EG.Buero.IstTemp
   SETSTRING  Ist-Temp:slider,-670760,13415,670760
   STATE      23.40 &deg;C
   TYPE       KNX
   GADDETAILS:
     Ist-Temp:
       CODE       03064
       GROUP      3/0/100
       MODEL      dpt9.001
       NO         1
       OPTION     
       RDNAMEGET  Ist-Temp-get
       RDNAMEPUT  Ist-Temp-put
       RDNAMESET  Ist-Temp-set
       SETLIST    :slider,-670760,13415,670760
   GADTABLE:
     03064      Ist-Temp
   READINGS:
     2019-12-23 21:55:42   Ist-Temp-get    23.40 &deg;C
     2019-12-23 21:55:42   last-sender     1/1/15
     2019-12-23 21:55:42   state           23.40 &deg;C
Attributes:
   IODev      KNX
   alexaName  Büro Temperatur
   genericDeviceType thermometer
   group      Raumtemperatur
   homebridgeMapping CurrentTemperature:reading=state
   icon       icoTemp.png
   room       Buero
   webCmd     :


Oder hat Alexa hier ein Problem, weil es schon ein Gerät mit dem Namen

attr EG.Buero.Licht alexaName Büro Licht


gibt?
Kann das sein?

MadMax-FHEM

#12
Was für eine Frage stellst du denn genau!?
Also welchen Wortlaut!?

EDIT: daher wie immer erst mal schauen was Alexa erkannt hat (Verlauf), dann im alexa-fhem Log (NICHT fhem Log!) schauen was angekommen ist und was alexa-fhem zurückgegeben hat. Dann weiß man wo es hakt. Aber in dem Fall hat Alexa evtl. etwas falsch verstanden (oder mal prüfen, wie dein Thermometer "weitergegeben" wurde -> alexa-fhem Log beim Start)

Evtl. ist ein userreadings, welches ein Reading temperature "zur Verfügung stellt" auch eine Möglichkeit bzw. sparst du dann (verm.) das homebridgeMapping...

Gruß, 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)

superverbleit

Wortlaut:
Alexa wie ist die Büro Temperatur

Kannst mir noch kurz auf die Sprünge helfen, wo ich den Log File von Alexa finde, wenn es nicht der von der FHEM ist.
Dort steht folgendes drin:

2019-12-25 02:25:37 caching: EG.Buero.IstTemp-state: 22.00 °C
[25.12.2019, 02:25:37] [FHEM]     caching: CurrentTemperature: 22.00 °C (as string; from '22.00 °C')
  2019-12-25 04:55:36 caching: EG.Buero.IstTemp-state: 21.80 °C
[25.12.2019, 04:55:36] [FHEM]     caching: CurrentTemperature: 21.80 °C (as string; from '21.80 °C')
  2019-12-25 07:25:36 caching: EG.Buero.IstTemp-state: 21.60 °C
[25.12.2019, 07:25:36] [FHEM]     caching: CurrentTemperature: 21.60 °C (as string; from '21.60 °C')
  2019-12-25 08:55:36 caching: EG.Buero.IstTemp-state: 21.80 °C
[25.12.2019, 08:55:36] [FHEM]     caching: CurrentTemperature: 21.80 °C (as string; from '21.80 °C')
[25.12.2019, 09:08:24] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa.PowerController","name":"TurnOn","payloadVersion":"3","messageId":"2b6a9c94-beea-41b8-b02a-31829453515b","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"457A133D-5241F81E66DB7DEA"},"endpointId":"5dfcf3ae-f33f-5687-0b8c-355e9fac98321977","cookie":{"fuuid":"5dfcf3ae-f33f-5687-0b8c-355e9fac98321977","device":"EG.Essz.Terrasse.Schaltdose"}},"payload":{}}}
[25.12.2019, 09:08:24] [FHEM] EG.Essz.Terrasse.Schaltdose: executing set cmd for On with value 1
[25.12.2019, 09:08:24] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=set%20EG.Essz.Terrasse.Schaltdose%201&fwcsrf=csrf_312631119019668&XHR=1
[25.12.2019, 09:08:24] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.PowerController","name":"powerState","value":"ON","timeOfSample":"2019-12-25T08:08:24.073Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"Response","payloadVersion":"3","messageId":"6e1db1ae-a5a3-4a9c-b45f-b412cde54c29","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"457A133D-5241F81E66DB7DEA"},"endpointId":"5dfcf3ae-f33f-5687-0b8c-355e9fac98321977"},"payload":{}}}
[25.12.2019, 09:11:16] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa.PowerController","name":"TurnOn","payloadVersion":"3","messageId":"26939f3f-5421-4d7b-a69f-ee783a0dc9e8","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"457A133D-5241F81E66DB7DEA"},"endpointId":"5dfcf3ad-f33f-5687-2753-ef18f013eaa6033e","cookie":{"fuuid":"5dfcf3ad-f33f-5687-2753-ef18f013eaa6033e","device":"EG.Kueche.Spuele.Spots.Licht"}},"payload":{}}}
[25.12.2019, 09:11:16] [FHEM] EG.Kueche.Spuele.Spots.Licht: executing set cmd for On with value 1
[25.12.2019, 09:11:16] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=set%20EG.Kueche.Spuele.Spots.Licht%201&fwcsrf=csrf_312631119019668&XHR=1
[25.12.2019, 09:11:16] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.PowerController","name":"powerState","value":"ON","timeOfSample":"2019-12-25T08:11:16.136Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"Response","payloadVersion":"3","messageId":"40dba129-a15b-40d9-8d7a-8c2271694101","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"457A133D-5241F81E66DB7DEA"},"endpointId":"5dfcf3ad-f33f-5687-2753-ef18f013eaa6033e"},"payload":{}}}
  2019-12-25 09:55:35 caching: EG.Buero.IstTemp-state: 22.20 °C
[25.12.2019, 09:55:35] [FHEM]     caching: CurrentTemperature: 22.20 °C (as string; from '22.20 °C')
  2019-12-25 10:25:35 caching: EG.Buero.IstTemp-state: 22.60 °C
[25.12.2019, 10:25:35] [FHEM]     caching: CurrentTemperature: 22.60 °C (as string; from '22.60 °C')
[25.12.2019, 11:50:19] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa.PowerController","name":"TurnOff","payloadVersion":"3","messageId":"360e6b0d-1cdb-4048-91b4-46eb54dbd93d","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"457A133D-5241F81E66DB7DEA"},"endpointId":"5dfcf3ad-f33f-5687-2753-ef18f013eaa6033e","cookie":{"fuuid":"5dfcf3ad-f33f-5687-2753-ef18f013eaa6033e","device":"EG.Kueche.Spuele.Spots.Licht"}},"payload":{}}}
[25.12.2019, 11:50:19] [FHEM] EG.Kueche.Spuele.Spots.Licht: executing set cmd for On with value 0
[25.12.2019, 11:50:19] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=set%20EG.Kueche.Spuele.Spots.Licht%200&fwcsrf=csrf_312631119019668&XHR=1
[25.12.2019, 11:50:19] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.PowerController","name":"powerState","value":"OFF","timeOfSample":"2019-12-25T10:50:19.202Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"Response","payloadVersion":"3","messageId":"7fded484-e3f7-441d-b4e1-9506855ccf1f","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"457A133D-5241F81E66DB7DEA"},"endpointId":"5dfcf3ad-f33f-5687-2753-ef18f013eaa6033e"},"payload":{}}}
  2019-12-25 11:55:35 caching: EG.Buero.IstTemp-state: 22.80 °C
[25.12.2019, 11:55:35] [FHEM]     caching: CurrentTemperature: 22.80 °C (as string; from '22.80 °C')


Der Aufruf von Büro Temperatur fehlt.


TomLee

Mein Vorschlag:

Das Device in eine Gruppe Büro in der App stecken und fragen "Echo, wie ist die Temperatur von Büro".

Das Device kannst du nennen wie du willst, in der Gruppe irrelevant.

Gruß

Thomas