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ß
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.
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).
Hab kein KNX, meine es so zu verstehen das es die Antwort darauf gerade vorgesten hier (https://forum.fhem.de/index.php/topic,103351.msg1003215.html#msg1003215) gab.
Gruß
Thomas
Leider nein. Hab ich auch schon angeschaut. Dort hat das knx device nur eine Gruppenadresse. Bei mir sind es jedoch 2.
Mit welchem Kommando schaltest Du in Fhem an oder aus?
Ändere die DEF doch mal so
0/5/100:dpt1.001:Schalten 0/2/100:dpt1.001:Status
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
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
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=state
und 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>
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. :)
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 °C 2019-12-23 21:25:42
last-Sender 1/1/15 2019-12-23 21:25:42
state 23.20 °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 °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 °C
2019-12-23 21:55:42 last-sender 1/1/15
2019-12-23 21:55:42 state 23.40 °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?
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
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.
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
Jetzt muss ich mal als Anfänger kurz nachhaken.
Wenn ich eine Gruppe anlege, brauche ich ja pro Gruppe auch eine "Alexa", oder?
Ich will aktuell nur eine Alexa einsetzen.
Kann ich innerhalb der Gruppe zum Beispiel mehrere Lichter getrennt ansteuern?
Aktuell hab ich meine Alexa im Wohnbereich stehen, will von dort aus aber zum Beispiel die Temperaturen in den Kinderzimmern abfragen.
Oder wieso soll ich das in Gruppen in der App unterteilen?
Noch ne Frage zu alexaName in FHEM.
Gibt es zum Beispiel ein Problem wenn ich alexName Büro Licht und gleichzeitig alexName Büro Temperatur definiere?
Zum Beispiel im Wohnbereich habe ich ja sehr viele einzelne ansteuerbare Lichter. Muss ich da alexName komplett unterschiedlich wählen? Oder geht da zum Beispiel Licht Tv und Licht Kamin.
Kann ich alle Lichter mit Licht+Name definieren?
Gibt es da sowas wie einen Leitfaden, wie ich das machen sollte?
Danke schon mal für eure Unterstützung.
ZitatWenn ich eine Gruppe anlege, brauche ich ja pro Gruppe auch eine "Alexa", oder?
Nein.
ZitatKann ich innerhalb der Gruppe zum Beispiel mehrere Lichter getrennt ansteuern?
Ja, wenn die einen eigenenen Name haben. Die Gruppe ist nur ein Ensemble von 1 bis n Devices, die selbst einen Name bekommt
ZitatGibt es zum Beispiel ein Problem wenn ich alexName Büro Licht und gleichzeitig alexName Büro Temperatur definiere?
Nein
ZitatKann ich alle Lichter mit Licht+Name definieren?
Ja
Jetzt habe ich die Temperaturabfrage in eine Gruppe Büro in der App eingefügt und es funktioniert. Super.
Was der genaue Unterschied mit/ohne Gruppe ist, weiß ich jetzt auch nicht genau. Echo wird das wohl ein wenig anders interpretieren. :)
Jetzt hätte ich nochmals eine Frage, bzw. Problem.
Ich möchte in meinem Knx eine Szene mit der Nummer 0 (bzw. ist ja dann Szene 1) auslösen über Echo Dot aktivieren..
Dazu muss ich über meinen Bus die Gruppenadresse 9/0/0:dpt18.001:Szenennebenstelle mit einer 0 schreiben.
In FHEM habe ich bereits ein Device, das dies für mich macht.
Das Device sieht aktuell so aus:
Internals:
DEF 9/0/0:dpt18.001:Szenennebenstelle
DEVNAME EG.Wohnz.Szene.TvAbends
FIRSTGADNAME Szenennebenstelle
FUUID 5dfcf3af-f33f-5687-2fba-ec2611be780b368f
GETSTRING Szenennebenstelle:noArg
IODev KNX
KNX_MSGCNT 2
KNX_RAWMSG C00004w0900001
KNX_TIME 2019-12-28 18:08:43
LASTInputDev KNX
MSGCNT 2
NAME EG.Wohnz.Szene.TvAbends
NR 553
NTFY_ORDER 50-EG.Wohnz.Szene.TvAbends
SETSTRING Szenennebenstelle:slider,1,1,64
STATE 2
TYPE KNX
GADDETAILS:
Szenennebenstelle:
CODE 09000
GROUP 9/0/0
MODEL dpt18.001
NO 1
OPTION
RDNAMEGET Szenennebenstelle-get
RDNAMEPUT Szenennebenstelle-put
RDNAMESET Szenennebenstelle-set
SETLIST :slider,1,1,64
GADTABLE:
09000 Szenennebenstelle
READINGS:
2019-12-28 18:08:43 Szenennebenstelle-get 2
2019-12-28 17:01:53 Szenennebenstelle-set 1
2019-12-28 18:08:43 last-sender 0/0/4
2019-12-28 18:08:43 state 2
Attributes:
IODev KNX
eventMap /0 g1:SzeneTvAbends
group Szenenfunktion
room Wohnbereich
webCmd SzeneTvAbends
Jetzt will ich das Device natürlich auch erweitern, damit ich die Szene per Spracheingabe aktivieren kann.
Spracheingabe soll folgendermaßen funktioneren:
Alexa, schalte Tv Licht ein. (=> damit werden dann intern Lichter gedimmt, bzw. an- oder ausgeschaltet)
Wie müsste ich hier das homebridgeMapping erweitern, damit das ganze funktionert.
Gruß
On=<Reading für Zustand on/off>,cmdOn=<set Kommando für on, ohne das Wort "set">,cmdOff=<set Kommando für off...>
Habe es jetzt gelöst.
So funktioniert es.
attr EG.Wohnz.Szene.TvAbends homebridgeMapping On=state,cmdOn=Szenennebenstelle-set:1
Kurze Frage noch, cmdOn bedeutet ja was soll gemacht werden, wenn ich sage "Alexa schalte Abendlicht Tv ein", oder?
cmdOff, wenn ich sage "Alexa schalte Abendlicht Tv aus". Richtig?
Was ist dann z.B. valueOn/valueOff?
Die Beschreibungen, z.B.
https://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024
(https://forum.fhem.de/index.php/topic,48558.msg402024.html#msg402024)
hier sind ein wenig schwer zu verstehen. :D
Oder gibt's irgendwo ein cooles how to für homebridgemapping?
Danke nochmals für euren Support.
valueOn und valueOff sind die Werte des Readings, die als Zustand on/off in der App dann interpretiert werden