Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Gelöst - Programm funktioniert nicht so wie's soll :(

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Gelöst - Programm funktioniert nicht so wie's soll :(

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

      Hallo,

      ich habe mir eine globale Funktion geschrieben, mit welcher ich mir über die SayIt Adapter Sachen ansage lasse.

      Ich über gebe der Funktion mit "wo" den Raumnamen, welchen ich dann mit "if" abfrage und nur dort ausgeben lasse.

      Zusätzlich habe ich noch eine if-Abfrage für "alle", wo dann natürlich auf allen Sayit angesagt werden soll.

      Das Problem das ich jetzt habe ist, dass wenn ich zb den Raumnamen "DBR" (für Dachbodenraum) übergebe, sagt er den Text in allen Räumen, nicht nur im DBR.

      Die Variablen werden richtig übergeben, er geht auch in die richtige IF Verzweigung, nur die Ansage passiert überall und nicht nur dort wo sie soll.

      habe ich was übersehen? funktioniert das über haupt so?

      Code:

      //Aufruf der Funktion mit: ansage("TestText", "Martin", Ansagelänge);
      
      function ansage(wo, text, laenge, volume)
      {
          if(volume === undefined || volume === null || volume > 100) volume = 1;
          else volume = volume/100;
          var vol;
          var vol_old;
          var vol_dp;
      
          log("---------------------ANSAGE MAIN wo: "+wo+" Text: "+text+" Länge: "+laenge+" Volume: "+volume);
      
          var tagw = tagwache();
      
          if(wo == "Martin")
          {
              var ist_da = getState("hm-rega.0.2475"/*Anwesenheit.Martin*/).val;
      
              if(ist_da)
              {
                  log("----------------ANSAGE Martin: "+wo);
                  wo = "sayit.0.tts.text";
                  vol_dp = "sayit.0.tts.volume";
                  vol_old = 100;
      
                  if(tagw) vol = 85*volume;
                      else vol = 85*volume;
      
                  setState(vol_dp, vol);
                  setState(wo, text);
                  setStateDelayed(vol_dp, vol_old, laenge);
              }
          }
          if(wo == "DBR")
          {
              log("----------------ANSAGE DBR: "+wo);
              wo = "sayit.2.tts.text";
              vol_dp = "sayit.2.tts.volume";
              vol_old = 100;
      
              if(tagw) vol = 100*volume;
                  else vol = 85*volume;
      
              setState(vol_dp, vol);
              setState(wo, text);
              setStateDelayed(vol_dp, vol_old, laenge);
          }
          if(wo == "Küche")
          {
              log("----------------ANSAGE Küche: "+wo);
              wo = "sayit.3.tts.text";
              vol_dp = "sayit.3.tts.volume";
              vol_old = 100;
      
              if(tagw) vol = 100*volume;
                  else vol = 85*volume;
      
              setState(vol_dp, vol);
              setState(wo, text);
              setStateDelayed(vol_dp, vol_old, laenge);
          }
          if(wo == "Badezimmer")
          {
              log("----------------ANSAGE Badezimmer: "+wo);
              wo = "sayit.1.tts.text";
              vol_dp = "sayit.1.tts.volume";
              vol_old = 85;
      
              if(tagw) vol = 85*volume;
                  else vol = 75*volume;
      
              setState(vol_dp, vol);
              setState(wo, text);
              setStateDelayed(vol_dp, vol_old, laenge);
          }
           if(wo == "Schrankraum")
          {
              log("----------------ANSAGE Schrankraum: "+wo);
              wo = "sayit.7.tts.text";
              vol_dp = "sayit.7.tts.volume";
              vol_old = 80;
              var bett_1 = getState("hm-rpc.0.JEQ0156677.1.STATE"/*Sensor Bett SZ Martin.STATE*/).val;
              var bett_2 = getState("hm-rpc.0.JEQ0156677.2.STATE"/*Sensor Bett SZ Babsi.STATE*/).val;
      
              if(tagw) vol = 90*volume;
                  else vol = 80*volume;
              if(!bett_1 || !bett_2) vol = 0;
      
              setState(vol_dp, vol);
              setState(wo, text);
              setStateDelayed(vol_dp, vol_old, laenge);
          }
          if(wo == "Keller")
          {
              log("----------------ANSAGE Keller: "+wo);
              wo = "sayit.6.tts.text";
              vol_dp = "sayit.6.tts.volume";
              vol_old = 85;
      
              if(tagw) vol = 85*volume;
                  else vol = 75*volume;
      
              setState(vol_dp, vol);
              setState(wo, text);
              setStateDelayed(vol_dp, vol_old, laenge);
          }
          if(wo == "wc")
          {
              log("----------------ANSAGE wc: "+wo);
              wo = "sayit.5.tts.text";
              vol_dp = "sayit.5.tts.volume";
              vol_old = 85;
      
              if(tagw) vol = 85*volume;
                  else vol = 75*volume;
      
              setState(vol_dp, vol);
              setState(wo, text);
              setStateDelayed(vol_dp, vol_old, laenge);
          }
          if(wo == "alle")
              log("----------------ANSAGE alle: "+wo);
              var x = 0;
              for(var i=0; i<=7; i++) //-----------------------------------ANPASSEN WENN EIN SAYIT ADAPTER DAZU KOMMT!!!!
              {
                  wo = "sayit."+i+".tts.text";
                  vol_dp = "sayit."+i+".tts.volume";
                  if(i === 0 || i == 2 || i ==3) vol_old = 100;
                  if(i == 1 || i ==5 || i == 6) vol_old = 85;
                  if(i == 7) vol_old = 80;
      
                  if(tagw) vol = 85*volume;
                      else vol = 75*volume;
      
                  setState(vol_dp, vol);
                  setState(wo, text);
                  setStateDelayed(vol_dp, vol_old, laenge);
              }
      }
      

      Aufruf der Funktion:

      ansage("DBR", "Guten Morgen", 2000, 80);
      

      Log Ausgabe für Variable "wo" = "DBR":

      javascript-0	2016-10-28 11:28:30.186	info	script.js.Test3: ----------------ANSAGE DBR: DBR
      javascript-0	2016-10-28 11:28:30.185	info	script.js.Test3: ---------------------ANSAGE MAIN wo: DBR Text: Guten Morgen Länge: 2000 Volume: 0.8
      

      Wäre toll wenn mir jemand helfen könnte, danke.

      1 Reply Last reply Reply Quote 0
      • R
        rascal last edited by

        Ich habe die if(wo == "alle") ausgeklammert, nun sagte er mir nur mehr im richtigen Raum an… ich versteh's nicht.

        die wo Variable hat zb "DBR" und trotzdem geht das Programm in den if(wo == "alle") Zweig..... warum?!?!

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

          Hey,

          ich glaube hinter if(wo == "alle) fehlt {

          und am ende halt }

          Gruß

          Phantomio

          1 Reply Last reply Reply Quote 0
          • R
            rascal last edited by

            bevor ich jetzt im Boden versinke und für die kommende Woche das Programmieren ganz lasse, möchte ich mich recht herzlich bedanken… das wars :oops:

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

              Kein Problem !!!

              Ich habe selber schon so viel aus dem Forum an Infos gezogen und Hilfe bekommen,

              da bin froh wenn ich auch mal helfen kann.

              Gruß

              Phantomio

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

              Support us

              ioBroker
              Community Adapters
              Donate

              715
              Online

              31.7k
              Users

              79.7k
              Topics

              1.3m
              Posts

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