Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Sayit-Script + Schedule

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

Sayit-Script + Schedule

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
5 Beiträge 3 Kommentatoren 1.4k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • I Offline
    I Offline
    ianmoone
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      schrieb am zuletzt editiert von
      #2

      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.

      Adapter: Fritzbox, Unify Circuit
      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

      1 Antwort Letzte Antwort
      0
      • I Offline
        I Offline
        ianmoone
        schrieb am zuletzt editiert von
        #3

        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 Antwort Letzte Antwort
        0
        • ruhr70R Offline
          ruhr70R Offline
          ruhr70
          schrieb am zuletzt editiert von
          #4

          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.

          Adapter: Fritzbox, Unify Circuit
          Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

          1 Antwort Letzte Antwort
          0
          • coyoteC Offline
            coyoteC Offline
            coyote
            Most Active
            schrieb am zuletzt editiert von
            #5

            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 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            761

            Online

            32.4k

            Benutzer

            81.4k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe