Ankündigung

Einklappen
Keine Ankündigung bisher.

Amazon Alexa Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • henfri
    antwortet
    Hallo Andre,

    vielen Dank.
    Der Lichterschlauch funktioniert. Ich hatte ihn nur in dem Teil der Konfiguration nicht gepostet, weil er nicht relevant ist.
    Der Color-Controller funktioniert. Das kann ich bestätigen.
    Hier die Konfiguration:
    Code:
            FensterFarb:      
                Farbwert_RGB:
                    type: list
                    alexa_device: Lina_Lichterschlauch
                    alexa_description: Lichterschlauch Lina Fenster
                    alexa_icon: "LIGHT"
                    alexa_name:  Lina Lichterschlauch
                    alexa_icon: LIGHT
                    alexa_color_value_type: RGB
                    alexa_actions: SetColor
                    alexa_retrievable: True
                    alexa_color_value_type: RGB
                    on_change:
                      - sh.og.Lina.FensterFarb.R.Dimmwert = list[0]
                      - sh.og.Lina.FensterFarb.G.Dimmwert = list[1]
                      - sh.og.Lina.FensterFarb.B.Dimmwert = list[2]
                      - sh.og.Lina.FensterFarb.sequencer = 0
    Das Beispiel in der Readme ist nicht so schön, weil da
    - R_WERT = list[0]
    steht.
    Besser wäre
    - sh.R_WERT = list[0]

    oder noch besser: wenn die R/G/B Items im Beispiel Item enthalten würden und dann on_change relativ adressiert würden:
    - sh..R_WERT = list[0]

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • AndreK
    antwortet
    Hallo henfri,

    das mit dem "alexa_name" hab ich mir angeschaut.
    Das Problem liegt darin, dass die Prüfung der Alexa-items noch mit der "alten" P2-Logik erfolgt. Da hatte ich nichts geändert/überarbeitet.
    Hier wird auf noch auf logger.error geloggt. Die Ausgabe ist dann nicht vollständig. (Sonst würde im Log stehen : ""Alexa-Device {}: empty name".format(self.id)")
    Ein Fehler an dieser Stelle wird mit "raise" abgefangen und führt zum Abbruch. Sehr unschön
    Da ich im Moment eh am erweitern überarbeiten des Plugins bin, nehm ich das mal auf die Todo-Liste.
    Das mit den nicht gefundenen Szenen sehe ich so wie Msinn. (Falls die vorgeschlagene Lösung keine Abhilfe schafft kurze Info, dann werde ich das auch prüfen.)

    In Deiner zuletzt geposteten item-config kommt der Lichterschlauch von Lina nicht mehr vor, tut der jetzt nachdem er einen alexa_name hat ?
    Der Color-Controller ist bisher nach meinem Wissen wenig (bzw. gar nicht genutzt worden), ich selbst habe kein Color-Gerät, habe immer mit virtuellen Devices getestet :-(

    Hierzu eine Rückmeldung wäre schön

    Gruss Andre

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    danke, manchmal sitzt man zu nah am Bildschirm.
    Das wird es gewesen sein.

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Wie sieht das denn im Item Tree aus? Bei dem was Du gepostet hast wäre (aufgrund der Einrückungen) Nacht: ein SubItem von Abend: und hat keine Attribute. Dafür werden die "Nacht-Attribute" die Attribute von Abend: überschreiben.

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    nachdem ich das o.g. Problem habe lösen können, bleibt mein ursprüngliches Problem:
    Nicht alle Szenen werden von Alexa gefunden. Woran kann das liegen?
    Ich habe in der Yaml sieben sehr änliche Szenen definiert:
    Code:
              Morgen:
                on_update: og.Lina.Szene = 1
                alexa_item_turn_on : 1
                alexa_icon : "SCENE_TRIGGER"
                alexa_name:  Lena Morgen
                alexa_actions: "turnOn"
                alexa_device: lina_szene_morgen
                alexa_description: Szene Lina Morgen
                enforce_updates: true
                alexa_actions : "Activate"
                alexa_retrievable : false
              Abend:
                on_update: og.Lina.Szene = 2
                alexa_item_turn_on : 2
                alexa_icon : "SCENE_TRIGGER"
                alexa_name:  Lena Abend
                alexa_actions: "turnOn"
                alexa_device: lina_szene_Abend
                alexa_description: Szene Lina Abend
                enforce_updates: true
                alexa_actions : "Activate"
                alexa_retrievable : false
                Nacht:
                on_update: og.Lina.Szene = 3
                alexa_item_turn_on : 3
                alexa_icon : "SCENE_TRIGGER"
                alexa_name:  Lena Nacht
                alexa_actions: "turnOn"
                alexa_device: lina_szene_Nacht
                alexa_description: Szene Lina Nacht
                enforce_updates: true
                alexa_actions : "Activate"
                alexa_retrievable : false
              Hausaufgaben:
                on_update: og.Lina.Szene = 4
                alexa_item_turn_on : 4
                alexa_icon : "SCENE_TRIGGER"
                alexa_name:  Lena Hausaufgaben
                alexa_actions: "turnOn"
                alexa_device: lina_szene_Hausaufgaben
                alexa_description: Szene Lina Hausaufgaben
                enforce_updates: true
                alexa_actions : "Activate"
                alexa_retrievable : false
                Spielen:
                on_update: og.Lina.Szene = 5
                alexa_item_turn_on : 5
                alexa_icon : "SCENE_TRIGGER"
                alexa_name:  Lena Spielen
                alexa_actions: "turnOn"
                alexa_device: lina_szene_Spielen
                alexa_description: Szene Lina Spielen
                enforce_updates: true
                alexa_actions : "Activate"
                alexa_retrievable : false
                Chillen:
                on_update: og.Lina.Szene = 6
                alexa_item_turn_on : 6
                alexa_icon : "SCENE_TRIGGER"
                alexa_name:  Lena Chillen
                alexa_actions: "turnOn"
                alexa_device: lina_szene_Chillen
                alexa_description: Szene Lina Chillen
                enforce_updates: true
                alexa_actions : "Activate"
                alexa_retrievable : false
                AllesAus:
                on_update: og.Lina.Szene = 7
                alexa_item_turn_on : 7
                alexa_icon : "SCENE_TRIGGER"
                alexa_name:  Lena Alles Aus
                alexa_actions: "turnOn"
                alexa_device: lina_szene_Alles_Aus
                alexa_description: Szene Lina Alles Aus
                enforce_updates: true
                alexa_actions : "Activate"
                alexa_retrievable : false
    Davon findet Alexa aber nur
    -Hausaufgaben
    -Morgen
    -Alles Aus
    -Nacht

    Woran kann das liegenß

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    da ich das Problem hatte, dass die Alexa-App einen neu hinzugefügten RGB-Controller nicht gefunden habe, habe ich mich in der Amazon-Entwicklerkonsole angemeldet. (Vorher hatte ich mich auch kurz unter https://developer.amazon.com angemeldet, aber ich glaube das ist hier nicht relevant)
    Da musste ich statt Nodejs 4.x 8.10 wählen und speichern.
    Gleichzeitig habe ich auf den aktuellen Code aus https://raw.githubusercontent.com/sm.../aws_lambda.js aktualisiert.

    Wenn ich jetzt aber das in https://github.com/smarthomeNG/plugi...d%20Lambda.pdf erklärte Test-Event starte, bekomme ich die Meldung
    Response:
    {
    "errorMessage": "2019-11-25T17:41:52.033Z 027e5477-b3de-4b7b-9dc4-1690bc22b96f Task timed out after 5.01 seconds"
    }

    Request ID:
    "027e5477-b3de-4b7b-9dc4-1690bc22b96f"

    Function Logs:
    START RequestId: 027e5477-b3de-4b7b-9dc4-1690bc22b96f Version: $LATEST
    2019-11-25T17:41:47.110Z 027e5477-b3de-4b7b-9dc4-1690bc22b96f INFO requesting {"header":{"messageId":"F8752B11-69BB-4246-B923-3BFB27C06C7D","name":"DiscoverAppliancesRequest"," namespace":"Alexa.ConnectedHome.Discovery","payloa dVersion":"2"},"payload":{"accessToken":"1"}}
    END RequestId: 027e5477-b3de-4b7b-9dc4-1690bc22b96f
    REPORT RequestId: 027e5477-b3de-4b7b-9dc4-1690bc22b96f Duration: 5005.14 ms Billed Duration: 5000 ms Memory Size: 512 MB Max Memory Used: 25 MB
    2019-11-25T17:41:52.033Z 027e5477-b3de-4b7b-9dc4-1690bc22b96f Task timed out after 5.01 seconds
    Im Haus reagiert leider auch kein Smarthome Gerät mehr.

    Wie mache ich mich jetzt auf die Fehlersuche?
    In 30 min kommt meine Frau nach Hause ;-)

    Edit:
    Ich bin einen Schritt weiter:
    Das Plugin reagiert einfach nicht. Das liegt aber nicht an meinen Aktionen an den Amazon-Konsolen, sondern an meinen Yaml-Änderungen. Ich sehe im Log:
    Code:
    2019-11-25  20:15:08 INFO     avdevice     Initializing avdevice: Created response commands, including 20 entries.
    --
    2019-11-25  20:15:08 ERROR    Alexa4P3     Plugin 'alexa4p3' exception in run() method: Alexa: invalid device Lina_Lichterschlauch
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/plugin.py", line 674, in run
        self.plugin.run()
    --
        raise ValueError("Alexa: invalid device {}".format(device.id))
    ValueError: Alexa: invalid device Lina_Lichterschlauch
    Aber was mag er am Device nicht?

    Code:
                Farbwert_RGB:
                    type: list
                    alexa_device: Lina_Lichterschlauch
                    alexa_description: Lichterschlauch Lina Fenster
                    alexa_color_value_type: RGB
                    alexa_actions: SetColor
                    alexa_retrievable: True
                    alexa_color_value_type: RGB
                    on_change:
                      - og.Lina.FensterFarb.R.Dimmwert = list[0]
                      - og.Lina.FensterFarb.G.Dimmwert = list[1]
                      - og.Lina.FensterFarb.B.Dimmwert = list[2]
                      - og.Lina.FensterFarb.sequencer = 0
    Edit: Es fehlte glaube ich das alexa_name.

    Dennoch: Ich denke, das ist ein Bug. Das Plugin sollte dadurch nicht crashen.
    https://github.com/smarthomeNG/plugins/issues/300


    Gruß,
    Hendrik
    Zuletzt geändert von henfri; 25.11.2019, 20:28.

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Danke.
    Das probiere ich!

    Einen Kommentar schreiben:


  • danny
    antwortet
    Geht relativ einfach:

    Webbrowser: https://alexa.amazon.de/spa/index.html#smart-home // dann auf "Gruppen" // "Gerätegruppen" // dann einfach auf "Gruppe erstellen" z.b.Küche // da alle Geräte in der Gruppe + Alexa auswählen und fertig. (Alexa sollte dann auch Küche heißen)

    Anderer Weg ist über die Android App:

    unten rechts auf "Geräte" // dann oben rechts auf "+" // Gruppe hinzufügen // Name vergeben und "Weiter" // dann wieder Alexa und Geräte auswählen und "Speichern" klicken.

    Hoffe das hilft ein bischen weiter mit Alexa.

    Gruß Danny

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Zitat von danny Beitrag anzeigen
    Aber hasst du evtl. schon mal in der Alexa App Räume angelgt (Emma ,Johannes) und da die "Geräte" eingefügt die in den Räumen sind. Hatte gemeint das irgendwo mal gelesen zu haben. Die passende Alexa muß dem Raum natürlich auch in der App zugewiesen werden.
    Wie legt man denn Räume an und weist den Geräten und Echos Räumen zu? Das wäre ja super!

    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Hi Danny,

    ja, das ist der Fall:
    Zitat von Robert Beitrag anzeigen
    [*]im Alexa-Universum (App etc.), im Hue-Universum (App etc.), in smarthome und smartVISU sind die Zimmer definiert
    Daher funktioniert ja auch "Alexa, schalte das Licht an" wenn ich z.B. in "Emmas Zimmer" steht - dann geht auch wirklich nur da das Licht an und nicht z.B. in "Johannas Zimmer".

    Einen Kommentar schreiben:


  • danny
    antwortet
    Hallo Robert,

    ich benutze das Alexa Plugin nicht. Aber hasst du evtl. schon mal in der Alexa App Räume angelgt (Emma ,Johannes) und da die "Geräte" eingefügt die in den Räumen sind. Hatte gemeint das irgendwo mal gelesen zu haben. Die passende Alexa muß dem Raum natürlich auch in der App zugewiesen werden.

    Gruß Danny

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Zitat von Robert Beitrag anzeigen
    Auch seltsam: Trotz Benutzung von alexa_description steht als "Beschreibung" in der Alexa-App bei den Geräten immer "SmartHomeNG".
    Ich führe mein Selbstgespräch mal weiter: Ist ein Bug in der V3 Implementierung: https://github.com/smarthomeNG/plugins/pull/292

    Trotzdem bin ich mit der Benutzung noch unglücklich:
    • ich habe zwei Zimmer: "Emmas Zimmer" und "Johannas Zimmer"
    • jedes Zimmer hat
      • Deckenlicht (alexa_name "Deckenlicht", alexa_description "Deckenlicht in Emmas Zimmer")
      • einen "Lumibär" mit HUE-Lampe (alexa_name "Emmas Lumibär")
      • Rollade (alexa_name "Rollade", alexa_description "Rollade in Emmas Zimmer")
      • Fensterkontakt (alexa_name "Fenster", alexa_description "Fenster in Emmas Zimmer")
      • einen eigenen Echo Dot
    • im Alexa-Universum (App etc.), im Hue-Universum (App etc.), in smarthome und smartVISU sind die Zimmer definiert
    Ziel:
    • bei "Deckenlicht an" soll im betreffenden Zimmer das Deckenlicht an gehen
      • leider sagt Alexa "ich kenne mehrere Geräte mit dem Namen "Deckenlicht" -> logo, im Nachbarzimmer ist noch keins - kann Alexa nicht irgendwie den räumlichen Kontext auflösen?
      • witzigerweise funktioniert genau das bei "Licht an" -> leider wird der Lumibär automatisch als Lampe beim generellen "Licht an" ebenfalls gesteuert, weil das Gerät wohl als Lampe generell "Licht" zugeordnet wird
    • bei "setze Rollade auf 50%" soll die Rollade in verfahren werden -> Alexa: "Ich kenne mehrere Geräte mit dem Namen"...
    • gleiches beim Fenster(kontakt)
    Alexa beherrscht also grundsätzlich einen räumlichen Kontext für "Licht", aber nicht für gleichnamige Geräte in unterschiedlichen Räumen!? Schade, denn Deckenleuchten, Rolladen und Fenster innerhalb eines Raumes müssen dann scheinbar immer noch im NAMEN "in Emmas Zimmer" o.Ä. ergänzt werden und dann obwohl man im Zimmer ist mit "Deckenlicht in Emmas Zimmer einschalten" dediziert aufgerufen werden!?

    Gibt's da nen Trick?

    Grüße
    Robert

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Ok, dann wäre das erledigt. :-)

    Was imho noch bleibt, ist die inkonsistente Schreibweise von class_name/classname in der globalen (/etc) bzw. Plugin-spezifischen (/plugin/xxxx/) plugin.yaml. Gemeint ist jeweils das selbe.
    Es sollte 'classname' in classname = self.meta.get_string('classname') mit KEY_CLASS_NAME ersetzt werden. Das bedeutet aber, dass die yaml aller Plkugins einmal angepackt werden muss.

    Auch seltsam: Trotz Benutzung von alexa_description steht als "Beschreibung" in der Alexa-App bei den Geräten immer "SmartHomeNG".

    Einen Kommentar schreiben:


  • psilo
    antwortet
    Warum ist das korrekt? Was refenziert "alexap3" im aktuellen Code? Dass das "läuft" liegt eben an deiner expliziten Nennung von
    pluginname in der plugin.yaml des plugins gibt dessen namen an, korrekt.
    ok jetzt verstehe ich, da ist ein typo, weil es dort alexap3 und nicht alexa4p3 heisst.. habe die 4 ergänzt!

    hatte das übersehen, dass die 4 fehlt.. mit dem fix sollte "plugin_name: alexa4p3" gehen

    Push: https://github.com/smarthomeNG/plugi...235136101b17d7
    Zuletzt geändert von psilo; 27.10.2019, 14:17.

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Zitat von psilo Beitrag anzeigen
    In der plugin.yaml des Plugins ist ein "classname: alexap3" korrekt und läuft bei mir..
    Warum ist das korrekt? Was refenziert "alexap3" im aktuellen Code? Dass das "läuft" liegt eben an deiner expliziten Nennung von
    Code:
    class_name: Alexa4P3
    class_path: plugins.alexa4p3
    in der etc/plugin.yaml

    Ich verstehe aber die Doku so, dass ein
    Code:
    alexa:
        plugin_name: alexa4p3
        #sonst nix!
    ausreichen sollte.

    Ist z.B. beim Mail-Plugin auch so:
    Code:
    mail:
        plugin_name: mailsend
        #sonst nix!
    reicht, in der plugin-spezifischen plugin-yaml with "classname: SMTP" gesetzt und damit auch die richtige Klasse des Plugins vom Plugin-Wrapper instantiiert...

    siehe auch _get_classname_and_classpath in lib/plugin.py
    1. erst wird versucht über "classname = plg_conf.get(KEY_CLASS_NAME,'')" mit der in lib/constants.py definierten Konstante "KEY_CLASS_NAME = 'class_name'" aufzulösen
    2. wenn das nicht klappt (ich will das ja nicht immer redundant setzen - denke das war der Gedanke...) wird es mit classname = self.meta.get_string('classname') eben aus der plugin-eigenen plugin-yaml gelesen
    Insgesamt unschön ist die verwirrende Schreibweise mal "class_name", mal "classname". Zeile 272 könnte generell auch die Konstante nehmen. Dann müssten aber alle Plugin.yaml geändert werden... Oder man versucht es dort mit beiden Schreibweisen.
    Zuletzt geändert von Robert; 27.10.2019, 13:08.

    Einen Kommentar schreiben:

Lädt...
X