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

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

Vorheriges Thema - Nächstes Thema

m311331


@Negropo
sorry musste kurz weg

schön das es geht
wo war der Fehler ?


mfg.m

justme1968

@Matt1185: siehst du die events im fhem event monitor?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Negropo

Zitat von: justme1968 am 28 Dezember 2016, 14:54:28
@Matt1185: siehst du die events im fhem event monitor?
Ja, sehe die Events und habe jetzt auch schon mehrere Geräte eingerichtet. Der Fehler lag zu meiner Schande bei mir.
Ich hatte wegen eines anderen Projekts mein DynDNS am Router ausgeschaltet und vergessen es wieder zu aktivieren.
*Asche über mein Haupt*

Vielen Dank nochmal!

Gruß Negropo

TomLee

Hallo

muss auch nochmal 😊.

Hab das jetzt versucht auf die Sonos Lautsprecher zu übertragen.

Das direkte mappen meines Sonos-Device Sonos_Wohnzimmer_PLAY3 hab ich 1x so versucht:

Zitatternals:
   DEF        RINCON_000E58F7F67C01400_MR
   NAME       Sonos_Wohnzimmer_PLAY3
   NR         288
   NTFY_ORDER 50-Sonos_Wohnzimmer_PLAY3
   STATE      appeared
   TYPE       SONOSPLAYER
   UDN        RINCON_000E58F7F67C01400_MR
   Readings:
     2016-12-24 23:18:31   AlarmList       {}
     2016-12-24 23:18:31   AlarmListIDs
     2016-12-24 23:18:31   AlarmListVersion RINCON_000E58F7F67C01400:0
     2016-08-25 08:42:09   AlarmRunning    0
     2016-08-25 08:42:09   AlarmRunningID
     2016-10-27 09:18:11   Balance         -100
     2016-08-25 08:42:09   Bass            -6
     2016-08-25 08:42:09   CrossfadeMode   0
     2016-08-25 08:42:09   DailyIndexRefreshTime
     2016-12-24 21:31:35   FavouritesVersion RINCON_000E58F7F67C01400,12
     2016-12-22 14:50:33   GroupMute       0
     2016-12-28 15:15:15   GroupVolume     15
     2016-08-25 08:42:09   HeadphoneConnected 0
     2016-08-25 08:42:08   IsMaster        1
     2016-12-28 15:15:00   LastActionResult PlayURITemp: Success!
     2016-08-25 08:42:09   Loudness        1
     2016-08-25 08:42:09   MasterPlayer    Sonos_Wohnzimmer_PLAY3
     2016-12-22 14:50:33   Mute            0
     2016-08-25 08:42:09   OutputFixed     0
     2016-10-11 17:15:31   PlaylistsVersion RINCON_000E58F7F67C01400,13
     2016-12-26 21:53:18   QueueHash       673bcd993b22e8a790369cea37f0b5b2
     2016-12-26 21:53:18   QueueVersion    32
     2016-12-24 21:31:35   RadiosVersion   RINCON_000E58F7F67C01400,12
     2016-08-25 08:42:09   Repeat          0
     2016-08-25 08:42:09   RepeatOne       0
     2016-08-25 10:19:08   Shuffle         0
     2016-08-25 08:42:08   SlavePlayer     []
     2016-08-25 08:42:09   SleepTimer      off
     2016-08-25 08:42:08   SleepTimerVersion
     2016-08-25 08:42:09   SubEnable       1
     2016-08-25 08:42:09   SubGain         0
     2016-08-25 08:42:09   SubPolarity     0
     2016-08-25 08:42:09   Treble          0
     2016-08-25 08:42:09   TruePlay        1
     2016-12-28 15:15:15   Volume          15
     2016-12-27 18:45:09   VolumeStore     25
     2016-08-25 08:42:09   ZoneGroupID     RINCON_000E58F7F67C01400:__
     2016-12-28 05:37:05   currentAlbum
     2016-12-28 15:15:17   currentAlbumArtURI ./www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_PLAY3_AlbumArt.gif
     2016-12-28 15:15:17   currentAlbumArtURL http://192.168.188.38:1400/getaa?s=1&u=x-sonosapi-stream%3as272334%3fsid%3d254%26flags%3d8224%26sn%3d0
     2016-12-28 05:37:05   currentAlbumArtist
     2016-12-28 05:37:05   currentArtist
     2016-12-28 15:15:17   currentNormalAudio 0
     2016-12-26 21:59:22   currentOriginalTrackNumber
     2016-12-28 15:15:17   currentSender   Radio Regenbogen
     2016-12-28 06:00:02   currentSenderCurrent
     2016-12-28 15:00:27   currentSenderInfo
     2016-12-28 15:15:17   currentStreamAudio 1
     2016-12-28 15:15:17   currentTitle
     2016-12-26 21:59:22   currentTrack    1
     2016-12-28 15:15:17   currentTrackDuration 0:00:00
     2016-12-28 15:00:01   currentTrackPosition 0:00:00
     2016-12-28 15:15:17   currentTrackProvider Radio
     2016-12-28 15:15:17   currentTrackURI http://217.151.151.91:80/live
     2016-08-25 08:42:08   fieldType
     2016-12-28 15:15:17   infoSummarize1  Radio Regenbogen:
     2016-12-28 15:15:17   infoSummarize2  PLAYING => Radio Regenbogen:
     2016-12-28 15:15:17   infoSummarize3  Lautstärke: 15 ~ Ton An ~ Balance: -100 ~ Kein Kopfhörer
     2016-08-25 08:42:09   infoSummarize4
     2016-08-25 08:42:08   location        http://192.168.188.38:1400/xml/device_description.xml
     2016-12-28 13:37:47   nextAlbum
     2016-12-28 13:37:46   nextAlbumArtURI ./www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_PLAY3_NextAlbumArt.png
     2016-12-28 13:37:47   nextAlbumArtURL /fhem/sonos/cover/empty.jpg
     2016-12-28 13:37:47   nextAlbumArtist
     2016-12-28 13:37:47   nextArtist
     2016-12-28 13:37:47   nextOriginalTrackNumber
     2016-12-28 13:37:47   nextTitle
     2016-12-28 13:37:47   nextTrackDuration
     2016-12-28 13:37:47   nextTrackProvider
     2016-12-28 13:37:47   nextTrackURI
     2016-12-28 13:37:47   numberOfTracks  1
     2016-08-25 08:42:08   playerType      S3
     2016-12-24 23:18:29   presence        appeared
     2016-08-25 08:42:09   roomIcon        living
     2016-08-25 08:42:08   roomName        Wohnzimmer PLAY3
     2016-08-25 08:42:08   roomNameAlias   Wohnzimmer PLAY3
     2016-08-25 08:42:08   saveRoomName    Wohnzimmer_PLAY3
     2016-08-25 08:42:08   serialNum       00-0E-58-F7-F6-7C:8
     2016-12-14 13:26:39   softwareRevision 7.0
     2016-12-24 23:18:30   state           appeared
     2016-12-28 15:15:17   transportState  PLAYING
Attributes:
   alexaName  sonos
   alias      Wohnzimmer PLAY3
   generateInfoSummarize1 <NormalAudio><Artist prefix="(" suffix=")"/><Title prefix=" '" suffix="'" ifempty="[Keine Musikdatei]"/><Album prefix=" vom Album '" suffix="'"/></NormalAudio> <StreamAudio><Sender suffix=":"/><SenderCurrent prefix=" '" suffix="' -"/><SenderInfo prefix=" "/></StreamAudio>
   generateInfoSummarize2 <TransportState/><InfoSummarize1 prefix=" => "/>
   generateInfoSummarize3 <Volume prefix="Lautstärke: "/><Mute instead=" ~ Kein Ton" ifempty=" ~ Ton An" emptyval="0"/> ~ Balance: <Balance ifempty="Mitte" emptyval="0"/><HeadphoneConnected instead=" ~ Kopfhörer aktiv" ifempty=" ~ Kein Kopfhörer" emptyval="0"/>
   generateVolumeSlider 1
   genericDeviceType switch
   getAlarms  1
   group      Wohnzimmer_PLAY3
   homebridgeMapping Brightness=Volume,cmd=volume
On=state,cmdOn=Play,cmdOff=Stop
LauterLeiser=state,cmd=command
   icon       icoSONOSPLAYER_icon-S3.png
   minVolume  0
   model      Sonos_S3
   room       AlexaControl,Homekit,Sonos
   sortby     1
   stateVariable Presence
   userReadings Favourites:LastActionResult.*?GetFavouritesWithCovers.* { if (ReadingsVal("Sonos_Wohnzimmer_PLAY3", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, Radios:LastActionResult.*?GetRadiosWithCovers.* { if (ReadingsVal("Sonos_Wohnzimmer_PLAY3", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, Playlists:LastActionResult.*?GetPlaylistsWithCovers.* { if (ReadingsVal("Sonos_Wohnzimmer_PLAY3", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, currentTrackPosition:LastActionResult.*?GetCurrentTrackPosition.* { if (ReadingsVal("Sonos_Wohnzimmer_PLAY3", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }


und 1x über den Dummy so:

   
ZitatInternals:
   CFGFN
   NAME       du_Alexa_SonosVolumeUpDown
   NR         254516
   STATE      ???
   TYPE       dummy
Attributes:
   alexaName  lautstärke
   genericDeviceType speaker
   homebridgeMapping LauterLeiser=Sonos_Wohnzimmer_PLAY3:state,cmd=command
   room       AlexaControl,DUMMY,Sonos

Beides führt dazu das Alexa alle Befehle versteht und auch bestätigt (bspw. Ich habe lautstärke leiser gemacht oder Ich habe sonos lauter gemacht) doch passieren tut nix. ???




Matt1185

@justme1968:
Ja, im Event Monitor kommen die einwandfrei an

FlorianZ

Hallo zusammen,

ich bin gerade über ein Wecker Modul für Fhem und würde es auch gerne über Alexa steuern können.
Es gibt für jeden Tag ein Reading mit der Uhrzeit.
Mit dem vorhandenen alexaMapping
Weckzeit=verb=stelle,valuePrefix=auf;für,values=AMAZON.TIME,valueSuffix=uhr
kann ich ja nur auf ein Reading mappen, oder?
So wie ich das verstehe, würde ich einen weiteren Custom Slot Type mit den Tagen Montag bis Sonntag benötigen?

Gruß
Florian

P.S. Vielen Dank an justme1968 für die wahnsinns Arbeit.




justme1968

@TomLee: für sonos musst du command=+ setzen. das set heist hier nur set <name> volumeU und nicht set <name> command volumeU

@Matt1185: zeig mal ein jsonlist2 vom device und die einträge aus dem event monitor beim schalten.

@FlorianZ: pro sprach kommando ist aktuell nur ein parameter erlaubt. ich würde für jeden tag einen dummy mit alexaNamen als wochentag verwenden und dann die beispielsätze erst mal von hand so ändern das sie so aussehen: uhrIntent stelle den wecker für {Device} auf {uhr_Value} uhr (d.h. jeweils den wecker für einfügen).
je nach dem wie dein wecker funktioniert kannst du das kommando dann über das homebridgeMapping der dummys ausführen lassen oder die 7 dummys dann per notify an deinen wecker hängen. statt dummy gehen auch 7 readingsProxys an das jeweilige reading gekoppelt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Matt1185

 {
    "Name":"Licht_Bett",
    "PossibleSets":"off:noArg on:noArg on-till off-till on-for-timer off-for-timer on-till-overnight intervals off-till-overnight toggle blink",
    "PossibleAttrs":"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 IODev ITrepetition do_not_notify:0,1 showtime:0,1 ignore:0,1 model:itremote,itswitch,itdimmer 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": {
      "CODE": "FFF00F0FFF",
      "DEF": "FFF00F0FFF FF F0",
      "NAME": "Licht_Bett",
      "NR": "234",
      "STATE": "off",
      "TYPE": "FHEMduino_PT2262",
      "XMIT": "fff00f0fff",
      "XMIToff": "f0",
      "XMITon": "ff"
    },
    "Readings": {      "state": { "Value":"off", "Time":"2016-12-28 16:09:08" }    },
    "Attributes": {
      "IODev": "Arduino",
      "alexaName": "Licht Schlafzimmer",
      "alexaRoom": "Schlafzimmer",
      "genericDeviceType": "outlet",
      "room": "Schlafzimmer,alexa"
    }
  },

und so siehts im Event Monitor aus:

2016-12-28 17:41:21 FHEMduino_PT2262 Licht_Bett on

Danke!

Borkk

Also der Custom Skill läuft jetzt super, Lampen, Rollos, der Wecker usw. lassen sich stellen, schalten und Alexa betet brav den Status runter. Die Geräte tauchen auch alle in alexa.amazon.de auf.

z.b.
deckenlicht
n: ds_switch, r: dusche


Über den Smart Home Skill lässt sich jetzt aber leider nichts mehr direkt schalten. Ist das so, oder habe ich noch ein Problem. 
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 ...

TomLee


Borkk

#1180
Ich brauche mal Eure Hilfe. Ich möchte zur Steuerung verschiedener Abläufe einen Dummy mit verschiedenen Worte setzen.

Um es verständlicher zu machen nehmen wir mal als Beispiel ein Radio und ich möchte HR3; Klassikradio (u.w) und off setzen.

Sagen möchte ich: ...spiele HR3 auf Radio im Schlafzimmer / mache Radio im Schlafzimmer aus

Wir gehe ich da jetzt am besten vor?

Um es einfacher zu machen gehe ich über ein Dummy "radio".

Welchen GenericDeviceType ? Blind?
Wie sieht das HomebridgeMApping dafür aus? sender=state,cmd=+,cmdOn=on,cmdOff=off
Wie sieht das alexa-mapping aus: sender=state,verb=spiele,articles=auf

Die "sender" und "off" gebe ich als setlist ein.

Ich glaube nicht das das so klappt.. :-)


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 ...

mrbreil

Guten Morgen,
ich beschäftige mich gerade mit den fhemIntents bekomme es aber leider nicht ans laufen.

Bei der Antwort des angeforderten Skill ist ein Problem aufgetretten.

Was mache ich falsch?

[2016-12-29 09:35:22] IntentRequest
[2016-12-29 09:35:22] FHEMguteNachtIntent
[2016-12-29 09:35:22] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=%7B$defs%7BAlexa%7D-%3E%7B%22active%22%7D%20=%201%7D&XHR=1
[2016-12-29 09:35:22] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=setreading%20Alexa%20intent%20IntentRequest%20FHEMguteNachtIntent&XHR=1
[2016-12-29 09:35:22] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=%7B$defs%7BAlexa%7D-%3E%7B%22active%22%7D%20=%200%7D&XHR=1
[2016-12-29 09:35:22] 0
[2016-12-29 09:35:22] FHEMguteNacht
[2016-12-29 09:35:22] FHEMguteNachtIntent
[2016-12-29 09:35:22] ERROR: TypeError: Cannot read property 'FHEMguteNachtIntent' of undefined from ::ffff:52.208.86.166
**** Received Directive: {"version":"1.0","session":{"new":false,"sessionId":"amzn1.echo-api.session.+++","application":{"applicationId":"amzn1.ask.skill.++"},"user":{"userId":"amzn1.ask.account.+++"}},"context":{"System":{"application":{"applicationId":"amzn1.ask.skill.+++"},"user":{"userId":"amzn1.ask.account.+++"},"device":{"supportedInterfaces":{"AudioPlayer":{}}}}},"request":{"type":"SessionEndedRequest","requestId":"amzn1.echo-api.request.e151ef9d-20ee-4654-af8e-aeac7762cf09","timestamp":"2016-12-29T08:36:16Z","locale":"de-DE","reason":"ERROR","error":{"type":"INVALID_RESPONSE","message":"SpeechletResponse was null"}}}
[2016-12-29 09:35:22] SessionEndedRequest
[2016-12-29 09:35:22] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=%7B$defs%7BAlexa%7D-%3E%7B%22active%22%7D%20=%201%7D&XHR=1
[2016-12-29 09:35:22] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=setreading%20Alexa%20intent%20SessionEndedRequest&XHR=1
[2016-12-29 09:35:22] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=%7B$defs%7BAlexa%7D-%3E%7B%22active%22%7D%20=%200%7D&XHR=1
response :{"version":"1.0","sessionAttributes":{},"response":{"outputSpeech":{"type":"PlainText","text":"Bye"},"shouldEndSession":true}}

Matt1185

#1182
@Borkk:

Bei mir funktioniert folgendes:

"... stelle Radio auf Rock"

define radio dummy
attr radio setList on off
attr radio alexaName Radio
attr radio genericDeviceType switch
attr radio homebridgeMapping Radiosender=radio:state,cmd=
attr radio alexaRoom schlafzimmer
attr radio room alexa

define radio_not notify radio {\
  if ("$EVENT" eq "ego") {\
    fhem("set DLNA_c23d8bd4aa87 stream http://192.168.178.1:49200/ST/AUDIO/DLNA-1-0/mp3ad.egofm.c.nmdn.net/ps-egofm_192/livestream.mp3")\
   }\
  if ("$EVENT" eq "klassik") {\
   #fehlt noch
   }\
  if ("$EVENT" eq "rock") {\
    fhem("set DLNA_c23d8bd4aa87 stream http://192.168.178.1:49200/ST/AUDIO/DLNA-1-0/mp3channels.webradio.rockantenne.de/rockantenne")\
   }\
}\

So sieht das alexaMapping aus:

alexaMapping:
Radiosender=state,verb=stelle,valuePrefix=auf,values=klassik:klassik;rock:rock;ego:ego

Custom Slot Types, Sample Utterances und Intent Schema aktualisieren nicht vergessen.

Geht wahrscheinlich eleganter, aber es funktioniert!
Da im alexaMapping scheinbar (noch?) keine leerzeichen gehen funktioniert "Klassikradio" nicht, da es von Alexa als "Klassik Radio" erkannt wird.
Allerdings kann man trotzdem "Klassikradio" sagen, bekommt dann aber als Rückmeldung "Ich habe Radio auf Klassik gestellt" und nicht "...auf Klassikradio"

"spiele klassik auf Radio" funktioniert auch nicht, vermutlich weil immer zuerst das Device genannt werden muss.



Hotbird

ist es denn ratsam auf den CustomSkill umzustellen? Ich benutze immer noch die Version 0.1.3 .
Habe nämlich grade Probleme meine neuen HUE Lampen einzubringen... Habe die HUEGroup Lampe_Schlafzimmer ( 2 Birnen ) und Lampe_Wohnzimmer ( 1ne Birne und eine HueGo) . Room steht auf HUEDevice und alexa, alias für die Schlazimmergruppe ist Licht_Schlafzimmer. Komischerweise findet der Skill in der AlexaApp nur folgendes
Schlafzimmer
name :HUEGroup2, alias:Schlafzimmer, room:HueDevice,alexa

Der alias müsste doch aber Licht_Schlafzimmer sein ( wie oben angegeben)?

Problem ist jetzt, wenn ich sage "schalte Licht Schlafzimmer aus" schaltet Alexa alles im Schlafzimmer aus :-) Genauso ist es im Wohnzimmer.... Alexa schaltet alles an bzw. aus, nur die Lampen nicht :-)

Esjay

Zitat von: Hotbird am 29 Dezember 2016, 21:14:37
ist es denn ratsam auf den CustomSkill umzustellen? Ich benutze immer noch die Version 0.1.3 .
Habe nämlich grade Probleme meine neuen HUE Lampen einzubringen... Habe die HUEGroup Lampe_Schlafzimmer ( 2 Birnen ) und Lampe_Wohnzimmer ( 1ne Birne und eine HueGo) . Room steht auf HUEDevice und alexa, alias für die Schlazimmergruppe ist Licht_Schlafzimmer. Komischerweise findet der Skill in der AlexaApp nur folgendes
Schlafzimmer
name :HUEGroup2, alias:Schlafzimmer, room:HueDevice,alexa

Der alias müsste doch aber Licht_Schlafzimmer sein ( wie oben angegeben)?

Problem ist jetzt, wenn ich sage "schalte Licht Schlafzimmer aus" schaltet Alexa alles im Schlafzimmer aus :-) Genauso ist es im Wohnzimmer.... Alexa schaltet alles an bzw. aus, nur die Lampen nicht :-)
Grüße
Es gibt doch einen Hue Skill,warum willst du dafür den Custom Skill nutzen?Oder verstehe ich etwas falsch?