da ich schon eifriger Nutzer vom Pushover- und Email-Framework bin, habe ich mir erlaubt ein entsprechendes Script für den Mp3-Funkgong zu erstellen. Die hier im Forum existierenden Scripte fand ich etwas unübersichtlich. Außerdem fehlten mir Lautstärke und Wiederholung in den Anwendungen.
Hintergrund ist die Steuerung über Systemvariablen, die man in einem Programm entsprechend einbindet. Hierzu sind folgende Variablen erforderlich.
FG.Status
Logikwert - Wahr ist "An", Falsch ist "Aus"
Soll der Funkgong generell überhaupt etwas ausgeben. Über diese Variable kann ich den Funkgong z.B. nachts ausschalten.
FG.Send
Werteliste = "Nicht Senden" ; "Senden"
Die Reihenfolge muss hier unbedingt eingehalten werden. Über diese Variable wird, bei Veränderung, der Sendevorgang angetrickert.
FG.String
Zeichenkette
Diese Variable beinhaltet später die Nummer(n) der MP3-Files (z.B. 53, 17,...). Die Nummern der MP3 Dateien werden genau in dieser Schreibweise durch ein Programm in die Systemvariable eingetragen.
FG.Lautstaerke
Zeichenkette
Diese Variable steuert, wie der Name sagt, die Ausgabelautstärke 1.0 = 100% - 0.1 = 10%. Wird kein Wert angegeben, so verwendet das Script die vorgegebenen Standardeinstellung. Im Codebeispiel unten sind das 0.7 also 70%.
FG.Wiederholungen
Zeichenkette
Auch hier ist der Standard immer 1. Der Wert kann aber über die Eingabe eines Wertes, per Programm, überschrieben werden und wird nach Ausführung wieder auf 1 gesetzt.
Wichtig ist dass die Systemvariablen genau diesen Namen haben. Wenn Ihr die Namen anpasst, müsst Ihr diese auch im Coding entsprechend nachpflegen.
Das ganze sieht dann so aus:
Nun noch ein Programm mit folgendem Script erstellen.
Code: Alles auswählen
! Funkgong - Framework
! Michael Nagel, Idstein email: homematic@mike2208.de
! V.1.2
! Folgende Systemvariablen muessen eingerichtet werden:
! FG.String = Zeichenkette - muss vom Programm gefuellt werden
! FG.Send = Werteliste - Vorgabewerte "Nicht Senden; Senden"
! FG.Status = Logikwert - Vorgabewerte "wahr = an; falsch = aus"
! FG.Lautstaerke = Zeichenkette - kann vom Programm gefuellt werden. Falls nicht, wird der Wert mit dem unten eingegebenen Standardwert ueberschrieben.
! FG.Wiederholungen = Zeichenkette - kann vom Programm gefuellt werden. Ansonsten wird die einmalige Ausfuehrung angenommen.
! ID des Funkgongs
string xmp3gong="NameDesFunkgongs:2"; !Bitte hier den Gerätenamen des Funkgongs - Ton eintragen.
! Standardlautstaerke einrichten.
string xStandardVolume="0.7"; ! Setzen der Standardlautstaerke 0.1 - 1
! ############# Ab hier keine Änderungen mehr! ##############
! Read Variables
object xstring=dom.GetObject ("FG.String");
object xsend=dom.GetObject ("FG.Send");
object xstatus=dom.GetObject ("FG.Status");
object xvolume=dom.GetObject ("FG.Lautstaerke");
object xrepeat=dom.GetObject ("FG.Wiederholungen");
string fgstring=xstring.Value();
string fgsend=xsend.Value();
string fgstatus=xstatus.Value();
string fgvolume=xvolume.Value();
string fgrepeat=xrepeat.Value();
! Check Volume
if (fgvolume == null) {
var fgvolume = xStandardVolume;
}
!Check Repetition
if (fgrepeat == null) {
var fgrepeat = "1";
}
! Output - Check if minimum variables are filled
if ((fgstring != "") && (fgstatus=="an") && (fgsend > 0)) {
! Send to Gong
string xsendstring = fgvolume # "," + fgrepeat # ",1080000, " # fgstring;
! WriteLine("xsendstring: " # xsendstring);
dom.GetObject(xmp3gong).DPByHssDP("SUBMIT").State(xsendstring);
dom.GetObject ("FG.String").State ("");
dom.GetObject ("FG.Send").State (0);
dom.GetObject ("FG.Lautstaerke").State (xStandardVolume);
dom.GetObject ("FG.Wiederholungen").State ("1");
}
! End of Script
Und so sieht die Verwendung im Programm bei mir aus. Hier ein Beispiel mit der Aufforderung das Badezimmerfenster zu schließen. In dieser Variante sendet uns die CCU per Pushover eine Nachricht auf das Mobiltelefon und gleichzeitig wird eine MP3-Kombination an den Funkgong gesendet. Hier mit 10 Minuten Verzögerung.
Dies ist auch der Grund, warum ich den Funkgong überhaupt per Skript-Framework steuere. Rufe ich den Funkgong direkt aus dem Programm auf, kann ich die Aktion nicht mehr stoppen wenn ich das Fenster innerhalb der 10 Minuten schließe. Fragt mich nicht warum, aber bei der Steuerung über die Systemvariablen, stoppt er dann die Ausführung.
Das Script läuft hier seit einer Woche perfekt und steuert zum Beispiel die Überwachung der Fenster während der Heizperiode. Ist ein Fenster länger als 10 Minuten offen, wird ein kombinierter MP3-String an den Funkgong gesendet.
Der nächste Schritt wird dann noch das Ansprechen der LED-Leuchte sein. Aber dazu später dann mehr.
So, und jetzt viel Spaß beim Testen. Bei Fragen könnt Ihr gerne auf mich zukommen.