Hallo,
habe alexa-fhem soweit mit dem Smart Home Skill zum Laufen bekommen.
Zwei Testgeräte (Funksteckdosen, Leer_1_1 und Leer_1_2) werden in der App gefunden, und ich kann die Geräte über die Schalter in der App schalten.
Anscheinend wird aber der State nicht an die App übertragen: Wenn ich einen Schalter in der App betätige, zeigt er kurz "on" an, das Gerät schaltet sich auch korrekt ein, der Schalter springt in der App aber wieder auf "off" zurück (Gerät bleibt aber an).
Kann mir jemand einen Tipp geben, was ich übersehen habe?
LG
Sebastian
welche version von alexa-fhem?
die status rückmeldung geht erst ab 0.4.x. siehe den thread für das neue v3 api.
ansonsten: was sagt die ausgabe von alexa-fhem?
Habe die 0.4.4 installiert.
Hier die Ausgabe von "sudo systemctl status alexa":
Dez 28 23:54:20 raspberrypi alexa[20943]: [2017-12-28 23:54:20] [FHEM] caching: On: 0 (as number; from 'off')
Dez 28 23:54:20 raspberrypi alexa[20943]: response :{"context":{"properties":[{"namespace":"Alexa.PowerController","name":"powerState","value":"OFF","timeOfSample":"2017-12-28T22:54:20.846Z
Dez 28 23:54:22 raspberrypi alexa[20943]: [2017-12-28 23:54:22] accepted new token
Dez 28 23:54:22 raspberrypi alexa[20943]: **** Received Directive: {"directive":{"header":{"namespace":"Alexa.PowerController","name":"TurnOn","payloadVersion":"3","messageId":"c93bd14c-0f8
Dez 28 23:54:22 raspberrypi alexa[20943]: [2017-12-28 23:54:22] [FHEM] Leer_1_1: executing set cmd for On with value 1
Dez 28 23:54:22 raspberrypi alexa[20943]: [2017-12-28 23:54:22] [FHEM] executing: https://127.0.0.1:8083/fhem?cmd=set%20Leer_1_1%20on&fwcsrf=csrf_75395962523870&XHR=1
Dez 28 23:54:22 raspberrypi alexa[20943]: response :{"context":{"properties":[{"namespace":"Alexa.PowerController","name":"powerState","value":"ON","timeOfSample":"2017-12-28T22:54:22.151Z"
Dez 28 23:54:25 raspberrypi alexa[20943]: **** Received Directive: {"directive":{"header":{"namespace":"Alexa","name":"ReportState","payloadVersion":"3","messageId":"c0b56cf7-a74a-46d1-8a04
Dez 28 23:54:25 raspberrypi alexa[20943]: [2017-12-28 23:54:25] [FHEM] caching: On: 0 (as number; from 'off')
Dez 28 23:54:25 raspberrypi alexa[20943]: response :{"context":{"properties":[{"namespace":"Alexa.PowerController","name":"powerState","value":"OFF","timeOfSample":"2017-12-28T22:54:25.624Z
Man sieht, dass der Schalter erst auf "off" stand, ich ihn dann auf "on" geschaltet habe (das genshellswitch-Kommando wird auch korrekt ausgelöst) und er dann wieder auf "off "zurückspringt.
da fehlt nach dem schalten das longpoll event von fhem zurück zu alexa-fhem das den neuen zustand on übermittelt.
was siehst du als alexa-fhem ausgabe wenn du über fhemweb schaltest?
wie siehst die ausgabe zu diesem device beim start von alexa-fhem (mit --debug) aus?
was ist das für ein device? zeig mal ein jsonlist2 davon.
Die Statusangaben über "systemctl status alexa" sind irgendwie irreführend bzw. ändern sich immer nur, wenn ich den Dienst stoppe und wieder starte.
Wenn ich Alexa starte und danach den status ausgebe, ohne geschaltet zu haben, kriege ich
Dez 29 12:12:39 raspberrypi alexa[5530]: characteristic_type: 'On',
Dez 29 12:12:39 raspberrypi alexa[5530]: log:
Dez 29 12:12:39 raspberrypi alexa[5530]: { [Function: bound ]
Dez 29 12:12:39 raspberrypi alexa[5530]: debug: [Function],
Dez 29 12:12:39 raspberrypi alexa[5530]: info: [Function],
Dez 29 12:12:39 raspberrypi alexa[5530]: warn: [Function],
Dez 29 12:12:39 raspberrypi alexa[5530]: error: [Function],
Dez 29 12:12:39 raspberrypi alexa[5530]: log: [Function],
Dez 29 12:12:39 raspberrypi alexa[5530]: prefix: 'FHEM' } }
Dez 29 12:12:39 raspberrypi alexa[5530]: 2017-12-29 12:12:39 caching: Leer_1_2-state: off
(Warum in der letzten Zeile nur ein Gerät auftaucht, nämlich "Leer_1_2-state" und nicht auch "Leer_1_1-state", wundert mich. Habe 2 für Alexa definiert.)
Stoppe und starte ich Alexa wieder, schalte dann das Gerät Leer_1_2 auf "on" und lasse mir dann den status anzeigen, kommt:
Dez 29 12:14:24 raspberrypi alexa[5610]: 'jalousie',
Dez 29 12:14:24 raspberrypi alexa[5610]: 'jalousien',
Dez 29 12:14:24 raspberrypi alexa[5610]: 'rollo',
Dez 29 12:14:24 raspberrypi alexa[5610]: 'rollos' ] }
Dez 29 12:14:24 raspberrypi alexa[5610]: [2017-12-29 12:14:24] roomOfEcho:
Dez 29 12:14:24 raspberrypi alexa[5610]: [2017-12-29 12:14:24] {}
Dez 29 12:14:24 raspberrypi alexa[5610]: [2017-12-29 12:14:24] fhemIntents:
Dez 29 12:14:24 raspberrypi alexa[5610]: [2017-12-29 12:14:24] { FHEMgutenMorgenIntent: 'gutenMorgen',
Dez 29 12:14:24 raspberrypi alexa[5610]: FHEMguteNachtIntent: 'guteNacht' }
Dez 29 12:14:24 raspberrypi alexa[5610]: [2017-12-29 12:14:24] [FHEM] executing: https://127.0.0.1:8083/fhem?cmd=%7B$defs%7BAlexa%7D-%3E%7B%22active%22%7D%20=%201;;undef%7D;list%20Alexa%20.Alexa.Authorization;%7B$defs%7BAlexa%7D-%3E%7B%22active%22%7D%20=%200;;undef%7D&fwcsrf=csrf_75395962523870&XHR=1
jsonlist2 gibt beim Device "Leer_1_1" aus:
{
"Arg":"Leer_1_1",
"Results": [
{
"Name":"Leer_1_1",
"PossibleSets":"on off toggle on-for-timer",
"PossibleAttrs":"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 loglevel:0,1,2,3,4,5,6 event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading alexaName alexaRoom cmdIcon devStateIcon devStateStyle genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock homebridgeMapping:textField-long icon sortby webCmd webCmdLabel:textField-long widgetOverride userattr",
"Internals": {
"Command": "send 10111 1 ",
"DEF": "send 10111 1 1 0",
"NAME": "Leer_1_1",
"NR": "68",
"OffValue": "0",
"OnValue": "1",
"STATE": "off",
"TYPE": "GenShellSwitch"
},
"Readings": { "state": { "Value":"off", "Time":"2017-12-29 12:11:06" } },
"Attributes": {
"alexaName": "Steckdose",
"alexaRoom": "Wohnzimmer",
"alias": "Leer 1_1",
"group": "Licht",
"room": "Licht"
}
} ],
"totalResultsReturned":1
}
(Ist beim Device 1_2 genau das gleiche, nur eben mit der anderen Bezeichnung)
Bei --debug kriege ich die Meldung, dass die Option unbekannt ist.
Wie ist lautet da die korrekte Syntax?
sudo systemctl start alexa --debug
hat nicht funktioniert.
bitte starte alexa-fhem von hand auf der console. dann kannst du auch das --debug anhängen.
dort solltest du auch etwas sehen wenn du in fhemweb schaltest.
ich habe mir gerade das GenShellSwitch modul angeschaut. leider greift es direkt auf fhem interne variablen zu statt das ReadingsUpdate api zu verwenden. dadurch werden keine longpoll events erzeugt und alexa-fhem wird nicht über die zustandsänderungen informiert.
die gleichen probleme würdest du auch mit anderen frontends wie tablet ui haben. selbst mit fhemweb wirst du das sehen wenn du mehrere fenster gleichzeitig auf hast.
wende dich an den modulautor. es muss im modul repariert werden. das IT modul hatte mal die gleichen probleme. dort ist es inzwischen behoben.
Ich habe gerade das neuere, abgewandelte Modul "00_shellswitch.pm" gefunden und installiert.
Damit funktioniert es bestens :)
Danke und LG
Sebastian