Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Radio Lautstärke per Widget und Javascript steuern

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Radio Lautstärke per Widget und Javascript steuern

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

      Hallo @ all

      ich schon wieder 😉

      ich habe es geschafft dank eurer Hilfe einige alte Programme zu portieren und auf ioBroker zum laufen zu bringen. Mit dem großen Vorteil das die CCU2 sich nicht ab und an wegen exec aufhängt.

      Leider werde ich mit den neuen Blockly Editor nicht warm obwohl mir dies "einleuchtender" erscheint als bloßes Java Script. Ich bekomme mein altes Programm nicht "rund" gedacht. Das Programm macht auf der CCU nichts anderes als einen Wert in meinem URL String am Ende um 5 hoch zu zählen. Somit kann ich meine Musikbox https://www.chumby.com/ etwas lauter machen.

      PS: Natürlich wäre ein Slider viel cooler aber ich bekomme nicht mal das gebacken 😉 Steh noch am Anfang.

      Tips und Starthilfe gern gesehen. Wenn ich im VIS Widget Slider den Wert auslesen und dann hier im Script einfügen könnte wäre das möglich? So ähnlich wie :

      hole Widget Wert
      setze Widget Wert zu string url 
      sende url
      

      Somit würde ich mir das speichern der Variable sparen können das das Widget doch eh anzeigt was gerade der Wert ist.

      ! Lautstärke um 5 % erhöhen
      object sv = dom.GetObject("Level");
      real x = sv.Value();
      x = x + 5;
      if (x > 100) {x = 100;}
      sv.State(x);
      string url  = "http://192.168.200.24/cgi-bin/custom/setvol.sh?"#x.ToString(0);
      dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O /dev/null '"#url#"'");
      

      LG

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

        Hallo,

        ich probier mal das Skript im Javaskript Editor (im Ordner Common unter beliebigen aber sinnvollem Namen abspeichern und mit dem roten Dreieck aktivieren):

        // Variable mit Lautstärke-Soll erstellen:
        createState('VolSoll', {
           type: 'number',
           min: 0,
           max: 100,
           unit: '%',
           def: 0,
           desc: 'Lautstärke'
        });
        
        // Vorbereitungen fürs Senden eines Befehls über URL
        var request = require('request');
        var link = "http://192.168.200.24/cgi-bin/custom/setvol.sh?"
        
        // Auf Lautstärke Änderungen reagieren
        var idVol = 'javascript.0.VolSoll';
        on(idVol, function (data) {
            log('Lautstärke auf ' + data.state.val + '% geändert');
            link = link + parseInt(data.state.val,10); // link-stamm + ganze Zahl aus Schieber
            // Befehl absenden
            try request(link);
            catch (e) log('Fehler (try) Lautstärke via URL ändern: ' + e, 'error');
        });
        
        

        Ich habe das hier im Forumeditor geschrieben. Ich hoffe, es funktioniert. 🙂

        Dazu ein Schieberegler Widget mit dem Objekt (OID) 'Javascript.0.VolSoll'

        Gruß

        Pix

        PS: Und gib dem Thread mal einen besseren Namen. Welches Radio ist das? "Radio Lautstärke per Widget und Javascript steuern"

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

          Guten Morgen Pix,

          danke für die Starthilfe. Das Radio ist ein Chumby One. Relativ exotisch und alt ;-). Daher hat es auch keine Bidirektionale Kommunikation. Dein Script zeigt mir einen Fehler im Try Block (Zeile21,22). Es setzt auch den State nicht. Lasse ich den Try Block weg geht das Script im Debugger durch. Dem Widget habe ich die Objekt ID !javascript.0.VolSoll" gegeben kann diese aber im Baum nicht picken. Ist das korrekt? lasse ich "try" im Script weg zeigt auch der Debugger "ok" an. Geht aber scheinbar trotzdem nicht. Hatte dann noch versucht bevor request(link); kommt eine Ausgabe zu erzeugen im sinne von "echo(link)" oder "print(link)" die wird mir aber nicht angezeigt.

          05:56:54.679	[info]	javascript.0 script.js.Chumby.Control.volume: subscribe: {"pattern":{"id":"javascript.0.VolSoll","change":"ne"},"name":"script.js.Chumby.Control.volume"}
          05:56:54.679	[info]	javascript.0 script.js.Chumby.Control.volume: registered 1 subscription and 0 schedules
          05:57:48.727	[info]	javascript.0 Stop script script.js.Chumby.Control.volume
          05:57:48.759	[info]	javascript.0 Start javascript script.js.Chumby.Control.volume
          

          Edit:

          Ich hatte erst das Script im Verzeichnis wo ich die anderen Radio Scripte hatte. Jetzt ist es im "common" Zweig hat aber die selben Fehler. Der Try Catch Block scheint nicht zu gehen.

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

            Ich glaube ich habe den Fehler im Script gefunden. Die Variable "volume" summiert sich bei der URL.

            Dies konnte ich erst sehen als ich mir die URL ausgeben lassen habe. Das der try catch Block nicht funktionierte habe ich diesen aus kommentiert.

            Wenn ich das Script so umbaue geht es. Danke für die Vorarbeit!

            var idVol = 'javascript.0.VolSoll';
            on(idVol, function (data) {
                log('Lautstärke auf ' + data.state.val + '% geändert');
                log (link);
                request(link + data.state.val);
            });
            
            1 Reply Last reply Reply Quote 0
            • P
              pix last edited by

              Schön, dass ich helfen konnte.

              Die Fehler im Skript kommen leider eben daher, dass ich es nicht ausprobiert habe. Ist praktisch der erste Blitz, der mir durch den Kopf schoss. Natürlich summiert sich die Variable auf, das hast du genau richtig gelöst.

              Try & Catch sollten nur verhindern, dass gleich die ganze Instanz abschmiert, wenn mit der Adresse oder der Erreichbarkeit des Radios was nicht stimmt.

              Gruß

              Pix

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

              Support us

              ioBroker
              Community Adapters
              Donate

              495
              Online

              31.7k
              Users

              79.7k
              Topics

              1.3m
              Posts

              2
              5
              2547
              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