Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Sayit-Script + Schedule

    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

    Sayit-Script + Schedule

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

      Hallo,

      ich möchte gerne folgendes Script jeden Werktag (Mo-Fr) um 6.30 Uhr ausführen lassen und am WE um 10 Uhr.

      Kann mir jemand helfen wie ich das umsetzte?

      var Temperatursensor = getState ("hm-rpc.0.LEQ0798935.1.TEMPERATURE"); /*Temperatursensor:1.TEMPERATURE*/
      var temperatur = Temperatursensor.val.toString();
      
      temperatur = temperatur.replace('\.', '\,');
      
      var idSayIt            = "sayit.1.tts.text"; // Hier die SayIt Text ID
          var idSonosfav = getState ("sonos.0.root.192_168_178_218.favorites_set").val;      //speichern des aktuellen Senders
          var idSonosplay = getState ("sonos.0.root.192_168_178_218.state_simple").val;     //Status des Speakers
          if (idSonosplay === true) {                                                     //Wenn Radio läuft
              setState (idSayIt, "30;Guten Morgen. Die aktuelle außentemperatur beträgt " + temperatur + " Grad.");                                 //Ausgabe
              setTimeout(function () {
              setState ("sonos.0.root.192_168_178_218.favorites_set", 'Radio');          //nach 7 Sekunden gespeicherten Favoriten Sender wieder starten
          }, 6000);
          setState("sonos.0.root.192_168_178_218.volume",'8');
          }
          else if (idSonosplay === false)                                                //Wenn Radio nicht läuft
         setState (idSayIt, "30;Guten Morgen. Die aktuelle außentemperatur beträgt " + temperatur + " Grad.");
      
      
      1 Reply Last reply Reply Quote 0
      • ruhr70
        ruhr70 last edited by

        Dein Script 1:1 übernommen und ungetestet:

        // https://github.com/iobroker/ioBroker.javascript/blob/master/README.md#time-schedule
        
        // ich möchte gerne folgendes Script jeden Werktag (Mo-Fr) um 6.30 Uhr ausführen lassen und am WE um 10 Uhr.
        
        // siehe schedule() am Ende des Scripts
        
        // Variablen ausserhalb der Funktion deklarieren, wenn Sie noch an anderer Stelle im Script genutzt werden sollen
        var idSayIt            = "sayit.1.tts.text"; // Hier die SayIt Text ID
        
        function meineAnsage() {
        	// Variablen nur innerhalb der Funktion gültig.
        	// in diesem Fall werden auch jedes Mal die Werte zum Zeitpunkt des Funktionsaufrufs benötigt
        	var Temperatursensor = getState ("hm-rpc.0.LEQ0798935.1.TEMPERATURE"); /*Temperatursensor:1.TEMPERATURE*/
        	var idSonosplay = getState ("sonos.0.root.192_168_178_218.state_simple").val;     //Status des Speakers
        
        	// wird im Script nicht mehr verwendet?
        	var idSonosfav = getState ("sonos.0.root.192_168_178_218.favorites_set").val;      //speichern des aktuellen Senders
        
        	var temperatur = Temperatursensor.val.toString();
        
        	temperatur = temperatur.replace('\.', '\,');
        
        	if (idSonosplay === true) {                                                     //Wenn Radio läuft
            	setState (idSayIt, "30;Guten Morgen. Die aktuelle außentemperatur beträgt " + temperatur + " Grad.");                                 //Ausgabe
            	setTimeout(function () {
            		setState ("sonos.0.root.192_168_178_218.favorites_set", 'Radio');          //nach 7 Sekunden gespeicherten Favoriten Sender wieder starten
        		}, 6000);
        		setState("sonos.0.root.192_168_178_218.volume",'8');
        	} else if (idSonosplay === false)                                                //Wenn Radio nicht läuft
        	setState (idSayIt, "30;Guten Morgen. Die aktuelle außentemperatur beträgt " + temperatur + " Grad.");
        	}
        }
        
        schedule("30 6 * * 1-5", function () {
            log("Montag - Freitag, 06:30 Uhr");
            meineAnsage();
        });
        
        schedule("00 10 * * 6-7", function () {
            log("Samstag - Sonntag, 10:00 Uhr");
            meineAnsage();
        });
        
        

        Mit der Funktion schedule() kannst Du zu definierten Zeiten (Mo-Fr, 6:30 Uhr), Zeitabständen (alle 20 Minuten) oder Astrozeiten (immer bei Sonnenaufgang) Script ausführen lassen.

        Beschreibung:

        https://github.com/iobroker/ioBroker.ja … e-schedule

        Funktioniert das mit dem Radio sauber?

        Dann gratuliere ich. Dann hast Du die Lösung für das Problem, was die Meisten noch haben 🙂

        Die Variable idSonosfav verwendest Du im weiterem Script nicht mehr.

        1 Reply Last reply Reply Quote 0
        • I
          ianmoone last edited by

          Danke! Teste ich heute mal.

          Ja Radio funktioniert. Aber nur ein fest eingestellter Sender. NICHT der zuletzt abgespielte.

          Also egal was vorher gelaufen ist, nach ausführen des Script wir der Sender eingestellt welcher im Script definiert ist.

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

            Füg am Ende des Scripts noch ein meineAnsage(); ein.

            Dann wird die Funktion mit der Ansage direkt gespielt und Du musst nicht bis 6:30 Uhr warten 😉

            Das ist ja interessant, dass das mit dem Radio so funktioniert. Ich teste das mal. Wenn das so bei Dir funktioniert, dann müsste auch folgendes funktionieren:

            Wenn Du Deine Radiosender unter Favoriten hast, dann kannst kannst Du über .favorites_list die Liste der Favoriten auslesen und mit .current_title vergleichen. Wird .current_title in .favorites_list gefunden, dann kannn man über .favorites_set den Sender wieder herstellen. Wird der Eintrag nicht gefunden, nimmt man einen Default-Wert.

            Dann würde zu mindestens schon einmal alle Radiosender unter Favoriten wieder korrekt fortgeführt.

            1 Reply Last reply Reply Quote 0
            • coyote
              coyote Most Active last edited by

              Ich häng mich hier mal kurz rein.

              Also ich verstehe nicht ganz warum du am Ende

               setState ("sonos.0.root.192_168_178_218.favorites_set", 'Radio');
              

              machst, du speicherst doch vorher den aktuellen Sender, da schreib ihn doch einfach wieder rein.

              Ich mach das z.B. so

                  var idSonosfav = getState("sonos.0.root.192_168_66_40.favorites_set").val;
                  var idSonosplay = getState ("sonos.0.root.192_168_66_40.state_simple").val;
                  if (obj.newState.val ==="green" && idSonosplay === true) {
                       setState (idSayIt, "Alles in Ordnung, der CO2 Gehalt liegt bei" + getState('hm-rega.0.1968').val); 
                       setTimeout(function () {
                       setState ("sonos.0.root.192_168_66_40.favorites_set", idSonosfav);
                        }, 9000);
                        });
              
              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              981
              Online

              31.9k
              Users

              80.2k
              Topics

              1.3m
              Posts

              3
              5
              1398
              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