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

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

Vorheriges Thema - Nächstes Thema

Hotbird

weil der HueSkill gefühlte 30 Szenen installiert und auch die Steckdosen dadurch ausgeschaltet werden :-(

mpl8580

#1186
nun ein
get <Euer gewählter Name> customSlotTypes

und tragt die Ergebnisse ( In dem Fall die Erweiterung des Device Receiver) unter Interaction Model in eurem Custom Skill unter Custom Slot Types nach dem im Wiki beschriebenen Schema ein.

dann führt ihr ein

get <Euer gewählter Name> interactionModel
aus, und erweitert in der Reihenfolge -->Custom Slot Types -->Sample Utterances--> Intent Schema den Custom Skill.

Danke für Deine Beschreibung - kannst du ab hier nochmal etwas detaillierter erklären was ich genau wo machen muss - ich weiss an der Stelle leider gar nicht was ich mehr tuen soll - gibts da vielleicht nen Screenshot zu?

Mach ich das mit dem interaction Model quasi online auf https://developer.amazon.com -> da gehts bei mir gar nicht!

Your skill uses Smart Home Skill API
The interaction model is already built into the Smart Home Skill API and you can find the supported utterances here. You just have to handle the directives sent by Alexa in your Smart Home adapter (Lambda function)

Vielen Dank


Esjay

Zitat von: mpl8580 am 30 Dezember 2016, 00:45:05
nun ein
get <Euer gewählter Name> customSlotTypes

und tragt die Ergebnisse ( In dem Fall die Erweiterung des Device Receiver) unter Interaction Model in eurem Custom Skill unter Custom Slot Types nach dem im Wiki beschriebenen Schema ein.

dann führt ihr ein

get <Euer gewählter Name> interactionModel
aus, und erweitert in der Reihenfolge -->Custom Slot Types -->Sample Utterances--> Intent Schema den Custom Skill.

Danke für Deine Beschreibung - kannst du ab hier nochmal etwas detaillierter erklären was ich genau wo machen muss - ich weiss an der Stelle leider gar nicht was ich mehr tuen soll - gibts da vielleicht nen Screenshot zu?

Mach ich das mit dem interaction Model quasi online auf https://developer.amazon.com -> da gehts bei mir gar nicht!

Your skill uses Smart Home Skill API
The interaction model is already built into the Smart Home Skill API and you can find the supported utterances here. You just have to handle the directives sent by Alexa in your Smart Home adapter (Lambda function)

Vielen Dank
Bin gerade unterwegs,und ich denke dieses Jahr schaffe ich es nicht mehr..Sorry..Aber mir kommt der Text am Ende bekannt vor..Kann es sein,dass du noch gar kein Custom Skill erstellt hast?Bin der Meinung den Text im Smart Home Skill gelesen zu haben..
Gruß

mpl8580

#1188
Gibt es denn irgendwo schon eine Anleitung (How-To) zum genauen einrichten eines Custom Skills?
Den im fhem alexa wiki kenne ich. Jedoch steht dort ja drin

ACHTUNG: die daten unter 'interaction model' unten gelten nur für skill version 0.1.3. ab version 0.1.4 werden die daten im alexa device erzeugt

Gerade was das befüllen der Felder interactionModel, Intent Schema, Custom Slot Types, Sample Utterances: usw. angeht. Weiss ich nicht weiter. Kann mir jemand da mal die entsprechenden Zeilen geben?

Ich benutze die Version 0.1.8 das scheint sich ja grundsätzlich zur der Anleitung im Wiki zu unterscheiden oder sind das die selben Inhalte die darein kommen bzw. welcher Code gehört darein.

Bin etwas verwirrt was in welches Feld muss.

Danke Euch

Borkk

@Matt1185

Danke, jetzt sind mir noch so ein paar Lichter aufgegangen und es funzt auch so wie ich möchte. Halt nicht mit ...spiele... sondern mit ...stelle... aber das ist erst mal egal. Eine Sache musste ich noch anpassen, dein HomebridgeMapping "Radiosender=radio:state,cmd=" hat einen Befehl "set radio xxxx" ausgelöst, da mein Gerät aber sz_radio heist (radio ist der  Alias und AlexaName) klappte es nicht. Mit dem HomebridgeMapping "Radiosender=state,cmd=+" geht es einwandfrei.

Danke für deine Hilfe. :-)
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 ...

Esjay

Zitat von: mpl8580 am 30 Dezember 2016, 01:58:22
Gibt es denn irgendwo schon eine Anleitung (How-To) zum genauen einrichten eines Custom Skills?
Den im fhem alexa wiki kenne ich. Jedoch steht dort ja drin

ACHTUNG: die daten unter 'interaction model' unten gelten nur für skill version 0.1.3. ab version 0.1.4 werden die daten im alexa device erzeugt

Gerade was das befüllen der Felder interactionModel, Intent Schema, Custom Slot Types, Sample Utterances: usw. angeht. Weiss ich nicht weiter. Kann mir jemand da mal die entsprechenden Zeilen geben?

Ich benutze die Version 0.1.8 das scheint sich ja grundsätzlich zur der Anleitung im Wiki zu unterscheiden oder sind das die selben Inhalte die darein kommen bzw. welcher Code gehört darein.

Bin etwas verwirrt was in welches Feld muss.

Danke Euch
Hast du schon ein Alexa Device angelegt,und die alexaMapping Attribute, welche hier im Thread gezeigt werden gesetzt?

mpl8580

Japp. Aber wie du vermutest habe ich glaube ich noch kein custom skill. Eigentlich müsste ich doch zwei anlegen einmal den home skill und dann einen custom skill richtig?

Beim custom skill bin ich nicht sicher was in welche felder muss bei der version 0.1.8

Esjay

Zitat von: mpl8580 am 30 Dezember 2016, 11:05:37
Japp. Aber wie du vermutest habe ich glaube ich noch kein custom skill. Eigentlich müsste ich doch zwei anlegen einmal den home skill und dann einen custom skill richtig?

Beim custom skill bin ich nicht sicher was in welche felder muss bei der version 0.1.8
Ist richtig.
Leg erstmal den Custom Skill,so wie im Wiki beschrieben an.Wenn der funktioniert,im nächsten Schritt dein Alexa Device  Intent Schema Sample Utterances  Intent Schema generieren lassen,und dann deinen Custom Skill nochmals bearbeiten.

Borkk

Hallo Zusammen,

dank der Hilfe von vielen hier im Forum und natürlich Andre, ist es mir nun gelungen ein neues Device auf Anhieb in Alexa-fhem zu integrieren. Alles was man dazu wissen muss, steht hier im Forum aber ich weis, dass sich viele immer noch schwer damit tuen, durch alle Schritte durch zusteigen.

Aus diesem Grund schreibe ich hier mal eine Schritt für Schritt Anleitung zusammen. Auch wenn man Sie vielleicht nicht 1:1 umsetzten wird, liefert sie dem einen oder anderen vieleicht ein paar Erkenntnisse über die Zusammenhänge. Oder man kann sie auf einen eigenen Anwendungsfall anpassen.

Voraussetzung ist ein FHEM 5.7 mit laufender alexa-fhem Bridge und funktionsfähigen CustomSkill. Wer noch auf dem Weg dahin Problem hat findet Hilfe in dem anderen Chat hier im Forum .

Was werde ich hier beschrieben?

Ich werde meinen Harmony HUB integrieren um die darin gespeicherten Aktionen per Alexa Befehl zu aktivieren.
Also sowas wie ,,Alexa, sage FHEM stelle Anlage auf ARD"

Ich lasse Alexa nicht direkt auf das Harmony Modul los, sondern schalte einen Dummy dazwischen. Das macht die ganze Sache sehr flexibel, so könnte man zu dem Harmony Befehl z.B. noch das Licht schalten. Da bietet FHEM ja alle Möglichkeiten.

- Den Dummy nenne ich Anlage, da Harmony ja sowohl TV als auch Radio usw. schalten wird.
- Den Alexa Intend nenne ich sinniger Weise Aktion
- Mein Alexa Raum heist alexa
- Die Aktionen die ich im ersten Schritt ermögliche sind: HR3, Klassik, ARD und HESSEN
- mein Harmony Device in FHEM heist hub

Also fangen wir mal an..

Dummy ,,Anlage" und notify anlegen

define anlage Dummy
attr anlage alexaName anlage
attr anlage alexaRoom wohnzimmer
attr anlage alias Multimedia Anlage
attr anlage genericDeviceType switch
attr anlage homebridgeMapping Aktion=state,cmd=+
attr anlage room Wohnzimmer, alexa
attr anlage setList hr3 ard hessen klassik on off
attr anlage webCmd h.r. 3:klassik:ard:hessen:off


Den notify habe ich so gelöst:

define set_anlage notify anlage {
my $aktion = Value("anlage");
if ( $aktion eq "a.r.d.") {fhem("set hub activity ARD.TV")}
if ( $aktion eq "hessen") {fhem("set hub activity HR3.TV")}
if ( $aktion eq "h. r. drei") {fhem("set hub activity HR3.HOEREN")}
if ( $aktion eq "klassik") {fhem("set hub activity KLASSIK.HOEREN")}
if ( $aktion eq "off") {fhem("set hub activity PowerOff")}
}


An dieser Stelle solltet Ihr schon den Harmony über die WebCmd´s in dem Dummy steuern können - kurzer Check :-)

jetzt im im Alexa Modul noch das Mapping eintragen

attr myalexa alexaMapping Aktion=state,verb=stelle,valuePrefix=auf,values=klassik:klassik;hr3:hr3;ard:ard;hessen:hessen

Dann noch:

set myalexa reload

Damit ist der Teil in FHEM im Grunde abgeschlossen und es müssen die Daten im Alexa Skill unter Interaction Model erweitert werden.

Als erstes macht Ihr einen:
get myalexa customSlotTypes

Neu hinzu gekommen sollte das FHEM_Device anlage sein, das tragt ihr im Alexa Custom Skill unter Custom Slot Type FHEM_Device ein. Sollte auch der Raum (in meinem Beispiel wohnzimmer) neu sein, dann muss er auch unter FHEM_Room hinzugefügt werden.

save drücken

Danach macht Ihr einen:
get myalexa interactionModel

Scrollt runter bis zu den Custom Slot Types, dort findet ihr die Daten zu dem neuen Slot Type Aktion

Aktion_Value
  ard
  hessen
  hr3
  klassik


Legt einen neuen Slot Type über den Button Add Slot Type entsprechend an.

save drücken

Danach scrollt weiter runter zu Sample Utterance:

Entweder ihr übernehmt per Copy&Paste alle Einträge aus dem FHEM Fenster in das entsprechende Fenster auf der Alexa Seite. Vorher müsst ihr natürlich alle vorhanden Einträge löschen, damit es keine doppelten Einträge gibt.

Es geht im Grunde aber nur um diesen Bock.

AktionIntent stelle {Device} auf {Aktion_Value}
AktionIntent stelle {Device} {preposition} {Room} auf {Aktion_Value}
AktionIntent stelle {article} {Device} auf {Aktion_Value}
AktionIntent stelle {article} {Device} {preposition} {Room} auf {Aktion_Value}


ACHTUNG: noch nicht Save drücken

Jetzt übernehmt Ihr den Code ganz oben unter Intent Schema auf der Alexa Seite (Alten vorher löschen)

Jetzt Save drücken

Um das Ganze jetzt live zu schalten, bin ich mir etwas unsicher was wirklich nötig ist. Ich würde jetzt Alexa-fhem neu starten und auf der alexa.amazon.de Seite nach neuen Devices suchen lassen. Es dauert dann irgendwie ein paar Minuten bis das ganze dann wirklich geht, also kurz eine Kaffee holen.

Wenn alles richtig funktioniert hat, sollte Alexa das Device kennen und entsprechend steuern können.

Ich hoffe ich konnte dem einen oder anderen damit helfen

Guten Rusch :-)
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

Hallo Leute!

Nachdem ich etwas weitergekommen bin - bzw es jetzt eine andere Fehlermeldung gibt - hab ich meine unbeantwortete Frage gelöscht ... vor allem, weil ich mir vor lauter Testerei nicht mehr sicher bin, wie ich jetzt die andere Meldung bekommen habe. Kann mir da jetzt wer weiterhelfen? :)

[2016-12-31 23:29:56] using /home/pi/.alexa/config.json
[2016-12-31 23:29:56] ---
[2016-12-31 23:29:56] this alexa-fhem 0.1.8
[2016-12-31 23:29:56] Fetching FHEM devices...
[2016-12-31 23:29:56] [FHEM] Checking devices and attributes...
[2016-12-31 23:29:56] [FHEM]   executing: http://192.168.1.133:8083/fhem?cmd=%7BAttrVal(%22global%22,%22userattr%22,%22%22)%7D&XHR=1
[2016-12-31 23:29:57] [FHEM]   executing: http://192.168.1.133:8083/fhem?cmd=jsonlist2%20TYPE=alexa&XHR=1
[2016-12-31 23:29:57] [FHEM] starting longpoll: http://192.168.1.133:8083/fhem.pl?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON&timestamp=1483223397039
[2016-12-31 23:29:57] [FHEM] Fetching FHEM devices...
[2016-12-31 23:29:57] [FHEM] fetching: http://192.168.1.133:8083/fhem?cmd=jsonlist2%20room=alexa&XHR=1
events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::3000
    at Object.exports._errnoException (util.js:1022:11)
    at exports._exceptionWithHostPort (util.js:1045:20)
    at Server._listen2 (net.js:1262:14)
    at listen (net.js:1298:10)
    at Server.listen (net.js:1376:9)
    at Server.startServer (/opt/fhem/alexa-fhem/lib/server.js:117:15)
    at Server.run (/opt/fhem/alexa-fhem/lib/server.js:222:8)
    at module.exports (/opt/fhem/alexa-fhem/lib/cli.js:30:10)
    at Object.<anonymous> (/opt/fhem/alexa-fhem/bin/alexa:17:22)
    at Module._compile (module.js:571:32)


Danke im Voraus und ein gutes neues erfolgreiches 2017.

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

MadMax-FHEM

FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

chris050280

Zitat von: MadMax-FHEM am 31 Dezember 2016, 23:43:40
https://forum.fhem.de/index.php/topic,60452.msg545815.html#msg545815

Ist auch im Thread für Probleme ;-)

Gruß, viel Erfolg und guten Rutsch!

Joachim

Danke, jetzt ist mir ein Knöpferl aufgegangen :) ... den Dienst beendet in FHem und dann funzt es auch in der Kommandozeile.

Jetzt kommen die Anfragen über die Alexa auch schon in FHEM an, aber es werden noch keine Geräte in der App gefunden, also die nächste Baustelle.

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

Charity

Hallo,

ich habe nun soweit alles eingerichtet, wenn ich in Putty den alexa-Dienst starte ./bin/alexa scheint alles in Ordnung zu laufen :

[Sun Jan 01 2017 17:14:03 GMT+0100 (CET)] using /home/cubie/.alexa/config.json
[Sun Jan 01 2017 17:14:03 GMT+0100 (CET)] ---
[Sun Jan 01 2017 17:14:03 GMT+0100 (CET)] this alexa-fhem 0.1.8
[Sun Jan 01 2017 17:14:03 GMT+0100 (CET)] Fetching FHEM devices...
[Sun Jan 01 2017 17:14:05 GMT+0100 (CET)] [FHEM] Checking devices and attributes...
[Sun Jan 01 2017 17:14:05 GMT+0100 (CET)] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=%7BAttrVal(%22global%22,%22userattr%22,%22%22)%7D&XHR=1
[Sun Jan 01 2017 17:14:05 GMT+0100 (CET)] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=jsonlist2%20TYPE=alexa&XHR=1
[Sun Jan 01 2017 17:14:05 GMT+0100 (CET)] [FHEM] starting longpoll: http://127.0.0.1:8083/fhem.pl?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON&timestamp=1483287245817
[Sun Jan 01 2017 17:14:05 GMT+0100 (CET)] [FHEM] Fetching FHEM devices...
[Sun Jan 01 2017 17:14:05 GMT+0100 (CET)] [FHEM] fetching: http://127.0.0.1:8083/fhem?cmd=jsonlist2%20room=Alexa&XHR=1
[Sun Jan 01 2017 17:14:05 GMT+0100 (CET)] Server listening on: https://:::3000
[Sun Jan 01 2017 17:14:06 GMT+0100 (CET)] [FHEM] no alexa device found. please define it.
[Sun Jan 01 2017 17:14:06 GMT+0100 (CET)] [FHEM] got: 1 results
[Sun Jan 01 2017 17:14:06 GMT+0100 (CET)] [FHEM] TestDevice is switch
[Sun Jan 01 2017 17:14:06 GMT+0100 (CET)] [FHEM] TestDevice has
[Sun Jan 01 2017 17:14:06 GMT+0100 (CET)] [FHEM]   On [state;on,off]
  2017-01-01 17:14:06 caching: TestDevice-state: off


Wie es mir scheint, erkennt der da mein Gerät "TestDevice" sogar inklusive Status.

Leider bekomme ich es nicht hin, den Dienst durch FHEM starten zu lassen.

Ich habe alle Devices wie im Wiki beschrieben angelegt


define FHEM.Alexa.Status dummy
attr FHEM.Alexa.Status room 94AlexaControl

define FHEM.Alexa dummy
attr FHEM.Alexa event-on-change-reading state
attr FHEM.Alexa room 94AlexaControl
attr FHEM.Alexa webCmd status:start:stop:restart

define FHEM.Alexa.DOIF DOIF ([FHEM.Alexa] eq "start") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa start > /dev/null 2>&1 &")})\
DOELSEIF ([FHEM.Alexa] eq "stop") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa stop > /dev/null 2>&1 &")})\
DOELSEIF ([FHEM.Alexa] eq "restart") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa restart > /dev/null 2>&1 &")})\
DOELSEIF ([FHEM.Alexa] eq "status") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa status > /dev/null 2>&1 &")})
attr FHEM.Alexa.DOIF room AlexaRoom

define FileLog_FHEM.Alexa.Status FileLog ./log/Alexa-fhem-%Y-%m.log FHEM.Alexa.Status
attr FileLog_FHEM.Alexa.Status logtype text
attr FileLog_FHEM.Alexa.Status room 99Logging
attr FileLog_FHEM.Alexa.Status group Alexa

define FileLog_FHEM.Alexa FileLog ./log/Alexa-fhem-%Y-%m.log FHEM.Alexa
attr FileLog_FHEM.Alexa logtype text
attr FileLog_FHEM.Alexa room 99Logging
attr FileLog_FHEM.Alexa group Alexa

define FileLog_FHEM.Alexa.DOIF FileLog ./log/Alexa-fhem-%Y-%m.log FHEM.Alexa.DOIF
attr FileLog_FHEM.Alexa.DOIF logtype text
attr FileLog_FHEM.Alexa.DOIF room 99Logging
attr FileLog_FHEM.Alexa.DOIF group Alexa


Wenn ich auf "FHEM.Alexa" - start drücke bekomme ich im Log die Meldung

2017-01-01_17:02:59 FHEM.Alexa.DOIF error: {system ("sudo /etc/init.d/alexa start > /dev/null 2>&1 &")}: -1

Die Commands

sudo chmod 755 /etc/init.d/alexa
sudo update-rc.d alexa defaults


habe ich ausgeführt.

In der sudoers habe ich

fhem    ALL = (ALL) NOPASSWD:/usr/bin/arp-scan
fhem    ALL = (ALL) NOPASSWD: ALL
cubie   ALL = (ALL) NOPASSWD: ALL


stehen.

Wo könnte ich da meinen Fehler haben ? Konnte leider zur Startmeldung keine Lösung finden.

m311331

Hi


schau mal hier:

Zitatdefine FHEM.Alexa.DOIF DOIF ([FHEM.Alexa] eq "start") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa start > /dev/null 2>&1 &")})\
DOELSEIF ([FHEM.Alexa] eq "stop") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa stop > /dev/null 2>&1 &")})\
DOELSEIF ([FHEM.Alexa] eq "restart") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa restart > /dev/null 2>&1 &")})\
DOELSEIF ([FHEM.Alexa] eq "status") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa status > /dev/null 2>&1 &")})
attr FHEM.Alexa.DOIF room AlexaRoom

Zitat/dev/null 2>&1 &")})\
das wird ins "nichts" geleitet

ändere mal dein DOIF auf



([FHEM.Alexa] eq "start")
(set FHEM.Alexa on, "sudo /etc/init.d/alexa start")
DOELSEIF ([FHEM.Alexa] eq "stop")
(set FHEM.Alexa on, "sudo /etc/init.d/alexa stop")
DOELSEIF ([FHEM.Alexa] eq "restart")
(set FHEM.Alexa on, "sudo /etc/init.d/alexa restart")
DOELSEIF ([FHEM.Alexa] eq "status")
(set FHEM.Alexa on, "sudo /etc/init.d/alexa status")



mfg. m

Ma_Bo

NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.