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

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

Vorheriges Thema - Nächstes Thema

justme1968

@a4f, cyvr1: die nächste version wird konfigurierbare abfragen enthalten. die werden auch raum oder typ basiert gehen.

@rizo,vbs: zu den abkürzungen: laut api dokumentation müssen abkürzungen mit punkt zwischen den buchstaben geschrieben werden damit alexa sie versteht. imn erkannten text wird die abkürzung aber dann ohne die punkte geschickt. d.h. im alexaMapping müssen die werte mit punkt geschrieben werden, danach in der app oder in der konsolen ausgabe schauen was tatsächlich als erkanntes wort geschickt wird und dieses dann im homebridgeMapping verwenden um auf den wert zu kommen der dann im set kommando an fhem verwendet wird.

@vbs:
ZitatAber was ist der Unterschied zwischen dem Parameter "<cmd>:<device>:<reading>" und dem Parameter "cmd=<wert>". Beide legen ja das cmd fest?!
du hast die wahl was gerade besser passt, kürzer ist oder dir übersichtlicher erscheint.

das reading ist da damit alexa-fhem (und homebridge-fhem) per longpoll immer über den aktuellen zustand informier sind. es wird zu keiner zeit aktiv per get ein wert abgefragt. das wäre zum einen langsamer und zum anderen haben nicht alle devices überhaupt passende get kommandos. ausserdem kann bei homebridge-fhem der status so aktiv von fhem bis zur iOS message gepushed werden. rein event basiert ohne pollen.

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

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

vbs

Sorry da muss ich direkt weiter nachfragen  :-\

Zitat von: justme1968 am 13 Februar 2017, 16:44:29
@rizo,vbs: zu den abkürzungen: laut api dokumentation müssen abkürzungen mit punkt zwischen den buchstaben geschrieben werden damit alexa sie versteht. imn erkannten text wird die abkürzung aber dann ohne die punkte geschickt.
Genauso hatte ich das auch verstanden in der Doku. Ich hatte hier (https://forum.fhem.de/index.php/topic,66946.0.html) schonmal beschrieben, dass meiner Meinung nach alexa trotzdem die Form MIT Punkten im Request verschickt, was ich nicht verstehe. Hab in der Doku auch schon gesehen, dass nach dem Punkt noch ein Leerzeichen gemacht wird "t. v.", was mich noch mehr verwirrt hat. Weiß aber nicht, ob das relevant ist.

Zitat von: justme1968 am 13 Februar 2017, 16:44:29
d.h. im alexaMapping müssen die werte mit punkt geschrieben werden, danach in der app oder in der konsolen ausgabe schauen was tatsächlich als erkanntes wort geschickt wird und dieses dann im homebridgeMapping verwenden um auf den wert zu kommen der dann im set kommando an fhem verwendet wird.
Meinst du wirklich im homebridgeMapping? Ich hab da in der Doku nichts gefunden, wie man da die Werte mappen könnte?
die folgende parameter namen sind für die richtung homebridge -> fhem möglich:
delay: true/<number> -> der wert wird nach <number>ms inaktivität an fhem gesendet. true -> 1000.
maxValue: maximal wert in homekit
max: maximal wert in fhem  wenn er von maxValue abweicht
invert: invertiert den homekit wert
cmd: das set kommando das verwendet werden soll: set <device> <cmd> <value>
cmdOn, cmdOff: die kommandos die für on/off bzw. true/false verwendet werden sollen
(cmdLock, cmdUnlock, cmdOpen: die kommandos zum verschliessen, aufschliessen und öffnen einer tür)
cmds: eine mit ; unterteilte list aus <von>:<nach> werte paaren die das mapping von homekit werten auf fhem kommandos beschreibt:
<von> kann ein wert oder eine in HomeKitTypes.js deklarierte konstante der characteristic sein
<nach> ist das zu verwendende set kommando


Ich dachte jedoch, dass man im alexaMapping die Werte mappen kann, darum hab ich da sowas drin:
AvrInput=verb=stelle,property=eingang,valuePrefix=auf,values=p.c.:av1;t.v.:hdmi1;h.t.p.c.:hdmi2;konsole:hdmi3
Aber diese Mappings wurden komplette ignoriert, aber nur bei Abkürzungen (hatte ich auch in dem anderen Thread beschrieben)! Wenn ich "konsole" sage, dann wird das korrekt auf "hdmi3" gemappt.

rizo

Hm also Alexa erkennt zb rtl als r. t. l. also mit leerzeichen. Aber das kann man ja so nicht umsetzen oder?

rizo

Hat eigentlich schon jemand eine Steuerung von einem Raspi Squeezeserver geschafft?

Ma_Bo

#1984
@rizo: bei mir funktioniert das wunderbar mit a. r. d. oder r. t. l.

Aber nicht mit dem Smart Home Skill, nur mit dem Custom Skill !

Ich habe mir einen dummy mit

define Fernseher_ARD dummy
attr Fernseher_ARD alexaName a. r. d.
attr Fernseher_ARD genericDeviceType switch
attr Fernseher_ARD room Alexa
attr Fernseher_ARD setList on off


angelegt und kann diesen wunderbar mit Alexa ein bzw. aus schalten.


Zitat"Alexa sage Fernseher schalte ARD ein"

Grüße Marcel
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.

vbs

Zitat von: Ma_Bo am 13 Februar 2017, 18:54:26
@rizo: bei mir funktioniert das wunderbar mit a. r. d. oder r. t. l.
Evtl. kannst du auch hier etwas dazu sagen?
https://forum.fhem.de/index.php/topic,66946.0.html

In dem Fall würde ich die Abkürzung in einem Custom Slot nutzen wollen und der Wert soll dann durch alexaMapping gemappt werden.

rizo

Zitat von: Ma_Bo am 13 Februar 2017, 18:54:26
@rizo: bei mir funktioniert das wunderbar mit a. r. d. oder r. t. l.

Aber nicht mit dem Smart Home Skill, nur mit dem Custom Skill !

Ich habe mir einen dummy mit

define Fernseher_ARD dummy
attr Fernseher_ARD alexaName a. r. d.
attr Fernseher_ARD genericDeviceType switch
attr Fernseher_ARD room Alexa
attr Fernseher_ARD setList on off


angelegt und kann diesen wunderbar mit Alexa ein bzw. aus schalten.


Grüße Marcel


D.h. ich muss für jeden Sender den er falsch versteht Ard ZDF RTL RTL2 jeweils einen Dummy machen? Richtig?

Prof. Dr. Peter Henning

Das Problem ist, dass im AWS kein Datentyp für die Sender existiert - allerdings gibt es natürlich einen nummerischen Datentyp. Man kann also problemlos mit einem einzelnen Dummy realisieren

"Alexa, sage dem Fernseher Kanal <kanalnummer>"

LG

pah

franky08

#1988
Ich hab das auch mit dem smart home skill und dummy laufen, allerdings statt ARD hat der dummy den Namen "Erste", den Artikel setzt Alexa wahrscheinlich selbst davor, funktioniert und aus RTL mache "ertee el", geht auch  ;)

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

rizo

Habe es jetzt im moment mit Zahlen gemacht. Alexa stelle Sender auf 1 etc...

mich wundert: ich habe ein custom Skill extra für tv gemacht. Ich musste immer sagen alexa sag t.v. stelle Sender auf 1

jetzt geht aber auch Alexa stelle Sender auf 1. Hat Alexa das jetzt schnell gelernt oder wie?

TWART016

Bei mir kommt im Log folgender Fehler:

[2017-02-13 19:53:54] [ 'amzn1.ask.skill.*******-.*******--.*******--.*******--.*******-' ]
[2017-02-13 19:53:54] applicationId amzn1.ask.skill..*******--.*******--.*******--.*******--.*******-not authorized
[2017-02-13 19:53:54] ERROR: InvalidAccessTokenError from ::ffff:34.250.174.20
response :{"header":{"name":"InvalidAccessTokenError","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":".*******--.*******--.*******--.*******--.*******-"},"payload":{}}
[2017-02-13 19:53:54] [ 'amzn1.ask.skill.0db53aa1-.*******--.*******--.*******--.*******-' ]
[2017-02-13 19:53:54] applicationId amzn1.ask.skill..*******--.*******--.*******--.*******--.*******-not authorized
[2017-02-13 19:53:54] ERROR: InvalidAccessTokenError from ::ffff:34.250.174.20


Bei applicationID habe ich den Wert von Custom Skills Kit gesetzt (die applicationID vom Smart Home Skill ist nicht mehr drin).

vbs

Zitat von: rizo am 13 Februar 2017, 20:05:49
Alexa stelle Sender auf 1 etc...
Kannst du mal das Intent dazu posten bitte? Ist ja schön kurz, gefällt mir.

rizo

{
         "slots" : [
            {
               "type" : "FHEM_article",
               "name" : "article"
            },
            {
               "type" : "FHEM_Device",
               "name" : "Device"
            },
            {
               "type" : "FHEM_preposition",
               "name" : "preposition"
            },
            {
               "type" : "FHEM_Room",
               "name" : "Room"
            },
            {
               "type" : "Aktion_Value",
               "name" : "Aktion_Value"
            }
         ],
         "intent" : "AktionIntent"
      },




Aktion_Value
  acht
  drei
  eins
  fünf
  neun
  sechs
  sieben
  vier
  zehn
  zwei


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}

Det20

Ist vielleicht eine blöde Frage und wurde schon an einer Stelle beantwortet, die ich noch nicht gefunden habe. Aber wie trennt man beim alexaNamen die Wörter voneinander? Also "Licht Keller" und "Licht Küche"? Einfach ein Leerzeichen? Oder ein Punkt? Oder in Anführungszeichen? Und: Ist Groß-/Kleinschreibung egal?

cyvr1

Hallo Det20,

Leerzeichen funktioniert bei mir sehr gut und keine Anführungszeichen.
Groß- und Kleinschreibung ist egal. Ich habe mir alles klein geschrieben.

Grüße
Stephan Krätzschmar


Gesendet von meinem LG-H960 mit Tapatalk

----------
Stephan Krätzschmar