Skip to content
  • Home
  • 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

Community Forum

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

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

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

Geplant Angeheftet Gesperrt Verschoben Visualisierung
10 Beiträge 3 Kommentatoren 1.7k 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.
  • N Offline
    N Offline
    Nordlicht
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • N Offline
        N Offline
        Nordlicht
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • N Offline
            N Offline
            Nordlicht
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • BluefoxB Offline
              BluefoxB Offline
              Bluefox
              schrieb am zuletzt editiert von
              #6

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

              Zeitlich oder zum Beispiel über Bewegungselber?

              1 Antwort Letzte Antwort
              0
              • N Offline
                N Offline
                Nordlicht
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • P Offline
                  P Offline
                  pix
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • N Offline
                    N Offline
                    Nordlicht
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    0
                    • N Offline
                      N Offline
                      Nordlicht
                      schrieb am zuletzt editiert von
                      #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 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

                      674

                      Online

                      32.6k

                      Benutzer

                      82.3k

                      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
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe