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.
    • 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

                        809
                        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