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

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

Vorheriges Thema - Nächstes Thema

SalvadoreXXL

Nachdem der normale Skill bei mir funktioniert und ich ihn auch verstanden habe, hab ich mich mal am Custom Skill versucht. Musste dazu im Lambda einen Trigger "Alexa Skills Kit" hinzufügen. Erst dann wurde die arn ohne Fehlermeldung genommen. Allerdings meldet Alexa immer Probleme mit James:

Alexa heard: "frage james nach der geräte liste"
The SpeechletResponse must not be null

An dem Punkt bin ich mit meinem Latein am Ende. Hat jemand einen Tip für mich?

BobbyD

Irgendwie komme ich nicht klar mit der Zurordnung der Geräte und Räume in FHEM und Alexa. Wenn ich den Customskill verwende muss ich da eigentlich in der Alexa-App noch nach geräten suchen oder sind das 2 unterschiedliche dinge?
Ich habe einen Tempsensor (Mysensors) in einer Käsebox (OT: ich mache Hobbymässig Käse und erfasse die Temperatur in der Box mit einem Sensor der über FHEM ausgewertet wird /OT)
Alexa sagt immer das sie das Gerät "Käsebox" nicht abfragen kann.
Auf der Konsole wird der Sensor aber erkannt:
[2016-12-02 13:35:06] [FHEM] KaeseBox is thermometer
[2016-12-02 13:35:06] [FHEM] KaeseBox has
[2016-12-02 13:35:06] [FHEM]   CurrentRelativeHumidity [humidity]
[2016-12-02 13:35:06] [FHEM]   CurrentTemperature [temperature3]
  2016-12-02 13:35:06 caching: KaeseBox-humidity: 38.9
  2016-12-02 13:35:06 caching: KaeseBox-temperature3: 12.2


Wenn ich dann nach der Käsebox frage kommt immer:
response :{"version":"1.0","sessionAttributes":{},"response":{"outputSpeech":{"type":"PlainText","text":"Ich kann das Gerät mit Namen temperatur nicht abfragen., Ich kann das Gerät mit Namen flur nicht abfragen., Ich kann das Gerät mit Namen kaesebox nicht abfragen."},"shouldEndSession":false,"card":{"type":"Simple","title":"status","content":"Ich kann das Gerät mit Namen temperatur nicht abfragen.\n, Ich kann das Gerät mit Namen kaesebox nicht abfragen."}}}

Custom slots habe ich folgende:
Type Values
FHEM_DEVICE Flur | bad | kaesebox | flurlicht | temperatur
FHEM_ROOM Flur | Esszimmer | Wohnzimmer | Schlafzimmer | Kaesebox
FHEM_SWITCH_ACTION an | ein | aus | um
FHEM_artikel der | die | das | den


Irgendwie komme ich nicht weiter.

Danke bobby

SalvadoreXXL

Zitat von: SalvadoreXXL am 02 Dezember 2016, 11:18:18
Nachdem der normale Skill bei mir funktioniert und ich ihn auch verstanden habe, hab ich mich mal am Custom Skill versucht. Musste dazu im Lambda einen Trigger "Alexa Skills Kit" hinzufügen. Erst dann wurde die arn ohne Fehlermeldung genommen. Allerdings meldet Alexa immer Probleme mit James:

Alexa heard: "frage james nach der geräte liste"
The SpeechletResponse must not be null

An dem Punkt bin ich mit meinem Latein am Ende. Hat jemand einen Tip für mich?

Ich glaube, ich habe es gefunden:

Zitat- einen zweiten skill anlegen, aber diesmal nicht homeautomation sondern custom
  und die application id des custom skill in ~/.alexa/config.json file bei applicationId eintragen

Das habe ich bisher noch nicht gelesen, obwohl ich die diversen Threats hier mehrfach durchgearbeitet habe. Werde die ID heute Abend mal in die config eintragen und testen.

justme1968

@BobbyD: wenn du käsebox sagst musst du bei FHEM_DEVICE auch käsebox eintragen und nicht kaesebox. und den alias/alexaName auch mit ä vergeben.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

simon2207

Hallo Leute,

mein Dot kommt morgen und ich arbeite gerade schon mal lesend die Anleitung durch.
Dieser Punkt ist nicht klar:

1. alexa-fhem installieren
  alexa-fhem-0.0.0.tgz auspacken
  package in alexa-fhem umbenennen
  cd alexa-fhem
  npm install
  ssl zertifikat mit ./createKey.sh erzeugen.
    -> password mindestens 4 stellen, alle fregen beantworten
  <home>/.alexa/config.json anpassen (siehe config-sample.json)
    filter funktioniert wie bei homebridge-fhem. siehe thread dort und wiki
  bin/alexa starten

Im Wiki steht hier auch /.alexa/config.json

dieses Verzeichnis gibt es aber nicht... ich habe im Verzeichnis /home/pi einen Ordner angelegt alexa-fhem und in diesem den package content untergebracht.
cd /alexa-fhem
und im Ordner ppm install gestartet... soweit gut...

Muss der Ordner /home/pi/.alexa von mir angelegt werden un das config.json.demo hier abzulegen? Steht leider nirgends...

DANKE

SalvadoreXXL

Ich habe alexa-fhem im FHEM-Verzeichnis erstellt und dort installiert. Das Verzeichnis .alexa musst du unter /home/pi/ anlegen und dort die config rein.

justme1968

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

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

BobbyD

@ justme1968:

Wenn ich in FHEM das Device als "KäseBox" anlege kommt immer
ERROR:
Invalid characters in name (not A-Za-z0-9._): KäseBox

Deswegen hatte ich immer KaeseBox geschrieben. Reicht das da wenn ich den AlexaName auf KäseBox setze? Im Alexa-Los wird allerdings immer der richtige Name genommen:
[2016-12-02 14:56:29] [FHEM] homebridgeMapping: CurrentTemperature=temperature3
[2016-12-02 14:56:29] [FHEM] KaeseBox is thermometer
[2016-12-02 14:56:29] [FHEM] KaeseBox has
[2016-12-02 14:56:29] [FHEM]   CurrentRelativeHumidity [humidity]
[2016-12-02 14:56:29] [FHEM]   CurrentTemperature [temperature3]
  2016-12-02 14:56:29 caching: KaeseBox-humidity: 37.5
  2016-12-02 14:56:29 caching: KaeseBox-temperature3: 12.5

justme1968

ich habe nichts vom fhem device namen gesagt sondern vom FHEM_DEVICE bei den Custom Slot Types und vom alias/alexaName.

im log steht immer der fhem device name.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

BobbyD

Ach völlig richtig. man muss richtig lesen. Sorry.
Wie ich oben schon sagte, so richtig sehe ich bald nicht mehr durch mit den vielen Namen. Aber ich bemühe mich  :o

RaspiCOC

Zitat von: justme1968 am 02 Dezember 2016, 15:11:45
im wiki steht nichts von /.alexa/config.json
Good point, wird nachgezogen!

Gesendet von meinem SM-G925F mit Tapatalk


justme1968

im wiki steht ~/.alexa/config.json und das ist korrekt.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

AmunRe

#642
Hallo Zusammen,

Ich wollte eigentlich noch etwas warten, um evtl. Fehler gleich zu überspringen aber ich habe den Custom Skill nun auch "eingebaut"

Leider stimmen die Werte, die er zurück gibt nicht. Ich kann erfolgreich abfragen. Er startet den Skill, wenn ich nach dem Status im Wohnzimmer frage, bekomme ich auch eine Antwort.

Leider ist die Antwort falsch. Weil zum Beispiel die Temperatur nicht annähernd stimmt. Ich habe nicht 14 Grad im Wohnzimmer. Und an dem PC sitz ich grad, der angeblich aus ist


Edit:Nach einem Neustart stimmt die Temperatur, leider ist es nicht die Raumtemperatur sondern die desired-temp des Thermostat. Und auch der PC wurde als "an" erkannt.

Wenn ich jetzt aber zum Beispiel die Temperatur änder, ändert das nichts am Rückgabe wert, bis ich neustarte. Ich hoffe das ist bekannt?
Desweiteren erkennt er meine Anlage immer als on -  auch wenn sie aus ist, denke aber das liegt am device selber.

Und die Structure im Wohnzimmer, welche ON oder Off sein sollte, wird auch immer als off angegeben, dennoch ist die lampe an.
response :[2016-12-02 17:27:14] LaunchRequest
response :{"version":"1.0","sessionAttributes":{},"response":{"outputSpeech":{"type":"PlainText","text":"Hallo. Wie kann ich helfen?"},"shouldEndSession":false,"reprompt":{"outputSpeech":{"type":"PlainText","text":"Noch jemand da?"}}}}
**** Received Directive: {"version":"1.0","session":{"new":false,"sessionId":"amzn1.echo-api.session.xxxxxxxx","application":{"applicationId":"amzn1.ask.skill.xxxxxxxxxx4"},"user":{"userId":"amzn1.ask.account.xxxxxxx"}},"context":{"AudioPlayer":{"playerActivity":"STOPPED"},"System":{"application":{"applicationId":"amzn1.ask.skill.xxxxxxxx"},"user":{"userId":"amzn1.ask.account.xxxxxxxxxxxxxx"},"device":{"supportedInterfaces":{"AudioPlayer":{}}}}},"request":{"type":"IntentRequest","requestId":"amzn1.echo-api.requestxxxxxxx","timestamp":"2016-12-02T16:27:20Z","locale":"de-DE","intent":{"name":"StatusIntent","slots":{"Room":{"name":"Room","value":"wohnzimmer"},"Device":{"name":"Device"}}}}}
[2016-12-02 17:27:20] IntentRequest
[2016-12-02 17:27:20] StatusIntent
[2016-12-02 17:27:20] [FHEM]     caching: On: 0 (as number; from 'off')
[2016-12-02 17:27:20] [FHEM]     caching: On: 0 (as number; from 'off')
[2016-12-02 17:27:20] [FHEM]     caching: On: 0 (as number; from 'off')
[2016-12-02 17:27:20] [FHEM]     caching: On: 0 (as number; from 'off')
[2016-12-02 17:27:20] [FHEM]     caching: On: 1 (as number; from 'opened')
response :{"version":"1.0","sessionAttributes":{},"response":{"outputSpeech":{"type":"PlainText","text":"projektor ist aus., heizung wohnzimmer steht auf 14.0 Grad., computer ist aus., playstation ist aus., fernseher wohnzimmer ist aus., anlage ist an und steht auf 6 Prozent., licht wohnzimmer ist aus."},"shouldEndSession":false,"card":{"type":"Simple","title":"wohnzimmerstatus","content":"projektor ist aus.\nheizung wohnzimmer steht auf 14.0 Grad., computer ist aus., playstation ist aus., fernseher wohnzimmer ist aus., anlage ist an\nsteht auf 6 Prozent., licht wohnzimmer ist aus."}}}
**** Received Directive: {"version":"1.0","session":{"new":false,"sessionId":"amzn1.echo-api.session.76945068-6cd7-4ba5-8f5d-fe26dfefa097","application":{"applicationId":"amzn1.ask.skill.xxxxxxxxxxxxx"},"user":{"userId":"amzn1.ask.account.xxxxxxxxxxx"}},"context":{"System":{"application":{"applicationId":"amzn1.ask.skill.xxxxxxx"},"user":{"userId":"amzn1.ask.account.xxxxxxxx"},"device":{"supportedInterfaces":{"AudioPlayer":{}}}}},"request":{"type":"SessionEndedRequest","requestId":"amzn1.echo-api.request.xxxxxxxxxx","timestamp":"2016-12-02T16:27:40Z","locale":"de-DE","reason":"EXCEEDED_MAX_REPROMPTS"}}
[2016-12-02 17:27:40] SessionEndedRequest
response :{"version":"1.0","sessionAttributes":{},"response":{"outputSpeech":{"type":"PlainText","text":"Bye"},"shouldEndSession":true}}


Hier mal ein list vom AVR:

Internals:
   CHANGED
   Clients    :ONKYO_AVR_ZONE:
   DEF        192.168.0.104
   DeviceName 192.168.0.104:60128
   FD         19
   INPUT      01
   NAME       avr
   NR         131
   NTFY_ORDER 50-avr
   PARTIAL
   PROTOCOLVERSION 2013
   SCREENLAYER 0
   STATE      off
   TIMEOUT    3
   TYPE       ONKYO_AVR
   ZONE       1
   Readings:
     2016-11-26 01:48:49   audin_ch
     2016-11-26 01:48:49   audin_enc
     2016-11-26 01:48:49   audin_srate
     2016-11-26 01:48:49   audin_src
     2016-11-26 01:48:49   audout_ch
     2016-11-26 01:48:49   audout_mode
     2016-11-26 01:48:48   center-temporary-level 6
     2016-11-26 01:41:29   channelList     AUPEO!_PERSONAL_RADIO,DLNA,Home_Media,Last.fm_Internet_Radio,MP3tunes,Mediafly,My_Favorites,Napster,Pandora_Internet_Radio,Rhapsody,SiriusXM_Internet_Radio,Slacker_Personal_Radio,Spotify,TuneIn,e-onkyo_music,radiko.jp,simfy,vTuner
     2016-12-02 15:56:33   input           video2
     2016-11-26 01:41:29   inputList       am,aux1,aux2,bd,cbl,cd,dlna,dvd,dvr,fm,game,internet-radio,iradio-favorite,multi-ch,music-server,net,network,p4s,pc,phono,sat,sirius,tape,tape-1,tape2,tuner,tv,tv-cd,universal-port,usb,usb-rear,usb-toggle,vcr,video1,video2,video3,video4,video5,video6,video7,xm
     2016-12-02 15:56:33   listening-mode  all-ch-stereo
     2016-11-26 01:43:17   mute            off
     2016-12-02 17:37:39   power           off
     2016-11-29 19:58:56   presence        present
     2016-11-29 19:52:34   sleep           off
     2016-11-30 17:45:37   state           opened
     2016-12-02 17:37:39   stateAV         off
     2016-11-26 16:24:31   subwoofer-temporary-level -3
     2016-12-02 17:05:10   volume          11
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs

BobbyD

So ein Mist, irgendwie kapier ich das nicht. Ich habe jetzt nur ein FHEM_Device "Käsebox". Wenn ich den CustomSkill von alexa starten lasse kommt dann nur das die Käsebox nicht abgefragt werden kann.

response :{"version":"1.0","sessionAttributes":{},"response":{"outputSpeech":{"type":"PlainText","text":"Ich kann das Gerät mit Namen Käsebox nicht abfragen."},"shouldEndSession":false}}

Im Alexa-Log wird es aber angezeigt:

[2016-12-02 17:45:07] [FHEM] homebridgeMapping: CurrentTemeratur=temperature3
[2016-12-02 17:45:07] [FHEM] KaeseBox is thermometer
[2016-12-02 17:45:07] [FHEM] KaeseBox has
[2016-12-02 17:45:07] [FHEM]   CurrentRelativeHumidity [humidity]
[2016-12-02 17:45:07] [FHEM]   CurrentTemeratur [temperature3]
  2016-12-02 17:45:07 caching: KaeseBox-humidity: 38.0
  2016-12-02 17:45:07 caching: KaeseBox-temperature3: 12.8
[2016-12-02 17:45:07] [FHEM] alexa device is Myalexa


Wo könnte ich noch einen Fehler haben?
Danke

justme1968

die oben angehängte version kann nur ein paar wenige readings abfragen. das ist im wesentlichen on/off, desired-temperature und pct.

@AmunRe: alexa sagt doch 'die heizung steht auf...' und nicht 'die temperatur ist...'. das ist zwar nicht das was du wolltest aber trotzdem korrekt.

zu den schaltern die probleme machen: bitte schau weiter vorne im log (oder im debug browser) welche werte für die readings gecached sind.

wenn die werte nur beim neustart aktuell sind und nicht durch longpoll aktualisiert werden sind oft falsch gesetzte event-on- attribute falsch. die readings müssen events erzeugen damit alexa-fhem etwas davon mitbekommt. du solltest es im event monitor und auf der konsole sehen.

@BobbyD: deine beiden readings sind in der liste oben noch nicht mit drin. die version die ich hier habe kann das aber schon.


das update das am wochenende kommt wird (fast) beliebige konfigurierbare set kommandos können und mehr readings.

im update das darauf kommt wird auch die abfrage völlig frei konfigurierbar sein.

gruss
  andre

ps: hoffentlich weil ich gerade nicht ganz fit bin und alexa ohne stimme auch nicht besonders gut funktioniert :)
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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