Hier mal ein kleines Beispiel:
Wenn ich morgens in die Diele komme, begrüßt mich der Gong mit einem:
"Guten Morgen!" ...
"Es ist ... 6 ... Uhr ... 14 ..."
"Die Aussentemperatur beträgt ... 12 ... Grad Celsius!"
Wie kriegt man sowas hin?
Nun, als erstes brauchen wir natürlich die entsprechenden "Bausteine". Das sind jeweils MP3-Dateien für die Texte.
90 - "Guten Morgen"
92 - "Grad Celsius"
93 - "Es ist"
94 - "Uhr"
95 - "Die Aussentemperatur beträgt"
99 - "minus"
sowie die Zahlen von 0 bis 59 (Datei-Nummern 100-159). Im Prinzip sind die Nummern bzw. der Bereich nicht entscheidend - der Bereich sollte
halt zusammenhängend sein, damit das Script die Nummer der entsprechenden Tondatei einfach bestimmen kann.
Damit sind die Uhrzeit sowie die Temperaturen von minus 59 bis 59C abgebildet - das dürfte für Mitteleuropa durchaus ausreichend sein.
Texte, wenn man sie nicht selber aufsprechen will, kann man sich recht einfach durch ein Text to Speech System erzeugen lassen,
ein Beispiel ist
http://www2.research.att.com/~ttsweb/tts/demo.php
Die MP3 Dateien werden jetzt auf eine Speicherkarte gespeichert - rein in den Funkgong, und damit kann die CCU erst mal richtig loslegen.
Die WebUI löst jetzt ein entsprechendes Script aus (die Bedingungen kann ja jeder so anpassen wie er mag ...)
Code: Alles auswählen
string gongcmd = "1,1,108000,90";
integer stunde=system.Date("%H").ToInteger();
integer minute=system.Date("%M").ToInteger();
! Es ist ...
gongcmd = gongcmd # ",93";
! ... Stunden ... Uhr ...
gongcmd = gongcmd # "," # (stunde+100).ToString() # ",94";
! Minuten
gongcmd = gongcmd # "," # (minute+100).ToString();
! Die Aussentemperatur beträgt ...
gongcmd = gongcmd # ",95";
var atemp = dom.GetObject("Aussentemperatur Balkon:1").DPByHssDP("TEMPERATURE");
real thetemp = atemp.State();
if ( thetemp < 0 )
{
! minus
gongcmd = gongcmd # ",99";
thetemp = -1.0 * thetemp;
}
integer thetemp2 = 100+(thetemp+0.5).ToInteger();
gongcmd = gongcmd # "," # thetemp2.ToString() # ",92";
var gong = dom.GetObject("MP3-Gong OG - Ton:2");
var gongton = gong.DPByHssDP("SUBMIT");
gongton.State( gongcmd );
Das Ganze klappt prima, hat aber leider einen Haken:
Wie bereits hier im Forum beschrieben wurde, dauert die Pause zwischen zwei Dateien auf dem MP3 Gong eine gefühlte Ewigkeit, das heisst,
so richtig flüssig kommt die Durchsage nicht rüber.
Trotzdem eine recht nette Sache, und die Durchsagen kann man ja auch noch für andere Dinge verwenden ...