alexa-fhem: amazon alexa smart home skill für fhem

Begonnen von justme1968, 05 November 2016, 23:21:32

Vorheriges Thema - Nächstes Thema

steimer-vl

@sbiermann: schau mal unter http://alexa.amazon.de/spa/index.html#settings/dialogs
hier siehst du dann ob Alexa Badezimmerlüfter oder Badezimmer Lüfter oder ähnliches erkannt hat. Du kannst notfalls das Attribut alexaName auf "Badezimmer Lüfter" setzen - also zwei eigenständige Wörter. So hat es bei mir mit Kaninchenlicht funktioniert also alexaName = "Kaninchen Licht" ;D

Ob es so gedacht ist ggf. sogar nur Zufall ist, dass es funktioniert kann ich nicht beantworten...

Viel Erfolg

baerbel

Hallo in die Runde,

irgendwie schäme ich fast schon zu schreiben, tue es aber dennoch - vermutlich bin ich zu blöde, zu alt oder beides :-( - ich kriege mit dem custom skill die einfachsten Sachen nicht hin - Status Abfragen funktionieren, sobald ich aber eine Switch oder ein light schalten möchte klappt es nicht :-(

Habe mir testesweise eine dammbare Steckdose ausgesucht, mit der ich das alles mal durchspielen will - diese ist als light eingerichtet - anbei das List:

Internals:
   CFGFN
   DEF        240CBC
   HMLAN1_MSGCNT 25
   HMLAN1_RAWMSG E240CBC,0000,7727C391,FF,FFC3,3DA410240CBC26EB390601C800
   HMLAN1_RSSI -61
   HMLAN1_TIME 2017-01-17 17:38:06
   HMLAN2_MSGCNT 24
   HMLAN2_RAWMSG 0501003B3DA410240CBC26EB390601C800
   HMLAN2_RSSI -59
   HMLAN2_TIME 2017-01-17 17:38:06
   IODev      HMLAN2
   LASTInputDev HMLAN1
   MSGCNT     49
   NAME       Steckdose.Schlafzimmer.Tischlampe
   NOTIFYDEV  global
   NR         2263
   STATE      on
   TYPE       CUL_HM
   lastMsg    No:3D - t:10 s:240CBC d:26EB39 0601C800
   protLastRcv 2017-01-17 17:38:06
   protSnd    22 last_at:2017-01-17 17:38:06
   protState  CMDs_done
   rssi_HMLAN2 cnt:8 lst:-65 min:-67 max:-64 avg:-65.25
   rssi_at_HMLAN1 avg:-63.35 max:-57 min:-77 lst:-61 cnt:25
   rssi_at_HMLAN2 lst:-59 cnt:24 avg:-61.45 max:-59 min:-67
   Readings:
     2017-01-17 17:38:02   CommandAccepted yes
     2017-01-17 17:22:34   D-firmware      2.3
     2017-01-17 17:22:34   D-serialNr      KEQ0903838
     2017-01-17 17:22:38   PairedTo        0x26EB39
     2017-01-17 17:22:38   R-pairCentral   0x26EB39
     2017-01-17 17:22:39   R-powerUpAction off
     2017-01-17 17:22:38   RegL_00.          02:01 0A:26 0B:EB 0C:39 15:FF 16:00 00:00
     2017-01-17 17:22:39   RegL_01.          30:06 32:50 33:64 34:4B 35:50 56:00 57:24 00:00
     2017-01-17 17:38:06   deviceMsg       on (to vccu)
     2017-01-17 17:38:06   dim             stop:on
     2017-01-17 17:38:06   level           100
     2017-01-17 17:38:06   overheat        off
     2017-01-17 17:38:06   overload        off
     2017-01-17 17:38:06   pct             100
     2017-01-17 17:21:15   powerOn         2017-01-17 17:21:15
     2017-01-17 17:38:06   recentStateType info
     2017-01-17 17:38:06   reduced         off
     2017-01-17 17:38:06   state           on
     2017-01-17 17:38:06   timedOn         off
   Helper:
     HM_CMDNR   61
     PONtest    0
     cSnd       1126EB39240CBC0201640320FFFF,1126EB39240CBC0201C80320FFFF
     dlvlCmd    ++A01126EB39240CBC0201C80320FFFF
     mId        00A4
     peerIDsRaw ,00000000
     rxType     1
     supp_Pair_Rep 0
     Ack:
     Dir:
       cur        stop
       rct        up
     Expert:
       def        1
       det        0
       raw        1
       tpl        0
     Io:
       newChn     +240CBC,00,00,00
       nextSend   1484671086.96127
       prefIO
       rxt        0
       vccu
       p:
         240CBC
         00
         00
         00
     Mrssi:
       mNo        3D
       Io:
         HMLAN1     -61
         HMLAN2     -57
     Prt:
       bErr       0
       sProc      0
       Rspwait:
     Q:
       qReqConf
       qReqStat
     Role:
       chn        1
       dev        1
       prs        1
     Rpt:
       IO         HMLAN2
       flg        A
       ts         1484671086.67302
       ack:
         HASH(0x3ccf6b0)
         3D800226EB39240CBC00
     Rssi:
       Hmlan2:
         avg        -65.25
         cnt        8
         lst        -65
         max        -64
         min        -67
       At_hmlan1:
         avg        -63.36
         cnt        25
         lst        -61
         max        -57
         min        -77
       At_hmlan2:
         avg        -61.4583333333333
         cnt        24
         lst        -59
         max        -59
         min        -67
     Shadowreg:
     Tmpl:
Attributes:
   IODev      HMLAN2
   IOgrp      vccu:HMLAN2
   alexaName  Tischlampe
   alexaRoom  Schlafzimmer
   alias      Tischlampe
   autoReadReg 4_reqStatus
   expert     2_raw
   firmware   2.3
   genericDeviceType light
   homebridgeMapping On=pct,valueOff=0,cmdOn=dummyOn,cmdOff=pct+0
   model      HM-LC-Dim1T-Pl-2
   peerIDs    00000000,
   room       CUL_HM,Schlafzimmer,alexa
   serialNr   KEQ0903838
   subType    dimmer
   webCmd     statusRequest:toggle:on:off:up:down


Sage ich nun "Alexa, sage James schalte die Tischlampe an/aus/auf50%/etc bekomme ich folgendes zu hören, respektive zu lesen:

n1.ask.skill.ef72c39e-9ac8-43f8-add7-90b92d99c6b1"},"user":{"userId":"amzn1.ask.account.AEF6V3T5FW46IH7PD3D55TR7JVS2Z47THDIOCQ4CMK2V6AYEH4W2G75RBOP5LZD6OJXVAJC72XSDVCF4BQZ4AWPBGNNQUFR5K6QLQZSNDSXRCTP27J27VNO2CAMYO4I7L7UHBJ3M7MVVHZ2RSDNQPEZHEZZDODN2FJG5YOEOUHO6FF3SRPGAN43Q7CVJGCYXYD6JSL7TYS3P5EI"}},"context":{"AudioPlayer":{"playerActivity":"IDLE"},"System":{"application":{"applicationId":"amzn1.ask.skill.ef72c39e-9ac8-43f8-add7-90b92d99c6b1"},"user":{"userId":"amzn1.ask.account.AEF6V3T5FW46IH7PD3D55TR7JVS2Z47THDIOCQ4CMK2V6AYEH4W2G75RBOP5LZD6OJXVAJC72XSDVCF4BQZ4AWPBGNNQUFR5K6QLQZSNDSXRCTP27J27VNO2CAMYO4I7L7UHBJ3M7MVVHZ2RSDNQPEZHEZZDODN2FJG5YOEOUHO6FF3SRPGAN43Q7CVJGCYXYD6JSL7TYS3P5EI"},"device":{"supportedInterfaces":{"AudioPlayer":{}}}}},"request":{"type":"IntentRequest","requestId":"amzn1.echo-api.request.7ae79e82-ce50-45db-a5d9-2824438f7a72","timestamp":"2017-01-17T17:59:24Z","locale":"de-DE","intent":{"name":"SwitchIntent","slots":{"Action":{"name":"Action","value":"aus"},"artikel":{"name":"artikel","value":"den"},"Room":{"name":"Room"},"Device":{"name":"Device","value":"tischlampe"}}}}}
[1/17/2017, 6:59:24 PM] IntentRequest
[1/17/2017, 6:59:24 PM] SwitchIntent
[1/17/2017, 6:59:24 PM] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%201%7D&XHR=1
[1/17/2017, 6:59:24 PM] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=setreading%20MyAlexa%20intent%20IntentRequest%20SwitchIntent&XHR=1
[1/17/2017, 6:59:24 PM] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%200%7D&XHR=1
[1/17/2017, 6:59:24 PM] 0
[1/17/2017, 6:59:24 PM] Switch
[1/17/2017, 6:59:24 PM] SwitchIntent
[1/17/2017, 6:59:24 PM] undefined
[1/17/2017, 6:59:24 PM] SwitchIntent -> Switch
response :{"version":"1.0","sessionAttributes":{},"response":{"outputSpeech":{"type":"PlainText","text":"Ich habe Ich kann tischlampe nicht auf undefined schalten. undefined gestellt"},"shouldEndSession":true,"card":{"type":"Simple","title":"SwitchIntent","content":"Ich kann tischlampe nicht auf undefined schalten. undefined gestellt"}}}


ich verstehe es einfach nicht - ähnliches habe ich mit einer switch ....

könnt ihr mir auf die Sprünge helfen? Vor lauter Alexamapping, Intents, sehe ich gerade momentan gar nicht mehr :-(

Vielen Dank vorab -

Grüße,

/Bernd

sbiermann

Zitat von: steimer-vl am 17 Januar 2017, 19:00:47
@sbiermann: schau mal unter http://alexa.amazon.de/spa/index.html#settings/dialogs
hier siehst du dann ob Alexa Badezimmerlüfter oder Badezimmer Lüfter oder ähnliches erkannt hat. Du kannst notfalls das Attribut alexaName auf "Badezimmer Lüfter" setzen - also zwei eigenständige Wörter. So hat es bei mir mit Kaninchenlicht funktioniert also alexaName = "Kaninchen Licht" ;D

Ob es so gedacht ist ggf. sogar nur Zufall ist, dass es funktioniert kann ich nicht beantworten...

Viel Erfolg

Hihi witzig, dass hat glatt funktioniert. Alexa hat wirklich zwei Wörter daraus gemacht gehabt. Muss man sich merken. Ich vermute das hat was mit der deutschen Sprache zu tun.

Wenn ich nach dem Custom Skill nach der Raumliste frage per Service Simulator oder per Sprache am Echo Dot dann bekomme ich das als Antwort:
{
  "version": "1.0",
  "response": {
    "outputSpeech": {
      "type": "PlainText",
      "text": "Ich kenne: alexa,bad_unten und alexa"
    },
    "card": {
      "content": "alexa,bad_unten\nalexa",
      "title": "Raumliste",
      "type": "Simple"
    },
    "shouldEndSession": true
  },
  "sessionAttributes": {}
}

Ich habe im Raum alexa ein Dummy definiert welches mein Tablet an der Wand per notify das Display ein- bzw. ausschaltet. Da mein Alexa Fhem device auch im Raum alexa ist, findet die server.js den Raum "alexa" anscheinend doppelt.

Borkk

#1413
Ich benötige mal einen kleinen Tipp. Wo und wie kann ich denn Alexa´s Antworten beeinflussen. Ich möchte erreichen, dass auf die Frage: ... Status? nicht die Antwort kommt "Der Rollo im Schlafzimmer steht auf 100%" sondern sie soll sagen "Der Rollo im Schlafzimmer ist auf". Prozentangaben bei allen Werten ausser 0 oder 100 sind ja ok.
Docker@DS220+ FHEM, ConBeeII, Homebridge, Nginx ReverseProxy, ConfigDB, MQTT, NodeRed, InfluxDB, Grafana,
Raspberrymatic@Raspi3: HmIP Akt- /Sensoren, Shelly´s, Tibber Puls, Alexa, ASC, Gardena, Netatmo, E-Paper, FritzBox; Tado°, HOMEMODE, iBeacon, OLED ; ESP32/8266, SwitchBot ...

chris050280

Guten Morgen Leute.

Ich hab eigentlich alles am Laufen und sag auch mal ein großes Danke an alle Beteiligten!!

Bei meinem nächsten Schritt hab ich jedoch noch ein Problem. Ich hab eine kontrollierte Wohnraumlüftung mit PTC-Elementen in den Schlafzimmern. Geschaltet werden diese bereits über FHEM und zwar über das Modul threshold. Zur Eingabe der gewünschte Temperatur (desired_value) verwende ich einen Dummy mit Dropdown.

Dieses Dummy-Device hab ich auch in der Alexa-App gefunden, von daher kann eigentlich nicht mehr viel falsch sein - ich denke mal, dass es am Homebridgemapping liegen wird:

attr Tobias_Temp Homebridgemapping TargetTemperature=::targetTemperature

Ich bekomme dann bei "Alexa stelle Heizung Tobias auf 21 Grad" nämlich den Status "undefined 21". Ich will aber nur den Wert 21 haben.

Kann mir da wer helfen?

Danke

Lg Christian
FHEM auf RasbPi ... + RFXTRX433E
div. HomeEasy und Intertechno - Schalter
sowie Somfy - Rolläden

Esjay

Zitat von: chris050280 am 18 Januar 2017, 05:29:34
Guten Morgen Leute.

Ich hab eigentlich alles am Laufen und sag auch mal ein großes Danke an alle Beteiligten!!

Bei meinem nächsten Schritt hab ich jedoch noch ein Problem. Ich hab eine kontrollierte Wohnraumlüftung mit PTC-Elementen in den Schlafzimmern. Geschaltet werden diese bereits über FHEM und zwar über das Modul threshold. Zur Eingabe der gewünschte Temperatur (desired_value) verwende ich einen Dummy mit Dropdown.

Dieses Dummy-Device hab ich auch in der Alexa-App gefunden, von daher kann eigentlich nicht mehr viel falsch sein - ich denke mal, dass es am Homebridgemapping liegen wird:

attr Tobias_Temp Homebridgemapping TargetTemperature=::targetTemperature

Ich bekomme dann bei "Alexa stelle Heizung Tobias auf 21 Grad" nämlich den Status "undefined 21". Ich will aber nur den Wert 21 haben.

Kann mir da wer helfen?

Danke

Lg Christian

Guten Morgen,
schau dir mal Post Nr: 1249 an, und dann die Bemerkung von Justme 1968 im Beitrag 1265. Ich bin noch nicht dazu gekommen da weiter zu gucken, aber vll hilft es dir.

Grüße

baerbel

... wie hier beschrieben https://forum.fhem.de/index.php/topic,60244.msg563381.html#msg563381

... scheine ich wohl Probleme mit dem SwitchIntent zu haben, da die Statusabfragen funktionieren - egal was ich auch sage (und ich halte mich an die Syntax in dem Intent, den ich aus dem Post kopiert habe) kommt immer wieder das gleiche raus:

[1/18/2017, 8:30:31 AM] IntentRequest
[1/18/2017, 8:30:31 AM] SwitchIntent
[1/18/2017, 8:30:31 AM] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%201%7D&XHR=1
[1/18/2017, 8:30:31 AM] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=setreading%20MyAlexa%20intent%20IntentRequest%20SwitchIntent&XHR=1
[1/18/2017, 8:30:31 AM] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%200%7D&XHR=1
[1/18/2017, 8:30:31 AM] 0
[1/18/2017, 8:30:31 AM] Switch
[1/18/2017, 8:30:31 AM] SwitchIntent
[1/18/2017, 8:30:31 AM] undefined
[1/18/2017, 8:30:31 AM] SwitchIntent -> Switch
response :{"version":"1.0","sessionAttributes":{},"response":{"outputSpeech":{"type":"PlainText","text":"Ich habe Ich kann tischlampe nicht auf undefined schalten. undefined gestellt"},"shouldEndSession":false,"card":{"type":"Simple","title":"SwitchIntent","content":"Ich kann tischlampe nicht auf undefined schalten. undefined gestellt"}}}
  2017-01-18 08:30:35 caching: Steckdose.EG.Kueche.Kaffemaschine-voltage: 227.924 V


Was mache ich falsch???

Danke euch schon ml vorab -

Grüße, /Bernd

rudolfkoenig

@andre: warum hast du fuer diese Integration node.js verwendet?
Das ist nicht als rhetorische Frage mit Kritik gemeint, ist nur Neuigier.

justme1968

@michael.winkler: ich schaue mal was mir einfällt.

@hive2015: die anleitung ist im ersten beitrag und in den beiden dort verlinkten.

@bjoernbo: https zwischen alexa-fhem und fhem ist kein problem. jeweils         "ssl": true,
         "auth": {"user": "fhem", "pass": "fhempassword"},
bei den connections angeben.

@dk3572: wie schon weiter oben geschrieben kann man die antwort aktuell noch nicht konfigurieren.

@baerbel: die komische antwort muss ich erst nachstellen. das sollte nicht passieren.

@Borkk: die antworten kann man noch nicht konfigurieren. das kommt als eines der nächsten dinge.

@chris050280: zeig mal ein jsonlist2 vom device.

@rudolfkoenig: das liegt hauptsächlich daran das 80% code identisch mit homebridge-fhem ist und ich alexa-fhem und homebridge-fhem auch wieder zusammen mergen will. homebridge selber ist eben ein node projekt. zufällig waren die ersten alexa beispiele die ich gesehen hatte auch in node und ich wusste anfangs nicht wie viel code tatsächlich bei amazon laufen muss.

der grund beides zusammen zu halten liegt daran das auf homekit seite (und damit auch homebridge) viele sinnvolle konzepte zu device typen und andere abstraktionsebenen vorhanden sind die es einfach machen unterschiedliche geräte gleich anzusprechen.

es hat also eher zufällige historische gründe. inzwischen finde ich node aber auch sehr angenehm was das programmiermodell und die calbacks angeht. da ich der meinung bin das man threads normalerweise nicht braucht und node normalerweise nicht multithreaded ist passt das sehr gut :)

der anwendugnsfall eines netzwerk/web dienstes der über standart schnittstellen anderen (web) dienste einbindet ist glaube ich ein sehr typischer für node. und auch das paket konzept funktioniert gut.

könnte man alexa-fhem auch komplett in perl machen? ja. hätte es vorteile? nein. hätte es nachteile? jein. man könnte keinen homebridge code wiederverwenden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

baerbel

Andre, Danke dir !!!! Nachdem das wohl nur bei mir auftritt, gehen ich dennoch von einem Fehler auf meiner Seite aus -

Grüße, /Bernd

chris050280

Zitat von: justme1968 am 18 Januar 2017, 10:52:51
...
@chris050280: zeig mal ein jsonlist2 vom device.

...

Gerne ... und Danke



{
  "Arg":"Tobias_desired_TEMP",
  "Results": [
  {
    "Name":"Tobias_desired_TEMP",
    "PossibleSets":"state:18,19,20,21,21.5,22,22.5,23,24,25,26",
    "PossibleAttrs":"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 readingList setList useSetExtensions disable disabledForIntervals 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 widgetOverride userattr",
    "Internals": {
      "CFGFN": "/opt/fhem/FHEM/Daniel.cfg",
      "NAME": "Tobias_desired_TEMP",
      "NR": "475",
      "STATE": "22",
      "TYPE": "dummy"
    },
    "Readings": {      "state": { "Value":"22", "Time":"2017-01-18 05:32:36" }    },
    "Attributes": {
      "alexaName": "Heizung Tobias",
      "alexaRoom": "Kueche",
      "genericDeviceType": "switch",
      "group": "Heizung",
      "homebridgeMapping": "TargetTemperature=::targetTemperature",
      "room": "Tobias,alexa",
      "setList": "state:18,19,20,21,21.5,22,22.5,23,24,25,26",
      "webCmd": "state"
    }
  }  ],
  "totalResultsReturned":1
}
FHEM auf RasbPi ... + RFXTRX433E
div. HomeEasy und Intertechno - Schalter
sowie Somfy - Rolläden

bjoernbo

Hallo, habe ALEXA zunächst erfolgreich eingerichtet. Auf ALEXA.AMAZON sind auch mein beiden Geräte, allerdings funktioniert es nun nicht mehr. Keine Ahnung warum.

Im Log File habe ich folgenden Eintrag:

Zitat[1/18/2017, 6:27:26 PM] [FHEM] no alexa device found. please define it.
[1/18/2017, 6:27:27 PM] [FHEM] got: 4 results
[1/18/2017, 6:27:27 PM] [FHEM] homebridgeMapping: 1
/opt/alexa-fhem/lib/fhem.js:837
      if( match.length < 4 || !match[3] ) {
               ^

TypeError: Cannot read property 'length' of null
    at FHEMDevice.fromHomebridgeMapping (/opt/alexa-fhem/lib/fhem.js:837:16)
    at new FHEMDevice (/opt/alexa-fhem/lib/fhem.js:2075:8)
    at FHEM.<anonymous> (/opt/alexa-fhem/lib/fhem.js:735:39)
    at Array.map (native)
    at FHEM.<anonymous> (/opt/alexa-fhem/lib/fhem.js:732:31)
    at Request.self.callback (/opt/alexa-fhem/node_modules/request/request.js:186:22)
    at emitTwo (events.js:87:13)
    at Request.emit (events.js:172:7)
    at Request.<anonymous> (/opt/alexa-fhem/node_modules/request/request.js:1081:10)
    at emitOne (events.js:77:13)

Dabei hat zuvor alles funktioniert! "Alexa, schalte die Stehlampe ein" sowie "Alexa, schalte den Dimmer ein"

Kommt oben genannte Meldung bekannt vor?
Raspberry Pi 3 - FB6490C - Synology NAS DS916+ - NETATMO - HUE - SIEMENS G-Tag'S - FTUI - EchoDOT -

chris050280

Zitat von: bjoernbo am 18 Januar 2017, 18:31:48
Hallo, habe ALEXA zunächst erfolgreich eingerichtet. Auf ALEXA.AMAZON sind auch mein beiden Geräte, allerdings funktioniert es nun nicht mehr. Keine Ahnung warum.

Im Log File habe ich folgenden Eintrag:

Dabei hat zuvor alles funktioniert! "Alexa, schalte die Stehlampe ein" sowie "Alexa, schalte den Dimmer ein"

Kommt oben genannte Meldung bekannt vor?

Sicher, dass alles richtig bei den Geräten definiert ist? Weil ganz am Anfang steht ja, dass keine Devices gefunden werden
FHEM auf RasbPi ... + RFXTRX433E
div. HomeEasy und Intertechno - Schalter
sowie Somfy - Rolläden

bjoernbo

JA, ich habe gar nicht verändert!

Auf Alexa.Amazon stehen diese nun als OFFLINE in der Liste  :(
Raspberry Pi 3 - FB6490C - Synology NAS DS916+ - NETATMO - HUE - SIEMENS G-Tag'S - FTUI - EchoDOT -

chris050280

Zitat von: bjoernbo am 18 Januar 2017, 19:00:49
JA, ich habe gar nicht verändert!

Auf Alexa.Amazon stehen diese nun als OFFLINE in der Liste  :(

Poste auch mal ein Jsonlist2 der Geräte
FHEM auf RasbPi ... + RFXTRX433E
div. HomeEasy und Intertechno - Schalter
sowie Somfy - Rolläden