Ankündigung

Einklappen
Keine Ankündigung bisher.

Alexa Custom Skill für EDOMI (LBS 19000646 und 19000647)

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

    Hi,

    bevor ich mir mein ganze "Alexa Geschichte" zerschieße wollte ich hier mal kurz nachfragen

    In Bezug auf die Funktion Lamellen Position zu steuern. Wenn ich es richtig verstanden habe, würde es doch reichen wenn ich folgendes ergänze.


    alexa.php

    PHP-Code:

    <? 
     case "Lam_Position":
                $response = '{
                        "version": "1.0",
                        "sessionAttributes": {},
                        "response": {
                            "outputSpeech": {
                                "type": "PlainText",
                                "text": ' . ($debug ? '"Lamellen Positionsbefehl empfangen."' : '"Okay"') . '},
                            "shouldEndSession": "true"
                        }
                    }';
                $command['group'] = 'Lamellen position';
                if (array_key_exists('slots', $intent)) {
                    $slots = $intent['slots'];
                    if (array_key_exists('Lam_Position_Name', $slots) && array_key_exists('value', $slots['Lam_Position_Name']))
                        $command['name'] = $slots['Lam_Position_Name']['value'];
                    if (array_key_exists('Lam_Position_Room', $slots) && array_key_exists('value', $slots['Lam_Position_Room']))
                        $command['location'] = $slots['Lam_Position_Room']['value'];
                    if (array_key_exists('Lam_Position_Value', $slots) && array_key_exists('value', $slots['Lam_Position_Value']))
                        $command['value'] = @round($percentVal[$slots['Lam_Position_Value']['value']] * 2.55);
                    logging(print_r($command, true));
                }
                break;
            case "Lam_Position_Status":
                $response = '{
                        "version": "1.0",
                        "sessionAttributes": {},
                        "response": {
                            "outputSpeech": {
                                "type": "PlainText",
                                "text": ' . ($debug ? '"Lamellen Positions Status Befehl empfangen."' : '"Okay"') . '},
                            },
                            "shouldEndSession": "true"
                        }
                    }';
                $command['group'] = 'Lamellen position status';
                if (array_key_exists('slots', $intent)) {
                    $slots = $intent['slots'];
                    if (array_key_exists('Lam_Position_Name', $slots) && array_key_exists('value', $slots['Lam_Position_Name']))
                        $command['name'] = $slots['Lam_Position_Name']['value'];
                    if (array_key_exists('Lam_Position_Room', $slots) && array_key_exists('value', $slots['Lam_Position_Room']))
                        $command['location'] = $slots['Lam_Position_Room']['value'];
                    if (array_key_exists('Lam_Position_Value', $slots) && array_key_exists('value', $slots['Lam_Position_Value']))
                        $command['value'] = @$percentVal[$slots['Lam_Position_Value']['value']];
                    logging(print_r($command, true));
                }
                break;

    ?>

    Utterances im Skill

    Code:
    Lam_Position Fahre die Lamelle{Lam_Position_Name} {Praeposition} {Lam_Position_Room} auf {Lam_Position_Value} Prozent
    Lam_Position Fahre {Praeposition} {Lam_Position_Room} die Lamelle{Lam_Position_Name} auf {Lam_Position_Value} Prozent
    Lam_Position Fahre die Lamelle{Praeposition} {Lam_Position_Room} auf {Lam_Position_Value} Prozent
    Lam_Position Fahre {Praeposition} {Lam_Position_Room} die Lamelleauf {Lam_Position_Value} Prozent
    Lam_Position Fahre die Lamelleauf {Lam_Position_Value} Prozent
    Lam_Position_Status nach der Position der Lamelle{Lam_Position_Name} {Praeposition} {Lam_Position_Room}
    Lam_Position_Status Wie ist die Position der Lamelle{Lam_Position_Name} {Praeposition} {Lam_Position_Room}
    Lam_Position_Status Wie ist {Praeposition} {Lam_Position_Room} die Position der Lamelle{Lam_Position_Name}
    Lam_Position_Status nach der Position der Lamelle{Praeposition} {Lam_Position_Room}
    Lam_Position_Status Wie ist die Position der Lamelle{Praeposition} {Lam_Position_Room}
    Lam_Position_Status Wie ist {Praeposition} {Lam_Position_Room} die Position der Lamelle

    Slot Type im Skill

    Code:
    Group_Type: Lamellenstatus

    Für Fahre Lamelle müsste ich mir etwas einfallen lassen, ist auch erstmal nicht so wichtig.

    "auf" und "zu" wird ja schon umgesetzt auf 0 und 1 wenn ich dies richtig interpretiert habe. Eventuell würde ich hier "öffne" und "schließe" auf "0" und "255" umsetzen.


    Gruß benji

    Kommentar


      Nein, das wird nicht reichen. Es ist auch ein neuer Intent notwendig.
      Wenn du experimentieren willst, dann würde ich empfehlen einen zweiten Skill anzulegen mit einem zweiten Invocation Name und damit zu testen.
      Aus alexa.php machst du dann alexa2.php und verlinkst den neuen Skill auf alexa2.php. Der Alexa Receiver und Command Validator sollten eigentlich unverändert damit klar kommen.

      Kommentar


        Stimmt, Intent habe ich vergessen. Dort müsste ja dann noch folgendes angelegt werden.

        Code:
            {
              "slots": [
                {
                  "name": "Article",
                  "type": "Article_Type"
                },
                {
                  "name": "Praeposition",
                  "type": "Praeposition_Type"
                },
                {
                  "name": "Lam_Position_Name",
                  "type": "Lam_Type"
                },
                {
                  "name": "Lam_Position_Room",
                  "type": "Room_Type"
                },
                {
                  "name": "Lam_Position_Value",
                  "type": "Percent_Type"
                }
              ],
              "intent": "Lam_Position"
            },
            {
              "slots": [
                {
                  "name": "Article",
                  "type": "Article_Type"
                },
                {
                  "name": "Praeposition",
                  "type": "Praeposition_Type"
                },
                {
                  "name": "Lam_Position_Name",
                  "type": "Lam_Type"
                },
                {
                  "name": "Lam_Position_Room",
                  "type": "Room_Type"
                }
              ],
              "intent": "Lam_Position_Status"
            },

        Ich werde mir mal anschauen mit dem zweiten SKill. Ich kann ja auch den Port usw. belassen da ja nie beide Skills gleichzeitig senden können (2 versch. Invocation Namen) ???

        Wenn ich die Lamellengeschichte integriere und am laufen habe, würdest du diese dann in deinen LBS (alexa.php) mit übernehmen? Dann müsste ich in Zukunft nicht immer alles anpassen wenn ein Update kommt.


        würde dann auch mal schauen ob ich (für mich) eventuell die die Dimmfunktion anpasse, dazu müsste ich doch in alexa.php nur den wert mit 2.55 multiplizieren oder??






        Kommentar


          Ja, du kannst mir auch einfach beschreiben, wie man die Lamellen steuert und und welchen Wertebereich diese haben, dann kann ich das einbauen.
          Werde dann den Wertebereich über einen Eingang konfigurierbar machen und jeweils zwei Ausgänge spendieren, einen von 0-100 und einen weiteren von 0-255.
          Okay?

          Kommentar


            Danke für das Angebot.

            Die Lamellen werden wie die Position Jalousie/Rolladen über einen Wert 0-255 gesteuert. (0=offen / 255= geschlossen)
            Deswegen dachte ich auch, man könnte ja das Skill und alexa.php um die von mir angegebenen variablen erweitern, zu Blind_Position noch Lam_Position hinzufügen.

            in der variable $moveVal könnte man dann öffne = 0 und schließe = 255 hinzufügen.


            Unabhängig davon, dass du es einbaust würde ich es gerne verstehen um meine Kenntnisse zu erweitern

            Kommentar


              Im Smarthome Update wird die Unterstützung für Lamellen enthalten sein. Habe es gerade angepasst, allerdings nur für die neue Version, welche den SmartHome Skill enthält. Daher noch ein klein wenig Geduld.

              Kommentar




                Danke, da bin ich gespannt.

                Kommentar


                  Zitat von jonofe Beitrag anzeigen
                  Im Smarthome Update wird die Unterstützung für Lamellen enthalten sein. Habe es gerade angepasst, allerdings nur für die neue Version, welche den SmartHome Skill enthält. Daher noch ein klein wenig Geduld.
                  da bin ich auch schon heiß drauf. Und meine Frau glaub noch mehr wie ich..
                  www.knx-Hausblog.de

                  Kommentar


                    Ich hab jetzt mal die Lamellenfunktion im Custom Skill bei mir integriert. Im Develop Portal über Test funktioniert die Sache schon mal.
                    Heute Abend werde ich mal die Geschichte in Edomi integrieren und testen.



                    Kommentar


                      Hallo hab hier mal ein sehr interessantes Video https://youtu.be/aj7V2fr_raw

                      Kommentar


                        Bevor ich den angekündigten Alexa Smarthome Skill veröffentliche würde ich gerne die Installationsanleitung verproben.

                        Daher meine Frage: Gibt es einen Freiwilligen, der die Installation/Konfiguration des Smarthome Skills testen möchte? Ich habe die erste Version der Doku fertig, die das Anlegen des Security Profiles, des Smarthome Skills und der Lambda Funktion beinhaltet. Zusätzlich gibt es einen angepassten Alexa Receiver, den eigentlichen Inhalt der Lambda Funktion und einen Alexa Smarthome Command Validator LBS. Folgendes müsste also gemacht werden:
                        1. Amazon Security Profile anlegen &amp; konfigurieren
                        2. Alexa Smarthome Skill anlegen &amp; konfigurieren
                        3. AWS Account anlegen
                        4. AWS Lambda Funktion anlegen und konfigurieren
                        5. Alexa Receiver LBS updaten
                        6. Alexa Smarthome Command Validator installieren
                        7. Mehrere Instanzen des Alexa Smarthome Command Validator LBS konfigurieren
                        8. Testen
                        Voraussetzung ist ein funktionierender Alexa Custom Skill gemäß der Anleitung in diesem Thread, ein ECHO Device zum Testen und natürlich etwas Zeit und ausreichend Frustrationstoleranz.

                        Kurze Rückmeldung wäre super.

                        Kommentar


                          Erster ich

                          Kommentar


                            Zitat von benji Beitrag anzeigen
                            Erster ich
                            Was für eine Überraschung!

                            Werde dir in Kürze mal das Update des Manuals zusenden. Du kannst schon mal einen AWS Account anlegen, wenn du noch keinen hast: https://aws.amazon.com. Rest dann per PN, Chat oder Skype.

                            Kommentar


                              Der AWS Dienst ist soweit kostenlos, solange man nicht über die Grenzen der kostenlosen Leistung kommt,richtig? Und warum steht da, 12 Monate kostenlos? Was ist danach?

                              Kommentar


                                Zitat von jonofe Beitrag anzeigen


                                Werde dir in Kürze mal das Update des Manuals zusenden. Du kannst schon mal einen AWS Account anlegen, wenn du noch keinen hast: https://aws.amazon.com. Rest dann per PN, Chat oder Skype.

                                Ostern wird dann wohl vor dem PC verbracht

                                Kommentar

                                Lädt...
                                X