Ankündigung

Einklappen
Keine Ankündigung bisher.

Amazon-Echo Logikbaustein

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

    Hallo Werner,

    nur für mein Verständnis: ist Version 0.3 dann ein reiner Custom Skill oder wäre das dann quasi eine verbesserte 0.2 UND zusätzlich für alle die wollen die Möglichkeit ein Custom Skill zu nutzen? (Falls es nur ein Custom Skill sein sollte, wäre vielleicht ein andere Bezeichnung sinnvoll.)

    Ehrlicherweise finde ich die Funktionen, die Du beschreibst für 0.3 *interessant*, aber ich bin mir noch nicht sicher, ob ich sie so gut finde, dass ich dann immer den Skillnamen zur Aktivierung dazusagen wollte. Denn gerade die kurzen Ansprachen sind, aus meiner Sicht, notwendig, um alltagstauglich zu sein.

    Kommentar


      Das zweite, also eine verbesserte V0.2 bei der man zusätzlich optional einen Custom-Skill anbinden könnte.

      Kommentar


        [QUOTE=wernerL;n1038861]Ok, Ok ich bin ja schon still .

        Leider hatte ich die letzten 10 Tage keine Zeit an der V0.3 weiterzuarbeiten. Aktueller Stand ist, dass das was umgesetzt ist eigentlich ganz gut funktioniert, aber der Funktionsumfang aus meiner Sicht noch nicht rund und noch nicht allgemeintauglich genug ist. Die Problematik ist aber auch, nachdem mit dem Custom Skill doch relativ viel möglich ist - wann ist der Funktionsumfang abgeschlossen?

        Des Weiteren bin ich mir nicht sicher, ob mein damaliger erster doch recht generischer Entwurf der Sematik der JSON-Gerätekonfiguration wirklich auf Dauer tragfähig ist.
        Also falls jemand diesbezüglich Verbesserungsvorschläge hat, würde mir das auch weiterhelfen.

        Bzgl. der V0.3 mit zusätzlichem Custom Skill würde ich deshalb gerne noch Input von euch sammeln:

        1. Wer von euch hätte überhaupt Interesse daran? Denn zusätzlicher Custom Skill bedeutet auch zusätzlicher Konfigurationsaufwand auf AWS-Console und Amazon-Developer Konsole.

        2. Welche zusätzlichen Services (also Sprachkommando's und Alexa-Antworten) wären für euch wichtig?
        ...

        Moin Werner, (irgenwie errinnert mich das an was...)
        Spaß bei Seite, also ich würde den Aufwand wieder machen um alles neue von Dir abbilden/ steuern zu können.
        Ich lege mir eh ein Muster an, da kann ich immer recht schnell die Änderung/ Erweiterung mit einarbeiten!!
        Also, wie immer, wäre schön wenn Du 0.3 rausbringen könntest!!!
        Das bekommen einer Antwort vom HS eröffent ja ganz neue Projekte!!!
        DANKE DIR!!!
        Gurß Marcus

        Kommentar


          Hallo Werner!

          Wie schon einige Vorredner fände ich es für die Aktionen, die der Smarthome Skill kann (schalten, Dimmen/Prozentwerte, Temperatur setzen) auch besser, wenn das weiterhin ohne Aktivierungswort funktioniert.

          Für die Ansagen, die Alexa liefern soll / Fragen, auf die Alexa antworten sollte, fällt mir folgendes ein:
          • ein/aus Zustand (muss ja nicht nur Licht sein)
          • Fenster: geschlossen, geöffnet, gekippt / auf Kipp
          • Rollladen- und Dimmerprozentwerte, auch nutzbar für Lautstärke etc. alles, was halt in % angegeben wird
          • Raumtemperatur - "wie ist die Temperatur im Raum xy"?
          • Absolute Zahlenwerte - "wie ist die Außenhelligkeit?", "wie hell ist es draußen?", "wie viele Alarmmeldungen gab es heute?"
          • 14 Byte-Texte vorlesen - "welche Musikquelle läuft gerade im Wohnzimmer?" - keine Ahnung, ob sowas überhaupt geht?

          Viele Grüße

          Olaf
          Möchte den Komfort meiner Installation nicht mehr missen!

          Kommentar


            Danke schon mal für euren Input.
            Marcus, nachdem du dich ja wieder freiwillig gemeldet hast, würde ich dich auch gerne wieder als Betatester einsetzen .

            Olaf, der Smart-Home Skill bleibt weiterhin so erhalten - also kein Aktivierungswort für die Basisfunktionen.

            Bei dem Custom Skill gibt es zusätzlich zum Einzelkommando also z.B.: "Alexa, frage Smart Home ob das Licht im Büro eingeschaltet ist", die Möglichkeit mit dem Kommando "Alexa, starte Smart Home" eine Session zu starten. Hier kann man jetzt eine Reihe von Sprachkommando's absetzen ohne immer wieder das Aktivierungswort oder Alexa sagen zu müssen.

            Beispiel für eine Session:
            Kommando: "Alexa, starte Smart Home"
            Alexa: "Hallo welchen Wert vom Smart Home soll ich abfragen?"
            Kommando: "Ist das Licht im Büro eingeschaltet"
            Alexa: "Das Licht im Büro ist aus"
            Kommando: "Schalte das Licht im Büro ein"
            Alexa: "Ok"
            ...
            Kommando: "Beenden"
            Alexa: "Auf Wiedersehen"

            Um dies zu ermöglichen, müsste der Custom-Skill jedoch auch die Funktionalität vom Smart-Home Skill nachbilden. Sonst muss man zuerst mit dem Kommando "Beenden" den Custom Skill verlassen und im Anschluß mit dem Kommando "Alexa, schalte das Licht im Büro aus" arbeiten. Würde ich ganz gerne so hinkriegen.

            Zu deiner Liste der Vorschläge:
            • Ein/Aus sollte mit V0.3 funktionieren
            • hier habe ich noch das Problem, welcher Wert welchen Zustand wiederspiegeln soll?. Bei meinen Türen/Fenster habe ich nur Reed-Kontakte und leider nur bei wenigen einen getrennten Reed Kontakt für gekippt und geöffnet. D.h. bei manchen Fenstern bedeutet 0=geschlossen und 1=gekippt oder geöffnet und bei manchen 0=geschlossen, 1=gekippt, 3=offen (also Bit 0=1 und Bit 1=1). Können wir uns hier auf ein Schema einigen?
            • % Werte sollten mit V0.3 funktionieren
            • Abfrage der Raumtemperatur (Soll und Ist) sollte mit V0.3 funktionieren
            • Hier wird es kniffelig, zum einen weil die Formulierung der Antwort einigermassen zur Frage passen sollte, also auf die Frage "Wieviele ..." muss eigentlich eine andere Antwort formuliert werden als "Wie ist ..." bzw. "Welchen Wert hat ..."
              Zum anderen ist die JSON-Gerätekonfiguration aktuell sehr Raum bezogen. D.h. "draußen" müsste man irgendwie als Raum oder evtl. über einen Alias definieren. Ich muss mal testen welche Fragen hier noch möglich sind. Aktuell:
              Welchen Wert hat {Article} {Appliance} {Praeposition} {Room}? (z.B.: Welchen Wert hat der Kesseldruck im Pool?)
              Wie ist {Article} {Appliance} Wert {Praeposition} {Room}? (z.B.: Wie ist der ph Wert im Pool?)
              Wie hoch ist {Article} {Appliance} {Praeposition} {Room}?
              (Wie hoch ist der Redox Wert im Pool?)
            • bei diesem Punkt bin ich gerade am testen, ob man das irgendwie hinkriegen könnte. Auch hier gibt es jedoch das Problem, dass die Formulierung der Fragen sehr unterschiedlich sein können. Mein aktueller Ansatz wäre evtl. folgende Fragen zu ermöglichen:
              Wie ist der Status {Article} {Appliance} {Praeposition} {Room}?
              Gib mir einen Statusbericht {Praeposition} {Room}?
              Gib mir einen Statusbericht {Article} {Appliance}?

              Damit könnte man dann Fragen stellen wie z.B.:
              Wie ist der Status der Lichter/Türen/Fenster... im Haus?
              Gib mir einen Statusbericht vom Wohnzimmer/Pool/...
              Gib mir einen Statusbericht der Türen/...


            Gruß Werner

            Kommentar


              Zitat von wernerL Beitrag anzeigen
              [*]hier habe ich noch das Problem, welcher Wert welchen Zustand wiederspiegeln soll?. Bei meinen Türen/Fenster habe ich nur Reed-Kontakte und leider nur bei wenigen einen getrennten Reed Kontakt für gekippt und geöffnet. D.h. bei manchen Fenstern bedeutet 0=geschlossen und 1=gekippt oder geöffnet und bei manchen 0=geschlossen, 1=gekippt, 3=offen (also Bit 0=1 und Bit 1=1). Können wir uns hier auf ein Schema einigen?
              Das stimmt wohl - ich weiß gerade auch nicht, wie das bei den Fenstergriffen ist, die über Enocean die Position des Griffs zurückmelden - wie wäre es denn, dem Logikbaustein 3 Eingänge zu spendieren, wo man die Werte für auf, zu, gekippt per Initwert selbst eintragen kann? (weiß ja nicht, wie aufwändig das ist, also nur mal so ins Blaue gedacht) Klar, die Gefahr besteht dann, dass nach und nach weitere solcher Spezialfälle hinzukommen. Oder aber den Wert innerhalb der Konfiguration anpassbar machen?

              Grüße

              Olaf

              Möchte den Komfort meiner Installation nicht mehr missen!

              Kommentar


                Noch ne andere Idee zu dem Fensterstatus: Du als Herr der Bausteins / Skills gibst das einfach vor, welche Ziffer für welchen der 3 Zustände steht - bei wem das nicht passt, der kann das ja ganz einfach im HS lösen mit einer Minilogik

                iko.fensterstatus.raum -> vergleicherbaustein -> setze iko.fensterstatus.raum.alexa auf Wert x

                Ist vielleicht das einfachste, oder?
                Möchte den Komfort meiner Installation nicht mehr missen!

                Kommentar


                  Noch ne Frage zu dem Aktivierungswort: Kann man das nicht flexibler halten oder zumindest was "natürlicher klingendes" als Smarthome nehmen? Mal ein paar - reines schnelles Brainstorming - Denkanstöße:
                  • Alexa, frage mein Zuhause, .....
                  • Alexa, frage das Haus...
                  • Alexa, frage Deinen Bruder ;-)

                  Möchte den Komfort meiner Installation nicht mehr missen!

                  Kommentar


                    Hi Olaf,

                    erstmal danke für deine Ideen.
                    Wenn das Mapping "Fenster/Türstatus"=>Text konfigurierbar sein soll, wäre es den zumutbar, dass der Benutzer dies in der Lambda-Funktion machen muss?

                    Also z.B.:
                    Code:
                    var DE_DOOR_WINDOW_STATE = {
                        "0":"geschlossen",
                        "1":"gekippt",
                        "2":"offen"
                    }
                    Das wäre aus meiner Sicht eigentlich die richtige Stelle, allerdings führt jeder kleine Tippfehler dazu, dass gar nichts mehr geht.

                    Gruß Werner

                    Kommentar


                      Du hast Recht. Ich lege das vorerst in der Lambda-Funktion über die Datenstruktur so fest. Dann kann man es sich immer noch aussuchen, ob man es bei Bedarf mit einer Minilogik im Homeserver oder über die Datenstruktur in der Lambda-Funktion anpasst.

                      Das Aktivierungswort kannst du später beim Einrichten des Custom-Skill selbst festlegen.
                      In der Lambda-Funktion stehen aktuell folgende Antwort Texte, welche man aber bei Bedarf noch selbst anpassen könnte:

                      Code:
                      var languageStrings = {
                          "de-DE": {
                              "translation": {
                                  // DISCOVERY
                                  "DISCOVERY_REQUEST_ERROR":"Bei der Gerätesuche ist ein Fehler aufgetreten.",
                                  "DISCOVERY_MESSAGE":"Die Gerätesuche wurde erfolgreich abgeschlossen. Es wurden %s Geräte gefunden.",
                                  "DISCOVERY_0_MESSAGE":"Es wurden keine Geräte gefunden.",
                      
                                  // CONTROL - GET
                                  // Appliance
                                  // 3 Parameter
                                  "VALUE_MESSAGE":"Der %s-Wert im Raum '%s' beträgt %s.",
                                  "DOOR_WINDOW_STATE_MESSAGE":"Das Objekt '%s' im Raum '%s' ist %s.",
                                  "ONOFF_MESSAGE":"Das Gerät '%s' im Raum '%s' ist %s.",
                                  "PERCENT_MESSAGE":"Das Gerät '%s' im Raum '%s' steht auf %s Prozent.",
                                  "APPLIANCE_TEMPERATURE_MESSAGE":"Die %s-Temperatur im Raum '%s' beträgt %s Grad.",
                      
                                  // 5 Parameter
                                  "DE_VALUE_MESSAGE":"%s %s %s %s hat den Wert %s.",
                                  "DE_DOOR_WINDOW_STATE_MESSAGE":"%s %s %s %s ist %s.",
                                  "DE_ONOFF_MESSAGE":"%s %s %s %s ist %s.",
                                  "DE_PERCENT_MESSAGE":"%s %s %s %s steht auf %s Prozent.",
                                  "DE_APPLIANCE_TEMPERATURE_MESSAGE":"%s %s %s %s hat eine Temperatur von %s Grad.",
                      
                                  // Room
                                  // 2 Parameter
                                  "TARGET_TEMPERATURE_MESSAGE":"Die Solltemperatur im Raum '%s' beträgt %s Grad.",
                                  "ACTUAL_TEMPERATURE_MESSAGE":"Die aktuelle Temperatur im Raum '%s' beträgt %s Grad.",
                                  // 3 Parameter
                                  "DE_TARGET_TEMPERATURE_MESSAGE":"Die Solltemperatur %s %s beträgt %s Grad.",
                                  "DE_ACTUAL_TEMPERATURE_MESSAGE":"Die aktuelle Temperatur %s %s beträgt %s Grad.",
                      
                                  "NO_APPLIANCES_ERROR":"Die Geräteliste ist leer. Bitte zuerst die Gerätesuche ausführen.",
                      
                                  "ROOM_PARAM_ERROR":"Der für diese Anfrage benötigte Parameter Raumname fehlt.",
                                  "ROOM_NOT_FOUND_ERROR":"Ich konnte leider den Raum '%s' nicht finden.",
                                  "ROOM_REQUEST_ERROR":"Ich konnte leider die gewünschten Informationen zum Raum '%s' nicht ermitteln.",
                      
                                  "APPLIANCE_PARAM_ERROR":"Die für diese Anfrage benötigten Parameter Raumname und/oder Gerätename fehlen.",
                                  "APPLIANCE_NOT_FOUND_ERROR":"Ich konnte leider das Gerät '%s' nicht finden.",
                                  "APPLIANCE_REQUEST_ERROR":"Ich konnte leider die gewünschten Informationen zum Gerät '%s' nicht ermitteln.",
                                  "APPLIANCE_IN_ROOM_NOT_FOUND_ERROR":"Ich konnte leider das Gerät '%s' im Raum '%s' nicht finden.",
                                  "APPLIANCE_IN_ROOM_REQUEST_ERROR":"Ich konnte leider die gewünschten Informationen zum Gerät '%s' im Raum '%s' nicht ermitteln.",
                      
                                  // CONTROL - SET
                                  "OK":"Ok",
                                  "APPLIANCE_CONTROL_ERROR":"Der Befehl wurde leider vom Gerät '%s' im Raum '%s' nicht akzeptiert.",
                                  "APPLIANCE_COMMAND_ERROR":"Der Befehl wird leider vom Gerät nicht unterstützt.",
                      
                                  //
                                  "SERVER_ERROR":"Beim Zugriff auf den Gira Homeserver ist leider ein Systemfehler aufgetreten.",
                      
                                  // AMAZON
                                  "WELCOME_MESSAGE":"Hallo, welchen Wert vom Smart Home soll ich abfragen.",
                                  "HELP_MESSAGE":"Du kannst zum Beispiel fragen, „Ist das Licht in der Küche an?“ oder „Wie ist die Temperatur im Wohnzimmer?“ oder du kannst „Beenden“ sagen... Was soll ich abfragen?",
                                  "HELP_REPROMPT":"Welchen Wert vom Smart Home soll ich abfragen?",
                                  "STOP_MESSAGE":"Auf Wiedersehen!"
                              }
                          }
                      }
                      Gruß Werner

                      Kommentar


                        Zitat von wernerL Beitrag anzeigen
                        Wenn das Mapping "Fenster/Türstatus"=>Text konfigurierbar sein soll, wäre es den zumutbar, dass der Benutzer dies in der Lambda-Funktion machen muss?

                        ...

                        Das wäre aus meiner Sicht eigentlich die richtige Stelle, allerdings führt jeder kleine Tippfehler dazu, dass gar nichts mehr geht.
                        Ich denke, da man das nur ein einziges Mal bei der Einrichtung tut, wäre das akzeptabel. Und beim Austausch der Ziffern einen Typo reinzuhauen, den man nicht mehr korrigiert bekommt - eher unwahrscheinlich!
                        Möchte den Komfort meiner Installation nicht mehr missen!

                        Kommentar


                          Zitat von wernerL Beitrag anzeigen
                          Das Aktivierungswort kannst du später beim Einrichten des Custom-Skill selbst festlegen.
                          Genial!
                          Hatte ich Dir schon mal gesagt, dass Du mein Held 2016 bist? Hast den Titel auch fast schon für 2017 sicher

                          Ich muss da gerade an die Serie Eureka denken - das Haus heißt dort ja "Sarah" - ich durfte mir von meiner besseren Hälfte beim Schauen der Sendung immer anhören "Siehste, das kann unser Haus nicht!" - ich: "noch nicht!" - sie: "Na, wie soll denn unser Haus dann heißen?" Und jetzt ist es dank Deines unermüdlichen Einsatzes bald soweit: es geht an die Namenssuche

                          [ironischer Machomodus] Ok, Außenstehende werden sich dann wohl, wenn die uns hören, fragen, warum wir uns noch weitere Frauen ins Haus holen, als ob die eigene nicht anstrengend genug wäre - "Alexa, frag Sarah mal nach der Raumtemperatur in der Küche" [\ironischer Machomodus]

                          Und dann noch die Antworten entsprechend aufbauen "Sarah sagt, in der Küche sind es 25 Grad"
                          Möchte den Komfort meiner Installation nicht mehr missen!

                          Kommentar


                            Hallo Werner,
                            leider fehlte es in der vergangenen Woche an Zeit für weitere Tests.
                            Bzgl. Deiner Überlegungen für V0.3:
                            • es wäre gut, wenn der Fenster/Türstatus konfigurierbar bleibt und z.B. einzig die Differenzierung Offen/geschlossen möglich wäre (den zweiten Kontakt für gekippt habe ich mir aus Aufwandsgründen gespart)
                            • Die Festlegung solcher Dinge in der Lambdafunktion halte ich für zumutbar. Wer damit nicht klarkommt, scheitert vermutlich auch an anderen Dingen
                            • Das Schlüsselwort "Smarthome" scheint mir gefährlich. Irgendwann kommt Amazon auf die Idee, das selbst für eine Funktion zu nutzen - das läge zumindest nahe. Insofern ist die freie Definierbarkeit natürlich genial.
                            Nochmal zurück zum Post #117:
                            • bisher hat m.E. der HS-Logikbaustein nur einen Ausgang: ein Zähler für unerlaubte Versuche. Oder habe ich da was übersehen? Vielleicht meintest Du aber die Debug/Log-Ausgabe im hslist - dort gibt's natürlich mehr, aber eben ziemlich kryptisch. Meine Frage war so gemeint, ob Du einen Text im Modul selbst zur Weiterverarbeitung/Anzeige ausgeben kannst...
                            • der Verlust der Abwärtskompatibilität im JSON-Script wäre für mich tolerierbar.
                            Wenn Du Interesse hast, würde ich mich für Dokumentationsarbeiten anbieten.

                            Viele Grüße

                            Gerald

                            Kommentar


                              Hallo Gerald,

                              ja, aktuell hat der Baustein nur einen Ausgang den Zähler für unbefugte Zugriffe. Leider ist dieser jedoch nicht 100% verlässlich. Aus Gründen die ich bis jetzt noch nicht verstehe, werden beim ersten Aufruf der Konfigurationsseite zwei Requests als unbefugt gezählt. Dies ist aber ein anderes Thema.

                              Ich meinte die folgende Log-Ausgabe:

                              Beispiel
                              Code:
                              Amazon Echo - Log
                              Loglevel = 3 (Info)
                              
                              2017-01-10 11:29:51 | SYS   Amazon Echo Service V0.3 vom 24.12.2016 07:53  -  (Python Version: (2, 6, 6, 'final', 0) Default Encoding:ascii)
                              2017-01-10 11:29:51 | SYS   Initiate 20 seconds delay for HS to be fully up and running ...
                              2017-01-10 11:30:11 | SYS   Initialize Amazon Echo Service.
                              2017-01-10 11:30:11 | SYS   SSL certificate loaded successfully - writing it to file '/tmp/amazonEchoSSL.cert'.
                              2017-01-10 11:30:11 | INFO  Appliances configuration successfully loaded.
                              2017-01-10 11:30:11 | SYS   Starting Amazon Echo Service.
                              2017-01-10 12:56:26 | INFO  Control appliance with id='ESS_JAL_1', name='Essen front Position %', request='SetPercentageRequest', messageId='ace82fbb-4d06-4cc3-a1a4-19b24406f14b'.
                              2017-01-10 13:32:49 | INFO  Control appliance with id='ESS_JAL_1', name='Essen front Position %', request='SetPercentageRequest', messageId='40204a32-e0e8-471a-832b-8fad7d296692'.
                              2017-01-10 13:33:43 | INFO  Control appliance with id='ESS_JAL_1', name='Essen front Position %', request='SetPercentageRequest', messageId='a14dbb1c-275d-4c16-8e0b-5789a706d14e'.
                              2017-01-10 14:56:53 | INFO  Discovery found 104 appliances. (messageId='dc412285-7f2a-472e-b35a-1ba0d81f2083').
                              2017-01-10 16:56:34 | INFO  Discovery found 104 appliances. (messageId='633b9595-1e99-4851-a3cc-2aa85ab3b385').
                              2017-01-10 17:18:41 | INFO  Control appliance with id='KUE_D_1', name='Küche Deckenleuchte', request='GetOnOffValueRequest', messageId='GiraHS_Custom'.
                              2017-01-10 17:18:48 | INFO  Control appliance with id='BUE_WDW', name='Fahrrad Fenster gekippt', request='GetValueRequest', messageId='GiraHS_Custom'.
                              ...
                              Sprechen wir vom selben Log?
                              Du hast natürlich recht, dass diese Ausgabe sehr technisch ist, wobei die Sprachkommando's schon erkennbar sind. Diese beginnen mit "Control" und enthalten den Namen des hierbei verwendeten Kommunikationsobjekts im Attribut "name" und die Art der Steuerung im Attribut "request".

                              Einen weiterer Bausteinausgang für eine Art fachliches Log, hat bei mir momentan ehrlich gesagt keine hohe Prio.
                              Welche Meldungen und Informationen würdest du den hier erwarten?
                              Es gibt einen Syslog Baustein von Nils, allerdings habe ich mir den noch nicht genauer angeschaut. Hast du andere Bausteine im Einsatz welche ein vergleichbares Log schreiben. Falls ja, kannst du mir dazu Details geben?

                              Für Unterstützung bin ich prinzipiell immer dankbar.
                              Allerdings muss ich mir noch überlegen wie das mit der Doku ablaufen soll.

                              Viele Grüße
                              Werner

                              Kommentar


                                Zitat von Sternwart Beitrag anzeigen
                                [*]es wäre gut, wenn der Fenster/Türstatus konfigurierbar bleibt und z.B. einzig die Differenzierung Offen/geschlossen möglich wäre (den zweiten Kontakt für gekippt habe ich mir aus Aufwandsgründen gespart)
                                Naja, wenn offen/gekippt/geschlossen mit einer Meldung versehen ist, kannst Du den für 2 Meldungen doch auch nutzen - die dritte wird ja nicht ausgelöst, würde bei Dir dann "schlafen" (ist doch ungefähr so, als ob Du sagst "auf 66% fahre ich meinen Rollladen nie" - dann wird die Meldung für 66% halt nie angesagt, vorhanden ist sie trotzdem :-)
                                Möchte den Komfort meiner Installation nicht mehr missen!

                                Kommentar

                                Lädt...
                                X