T2S Durchsagen

Hier werden sämtliche Befehle hinsichtlich text-2-speech gelistet. Diese müssen als virtueller Ausgangsbefehl (Loxone) oder in einem http Ausgang (Nicht Loxone) angelegt werden. Dazu muss der virtuelle Ausgang (nur Loxone) folgendermaßen angelegt werden:

wichtig ist der Haken bei "Verbindung nach dem Senden schließen", ansonsten wird u.U. die Funktion 2x ausgeführt

Syntax

Übersicht der gängigsten Befehle, T2S Syntax und auch erlaubte Kombinationen innerhalb einer Syntax. Wer die Funktionen erst im Browser testen möchte, setzt bitte jeweils folgendes vor die Syntax:

http://<LOXBERRY IP-ADRESSE> oder <LOXBERRY HOSTNAME>

Allgemeine T2S Parameter

hier handelt es sich um Parameter die bei jeder T2S optional verwendet werden können:

Funktion Befehl / Syntax / URL Beschreibung
volume &volume=40 setzt die Lautstärke auf 40%
keepvolume &keepvolume behält die gegenwärtige Lautstärke bei
greet &greet Vor der eigentlich T2S wir eine zufällige gewählte Grußformel angesagt

Die Grußformeln können über das LoxBerry Translation Widget individuell angepasst oder auch gelöscht werden. Dazu das Widget "Translate" öffnen → Plugin Übersetzung mit folgenden Parameterm:

* Sonos
* t2s-text_en.ini
* German

anschließend "Anzeigen" und dann können die Texte in Spalte "Ziel Sprache" angepasst werden
playgong &playgong=yes

&playgong=Airport_gong
es wird das Standard Jingle aus der Plugin Konfiguration vor der T2S abgespielt

es wird das angegebene Jingle (ohne Endung .mp3) aus dem tts/mp3 Unterverzeichnis vor der T2S abgespielt

HINWEIS: Die Angabe von playgong=no bewirkt einen Fehler
batch &batch erzeugt eine T2S mp3 für einen T2S Abruf zu einem späteren Zeitpunkt. Somit kann man sich z.B. eine Durchsage aus mehreren einzelnen T2S zusammen stellen
playbatch &playbatch Spielt alle mit &batch erstellten T2S in deren vorherigen Reihenfolge ab
nocache &nocache triggert eine erneute Erstellung einer T2S Sprachausgabe an obwohl evtl. diese im Cache vorhanden ist

Standard T2S

Bei T2S ohne Ansage von Werten aus dem MS muss der virtuelle Ausgangsbefehl als Digital markiert sein  

Funktion Befehl / Syntax / URL Einzel Gruppe Beschreibung
say /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&text=hallo. dies ist ein test X startet eine Einzeldurchsage
/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&text=hallo. dies ist ein test&playgong=yes X startet eine Einzeldurchsage mit Standard Jingle aus der Pluginkonfiguration
/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&text=hallo. dies ist ein test&voice=Hans&playgong=yes X startet eine Einzeldurchsage mit Standard Jingle aus der Pluginkonfiguration und Stimme Hans (nur Polly)
/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&text=dies ist ein test&volume=20&greet&playgong=yes X startet eine Einzeldurchsage mit Standard Jingle aus der Pluginkonfiguration und einer Zufallsgrußformel
/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&messageid=3&volume=30 X spielt die Datei 3.mp3 aus deinem tts/mp3 Verzeichnis ab
/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&messageid=Gartentor_offen X spielt die Datei Gartentor_offen.mp3 aus deinem tts/mp3 Verzeichnis ab
/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&text=hallo. dies ist ein test&member=ZONE2,ZONE3 X startet eine Gruppendurchsage auf 3 Zonen mit der jeweiligen Standard Lautstärke aus der Plugin Konfiguration
/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&text=hallo. dies ist ein test&member=ZONE2,ZONE3&volume=40 X startet eine Gruppendurchsage auf 3 Zonen mit der Lautstärke von 40%
/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&messageid=haustür_offen&member=ZONE2 X spielt die Datei haustür_offen.mp3 aus deinem tts/mp3 Verzeichnis auf 2 Playern ab
/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&text=hallo. dies ist ein test&member=all X startet eine Gruppendurchsage auf allen Zonen

Bei T2S mit Ansage von Werten aus dem MS muss der virtuelle Ausgangsbefehl als Analog markiert sein  

Funktion Befehl / Syntax / URL Einzel Gruppe Beschreibung
say /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&text=Die gegenwärtige Temperatur im Wohnzimmer beträgt <v> Grad X gibt die gegenwärtige Temperatur <v> des vorgeschalteten MS Bausteines aus
/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&text=Die gegenwärtige Temperatur im Wohnzimmer beträgt <v> Grad&member=2.ZONE,3.ZONE&volume=40 X gibt die gegenwärtige Temperatur <v> des vorgeschalteten MS Bausteines mit Lautstärke 40% auf 3 Playern parallel aus
T2S aus Statusbaustein (ab v3.8.4)

/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&text=<v>&volume=40

/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&text=<v>&member=2.ZONE,3.ZONE&volume=40
X X Um bei Verwendung von T2S aus einem Statusbaustein heraus die NULL beim Off schalten nicht angesagt zu bekommen, muss der gesamte Text inkl. Variablen in den Statusbaustein.Achtung: Darauf achten, dass sich am Schluss des Textes kein Zeilenumbruch befindet! Ansonsten kann es sein, dass die NULL trotzdem ausgegeben wird.

Beispiel:

Der auszugebende Text soll lauten: "Die aktuelle Pooltemperatur ist 19,5 Grad". An AI1 hängt der Temperaturwert der ausgegeben werden soll, an AI2 hängt der Trigger für die Ausgabe. 

Der Text im Feld "Statustext" muss dann wie folgt aufgebaut sein: Die aktuelle Pooltemperatur ist <v1.1> Grad. Somit wird der Wert von AI1 mit einer Dezimalstelle in die T2S übernommen

Sonderfunktionen T2S

Funktion Befehl / Syntax / URL Einzel Gruppe Beschreibung
Uhrzeit /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&clock X Die aktuelle Uhrzeit des LoxBerry wird angesagt
Wetter /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&weather X X Bei installiertem weather4lox Plugin wird je nach Tageszeit eine Wettervorherssage bzw. -status angesagt
Abfall /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&abfall X X Bei installiertem CalDAV4lox Plugin wird je nach Tageszeit eine Abfrage eines Abfallkalenders durchgeführt und ggf. der nächste Termin und die Art des Abfalles angesagt
Pollen /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&pollen X X es wird ein Pollenflughinweis angesagt
Wetterwarnung /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&warning X X es wird ggf. eine vorhandene Wetterwarnung ausgegeben (vorausgesetzt das Bundesland und die Stadt/Gemeinde ist in der Plugin Konfiguration gepflegt)
Titel/Interpret/Sender /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&sonos X Der aktuell laufende Titel/Interpret oder Radio Sender wird angesagt. Falls der Radiosender Titel/Interpret zur Verfügung stellt, wird diese anstatt des Senders ausgegeben.

Zur Radiosender T2S Ausgabe bitte "…action=saysonos" nutzen
Kalender /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&calendar X X Bei installiertem CalDAV4lox Plugin wird je nach Tageszeit eine Abfrage eines Kalenders durchgeführt und ggf. der/die nächste(n) Termin(e) angesagt
Witz /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&witz X X gibt einen Zufallswitz aus
Fahrzeit /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&distance&to=Hamburg&traffic




/plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=say&distance&to=Hamburg&traffic&model=pessimistic&deptime=16:30
X X gibt die ca. Fahrzeit von deinem Standort (aus der Plugin Konfiguration) bis nach Hamburg aus. Die Angabe basiert auf Google und ein entsprechender API-key muss eingepflegt sein.

zur Verfügung stehende Parameter sind:

&traffic → Berechnung der Fahrzeit findet unter Berücksichtigung der gegenwärtigen Verkehrslage statt. Ohne diesen Parameter wird der schnellste Weg ohne Berücksichtigung der gegenwärtigen Verkehrslage berechnet.

&model= → ist nur sinnvoll in Kombination mit dem Parameter &traffic einzusetzen. Hier können 3 verschiedene Parameter gewählt werden:

pessimistic: gibt an, dass der für duration_in_traffic zurückgegebene Wert höher als die tatsächliche Reisezeit an den meisten Tagen sein soll. Einzelne Tage mit besonders schlechten Verkehrsbedingungen können diesen Wert überschreiten.

best_guess: (Standard) gibt an, dass der für duration_in_traffic zurückgegebene Wert die bestmögliche Einschätzung der Verkehrsbedingungen auf der Grundlage von Werten aus Vergangenheit und Gegenwart darstellen soll. Dabei werden Werte aus der Gegenwart stärker berücksichtigt, je näher departure_time am Zeitpunkt „jetzt“ liegt.

optimistic: gibt an, dass der für duration_in_traffic zurückgegebene Wert niedriger als die tatsächliche Reisezeit an den meisten Tagen sein soll. Einzelne Tage mit besonders guten Verkehrsbedingungen können diesen Wert unterschreiten.

&deptime = Angabe des gewünschten Abfahrtszeitpunktes (muss in der Zukunft liegen)

Erlaubte Werte sind: 24h Format oder Uhrzeit in am/pm (Bsp.: &deptime=16:30 oder &deptime=4.30pm)
saysonos /plugins/sonos4lox/index.php?zone=DEINE_ZONE&action=saysonos X Gibt den aktuell laufenden Radiosender per T2S aus

Einzel-/Gruppen T2S aus einem Statusbaustein heraus

Der Loxone Statusbaustein ist prinzipiell hervorragend geeignet um sich individuelle Textansagen selber zu erstellen, nur hat er leider einen Bug der einer
einfachen Handhabung im Wege steht. Der konkrete Anwendungsfall ist Statusmeldung aller Fenster, wobei hier die bekannte Version aus dem Forum
durch Verkettung von mehreren Statusbausteinen angewandt wird. Am Ende laufen ALLE Fenster in einen Statusbaustein der auch den Status korrekt am
Ausgang TQ anzeigt bzw. ausgibt. Um jetzt eine Ansage anzustossen wäre ja der einfache Gedanke an einem der 4 Eingänge AIx irgendeinen Trigger
anzuhängen der eine Statusänderung des Ausganges TQ veranlasst. Das geschieht auch, nur leider wird die T2S beim Beenden des Triggers erneut
ausgegeben. Je nachdem wie lange der Einschaltimpuls ist, bricht die erste T2S in der Mitte ab und die zweite folgt im Anschluss.
Dieses Verhalten hängt mit der Tatsache zusammen das a: der Baustein analog ist und b: einen Bug diesbezüglich hat. Nach langem probieren mit allen
möglichen Schaltern etc. funktionierte es immer noch nicht wie gewünscht. Die mir bekannte einzige Abhilfe ist ein kleines PicoC Programm welches die
T2S anstösst, anstatt der Statusbaustein direkt.
Dazu muss der Ausgang TQ des Statusbausteines an den Eingang TIx des Programmbaustein, der Trigger zur Auslösung an das Pendant AIx und der
entsprechende http Ausgangsbefehl für die T2S an TQx. Beim Betätigen des Triggers wird der anstehende Text an TIx einmalig an den Ausgang TQx
weitergeleitet und somit die T2S nur einmal angesagt.
Anbei der PicoC Code, bitte auf die korrekt Codierung in Zeile 8 denken, je nachdem ob der 4, 8 oder 16er PicoC Baustein verwendet wird. (Ab Version 9
der Loxone Config steht nur noch der 16er Baustein zur Verfügung, ergo muss 0x38 genutzt werden). Die Version im Codeblock ist die für den 16er
Baustein da hier 3 Möglichkeiten der T2S Verarbeitung aus Statusbausteinen heraus bestehen:

PicoC

// write program here in PicoC
float f1, f2, f3;
int nEvents;
char* Text;
while(TRUE)
    {
    nEvents = getinputevent();
    if (nEvents & 0x38) //4er Pico = 0xe, 8er Pico = 0x1c, 16er Pico = 0x38
        {
            f1 = getinput(0);
            if (f1 == 1)
            {
                Text = getinputtext(0);
                setoutputtext(0,Text);
            }
            f2 = getinput(1);
            if (f2 == 1)
            {
                Text = getinputtext(1);
                setoutputtext(1,Text);
            }
            f3 = getinput(2);
            if (f3 == 1)
            {
                Text = getinputtext(2);
                setoutputtext(2,Text);
            }
        }
        sleep(100);
    }

Multilinguale T2S

Die Sprachenparameter je nach verwendetem T2S Anbieter sind der Tabelle zu entnehmen

Funktion Befehl / Syntax / URL Einzel Gruppe Beschreibung
say /plugins/sonos4lox/index.php/?zone=DEINE_ZONE&action=say&text=this is a testmessage&voice=Joey&member=ZONE2,ZONE3 X startet eine Gruppendurchsage (Polly) auf Englisch auf 3 Playern parallel
/plugins/sonos4lox/index.php/?zone=DEINE_ZONE&action=say&text=Αυτ? ε?ναι ?να μ?νυμα&lang=el-GR&member=ZONE2 X startet eine Gruppendurchsage (Google) auf Griechisch auf 2 Playern parallel
/plugins/sonos4lox/index.php/?zone=DEINE_ZONE&action=say&text=Αυτ? ε?ναι ?να μ?νυμα&lang=el-GR&volume=30 X startet eine Einzeldurchsage (Google) auf Griechisch mit Lautstärke 30%

Sprachentabelle

Language Acronym AWS Polly Pico TTS GoogleCloud Google VoiceRSS MAC OSX RespVoice
Parameter for Syntax lang &voice= &lang= &voice= &lang= &lang= &voice= &lang=
Afrikaans (South Africa) af-ZA af-ZA af-ZA
Albanian sq-SQ sq-SQ
Arabic (Algeria) ar-DZ ar-DZ ar-DZ
Arabic (Bahrain) ar-BH ar-BH
Arabic (Egypt) ar-EG ar-EG
Arabic (Iraq) ar-IQ ar-IQ
Arabic (Israel) ar-IL ar-IL
Arabic (Jordan) ar-JO ar-JO
Arabic (Kuwait) ar-KW ar-KW
Arabic (Lebanon) ar-LB ar-LB
Arabic (Morocco) ar-MA ar-MA
Arabic (Oman) ar-OM ar-OM
Arabic (Qatar) ar-QA ar-QA
Arabic (Saudi Arabia) ar-SA ar-SA
Arabic (State of Palestine) ar-PS ar-PS
Arabic (Tunisia) ar-TN ar-TN
Arabic (United Arab Emirates) ar-AE ar-AE
Armenian hy-HY hy-HY
Basque (Spain) eu-ES eu-ES
Bosnian bs-BS bs-BS
Bulgarian (Bulgaria) bg-BG bg-BG
Catalan (Spain) ca-ES ca-ES ca-ES ca-ES
Chinese, Cantonese (Traditional, Hong Kong) yue-Hant-HK yue-Hant-HK
Chinese, Mandarin (China) zh-CN zh-CN
Chinese, Mandarin (Hong Kong) zh-HK zh-HK Sinji
Chinese, Mandarin (Simplified, China) cmn-Hans-CN cmn-Hans-CN
Chinese, Mandarin (Simplified, Hong Kong) cmn-Hans-HK cmn-Hans-HK
Chinese, Mandarin (Taiwan) zh-TW zh-TW
Chinese, Mandarin (Traditional, Taiwan) cmn-Hant-TW cmn-Hant-TW
Croatian (Croatia) hr-HR hr-HR hr-HR
Czech (Czech Republic) cs-CZ cs-CZ Zuzana cs-CZ
Danish da-DK Mads da-DK da-DK Sara da-DK
Danish da-DK Naja
Dutch nl-NL Lotte nl-NL nl-NL
Dutch nl-NL Ruben
Dutch (Belgium) Ellen
English (Australian) en-AU Nicole en-AU en-AU en-AU
English (Australian) en-AU Russell Russell
English (British) en-GB Amy en-GB Amy en-GB en-GB en-GB
English (British) en-GB Brian Brian
English (British) en-GB Emma Emma
English (Canada) en-CA en-CA en-CA
English (Indian) en-IN Raveena Raveena en-IN en-IN Veena
English (Ireland) en-IE en-IE Moira
English (New Zealand) en-NZ en-NZ
English (Philippines) en-PH en-PH
English (South Africa) en-ZA en-ZA
English (US) en-US Ivy Chipmunk en-US Alex
English (US) en-US Joanna Eric
English (US) en-US Joey Ivy
English (US) en-US Justin Jennifer
English (US) en-US Kendra Justin
English (US) en-US Kimberly Kendra
English (US) en-US Salli Kimberly
English (US) en-US Salli
English (US) en-US Joey
English (Welsh) en-GB-WLS Geraint
Esperanto eo-EO eo-EO
Filipino (Philippines) fil-PH fil-PH
Finnish (Finland) fi-FI fi-FI fi-FI Satu fi-FI
French fr-FR Mathieu Mathieu fr-FR Thomas
French fr-FR Celine fr-FR Celine fr-FR
French (Canadian) fr-CA Chantal Chantal fr-CA fr-CA Amelie
Galician (Spain) gl-ES gl-ES
German de-DE Hans de-DE Hans de-DE de-DE Steffi de-DE
German de-DE Marlene Marlene Markus
German de-DE Vicki
Greek (Greece) el-GR el-GR el-GR
Hebrew (Israel) he-IL he-IL
Hindi (India) hi-IN hi-IN hi-IN
Hungarian (Hungary) hu-HU hu-HU Mariska hu-HU
Icelandic is-IS Dora Dora
Icelandic is-IS Karl Karl is-IS
Icelandic (Iceland) is-IS is-IS
Indonesian (Indonesia) id-ID id-ID id-ID
Italian it-IT Carla it-IT Carla it-IT it-IT
Italian it-IT Giorgio Giorgio
Italian (Italy) it-IT it-IT
Japanese ja-JP Mizuki ja-JP ja-JP Kyoko ja-JP
Korean (South Korea) ko-KR ko-KR ko-KR Yuna ko-KR
Latvian lv-LV lv-LV
Lithuanian (Lithuania) lt-LT lt-LT
Malay (Malaysia) ms-MY ms-MY
Macedonian mk-MK mk-MK
Norwegian nb-NO Liv Liv nb-NO nb-NO nb-NO
Persian (Iran) fa-IR fa-IR
Polish pl-PL Jacek Agnieszka pl-PL pl-PL Zosia
Polish pl-PL Jan Jacek
Polish pl-PL Ewa Ewa pl-PL
Polish pl-PL Maja Jan
Polish pl-PL Maja
Portuguese (Brazilian) pt-BR Ricardo Vitoria pt-BR pt-BR Luciana pt-BR
Portuguese (Brazilian) pt-BR Vitoria Ricardo
Portuguese (European) pt-PT Cristiano Cristiano pt-PT pt-PT
Portuguese (European) pt-PT Ines Ines pt-PT
Romanian ro-RO Carmen Carmen ro-RO Ioana ro-RO
Russian ru-RU Maxim Maxim ru-RU ru-RU
Russian ru-RU Tatyana Tatyana ru-RU
Serbian (Serbia) sr-RS sr-RS sr-RS
Slovak (Slovakia) sk-SK sk-SK sk-SK
Slovenian (Slovenia) sl-SI sl-SI
Spanish (Argentina) es-AR es-AR
Spanish (Bolivia) es-BO es-BO
Spanish (Castilian) es-ES Conchita Conchita es-ES es-ES es-ES
Spanish (Castilian) es-ES Enrique Enrique
Spanish (Chile) es-CL es-CL
Spanish (Colombia) es-CO es-CO
Spanish (Costa Rica) es-CR es-CR
Spanish (Dominican Republic) es-DO es-DO
Spanish (Ecuador) es-EC es-EC
Spanish (El Salvador) es-SV es-SV
Spanish (Guatemala) es-GT es-GT
Spanish (Honduras) es-HN es-HN
Spanish (Latin American) es-US Miguel Penelope es-US
Spanish (Latin American) es-US Penelope Miguel es-US
Spanish (Mexico) es-MX es-MX es-MX
Spanish (Nicaragua) es-NI es-NI
Spanish (Panama) es-PA es-PA
Spanish (Paraguay) es-PY es-PY
Spanish (Peru) es-PE es-PE
Spanish (Puerto Rico) es-PR es-PR
Spanish (Uruguay) es-UY es-UY
Spanish (Venezuela) es-VE es-VE
Swahili sw-SW sw-SW
Swedish sv-SE Astrid Astrid sv-SE sv-SE sv-SE
Tamil ta-TA ta-TA
Thai (Thailand) th-TH th-TH th-TH
Turkish tr-TR Filiz Filiz tr-TR tr-TR
Ukrainian (Ukraine) uk-UA uk-UA
Vietnamese (Vietnam) vi-VN vi-VN vi-VN
Welsh cy-GB Gwyneth
Welsh cy-GB Geraint cy-GB
Zulu (South Africa) zu-ZA zu-ZA