[gelöst] Alexa-App: Schalter springt von "on" auf "off" zurück

Begonnen von schizo, 28 Dezember 2017, 17:03:00

Vorheriges Thema - Nächstes Thema

schizo

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

justme1968

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?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

schizo

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.

justme1968

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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

schizo

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  --debughat nicht funktioniert.

justme1968

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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

justme1968

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.

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

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

schizo

Ich habe gerade das neuere, abgewandelte Modul "00_shellswitch.pm" gefunden und installiert.
Damit funktioniert es bestens :)

Danke und LG
Sebastian