Navigation

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

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Sayit einbinden in vorhandenes Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • coyote
      coyote Most Active last edited by

      Habe hier ein Script um den CO2 Gehalt abzufragen, jetzt möchte ich gerne mit dem Sayit Adapter über Sonos auch eine Ansage einbinden.

      Das funktioniert auch soweit, aber die Ansage kommt immer, wenn der Wert aktualisiert wird.

      Wie muss ich das Script abändern, damit die Ansage nur kommt, wenn der Wert über/unter 1000 ist?

      Als Ansage hätte ich dann gerne "CO2 Gehalt ist im Normalbereich (wenn unter 1000), Wert beträgt XXXX" wenn über 1000 dann "CO2 Gehalt ist zu hoch, Wert beträgt XXXX" und wie kann ich bei der Variable "wert" im Sayit Ausdruck noch die Lautstärke mitgeben?

      var wert = getState("hm-rega.0.1968").val
      var idSayIt  = "sayit.0.tts.text";
      createState('co2Textfarbe', "black"); // Objekt in javascript.0\. für die Textfarbe
      
      on('hm-rega.0.1968', function (obj) {
       obj.newState.val = parseInt(obj.newState.val, 10);
       log('hm-rega.0.1968: ' + obj.newState.val);
       if (obj.newState.val <= 1000) {
            setState("co2Textfarbe","green", true);
            setState (idSayIt, wert); 
           }    
          else if (obj.newState.val >= 1000 && obj.newState.val <=1300) {
            setState("co2Textfarbe","orange", true);
            setState (idSayIt, wert);
         }
            else if (obj.newState.val >= 1300) {
              setState("co2Textfarbe","red", true); 
              setState (idSayIt, wert);
          }
      });
      

      Gruß Frank

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

        Halo coyote,
        @coyote:

        wie kann ich bei der Variable "wert" im Sayit Ausdruck noch die Lautstärke mitgeben? `

        Das geht so
        @[url=https://github.com/ioBroker/ioBroker.sayit/blob/master/README.md:

        ~~https://github.com/ioBroker/ioBroker.sayit/blob/master/README.md"]~~ou can specify the volume of announcement in percent from current or given volume (not from maximal). E.g. if command is de;75;Gutes Wetterand "announce volume" is 50%, the announce will be played with volume 38% from 100% possible. `

        @coyote:

        Wie muss ich das Script abändern, damit die Ansage nur kommt, wenn der Wert über/unter 1000 ist? `
        Homematic Sensoren senden ihren aktuellen Wert alle paar Minuten (manche alle paar Sekunden). Du bekommst bei jeder Sendung einen neuen Wert, also immer weider eine neue Sayit-Ausgabe. Auch wenn, der Wert unter 1000 ist. Sobald er unter diese Grenze fällt ist die Bedingung wahr und es wird bei jeder Aktualisierung angesagt. Das ist nicht gewünscht.

        Besser:

        Da du schon die Textfarbe für bestimmte Wertbereiche festlegst, kannst du diese Variable gleich für das Triggern der Sprachausgabe nutzen.

        Wenn sich co2Textfarbe ändert (also nur bei Über/Unterschreitung der definierten Grenze), dann gib den aktuellen Wert aus (und die Farbe/bzw zB "Normalbereich")

        on('co2Textfarbe', function (obj) {
            if (obj.newState.val ==="green") {
                 // alles in Ordnung
                 setState (idSayIt, "Alles in Ordnung, der CO2 Gehalt liegt bei " + getState('hm-rega.0.1968').val; 
            } else if (obj.newState.val ==="orange") {
                 // bedenklich
                 setState (idSayIt, "80;Vorsicht, der CO2 Gehalt liegt bei " + getState('hm-rega.0.1968').val; 
            } else if (obj.newState.val ==="red") {
                 // kritisch
                 setState (idSayIt, "100;Achtung Warnung! Der CO2 Gehalt liegt bei " + getState('hm-rega.0.1968').val; 
            }
        
        });
        
        

        Und wofür ist das "true" am Ende? Das kannst du weglassen. Neuer State der Variable ist "Farbe", nicht true.

        
              setState("co2Textfarbe","orange", true);
        
                setState("co2Textfarbe","red", true); 
        
        

        Gruß

        Pix

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

          Hi Pix,

          vielen Dank schon mal.

          Klar, das "true" ist natürlich nicht nötig, ist mir gar nicht aufgefallen. Das Script hatte mir Bluefox mal zusammengebaut, warum da "true" mit dabei war weiß ich jetzt auch nicht.

          Ok, das hier > de;75;Gutes Wetterand wusste ich schon, nur wusste ich nicht, wie ich das mit der Variable einbaue.

          Hast du mir ja jetzt gezeigt, danke.

          So:
          > "80;Vorsicht, der CO2 Gehalt liegt bei " + getState('hm-rega.0.1968').val

          Man, man da hätte ich auch selbst drauf kommen können mit den Farbwerten… :roll:

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

          Support us

          ioBroker
          Community Adapters
          Donate

          748
          Online

          31.7k
          Users

          79.7k
          Topics

          1.3m
          Posts

          2
          3
          934
          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