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

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

Vorheriges Thema - Nächstes Thema

Schnabelowski

#3555
Zitat von: Catinor am 20 Januar 2018, 13:07:13
Dreambox-Sender umschalten mach ich hiermit. Richtig glücklich bin ich allerdings nicht. Das Problem ist das zu gute Mic des Echo Dot: wenn ein TV-Sprecher spricht, hört Alexa das auch und das stört immer mal wieder die Erkennung.

Perl-Code für *utils.pm:

sub alexa_tv_switch($) {
my ($station) = @_;
my %stations = (
"schweiz eins" => "SRF_1_HD",
"schweiz zwei" => "SRF_zwei_HD",
"ard" => "Das_Erste_HD",
"zdf" => "ZDF_HD",
# usw. alle Sender zu Enigma-Kanälen zuordnen
                "senderXY"              => "XY"
);
$station = lc($station);
fhem("set Dreambox channel $stations{$station}");
return "";
}


Und für Alexa-Customskill:

      {
        "name": "SwitchAction",
        "values": [
          {
            "id": null,
            "name": {
              "value": "schalte",
              "synonyms": [
                "zappe",
                "wechsle",
                "switsche"
              ]
            }
          }
        ]
      },
      {
        "name": "TvStations",
        "values": [
          {
            "id": null,
            "name": {
              "value": "schweiz eins",
            }
          },
          {
            "id": null,
            "name": {
              "value": "schweiz zwei",

...

            }
          }
       ]
     }

...
      {
        "name": "FHEMperlCodeIntentG",
        "samples": [
          "{switch} auf {station} um",
          "{switch} um auf {station}",
          "{switch} auf {station}",
          "auf {station}"
        ],
        "slots": [
          {
            "name": "station",
            "type": "TvStations",
            "samples": [
              "{station}"
            ]
          },
          {
            "name": "switch",
            "type": "SwitchAction"
          }
        ]
      },

Coll,...danke dir. Werde es ausprobieren.[emoji106]

@Joachim


im Post #13  aus deinem Link habe ich  guten Beispiel gefunden den ich auch nachbauen und ausprobieren

LG
Peter
Igel Debian/Fhem Cul HMlan

reifei

Hallo zusammen,

Habe mithilfe des Wiki/ Forum nun doch noch den CustomSkill zum Laufen gebracht.
Beim interaction model blick ich aber einfach nicht durch.

Was ich erreichen möchte:

den dummy fenster


define fenster dummy
attr fenster alexaName fenster
attr fenster genericDeviceType switch
attr fenster room alexa
attr fenster setList on off
attr fenster webCmd on:off


mit der Anweisung   "Alexa, sage james mach fenster auf"     den dummy ON schalten
mit der Anweisung   "Alexa, sage james mach fenster zu"      den dummy OFF schalten


Was ich versucht habe:


Intent Schema

{
  "intents": [
    {
      "slots": [
        {
          "name": "Device",
          "type": "FHEM_Device"
        },
        {
          "name": "TargetPosition_Value",
          "type": "TargetPosition_Value"
        }
      ],
      "intent": "MyPosIntent"
    },
    {
      "intent": "AMAZON.CancelIntent"
    },
    {
      "intent": "AMAZON.StopIntent"
    }
  ]
}


Custom Slot Types

FHEM_Device fenster
TargetPosition_Value auf | zu



Sample Utterances

MyPosIntent mach {Device} {TargetPosition_Value}


alexaMapping

MyPos=verb=mach,values=on:auf;off:zu




Als Antwort kommt "Ich kann fenster nicht auf undefined schalten. undefined gemacht"


Bin dankbar für jede Hilfe!
LG
Reini

steve6502

#3557
Hab das Problem das meine Lambda Funktion einfach nicht getriggert wird.

Beide skills (smart home und custom) hab ich erzeugt und passend konfiguriert, konto verknüpfung klappt auch, aber die Geräte Suche bringt kein Ergebnis. Die Lambda Function wird nicht gerufen (im CloudWatch nachgeschaut), dem entsprechend kommt zu Hause bei alexa-fhem auch nix an.

Wenn ich in der Lambda Konsole direkt teste, kommt ein Request bei alexa-fhem an.

Irgendeine Idee? Wie kann man das Debuggen, wo seh ich denn was der Skill macht?

Ach ja vergessen: die ha-bridge läuft auch noch lokal. Deren Geräte werden gefunden. Nur die über den FHEM Smarthome skill nicht

Gruß Stefan


cozwei

Hi

@justme1968: Danke für Deine tolle Arbeit. Gibt es die eigentlich auf github, das man contributen könnte?

ich komme irgendwie gerade nicht weiter. Mittlerweile habe ich es geschafft meinen Custom Skill einzurichten. Aber ich schaffe es nicht das ich meine Rolladen damit fahren kann. Dazu muss ich sagen, es ist ein uralter Aktor. Der kann nicht auf eine bestimmte Position fahren, sondern wie bei einem Schalter nur rauf und runter, ausserdem zusätzlich stop.

Ich versuche jetzt über den OnIntent das Rollo zu fahren, aber bekomme das leider nicht hin. Es scheitert am HomebridgeMapping wo ich einfach mal für ein funktionierendes Beispiel dankbar wäre:

Debug alexa-fhem:

"status":{"code":"ER_SUCCESS_MATCH"},"values":[{"value":{"name":"runter","id":"XXXXXXXXXXXXX0axxxxxxxxxx"}}]}]},"confirmationStatus":"NONE"},"Room":{"name":"Room","value":"wohnzimmer","resolutions":{"resolutionsPerAuthority":[{"authority":"amzn1.er-authority.echo-sdk.amzn1.ask.skill.XXXXXXX-XXX-XXXXXXXXXXXXXXXXXX-.FHEM_Room","status":{"code":"ER_SUCCESS_MATCH"},"values":[{"value":{"name":"wohnzimmer","id":"XXXXXXXXXXXXXXXXx"}}]}]},"confirmationStatus":"NONE"},"Device":{"name":"Device","value":"Rollo","resolutions":{"resolutionsPerAuthority":[{"authority":"amzn1.er-authority.echo-sdk.amzn1.ask.skill.XXXXXXXXX-XXXXXX-XXXXX-XXXXXXX-XXXXXXXXX.FHEM_Device","status":{"code":"ER_SUCCESS_MATCH"},"values":[{"value":{"name":"rollo","id":"XXXXXXXXXXXXXXXXXXX"}}]}]},"confirmationStatus":"NONE"},"article":{"name":"article","value":"das","resolutions":{"resolutionsPerAuthority":[{"authority":"amzn1.er-authority.echo-sdk.amzn1.ask.skill.XXXXXXXXX-XXXXXX-XXXXX-XXXXXXX-XXXXXXXXX.FHEM_article","status":{"code":"ER_SUCCESS_MATCH"},"values":[{"value":{"name":"das","id":"XXXXXXXXXXXXXXX"}}]}]},"confirmationStatus":"NONE"}}}}}
[2018-1-31 21:59:08] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%201;;undef%7D;setreading%20MyAlexa%20consentToken%20undefined;%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%200;;undef%7D&XHR=1
[2018-1-31 21:59:08] OnIntentB
[2018-1-31 21:59:08] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%201;;undef%7D;setreading%20MyAlexa%20intent%20IntentRequest%20OnIntentB;%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%200;;undef%7D&XHR=1
[2018-1-31 21:59:08] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%201;;undef%7D;setreading%20MyAlexa%20echoId%20amzn1.ask.device.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%200;;undef%7D&XHR=1
[2018-1-31 21:59:08] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%201;;undef%7D;setreading%20MyAlexa%20echoRoom%20unknown;%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%200;;undef%7D&XHR=1
response :{"version":"1.0","sessionAttributes":{},"response":{"outputSpeech":{"type":"PlainText","text":"Ich kann das Gerät mit Namen rollo nicht runterschalten."},"shouldEndSession":true}}


MyAlexa:
alexaMapping
#Characteristic=<name>=<value>,...
On=verb=schalte,valueOn=an;ein;auf;rauf fahren;öffnen,valueOff=aus;zu;runter lassen;runter fahren;schliessen;schliesse,valueToggle=um
On=verb=fahre,valueOn=rauf,valueOff=runter,valueToggle=wechsel

Brightness=verb=stelle,property=helligkeit,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent

Hue=verb=stelle,valuePrefix=auf,values=rot:0;grün:128;blau:200
Hue=verb=färbe,values=rot:0;grün:120;blau:220

Saturation=verb=stelle,property=sättigung,valuePrefix=auf,values=AMAZON.NUMBER
Saturation=verb=sättige,values=AMAZON.NUMBER

TargetPosition=verb=mach,articles=den,values=auf:100;zu:0
TargetPosition=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent

TargetTemperature=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=grad

Volume:verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent

#Weckzeit=verb=stelle,valuePrefix=auf;für,values=AMAZON.TIME,valueSuffix=uhr


homebridgeMapping
onValue=off g1,offValue=on g1


Device JalousieWohnzimmer:
defmod JalousieWohnzimmer EIB 1/0/2 1/0/3
attr JalousieWohnzimmer IODev tul
attr JalousieWohnzimmer alexaName rollo
attr JalousieWohnzimmer alexaRoom wohnzimmer
attr JalousieWohnzimmer devStateIcon .*Auf:shutter_1 .*Ab:close
attr JalousieWohnzimmer eventMap /on g2:Stop/on g1:Auf/off g1:Ab/
attr JalousieWohnzimmer genericDeviceType light
attr JalousieWohnzimmer icon shutter_1
attr JalousieWohnzimmer model percent
attr JalousieWohnzimmer room alexa,Rollos,Wohnzimmer
attr JalousieWohnzimmer webCmd Ab:Stop:Auf

setstate JalousieWohnzimmer Auf
setstate JalousieWohnzimmer 2018-01-31 20:57:33 state on g1




Im Prinzip brauche ich ein Mapping, das bei

OnValue cmd=set JalousieWohnzimmer On=g1 und bei OffValue cmd=set JalousieWohnzimmer Off=g1

ausführt.

Wäre super wenn mir einer mal auf die Sprünge hilft :).

Danke
Sebastian

OliWee

Hi zusammen...

Liefert Alexa eigentlich in irgendeiner Form mit, welcher meiner Echos die Anfrage gestellt hat?
Falls ja, könnte man ja je nach Echo bei derselben Abfrage unterschiedliche Aktionen ausführen.
Beispiel:
Wenn ich in der Küche stehe und sage "Alexa mach das Licht an", will ich, dass in der Küche das Licht angeht. Dasselbe im Wohnzimmer soll natürlich das Wohnzimmerlicht anmachen, usw...

justme1968

nur im custom skill.

im smart home skill machst du das über gruppen in der alexa app. jeweils die lampen und den jeweiligen echo zusammen in eine gruppe.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

cozwei

Ist meine Frage zu komplex? Funktioniert das überhaupt was ich vorhabe? Ich wundere mich das ich keine Antwort bekomme in einem Thread mit 238 Seiten  :'( :(

justme1968

On ist nur dazu dinge ein und aus zu schalten und kann nicht auf irgendetwas anderes umgebogen werden.

nimm das rolladen beispiel mit TargetPosition  und passe es an. entweder in dem du den auf/zu teil anpasst, oder in dem du mit cmdalias die % werte auch in das nächst gelegene auf/zu verwandelst oder vermutlich am besten mit dem ROLLO modul aus dem wiki in dem du deinem rolladen die % werte über die zeit beibringst.

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

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

Reinhart

Zitat von: cozwei am 07 Februar 2018, 00:43:23
Ist meine Frage zu komplex? Funktioniert das überhaupt was ich vorhabe? Ich wundere mich das ich keine Antwort bekomme in einem Thread mit 238 Seiten  :'( :(

Ich habe auch einen Rollladenschalter der nur Ein oder Ausschalten kann, daher habe ich das auch als Schalter definiert und benutze den Standardskill. das es keine Rückmeldungen über die Stellung gibt kannst auch nicht mehr machen damit.

Alexa, schalte den Rollladen ein (dann fährt er hoch) , oder Alexa, schalte den Rollladen aus (dann fährt er herunter), das funktioniert immer und ich brauche kein Mapping was mich ohnehin stört weil ich ständig den Skillnamen nennen muss.

Ansonten auf HM wechseln und du wirst glücklich, hier gibt es genug Beispiele dafür.

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Rothammel

im wiki muss unbedingt dieser Part angepasst werden:

Ob Dummy oder nicht, wichtig sind die drei fett gedruckten Zeilen

define Alexa.Party dummy
attr Alexa.Party alexaName party
attr Alexa.Party alexaRoom alexaroom
attr Alexa.Party genericDeviceType switch
attr Alexa.Party group AlexaGeräte
attr Alexa.Party room AlexaRoom
attr Alexa.Party setList on off

denn genauso wichtig ist auch ein on off.
ich habe mich dusselig gesucht und probiert, ehe ich raus gefunden habe, dass alexa Geräte ohne on off einfach nicht findet.

TottiToad

Hi,

es gibt ja jetzt so einige Threads bzgl. Alexa und dem drum herum und irgendwie bin ich mir nicht sicher wie ich jetzt genau vorgehen soll/kann.


Ich hatte auf meiner alten FHEM Installation schon Alexa am laufen und somit den Alexa Still und einen Alexa Custom Still angelegt. Diese sind ja nach wie vor auf der development Seite verfügbar.


Jetzt läuft ja seit einiger Zeit bei eine neue FHEM Installation bei mir und ich baue nach und nach alles neu auf.

- Welche Version muss bzw. sollte ich jetzt installieren ? alexa-fhem-0.3.4.tgz ?
oder direkt auf die alexa-fhem-0.4.4.tgz ?

- Hab es so verstanden, das wenn man bisher keinen Custom Skill angelegt hatte, dass man dann die api3 Version nehmen muss ?
Da aber schon ein Still vorliegt scheint dies nicht notwenig zu sein.

Wie gehe ich jetzt am besten vor ?

Grüße & Danke
Torsten

steve6502

Ich denke Du kannst den alten SmartHome-Skill weiter verwenden, Du musst eben in der Lambda Funktion den Hostname und Port, der auf deine lokale alexa-fhem instanz zeigt, ändern.

Und sicherlich ist es ratsam eine Update auf die 0.4.4 zu machen. So läuft es bei mir jedenfalls problemlos.

Gruß S.

MadMax-FHEM

Zitat von: steve6502 am 09 Februar 2018, 15:11:46
Ich denke Du kannst den alten SmartHome-Skill weiter verwenden, Du musst eben in der Lambda Funktion den Hostname und Port, der auf deine lokale alexa-fhem instanz zeigt, ändern.

Sollte sich nichts ändern, denn der Zugang "von außen" wird der selbe bleiben, Portforwarding muss halt auf die neue Instanz von alexa-fhem (falls sich die IP geändert hat) umgestellt werden...


Zitat von: steve6502 am 09 Februar 2018, 15:11:46
Und sicherlich ist es ratsam eine Update auf die 0.4.4 zu machen. So läuft es bei mir jedenfalls problemlos.

Jep hab ich auch.

Wenn du einen neuen Skill anlegst, musst du auf 0.4.4 gehen (V3 API) wenn du bereits einen Skill hast kannst du auf 0.4.4 gehen (und später einen neuen Skill V3 anlegen).
Für "vollste Funktionalität" musst du allerdings beides tun: 0.4.4 alexa-fhem und V3 Skill...

Gruß, Joachim
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)

steve6502

Hat sich eigentlich mal jemand überlegt den SmartHome Skill für FHEM offiziell zu hosten und mit Hilfe der Account-Verknüpfung der "EINEN" lambda function, die es dann braucht, einen lookup und einen Dispatcher für den Call einzubauen.

Dann bräuchte nicht mehr jeder einen separaten Skill anlegen mit dem ganzen gefrickel. Voraussetzung wäre allerdings, dass Amazon das zertifiziert und irgend jemand die Kosten trägt (falls das irgendwann Geld kostet, was sicherlich der Fall ist, wenn genug Traffic darüber geht).

Gruß S.

MadMax-FHEM

Zitat von: steve6502 am 09 Februar 2018, 15:27:14
Hat sich eigentlich mal jemand überlegt den SmartHome Skill für FHEM offiziell zu hosten und mit Hilfe der Account-Verknüpfung der "EINEN" lambda function, die es dann braucht, einen lookup und einen Dispatcher für den Call einzubauen.

Dann bräuchte nicht mehr jeder einen separaten Skill anlegen mit dem ganzen gefrickel. Voraussetzung wäre allerdings, dass Amazon das zertifiziert und irgend jemand die Kosten trägt (falls das irgendwann Geld kostet, was sicherlich der Fall ist, wenn genug Traffic darüber geht).

Gruß S.

Gesucht (alexa fhem offiziell) und gefunden:

https://forum.fhem.de/index.php/topic,82860.msg749944.html#msg749944

Gruß, Joachim
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)