Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript einem VIS Button zuweisen….

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    JavaScript einem VIS Button zuweisen….

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

      Hallo und Moin Moin,

      verstehe Dein Problem und kann Dir leider nicht helfen. Es würde mich aber brennend interessieren wie Du das mit dem Webradio verwirklichst. Habe ein iPad 2 über Bluetooth mit einer Airport Express mit Lautsprechern verbunden. Wie schaffe ich es in iobroker Vis Webradio zum laufen zu bringen? Bin leider mehr der Dau 😄

      viel Spass noch

      Jens

      1 Reply Last reply Reply Quote 0
      • D
        DerGraf123 last edited by

        Ich weiß nicht, ob das unter iOS funktioniert.

        Für das Webradio über VIS braucht man unter Android 3 Apps: Tasker, TNES für Tasker und Intentradio.

        Der VIS Button sendet ein HTTP POST mit der Stream URL an TNES. Dieser startet ein Event, wo die URL an Intentradio übergeben wird. Fertig.

        1 Reply Last reply Reply Quote 0
        • N
          Nanouk last edited by

          Halli hallo,

          ich grab das mal wieder aus.

          Könnte bitte jemand mal anhand irgendeines Radiosender ein Beispiel-Script mit dem dazugehörigen vis Widget Button posten.

          Ich hänge hier einfach fest und müsste dringend was für den WAF tun.

          Gruß Nanouk

          1 Reply Last reply Reply Quote 0
          • P
            pix last edited by

            @Nanouk:

            Könnte bitte jemand mal anhand irgendeines Radiosender ein Beispiel-Script mit dem dazugehörigen vis Widget Button posten.

            Ich hänge hier einfach fest und müsste dringend was für den WAF tun. `
            Hallo Nanouk

            wie wäre es damit? Zwar kein Radio, aber Fernsehen 😉

            http://forum.iobroker.net/viewtopic.php?f=35&t=2369

            Gruß

            Pix

            1 Reply Last reply Reply Quote 0
            • D
              DerGraf123 last edited by

              Für meine Kombination aus Intentradio und TNES hab ein simples Script laufen:

              var request = require('request');
              
              createState('javascript.0.RadioURL', 'aus', {name: 'Radio Buttons'});
              
              on({ id: "javascript.0.RadioURL", change: 'any'} , function (obj) {
                  if (obj.state.val.substr(0,4) == 'http') {
                      request.post({ 
                          url:    'http://192.168.178.21:8765',
                          form:   { radiourl: obj.state.val, station: "Webradio" }
                      }, function(error, response, body) { if (error) log(error, 'error'); });
                      log("Intentradio Play: " + obj.state.val,"info");
                  }
                  else {
                      request.post({url:'http://192.168.178.21:8765',form:{ intentradio: "stop" }},function(error, response, body) { if (error) log(error, 'error'); });
                      log("Intentradio Stop","info");
              
                  }
              });
              

              In VIS habe ich Radiobuttons erstellt, die die Webradio URL in dir "javascript.0.RadioURL" schreibt. Dazu ist noch ein Button der anstatt der URL ein einfaches "aus" als Wert schreibt.

              Meine Gattin ist zufrieden 😉

              1 Reply Last reply Reply Quote 0
              • N
                Nanouk last edited by

                Hey,

                Fernsehen kommt auf jeden Fall auf die Liste 🙂

                Jetzt muss aber erstmal das Radio funktionieren.

                Ich habe das Skript von Der Graf genommen und das Widget von Pix.

                var request = require('request');
                
                createState('javascript.0.RadioURL', 'aus', {name: 'Radio Buttons'});
                
                on({ id: "javascript.0.RadioURL", change: 'any'} , function (obj) {
                    if (obj.state.val.substr(0,4) == 'http') {
                        request.post({ 
                            url:    'http://192.168.123.4:8765',
                            form:   { radiourl: obj.state.val, station: "Webradio" }
                        }, function(error, response, body) { if (error) log(error, 'error'); });
                        log("Intentradio Play: " + obj.state.val,"info");
                    }
                    else {
                        request.post({url:'http://192.168.123.4:8765',form:{ intentradio: "stop" }},function(error, response, body) { if (error) log(error, 'error'); });
                        log("Intentradio Stop","info");
                
                    }
                });
                

                Folgende Fehlermeldung bekomme ich:

                TypeError: obj.state.val.substr is not a function at Object. (script.js.radio.radio_button_graf:6:23) at Object.subs.callback (D:\ioBroker\node_modules\iobroker.javascript\javascript.js:1251:48) at D:\ioBroker\node_modules\iobroker.javascript\javascript.js:571:48 at getObjectEnums (D:\ioBroker\node_modules\iobroker.javascript\javascript.js:2937:17) at checkPatterns (D:\ioBroker\node_modules\iobroker.javascript\javascript.js:567:17) at Object.utils.adapter.stateChange (D:\ioBroker\node_modules\iobroker.javascript\javascript.js:245:17) at Object.that.states.States.change (D:\ioBroker\node_modules\iobroker.js-controller\lib\adapter.js:2120:37) at Socket. (D:\ioBroker\node_modules\iobroker.js-controller\lib\states\statesInMemClient.js:45:30) at Socket.Emitter.emit (D:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\node_modules\component-emitter\index.js:131:20) at Socket.onevent (D:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\socket.js:263:10) at Socket.onpacket (D:\ioBroker\node_modules\iobroker.js-controller\node_modules\socket.io-client\lib\socket.js:221:12)
                

                Kann mir da jemand weiterhelfen?

                Gruß Nanouk

                PS: Für was steht````
                if (obj.state.val.substr(0,4) == 'http')

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

                  > if (obj.state.val && obj.state.val.substr(0,4) == 'http') {

                  Warum aber obj.state.val kein String ist, das musst du wissen.

                  1 Reply Last reply Reply Quote 0
                  • D
                    DerGraf123 last edited by

                    "obj.state.val" sollte den Inhalt des on() Objektes beinhalten. Da angehängte substr(0,4) soll dabei nur einen Teil zurückgeben. In diesem Fall die ersten 4 Zeichen. Da meine Buttons nur auf Streams zeigen, die mit "http://" oder "https://" beginnen, habe ich mich für substr entschieden.

                    Eine Prüfung auf Vorhandensein, wie es Bluefox vorgeschlagen hat, habe ich verzichtet, da wegen dem createState() das Objekt mit Inhalt eigentlich da sein sollte. Ich bin aber auch nur ein Javascript Rookie (Perl und PHP klappen da schon besser) und wenn Bluefox meint, dass Du das so probieren sollst, dann mach es. Er ist der Profi.

                    Als Widget habe ich pro Radiosender ein "Radiobuttons ValueList" genommen, da ich die Buttons vertikal angeordnet habe. ObjectID sind alle "javascript.0.RadioURL", In Werte kommt einfach die URL rein, mit Ausnahme der Aus-Funktion. Da habe ich als Wert "aus" eingetragen. Im TNES-Task RadioOn filter ich "radiourl" und übergebe die Variable "url: %tpe_radiourl" nach Play Intentradio. Im TNES-Task RadioOff filter ich nach "radiourl == aus" und führe Stop Intentradio aus. So läuft es bei mir.

                    Vielleicht guckst Du auch mal im iobroker.admin im Objekte-Tab, ob überhaupt das Objekt RadioURL unter javascript.0 erstellt wurde und, falls ja, ob der von Vis gesendete Wert auch richtig übergeben wurde.

                    Viel Erfolg

                    1 Reply Last reply Reply Quote 0
                    • N
                      Nanouk last edited by

                      So,

                      die Fehlermeldungen sind weg.

                      Das lag am falschen Widget. Mit dem Radiobuttons Widget gibt es diese Fehler nicht mehr.

                      In ioBroker Objekte wird die URL auch eingetragen.

                      Nur Tasker / TNES schickt sie nicht weiter an Intentradio.

                      Da aber dieses Skript, welches ich auch irgendwo ausgegraben habe, funktioniert,

                      ` > var request = require('request');

                      request.post({

                      url: 'http://192.168.123.4:8765',

                      form: { title: "t4e", station: "Techno4Ever" }

                      }, function(error, response, body) {

                      if (error) log(error, 'error');

                      }); `

                      muss mein Fehler wohl noch irgendwie an "url: %tpe_radiourl" liegen, vermute ich.

                      Ich hab jetzt schon so viel versucht, und komme (mal wieder 😄 ) nicht weiter.

                      Gruß Nanouk

                      1 Reply Last reply Reply Quote 0
                      • N
                        Nanouk last edited by

                        Es funktioniert.

                        Habe nichts geändert, aber auf einmal gehts!

                        Vielen Dank für die Hilfe!

                        Gruß Nanouk

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        1.0k
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

                        7
                        16
                        12357
                        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