Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Cloud Dienste
    4. Möglich ? Eine Prozentzahl von Alexa an ein Script übergeben ?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Möglich ? Eine Prozentzahl von Alexa an ein Script übergeben ?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Bluefox
      Bluefox last edited by

      @Joker971:

      Hi,

      ich möchte meinen Fernseher mit Alexa steuern. Habe mir also ein Script geschrieben welches die Lautstärke um 10 Punkte erhöht sobald es von Alexa aufgerufen wird (Verknüpfung über den Cloud-Adapter). In den Objekteigenschaften des Skriptes steht dieses auf type "Logikwert". Wenn ich das jetzt umstelle auf "Zahl" könnte ich dann jetzt z.b sagen: Alexa, die Lautstärke um 15 erhöhen. Kann ich diese 15 irgendwie an das Skript übergeben ??? Ist soetwas möglich ?

      Sorry aber ich bin blutiger Anfänger mit ioBroker und Java… `
      Musst du nicht. Du ergänzst dein Objekt mit

      common.min = -1000000

      common.max = 1000000

      Und dann einfach im Skript vergleichst du neues Wert mit dem Letztem Wert und du hast deine Differenz.

      1 Reply Last reply Reply Quote 0
      • justr
        justr last edited by

        Hi Joker,

        ok, jetzt war Bluefox doch schneller. Da ich den Text aber bereits geschrieben habe und mit unsicher bin, ob seine Antwort wirklich deiner Frage beantwortet, hier noch mein Beitrag: 😉

        Also ein Datenpunkt kann mit den Objekteigenschaften

        [...]
            "smartName": "bla blub",
            "type": "number",            // <--entspricht "Zahl" im Reiter "allgemein"
            "unit": "%",
            "min": 0,
            "max": 100,
            "read": true,
            "write": true
        [...]
        

        wunderbar mit Alexa per "Alexa, schalte bla blub auf x Prozent" gesteuert werden.

        Mittels Java-Script kannst du dann jede Aktualisierung des entsprechenden Datenpunkts mitbekommen:

        on({
            id: "<dein von/alexa/gesteuerter/datenpunkt="">",
            change: "any"
        }, function (obj) {
            var x = obj.state.val;
            // machIrgendwas(x);
        });</dein>
        

        Change: "any" ist nötig, damit das Script bei jeder Aktualisierung getriggert wird. "ne" für "not equal" würde nur Änderungen mitbekommen und dann könntest du nicht zweimal den gleichen Befehl schicken (also etwa zweimal hintereinander um 5% erhöhen). Für die Reduktion der Lautstärke benutzt du dann am besten einen zweiten Datenpunkt, damit keine seltsamen Sprachbefehle wie "schalte bla blub auf minus y%" oder ähnliches dabei rauskommen.

        Übrigens macht Alexa bei den Befehlen "erhöhe um x %" eigentlich von alleine genau diese Funktionalität (dp_neu = dp_alt + x). Hier hast du nur das Problem, dass Alexa zwischenzeitliche manuelle Änderungen (z.B. per Fernbedienung) natürlich nicht mitbekommt und relative Änderungen immer auf den ihr zuletzt bekannten Wert vornimmt.

        Erste Anlaufstelle für javascript-Befehle und deren Optionen ist immer die Hilfeseite des Adapters (das "?" am Ende des javascript-Adapters auf der Adapter-Seite).

        Grundsätzliche javascript-Referenz findest du natürlich zuhauf im Internet (z.B. https://wiki.selfhtml.org/wiki/JavaScript). Grundsätzliche Programmiererfahrung sollte vorhanden sein bzw. muss sich angeeignet werden. 😉

        Viel Spaß und Erfolg, justr

        1 Reply Last reply Reply Quote 0
        • J
          Joker971 last edited by

          Hi erst einmal Danke für eure Antworten! Ich weiss nicht ob ich es richtig rüber gebracht habe… Der eigentlich Datenpunkt, der tatsächlich den Fernseher anspricht, kann nur true oder False. Im Script muss ich eine Schleife durchlaufen, die jetzt diesen Datenpunkt x-mal auf true schaltet.

          Ich habe mir das folgendermaßen zusammen gebastelt (Premiere, mein erstes Java-Script 😄 😞

          for(var i=0; i<11; i++)
          {
          setTimeout(setState("samsung.0.Volume.Volume Up"/*Volume.Volume Up*/,true),1500);
          }
          

          Ich kann über diesen Datenpunkt (oder einen anderen) auch nicht ermitteln, wo hoch die Lautstärke gerade eingestellt ist!

          Daher möchte ich Alexa einfach sagen können, Alexa erhöhe die Lautstärke um 10, oder so ähnlich. Sollte ich dann auf weniger als 0 oder mehr als 100 kommen wäre das egal.

          Ich muss also im Skript mitkriegen das es von Alexa aufgerufen wurde und muss dann dort die "übergebene Zahl" ermitteln.

          Ich habe das jetzt mal so gemacht wie ihr es geraten habt (min + max habe ich in den Objecteigenschaften des Scriptes hinzugefügt), allerdings funktioniert es so noch nicht:

          var x = getState("javascript.0.scriptEnabled.Fernseher.Volume+10"/*scriptEnabled.Fernseher.Volume+10*/).Val;
          for(var i=0; i
          

          Obwohl ich "Zahl" in den Objekteigenschaften des Skriptes ausgewählt habe, kann ich als "Wert" nur true/False eintragen. Funktioniert es vielleicht deshalb nicht ?

          1 Reply Last reply Reply Quote 0
          • J
            Joker971 last edited by

            Sodele, ich bin jetzt einen ganz anderen Weg gegangen!

            Ich habe mir einfach einen eigenen Datenpunkt gemacht der von Alexa bedient wird. Diesen überwache ich per Skript und bei dem bekomme ich auch die Zahl, die von Alexa kommt, über den State mitgeteilt. Das funktioniert 😄

            1 Reply Last reply Reply Quote 0
            • justr
              justr last edited by

              Hallo Joker,

              sehe ich das richtig? Du hast im Skripteditor einen Ordner "Fernseher" angelegt und darin dann das Skript "Volume+10"? Dann würde nämlich der Datenpunkt anzeigen, dass bzw. ob das Script an sich aktiv ist ("scriptEnabled"). Das hat nichts mit Triggerpunkten zu tun. Deswegen kennt er vermutlich nur true oder false und wird mit dem Play- und Pause-Button gesteuert.

              Wie du mittlerweile festgestellt hast, brauchst du einen eigenen Datenpunkt mit Type "Zahl" bzw. "number", den du mit Alexa dann steuern kannst.

              1 Reply Last reply Reply Quote 0
              • J
                Joker971 last edited by

                @justr:

                Hallo Joker,

                sehe ich das richtig? Du hast im Skripteditor einen Ordner "Fernseher" angelegt und darin dann das Skript "Volume+10"? Dann würde nämlich der Datenpunkt anzeigen, dass bzw. ob das Script an sich aktiv ist ("scriptEnabled"). Das hat nichts mit Triggerpunkten zu tun. Deswegen kennt er vermutlich nur true oder false und wird mit dem Play- und Pause-Button gesteuert.

                Wie du mittlerweile festgestellt hast, brauchst du einen eigenen Datenpunkt mit Type "Zahl" bzw. "number", den du mit Alexa dann steuern kannst. `

                Ja, einen Datenpunkt habe ich ja jetzt gemacht und damit funktioniert es jetzt auch.

                Ich habe aber ein neues Problem. Alexa akzeptiert kein "minus"…

                Wenn ich sage: Setze Fernseher auf Lautstärke 20%! Dann wird der Datenpunkt auf 20% gesetzt. Alles Ok. Sage ich aber: Erhöhe um 10%! Dann versteht Alexa das nicht. Genauso wenig: verringere um 10%! Wird auch nicht erkannt. Ich kann nur absolute Werte angeben.

                Da der Samsung-Datenpunkt aber nur true/false kennt und ich für Lauter und Leiser 2 getrennte Datenpunkte in einer Schleife ansprechen muss, kann ich leider über Alexa nur lauter machen da ich die aktuelle Lautstärke nicht abfragen kann 😞 Oder hat jemand noch eine andere Idee was man da machen könnte ?

                1 Reply Last reply Reply Quote 0
                • Bluefox
                  Bluefox last edited by

                  @Joker971:

                  @justr:

                  Hallo Joker,

                  sehe ich das richtig? Du hast im Skripteditor einen Ordner "Fernseher" angelegt und darin dann das Skript "Volume+10"? Dann würde nämlich der Datenpunkt anzeigen, dass bzw. ob das Script an sich aktiv ist ("scriptEnabled"). Das hat nichts mit Triggerpunkten zu tun. Deswegen kennt er vermutlich nur true oder false und wird mit dem Play- und Pause-Button gesteuert.

                  Wie du mittlerweile festgestellt hast, brauchst du einen eigenen Datenpunkt mit Type "Zahl" bzw. "number", den du mit Alexa dann steuern kannst. `

                  Ja, einen Datenpunkt habe ich ja jetzt gemacht und damit funktioniert es jetzt auch.

                  Ich habe aber ein neues Problem. Alexa akzeptiert kein "minus"…

                  Wenn ich sage: Setze Fernseher auf Lautstärke 20%! Dann wird der Datenpunkt auf 20% gesetzt. Alles Ok. Sage ich aber: Erhöhe um 10%! Dann versteht Alexa das nicht. Genauso wenig: verringere um 10%! Wird auch nicht erkannt. Ich kann nur absolute Werte angeben.

                  Da der Samsung-Datenpunkt aber nur true/false kennt und ich für Lauter und Leiser 2 getrennte Datenpunkte in einer Schleife ansprechen muss, kann ich leider über Alexa nur lauter machen da ich die aktuelle Lautstärke nicht abfragen kann 😞 Oder hat jemand noch eine andere Idee was man da machen könnte ? `
                  Laut Dokumentation soll es gehen:

                  https://developer.amazon.com/public/sol … agerequest

                  “Alexa, reduziere Gerätename um Anzahl Prozent”

                  “Alexa, erhöhe Gerätename um Anzahl Prozent”

                  Ich hoffe du sagst schon "Alexa erhöhe Fernseher um 10%" oder?

                  1 Reply Last reply Reply Quote 0
                  • J
                    Joker971 last edited by

                    Gut…wenn ich es genau so ausspreche geht es 😄

                    Nutzt mir aber nix! Wenn ich sage sie soll um 10% erhöhen setzt sie meinen Datenpunkt auf 100% ! Liegt es vielleicht daran das sie den aktuellen wert des Datenpunktes nicht kennt und sie versucht diese 10% auf zu addieren um dann wieder einen absoluten Wert zu übermitteln ?

                    1 Reply Last reply Reply Quote 0
                    • Bluefox
                      Bluefox last edited by

                      @Joker971:

                      Gut…wenn ich es genau so ausspreche geht es 😄

                      Nutzt mir aber nix! Wenn ich sage sie soll um 10% erhöhen setzt sie meinen Datenpunkt auf 100% ! Liegt es vielleicht daran das sie den aktuellen wert des Datenpunktes nicht kennt und sie versucht diese 10% auf zu addieren um dann wieder einen absoluten Wert zu übermitteln ? `
                      Deswegen habe ich dir gesagt, dass du min, max auf -100000 und 100000 setzten solltest, dann wird Alexa dein Wert unendlich erhöhen oder verkleinen und du nur Differenz dann ausrechnen solltest.

                      1 Reply Last reply Reply Quote 0
                      • J
                        Joker971 last edited by

                        @Bluefox:

                        @Joker971:

                        Gut…wenn ich es genau so ausspreche geht es 😄

                        Nutzt mir aber nix! Wenn ich sage sie soll um 10% erhöhen setzt sie meinen Datenpunkt auf 100% ! Liegt es vielleicht daran das sie den aktuellen wert des Datenpunktes nicht kennt und sie versucht diese 10% auf zu addieren um dann wieder einen absoluten Wert zu übermitteln ? Deswegen habe ich dir gesagt, dass du min, max auf -100000 und 100000 setzten solltest, dann wird Alexa dein Wert unendlich erhöhen oder verkleinen und du nur Differenz dann ausrechnen solltest.

                        Kapier ich irgendwie nicht :roll:

                        Hab ich jetzt so eingerichtet aber egal was ich für eine Prozentzahl ansage, Alexa setzt immer auf das maximal Mögliche (100000). Wie soll mir das helfen ?

                        1 Reply Last reply Reply Quote 0
                        • ?
                          Guest last edited by

                          @Joker971:

                          Hi,

                          ich möchte meinen Fernseher mit Alexa steuern. Habe mir also ein Script geschrieben welches die Lautstärke um 10 Punkte erhöht sobald es von Alexa aufgerufen wird (Verknüpfung über den Cloud-Adapter). In den Objekteigenschaften des Skriptes steht dieses auf type "Logikwert". Wenn ich das jetzt umstelle auf "Zahl" könnte ich dann jetzt z.b sagen: Alexa, die Lautstärke um 15 erhöhen. Kann ich diese 15 irgendwie an das Skript übergeben ??? Ist soetwas möglich ?

                          Sorry aber ich bin blutiger Anfänger mit ioBroker und Java…

                          Hallo zusammen 🙂

                          Bin neu hier und bin beim googlen hier auf dieses Thema gestoßen… Da es genau das behandelt was ich momentan verzweifelt versuche zu realisieren, wollte ich fragen ob Sie die Steuerung mittels Alexa vernünftig lösen konnten.

                          Gruß

                          Gesendet von meinem SM-G950F mit Tapatalk

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate
                          FAQ Cloud / IOT
                          HowTo: Node.js-Update
                          HowTo: Backup/Restore
                          Downloads
                          BLOG

                          799
                          Online

                          31.9k
                          Users

                          80.2k
                          Topics

                          1.3m
                          Posts

                          4
                          12
                          2202
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo