[alexa-fhem | Custom Skills] Probleme mit euren Setups

Begonnen von prodigy7, 19 Februar 2017, 13:16:06

Vorheriges Thema - Nächstes Thema

justme1968

wenn du nur eine ipv6 adresse hast reicht einfaches dyndns nicht. du brauchst vor allem einen ipv6/ipv6 proxy. im anderen thread gibt es ein paar beispiele.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

waschbaerbauch

#16
Ich dachte ich könnte mir selbst helfen, aber ich muss euch doch wieder fragen..

Nachdem ich mir nun auch ein Amazon Echo zugelegt hab und Tutorials durchgearbeitet es einzurichten bin ich eigentlich zufrieden - fast..

Alexa startet, Alexa findet Geräte und kann auch Lampen, Rollladen, MiLight, FS20 schalten und dimmen.

Jetzt kam die 'Kür' mit den custom skills. Ich hab das FHEM-Alexa Wiki versucht abzuarbeiten und renne wieder und wieder an immer der gleichen Stelle vor die Wand.

Alle Einträge funktionieren, bis ich zu zwei Zeilen komme:
TargetPositionIntent mach {TargetPosition_article} {Device} {TargetPosition_Value}
TargetPositionIntent mach {TargetPosition_article} {Device} {preposition} {Room} {TargetPosition_Value}


Bei diesen beiden Zeilen meldet es beim speichern immer:
Error: There was a problem with your request: Unknown slot name '{TargetPosition_article}'. Occurred in sample 'TargetPositionIntent mach {TargetPosition_article} {Device} {TargetPosition_Value} ' on line 49.

'TargetPosition_article' ist aber darüber als TYPE definiert und auch wenn man stattdessen 'TargetPOS_article' als Namen anlegt oder  auch den kompletten Skill erneut erstellt kommt immer wieder die gleiche Meldung. Manchmal sieht man ja den Wald vor lauter Bäumen nicht, ich hoffe hier gibt es einen Waldarbeiter der mit hilft das Brett vorm Kopf zu entfernen.

Vielen Dank schon mal vorab!

Edit: Wenn ich die beiden Zeilen entferne kann ich abspeichern und bekomme keine Fehlermeldung, nur ja leider auch nicht das was gewollt ist.
Wenn ich sie nach dem speichern wieder einsetze, dann ist der Fehler wieder existent. Ich gehe mal davon aus das der Slot ja beim ersten speichern mit angelegt wurde und somit beim wieder einfügen verfügbar sein sollte. Ich versteh es einfach nicht ..

waschbaerbauch

Ok mir scheint ich konnte es auflösen, das Problem war der copy/paste Teil:

Hier fehlte ihm anscheinend die Einbindung des 'TargetPosition_article' im Intent Schema

    {
      "slots": [
        {
          "name": "article",
          "type": "FHEM_article"
        },
        {
          "type": "FHEM_Device",
          "name": "Device"
        },
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "type": "FHEM_Room",
          "name": "Room"
        },
        {
          "type": "TargetPosition_Value",
          "name": "TargetPosition_Value"
        },
{
          "type": "TargetPosition_article",
          "name": "TargetPosition_article"
        }
      ],
  "intent": "TargetPositionIntent"
    },

MaMi7880

Hallo,

ist mir auch aufgefallen. Ich habe
{
          "name": "article",
          "type": "FHEM_article"
        },


durch
{
          "type": "TargetPosition_article",
          "name": "TargetPosition_article"
        },


ersetzt.

Gruß
Manuel
RaspberryPi 3 mit nanoCUL & JeeLink | FHEM 6.0 mit IT, HM  - Sensoren/Aktoren & Lacrosse Temp./Humi. | Shelly | Amazon Echo | Logitech Harmony Hub | Philips HUE | andFHEM

schtanzerl

Hallo Forum,

ich habe nach einigen Stunden die Grundlagen des Custom Skills verstanden. Ich kann mittlerweile meine Hue Lampen und Squeezebox einschalten und auch die Sonderbefehle zum Farbwechsel verwenden. Eine Sache verstehe ich allerdings nicht. Wenn ich den Custom Skill aufrufe und Alexa den Befehl sage, muss ich zwingend den Raum mitnennen. Tue ich das nicht, antwortet Alexa "Ich habe kein Gerät testlampe im Raum unknown gefunden". Woran kann das liegen? In den Utterances sehe ich ja eigentlich, dass es auch ohne den Raum gehen müsste. Danke für eure Hinweise!

waschbaerbauch

Nachdem ich den Custom Skill eingerichtet hab läuft schon eine ganze Menge. Mir ist gestern aufgefallen das ich bei der Abfrage des Status eines LaCrosse TFA Geräts abfrage nur die Temperatur und der Batterielevel angesagt wird. Kann man hier ggf. auch die relative Luftfeuchte mit ausgeben lassen?

Gruß
Mario

Laire

#21
Hallo,

ich versuche gerade mit meinem Custom Skill die Lautstärke meiner Anlage zu regeln (lauter, leiser).

Dafür habe ich ein Dummy angelegt, welcher mithilfe von Notifys das ganze schon erledigt, wenn ich das ganze über das Webinterface bediene. Mein Dummy:
defmod TV_VOL dummy
attr TV_VOL alexaName Ton
attr TV_VOL alias Ton
attr TV_VOL devStateIcon lauter:remotecontrol/black_btn_VOLUP leiser:remotecontrol/black_btn_VOLDOWN
attr TV_VOL eventMap on:lauter off:leiser
attr TV_VOL room alexa
attr TV_VOL setList lauter leiser
attr TV_VOL webCmd lauter:leiser


Bei Alexa Mapping habe ich eingetragen (alle anderen Einträge auskommentiert):

Ton=verb=schalte,valueOn=lauter,valueOff=leiser

Habe mir dann Intent Schema, Custom Slot Types (interactionModel und customSlotTypes) und Sample Utterances im Skill eingetragen.

Bei der Skill Erstellung kommt kein Fehler. Aktivierungswort ist Fernbedienung.

Wenn ich jetzt sage:
Zitatalexa sage fernbedienung schalte ton lauter
bekomme ich als Antwort:
ZitatIch kann ton nicht auf lauter schalten. lauter geschaltet

Bei alexa-fhem sieht das ganze so aus:
Zitat
[2017-05-03 04:00:06] perfectOfVerb:
[2017-05-03 04:00:06] { stelle: 'gestellt',
  schalte: 'geschaltet',
  'färbe': 'gefärbt',
  mach: 'gemacht' }
[2017-05-03 04:00:06] verbsOfIntent:
[2017-05-03 04:00:06] [ TonIntent: [ 'schalte' ] ]
[2017-05-03 04:00:06] characteristicsOfIntent:
[2017-05-03 04:00:06] { TonIntent: [ 'Ton' ] }
[2017-05-03 04:00:06] prefixOfIntent:
[2017-05-03 04:00:06] { TonIntent: undefined }
[2017-05-03 04:00:06] suffixOfIntent:
[2017-05-03 04:00:06] { TonIntent: undefined }
[2017-05-03 04:00:06] alexaTypes:
[2017-05-03 04:00:06] {}
[2017-05-03 04:00:06] roomOfEcho:
[2017-05-03 04:00:06] {}
[2017-05-03 04:00:06] fhemIntents:
[2017-05-03 04:00:06] {}
**** Received Directive: {"version":"1.0","session":{"new":true,"sessionId":"amzn1.echo-api.session.bcfd4934-a126-4fae-b0de-62aa73a50d27","application":{"applicationId":"amzn1.ask.skill.f6e26963-fd0d-4744-a6ba-137fa4e12943"},"user":{
[...]
"supportedInterfaces":{"AudioPlayer":{}}},"apiEndpoint":"https://api.eu.amazonalexa.com"}},"request":{"type":"IntentRequest","requestId":"amzn1.echo-api.request.e4c92d84-5f70-4bec-8404-8fbffdc87887","timestamp":"2017-05-03T02:03:03Z","locale":"de-DE","intent":{"name":"TonIntent","confirmationStatus":"NONE","slots":{"preposition":{"name":"preposition","confirmationStatus":"NONE"},"Room":{"name":"Room","confirmationStatus":"NONE"},"Device":{"name":"Device","value":"ton","confirmationStatus":"NONE"},"article":{"name":"article","confirmationStatus":"NONE"},"Ton_Value":{"name":"Ton_Value","value":"lauter","confirmationStatus":"NONE"}}}}}
[2017-05-03 04:03:03] TonIntent
[...]
[2017-05-03 04:03:04] Ton
[2017-05-03 04:03:04] TonIntent
[2017-05-03 04:03:04] [ 'Ton' ]
[2017-05-03 04:03:04] Ton
[2017-05-03 04:03:04] TonIntent -> Ton
response :{"version":"1.0","sessionAttributes":{},"response":{"outputSpeech":{"type":"PlainText","text":"Ich habe Ich kann ton nicht auf lauter schalten. lauter geschaltet"},"shouldEndSession":true,"card":{"type":"Simple","title":"TonIntent","content":"Ich kann ton nicht auf lauter schalten. lauter geschaltet"}}}

Im eventmonitor sehe ich:
Zitat2017-05-03 04:03:04 alexa Alexa intent: IntentRequest TonIntent
2017-05-03 04:03:04 alexa Alexa echoId: amzn1.ask.device.AEN4JZ4JLA757VIQHT27OABRNGJ4RGQ4QSS4N2NPOJLEIF4UHI45AUEZC24OO4A46WCOS4SCZDZZLNSYFD25T434BURBYNFH5FQFGQKQWXWOALCVF32IC66KHHVGBA7ALAZBCMPIJQ6YGIYHS4TKLNSMUPNQ
2017-05-03 04:03:04 alexa Alexa echoRoom: unknown

Wo liegt mein Fehler?





Bootscreen

Damit ich den andren Thread nich vollmülle mach ich mal hier weiter.

Ausgang war das hier:  https://forum.fhem.de/index.php/topic,60244.msg630334.html#msg630334

Ich hab versucht es so nachzubauen, aber es geht nicht so ganz:

Skill 1:
Rufname: arbeitszimmer

config.json:
"applicationId": ["amzn1.ask.skill.homeskill","amzn1.ask.skill.beispiel:arbeitszimmer"],

FHEM Geräte:
Arbeitszimmer:
attr alexaName Hintergrundbeleuchtung
attr alexaRoom arbeitszimmer
attr genericDeviceType switch


Danach kann ich sagen:
"Alexa, sage arbeitszimmer schalte Hintergrundbeleuchtung im arbeitszimmer an" < geht

"Alexa, sage arbeitszimmer schalte Hintergrundbeleuchtung an" < geht leider nicht.
Alexa meckert "Ich habe kein Gerät mit Namen hintergrundbeleuchtung im Raum unknown gefunden."
Klingt für mich das er den "Default" Room aus der applicationId nicht nimmt, oder?

Wo hab ich den Fehler?
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

Bootscreen

ok, hat sich erledigt. Ich hatte Alexa Fhem bei mir am 25. v0.3.3 eingerichtet und nicht mitbekommen das am 26. v0.3.4 rauskam. mit v0.3.4 läuft es =)
Gruß
Oliver

FHEM 5.7 Hardware:
Raspberry PI B+ | HomeMatic USB 2 | 433Mhz Sender (pilight) | nanoCUL (433Mhz)

d.stratmann

Hallo Ich benötige mal wieder einen "Wink in die richtige Richtung".

Ich möchte gerne meine Raumfeldgeräte über Alexa steuern.
Im FHEM selber sind diese bereits funktionstüchtig und lassen sich über webcmd schalten.
define RF_KU dummy
attr RF_KU alexaName Test
attr RF_KU alexaRoom Küche
attr RF_KU devStateIcon Standby:audio_audio@red Play:audio_volume_mid@green Mute:audio_volume_mute@yellow Stop:audio_audio@yellow unMute:audio_volume_mid@green
attr RF_KU genericDeviceType switch
attr RF_KU group Speaker
attr RF_KU icon audio_audio
attr RF_KU room Kueche,alexa
attr RF_KU webCmd Play:Stop:Mute:unMute:Standby:Einschalten
define RF_KU_Web_Standby notify RF_KU:Standby {fhem {Raumfeld_enterManualStandby("Kueche")}}
define RF_KU_Web_Einschalten notify RF_KU:Einschalten {fhem {Raumfeld_leaveStandby("Kueche")}}
define RF_KU_Web_Play notify RF_KU:Play {fhem {Raumfeld_play("Kueche")}}
define RF_KU_Web_Stop notify RF_KU:Stop {fhem {Raumfeld_stop("Kueche")}}
define RF_KU_Web_Mute notify RF_KU:Mute {fhem {Raumfeld_mute("Kueche")}}
define RF_KU_Web_unMute notify RF_KU:unMute {fhem {Raumfeld_unMute("Kueche")}}


Folgenden Zustand habe ich bereits erreicht.
Custom Skill angelegt und mit einem Dummy Schalter probiert --> ein und aus geht und der Status wird korrekt zurück gegeben.

Wenn ich jetzt sage Alexa starte Raumfeld / Schalte Test ein, dann bekomme ich die Antwort: ich kann das Gerät mit dem Namen "Test" nicht schalten.

Wie kann ich es denn jetzt anstellen, dass Alexa versteht, wie man dieses Gerät einschaltet?!

Bevor ich mich dann alexa mapping etc. mache wollte ich erstmal sicherstellen, dass die Grundfukntion gegeben ist.
Ich hatte hier was von dem homebridge mappings gelesen, welche dann inm dem Raumfeld Deive RF_KU wohl angelegt werden müssen, aber hier habe ich die Syntax für die webcmd nicht richtig verstanden und bin mir auch ncht sicher, ob das der korrekte Weg ist.

justme1968

du musst ein passendes homebridgeMapping konfigurieren und genericDeviceType auf switch setzen. das hat mit webCmd nichts zu tun.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

d.stratmann

Ok, also wenn ich das dann korrekt interpretiert habe müsste das dann wie folgt im Device aussehen?!

genericDeviceType switch
On=state,cmdOn=on,cmdOff=off,cmdPlay=play,cmdStop=stop

d.stratmann

So ich bin nun eine ganze Ecke weiter... habe aber noch folgendes Problem

Im Eventlog von Fhem sehe ich folgenden Eintrag welcher ausgeführt wird:
RF_KU undefined lauter

das undefined ist hier ja "zu viel"

homebridgeMappings:
RF=state,cmdOn=on,cmdOff=off,cmdLauter=lauter,cmdLeiser=leiser

alexaMappings:
RF=verb=schalte,valueOn=an;ein,valueOff=aus,valueToggle=um,valueLauter=lauter,valueLeiser=leiser

IntenShema:
{
  "intents": [
    {
      "slots": [
        {
          "name": "article",
          "type": "FHEM_article"
        },
        {
          "name": "Device",
          "type": "FHEM_Device"
        },
        {
          "name": "preposition",
          "type": "FHEM_preposition"
        },
        {
          "name": "Room",
          "type": "FHEM_Room"
        },
        {
          "name": "TargetPosition_Value",
          "type": "TargetPosition_Value"
        }
      ],
      "intent": "TargetPositionIntent"
    },
    {
      "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"
        },
        {
          "name": "RF_Value",
          "type": "RF_Value"
        }
      ],
      "intent": "RFIntent"
    },
    {
      "intent": "FHEMgutenMorgenIntent"
    },
    {
      "intent": "FHEMguteNachtIntent"
    },
    {
      "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"
    }
  ]
}


Slot Types:
FHEM_article der | die | das | den
FHEM_preposition in | im | in der
RF_Value an | ein | aus | lauter | leiser
TargetPosition_Value auf | zu
TargetPosition_article den | die
FHEM_Device raumfeld
FHEM_Room badezimmer | küche | wohnzimmer


Sample:
RFIntent schalte {Device} {preposition} {Room} {prozent_Value} {RF_Value}
RFIntent schalte {Device} {preposition} {Room} {RF_Value}
RFIntent schalte {Device} {RF_Value}
RFIntent schalte {Device} {preposition} {Room} {RF_Value}
RFIntent schalte {article} {Device} {RF_Value}
RFIntent schalte {article} {Device} {preposition} {Room} {RF_Value}
StatusIntent status
StatusIntent {Device} status
StatusIntent status von {Device}
StatusIntent wie ist der status von {Device}
StatusIntent wie ist der status {preposition} {Room}
RoomAnswerIntent {preposition} {Room}
RoomListIntent raumliste
DeviceListIntent geräteliste
DeviceListIntent geräteliste {Room}
DeviceListIntent geräteliste für {article} {Room}


Ich muss doch wenn ich es korrekt verstanden habe noch das Intent in FHEM bauen, wo muss das denn hin?

justme1968

cmdOn und cmdOff gibt es nur für den On intent. cmdLauter und cmdLeiser gibt es garnicht.

attr <name> homebridgeMapping RF=state,cmd=+

das gleiche gilt für das alexaMapping.

attr <name> RF=verb=schalte,values=lauter;leiser
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

d.stratmann

#29
OK verstanden!
Wie verknüpfe ich denn jetzt das homebridge Mapping für RF in ON?
Ist das einfach ein Eintrag pro Zeile?