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

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

Vorheriges Thema - Nächstes Thema

rudizone

#2625
OK super :) stimmt

dann liegt es doch nicht daran

In den Troubleshooting steht jedoch nur drin, Was ist zu tun, wenn Alexa zwar Geräte findet, diese aber nicht angesprochen werden können?

Mein Alexa Skill findet jedoch kein Gerät,

Alexa-FHEM jedoch schon.

amenomade

Über DynDNS kann es nur funktionieren wenn:
- der Port in der eigene Box freigegeben ist.
- man versucht von ausserhalb des internen Netzes, da meinste Router ein interne Verbindung über die öffentliche Adresse von sich selbst nicht erlauben

In andere Wörter: um die Verbindung von Alexa nach Hause zu prüfen, lieber mit einem Handy mit deaktivierten WLAN. Oder besuch mal deine Nachbarin ;)

Gruß
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

rudizone

Also bei dem Log auf AWS kommt was an, wenn ich Geräte auf dem iPhone suche.

kann man das hier Posten oder steht das was relevantes drin?

spion77

Hi

ERST MAL DANKE für das sehr gelungene SKILL und die ARBEIT

ich habe eine Frage zu den fhemIntents

ich wollte wie hier https://forum.fhem.de/index.php/topic,67490.0.html beschrieben testen ob das klappt
leider bekomme ich keine Ausgabe der Geräteliste ?  Kann mir da jemand helfen was ich da falsch mache ?

ich habe habe folgendes eingetragen

99myUtils.pm
sub
liste($)
{
  my($room) = @_;

  my @list = devspec2array("alexa=$room");
  return join(',', @list);
}


muss das alexaRoom heißen oder so wie mein alexa Raum heißt? also alexa ?

fhemIntens im alexa device
{liste($Room)}=welche geräte gibt es {preposition} {Room}

dann get alexa interactionModel

und alles in dem Custom Skill eingetragen der sieht so aus
{
  "intents": [
    {
      "slots": [
        {
          "name": "article",
          "type": "FHEM_article"
        },
        {
          "name": "Device",
          "type": "FHEM_Device"
        },
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        },
        {
          "name": "Brightness_Value",
          "type": "AMAZON.NUMBER"
        }
      ],
      "intent": "BrightnessIntent"
    },
    {
      "slots": [
        {
          "name": "article",
          "type": "FHEM_article"
        },
        {
          "name": "Device",
          "type": "FHEM_Device"
        },
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        },
        {
          "name": "grad_Value",
          "type": "AMAZON.NUMBER"
        }
      ],
      "intent": "gradIntent"
    },
    {
      "slots": [
        {
          "name": "article",
          "type": "FHEM_article"
        },
        {
          "name": "Device",
          "type": "FHEM_Device"
        },
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        },
        {
          "name": "On_Value",
          "type": "On_Value"
        }
      ],
      "intent": "OnIntent"
    },
    {
      "slots": [
        {
          "name": "article",
          "type": "FHEM_article"
        },
        {
          "name": "Device",
          "type": "FHEM_Device"
        },
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        },
        {
          "name": "Hue_Value",
          "type": "Hue_Value"
        }
      ],
      "intent": "HueIntent"
    },
    {
      "slots": [
        {
          "name": "article",
          "type": "FHEM_article"
        },
        {
          "name": "Device",
          "type": "FHEM_Device"
        },
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        },
        {
          "name": "Hue_ValueB",
          "type": "Hue_ValueB"
        }
      ],
      "intent": "HueIntentB"
    },
    {
      "slots": [
        {
          "name": "article",
          "type": "FHEM_article"
        },
        {
          "name": "Device",
          "type": "FHEM_Device"
        },
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        },
        {
          "name": "Saturation_Value",
          "type": "AMAZON.NUMBER"
        }
      ],
      "intent": "SaturationIntent"
    },
    {
      "slots": [
        {
          "name": "article",
          "type": "FHEM_article"
        },
        {
          "name": "Device",
          "type": "FHEM_Device"
        },
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        },
        {
          "name": "Saturation_ValueB",
          "type": "AMAZON.NUMBER"
        }
      ],
      "intent": "SaturationIntentB"
    },
    {
      "slots": [
        {
          "name": "article",
          "type": "FHEM_article"
        },
        {
          "name": "Device",
          "type": "FHEM_Device"
        },
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        },
        {
          "name": "prozent_Value",
          "type": "AMAZON.NUMBER"
        }
      ],
      "intent": "prozentIntent"
    },
    {
      "slots": [
        {
          "name": "article",
          "type": "FHEM_article"
        },
        {
          "name": "Device",
          "type": "FHEM_Device"
        },
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "TargetPosition_article",
          "type": "TargetPosition_article"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        },
        {
          "name": "TargetPosition_Value",
          "type": "TargetPosition_Value"
        }
      ],
      "intent": "TargetPositionIntent"
    },
    {
      "intent": "FHEMgutenMorgenIntent"
    },
    {
      "intent": "FHEMguteNachtIntent"
    },
    {
      "slots": [
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        }
      ],
      "intent": "FHEMperlCodeIntent"
    },
    {
      "slots": [
        {
          "name": "Device",
          "type": "FHEM_Device"
        },
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        }
      ],
      "intent": "StatusIntent"
    },
    {
      "slots": [
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        }
      ],
      "intent": "RoomAnswerIntent"
    },
    {
      "intent": "RoomListIntent"
    },
    {
      "slots": [
        {
          "name": "article",
          "type": "FHEM_article"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        }
      ],
      "intent": "DeviceListIntent"
    },
    {
      "intent": "AMAZON.CancelIntent"
    },
    {
      "intent": "AMAZON.StopIntent"
    }
  ]
}



beim test bekomme ich aber nur eine antwort mit der auflistung wenn ich frage
welche geräte gibt es

wenn ich frage welche geräte gibt es im Wohnzimmer
dann bleibt die Service Response mir die Antwort schuldig :-)
{
  "version": "1.0",
  "response": {
    "outputSpeech": {
      "type": "PlainText",
      "text": ""
    },
    "shouldEndSession": true
  },
  "sessionAttributes": {}
}




die sonstige Steuerung über den Custom Skill klappt ansonsten gut

Danke !

link611

Hi,

ich bin gerade dabei das Alexa Custom Skill anzulegen, jedoch bekomme ich bei den customSlotTypes aus FHEM keine Ergebnisse.

Wenn ich im Device auf get customSlotTypes klicke, passiert nichts und wenn ich es manuell eingebe, erhalte ich ein leeres Popup. Wo kann hier was fehlen?

spion77

den geräten alexaRoom und alexaName zugewiesen ?

link611

Zitat von: spion77 am 10 Mai 2017, 15:24:11
den geräten alexaRoom und alexaName zugewiesen ?

da steh' ich jetzt auf dem Schlauch, alexaRoom und alexaName hab ich bisher noch nicht verstanden  :-\ gibts da irgendwo etwas zum lesen?

spion77

#2632
Klar ,
https://wiki.fhem.de/wiki/Alexa-Fhem

du gehst auf deinen Schalter oder Actor

z.B zusätzlich den alexa raum angeben
attr Wohnzimmerlicht room Wohnzimmer,alexa

dann
attr Wohnzimmerlicht alexaRoom Wohnzimmer
und

attr Wohnzimmerlicht AlexaName Licht


speichern
ist nur ein beispiel

dann kannst du das get alexa customSlotTypes  absetzen und solltest deine devices sehen die dem Raum von alexa zugewiesen sind 

PS : schau mal in dein Postfach

link611

Zitat von: spion77 am 10 Mai 2017, 15:46:38
Klar ,
https://wiki.fhem.de/wiki/Alexa-Fhem

du gehst auf deinen Schalter oder Actor

z.B zusätzlich den alexa raum angeben
attr Wohnzimmerlicht room Wohnzimmer,alexa

dann
attr Wohnzimmerlicht alexaRoom Wohnzimmer
und

attr Wohnzimmerlicht AlexaName Licht


speichern
ist nur ein beispiel

dann kannst du das get alexa customSlotTypes  absetzen und solltest deine devices sehen die dem Raum von alexa zugewiesen sind 

PS : schau mal in dein Postfach


danke dir für die Erklärung und die PM!

hab aber noch einen grundsätzlichen Fehler gemacht, der Alexa Prozess lief noch nicht, nachdem der lief, bekomm ich zumindest erste Slottypes angezeigt =D

amenomade

#2634
@spion77
Zitatmuss das alexaRoom heißen oder so wie mein alexa Raum heißt? also alexa ?
Theoretisch kannst Du jeden attr alexaRoom abfragen. Dein alexa Raum "alexa" ist nur da, um im config.json die Geräte zu filtern, die von Alexa sichtbar seien sollten.

EDIT: teste erstmal deine Funktion im Fhem Eingabe Feld: {liste("irgendwelcherRaum")}
Kommt der erwartete Satz, den Alexa aussprechen soll? Bzw. wenn nix kommt, hat Alexa nix zu sagen.


Zitatund alles in dem Custom Skill eingetragen der sieht so aus
Hast Du auch die Sample utterances ins Skill importiert? Da zeigst Du nur den Interaktionsmodell.

Last but not least: hast Du alexa-fhem neu gestartet?

Gruß

EDIT: und noch was: bei mir, muss ich bei jeder Änderung des Skills in der alexa APP (oder über die Webseite alexa.amazon.com) den Skill mit meinem Konto wieder verlinken.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

spion77

hi, danke für deine Antwort

ja steht drinne
Sample Utterances
FHEMperlCodeIntent welche geräte gibt es {preposition} {Room}

Alexa ist auch neu gestartet und der Skill auch verlinkt ( muss es auch immer mal wieder neu machen) wenn ich es ändere

amenomade

Und was liefert FHEM wenn Du {liste("Wohnzimmer")} eingibst?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

link611

So, hab' noch ein Problem beim alexa Service

/etc/default/alexa

ALEXA_OPTS=-U /home/pi/.alexa


/etc/systemd/system/alexa.service
[Unit]
Description=Node.js Alexa Server
After=syslog.target network-online.target

[Service]
Type=simple
User=pi #oder ein anderer Benutzer wie fhem
EnvironmentFile=/etc/default/alexa
# oder wo auch immer eure alexa-fhem liegt
ExecStart=/opt/fhem/alexa-fhem/bin/alexa $ALEXA_OPTS
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target



Der Prozess soll als User pi laufen, wenn ich ihn starte, bekomme ich keine Rückmeldung, wenn ich den status abfrage bekomme ich folgende Meldung:
sudo systemctl status alexa
● alexa.service - Node.js Alexa Server
   Loaded: loaded (/etc/systemd/system/alexa.service; enabled)
   Active: activating (auto-restart) (Result: exit-code) since Mi 2017-05-10 16:45:58 CEST; 3s ago
  Process: 29678 ExecStart=/opt/fhem/alexa-fhem/bin/alexa $ALEXA_OPTS (code=exited, status=217/USER)
Main PID: 29678 (code=exited, status=217/USER)

Mai 10 16:45:58 fhem3 systemd[1]: Unit alexa.service entered failed state.



Eine Log wird zu dem Zeitpunkt noch nicht angelegt.

Ich denke irgendwo passt was mit dem User noch nicht, aber wo?

spion77

@amenomade

du meinst einfach in dem eingabefeld oben im FHEM ?

da kommt garnichts zurück

rudizone

Hat keiner ne Idee, die Alexa App findet unter Smart Home einfach keine Geräte,

Wenn ich auf Suchen Klicke werden Einträge in dem AWS Log geschrieben. aber es wird nichts Angezeigt.

Auf dem FHEM Server Läuft der Prozess ohne Fehler.

komme hier kein Stück weiter  :'(