Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Textlänge für Sprachausgaben (TTS) über SayIt

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    773

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    6.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Textlänge für Sprachausgaben (TTS) über SayIt

Scheduled Pinned Locked Moved Visualisierung
10 Posts 3 Posters 1.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    Nordlicht
    wrote on last edited by
    #1

    Guten Abend,

    ich wundere mich immer, wie manche ganze "Romane" über Sayit ausgeben lassen ohne dass diese offenbar abgeschnitten / abgehackt sind. Die Textlänge (ich verwende Ivona) ist ja begrenzt. Wie lässt sich sowas bewerkstelligen?

    Gerne hätte ich am Morgen einen kurzen Bericht mit aktuellen Wetterdaten, doch das ist alles "zu lang".

    Ich überlege mir eventuell ein Sonos zuzulegen. Doch wenn hier nur "Kurzmeldungen" möglich wären ist dies auch nicht das Wahre. Kostet ja n' bisschen was.

    Für Tipps, Ratschläge und sonstiges bin ich sehr dank bar.

    Gruß

    Thomas

    1 Reply Last reply
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      wrote on last edited by
      #2

      @Nordlicht:

      Guten Abend,

      ich wundere mich immer, wie manche ganze "Romane" über Sayit ausgeben lassen ohne dass diese offenbar abgeschnitten / abgehackt sind. Die Textlänge (ich verwende Ivona) ist ja begrenzt. Wie lässt sich sowas bewerkstelligen?

      Gerne hätte ich am Morgen einen kurzen Bericht mit aktuellen Wetterdaten, doch das ist alles "zu lang".

      Ich überlege mir eventuell ein Sonos zuzulegen. Doch wenn hier nur "Kurzmeldungen" möglich wären ist dies auch nicht das Wahre. Kostet ja n' bisschen was.

      Für Tipps, Ratschläge und sonstiges bin ich sehr dank bar.

      Gruß

      Thomas `
      Benutze Ivona.

      1 Reply Last reply
      0
      • N Offline
        N Offline
        Nordlicht
        wrote on last edited by
        #3

        Hi Bluefox,

        ja habe ich inzwischen im Einsatz. Das Skript läuft soweit auch.

        Jetzt hapert es nur noch daran, das ich nicht weiß wie man das Skript triggert um es auszulösen.

        Welchen Befehl muss ich wohin schreiben damit dies funktioniert.

        Ich konnte dazu im Forum leider nichts finden was mir weiter helfen konnte.

        Gruß Thomas

        1 Reply Last reply
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          wrote on last edited by
          #4

          @Nordlicht:

          Hi Bluefox,

          ja habe ich inzwischen im Einsatz. Das Skript läuft soweit auch.

          Jetzt hapert es nur noch daran, das ich nicht weiß wie man das Skript triggert um es auszulösen.

          Welchen Befehl muss ich wohin schreiben damit dies funktioniert.

          Ich konnte dazu im Forum leider nichts finden was mir weiter helfen konnte.

          Gruß Thomas `
          Wie sieht dein Skript aus?

          1 Reply Last reply
          0
          • N Offline
            N Offline
            Nordlicht
            wrote on last edited by
            #5

            Das Skript ist hier aus dem Forum und wurde von mir etwas angepasst.

            ! //sayyit adapter var idSayIt = "sayit.0.tts.text" /*Text to speech*/; ! //Wochentag ermitteln var d = new Date (); var weekday = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"); var w = weekday[d.getDay()]; ! //Tagesdatum ermitteln var t = d.getDate(); ! //Monat ermitteln var month = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"); var m = month[d.getMonth()]; ! //Jahr ermitteln var j = d.getFullYear() ! //Stunde ermitteln h = d.getHours() ! //Minute ermitteln mi = d.getMinutes() ! // Die Außentemperatur ist xx. Das Wetter heute ist xx // Einfache Temperaturansage mit SayIt. // Variante 1 mittels splitten der Temperatur, damit die Ansage nicht // "Es sind 18 Punkt 2 Grad " sagt. ! var Temperatursensor = getState("yr.0.forecast.day0.temperature_actual"); /*Temperatursensor:1.TEMPERATURE*/ var temperatur = Temperatursensor.val.toString(); var temp_array = []; ! var MaxTemperatur = getState("yr.0.forecast.day0.temperature_max"); /*Forecast of temperature for today*/ var maxtemp = MaxTemperatur.val.toString(); var maxtemp_array = []; ! var witterung = getState("yr.0.forecast.day0.text").val ; /*Actual text*/ log('Wetter: ' + witterung); ! temp_array = temperatur.split("."); ! // Fange leere Nachkommastellen ab. Das passiert, wenn die Temperatur z. B. 18.0 ist. // Es wird dann nur "18" gelesen. if (!temp_array[1]) { temp_array[1] = "0"; log("Die Nach-Kommastelle in temp_array[1] war nicht vorhanden und wird nun fest auf 0 gesetzt."); } ! maxtemp_array = maxtemp.split("."); ! // Fange leere Nachkommastellen ab. Das passiert, wenn die Temperatur z. B. 18.0 ist. // Es wird dann nur "18" gelesen. if (!maxtemp_array[1]) { maxtemp_array[1] = "0"; log("Die Nach-Kommastelle in maxtemp_array[1] war nicht vorhanden und wird nun fest auf 0 gesetzt."); } ! setState (idSayIt, "Guten Morgen. heute ist " + w + "der " + t + "te" + m + j + ", Es ist" + h + "Uhr und " + mi + "Minuten" + " , Die Temperatur ist " + temp_array[0] + "," + temp_array[1] + " Graad." + witterung + ". Maximal heute." + temp_array[0] + "," + temp_array[1] + "Graad"); !

            Es läuft - solange es manuell gestartet wird. Das mit dem Trigger / schedule bekam ich nicht zum laufen.

            1 Reply Last reply
            0
            • BluefoxB Offline
              BluefoxB Offline
              Bluefox
              wrote on last edited by
              #6

              Das muss auf irgendein Ereignisse gekoppelt werden. Wie willst du es Triggern?

              Zeitlich oder zum Beispiel über Bewegungselber?

              1 Reply Last reply
              0
              • N Offline
                N Offline
                Nordlicht
                wrote on last edited by
                #7

                @Bluefox:

                Das muss auf irgendein Ereignisse gekoppelt werden. Wie willst du es Triggern?

                Zeitlich oder zum Beispiel über Bewegungselber? `

                Zeitlich war ursprünglich angedacht.

                Nicht uninteressant wäre auch über Bewegungsmelder - dann allerdings nur 1x (z.B. 1x zwischen 6 und 7 Uhr) und dann für den Rest des Tages nicht mehr.

                OffTopic: Habe es eben nochmals von Hand gestartet. Ivona scheint auch ein "Längenproblem" zu haben. Der Satz wurde leicht abgeschnitten ("Maximal heute 9 komma…...)

                1 Reply Last reply
                0
                • P Offline
                  P Offline
                  pix
                  wrote on last edited by
                  #8

                  Hallo,

                  ich würde es so machen:

                  ! //sayit adapter var idSayIt = "sayit.0.tts.text"; // Text to speech var heutenochansagen = true; // Flag für heutige Ansage ! function baueAnsage() { //Wochentag ermitteln var d = new Date (); var weekday = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"); var w = weekday[d.getDay()]; ! //Tagesdatum ermitteln var t = d.getDate(); ! //Monat ermitteln var month = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"); var m = month[d.getMonth()]; ! //Jahr ermitteln var j = d.getFullYear() ! //Stunde ermitteln h = d.getHours() ! //Minute ermitteln mi = d.getMinutes() ! // Die Außentemperatur ist xx. Das Wetter heute ist xx // Einfache Temperaturansage mit SayIt. // Variante 1 mittels splitten der Temperatur, damit die Ansage nicht // "Es sind 18 Punkt 2 Grad " sagt. ! var Temperatursensor = getState("yr.0.forecast.day0.temperature_actual"); /*Temperatursensor:1.TEMPERATURE*/ var temperatur = Temperatursensor.val.toString(); var temp_array = []; ! var MaxTemperatur = getState("yr.0.forecast.day0.temperature_max"); /*Forecast of temperature for today*/ var maxtemp = MaxTemperatur.val.toString(); var maxtemp_array = []; ! var witterung = getState("yr.0.forecast.day0.text").val ; /*Actual text*/ log('Wetter: ' + witterung); ! temp_array = temperatur.split("."); ! // Fange leere Nachkommastellen ab. Das passiert, wenn die Temperatur z. B. 18.0 ist. // Es wird dann nur "18" gelesen. if (!temp_array[1]) { temp_array[1] = "0"; log("Die Nach-Kommastelle in temp_array[1] war nicht vorhanden und wird nun fest auf 0 gesetzt."); } ! maxtemp_array = maxtemp.split("."); ! // Fange leere Nachkommastellen ab. Das passiert, wenn die Temperatur z. B. 18.0 ist. // Es wird dann nur "18" gelesen. if (!maxtemp_array[1]) { maxtemp_array[1] = "0"; log("Die Nach-Kommastelle in maxtemp_array[1] war nicht vorhanden und wird nun fest auf 0 gesetzt."); } var ansage = "Guten Morgen. heute ist " + w + "der " + t + "te" + m + j + ", Es ist" + h + "Uhr und " + mi + "Minuten" + " , Die Temperatur ist " + temp_array[0] + "," + temp_array[1] + " Grad." + witterung + ". Maximal heute." + temp_array[0] + "," + temp_array[1] + "Grad"; ! setState (idSayIt, ansage); } ! var idMotion = "hm-rpc.0.XXX1234567.STATE" // ID des Bewegungsmelders on (idMotion, function (obj) { if (obj.state.val === true && heutenochansagen === true) { var jetzt = new Date(); var stunde = jetzt.getHours(); var wochentag = jetzt.getDay() // wenn werktags zwischen 6 und 7 Uhr oder am Wochenende zwischen 8 und 9 Uhr if ( ((stunde > 6 && stunde < 7) && (wochentag > 0 && wochentag < 6)) || ((stunde > 8 && stunde < 9) && (wochentag == 0 || wochentag == 6)) ) { baueAnsage(); heutenochansagen = false; log('Sayitausgabe Tagestemperatur durch Bewegungsmelder ausgelöst'); } } }); ! // bei Skriptstart immer ansagen baueAnsage(); log('Sayitausgabe Tagestemperatur durch Scriptstart ausgelöst'); // jeden Werktag um 6:00h schedule("0 6 * * 1-5", function() { if (heutenochansagen === true) { // wenn heute noch angesagt werden muss baueAnsage(); // Ansage bauen heutenochansagen = false; // flag für heutige Ansage auf false log('Sayitausgabe Tagestemperatur durch Schedule Werktag ausgelöst'); } }); // jeden Wochenendtag um 8:00h schedule("0 8 * * 6,7", function() { if (heutenochansagen === true) { baueAnsage(); heutenochansagen = false; log('Sayitausgabe Tagestemperatur durch Schedule Wochenende ausgelöst'); } }); // Flag für Ansage um Mitternacht zurücksetzen auf true schedule("0 0 * * *", function() { heutenochansagen = true; }); !
                  Beachte: Bei Skriptstart (also beim Ändern des Skriptes oder Javascript-Instanz-Neustart wird das Flag zur Ansage wieder auf true gesetzt.

                  Es gibt im Forum eine Funktion isTimeInRange, die eigentlich für das Triggern innerhalb eines Zeitraums da ist. Lies dich mal ein. Habe das jetzt hier mal etwas einfacher gelöst.

                  Gruß

                  Pix

                  ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                  1 Reply Last reply
                  0
                  • N Offline
                    N Offline
                    Nordlicht
                    wrote on last edited by
                    #9

                    Vielen Dank Pix. Ich werde mich da mal einlesen.

                    Mein Problem ist einfach - bei son manchen Dingen - dass mir ein zum einlernen geeignetes Beispiel fehlt.

                    Wenn man erst mal eine funktionierende Sache hat, dann lässt sich darauf aufbauen (lernen).

                    Schönen Tag Dir noch.

                    Gruß

                    Thomas

                    1 Reply Last reply
                    0
                    • N Offline
                      N Offline
                      Nordlicht
                      wrote on last edited by
                      #10

                      Ich möchte noch schnell eine Rückmeldung geben.

                      Das mit den Skripten klappt soweit.

                      Einziges Problem welches zu beobachten ist. Ivona schneidet die Ansagen teilweise ab.

                      Beispiel: Ansage wäre "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden aufgehoben"

                      Ansage war dann: "Alle Wetterwarnungen des Deutschen Wetterdienstes wurden au"

                      Woran kann das noch liegen? Ich hänge mal einen Screenshot der Adapter Javaskript und Sayit hier mit an. Ich kann an den Einstellungen nichts falsches sehen. Unklar ist mir nur die Zeile bei Javaskript mit den Modulen. Ob das im Zusammenhang steht?

                      Gruß

                      Thomas
                      1641_sayit.jpg
                      1641_javasript.jpg

                      1 Reply Last reply
                      0

                      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                      With your input, this post could be even better 💗

                      Register Login
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      628

                      Online

                      32.8k

                      Users

                      82.7k

                      Topics

                      1.3m

                      Posts
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Home
                      • Recent
                      • Tags
                      • Unread 0
                      • Categories
                      • Unreplied
                      • Popular
                      • GitHub
                      • Docu
                      • Hilfe