Der Kombisignalgeber - MP3-Player ist dem Homematik Funkgong HM-OU-CFM-TW nachempfunden.
Anders als beim Homematic Funkgong muss man das Gerät nicht mittels CUL 868MHz oder LAN-Gateway anlernen, sondern integriert es einfach im lokalen Netzwerk per WLAN.
Die WLAN-Verbindung wird genau wie bei unserer Mini-Wetterstation hergestellt. Demzufolge hier ein kurzer Verweis auf dessen Doku jedoch bitte als SSID „Kombisignalgeber“ anwählen: WLAN Konfigurieren
Danach bitte wieder hierher zurück kehren.
In den eingebauten MP3-Player wird eine microSD/microSDHC-Speicherkarte eingesteckt, welche bis zu 32GB fassen kann. Beim Kauf ist bereits eine 256MB Karte enthalten, welche 6000-7000 Smart-Home Tracks fassen kann.
Da die MP3-Tacks nicht viel Speicher benötigen, reicht diese 256MB Speicherkarte vollkommen aus.
Die Karte ist mit FAT formatiert und es ist ein Ordner namens mp3 angelegt. In diesen werden sämtliche Tracks beginnend mit dem Dateinamen 0001_trackname.mp3 bis 9999_trackname.mp3 abgelegt.
Auf der mitgelieferten Karte ist sind bereits ein paar Demo-Tracks enthalten. Über einen Online Text2Speech Generator kann man sich sehr einfach alle benötigten Tracks erstellen.
Text2Speech MP3-Generator: http://www.fromtexttospeech.com
Das System erkennt manchmal die Tracks anhand der gespeicherten Reihenfolge. Bei Problemen bitte die Dateien nacheinander kopieren und entsprechend durchnummerieren.
Also erste Datei auf die Karte kopieren und mit 0001.mp3 benennen. Danach die zweite Datei kopieren und mit 0002.mp3 benennen.
Die Wiedergabe bzw. die Signalleuchte wird per URL aktiviert.
Hierbei ist <ip-adresse> durch die IP-Adresse im eigenen Netzwerk zu ersetzen.
Track abspielen (hier Track Nr. 2)
http://<ip-adresse>/control?cmd=play,2
Signalleuchte blinken:start
http://<ip-adresse>/control?cmd=event,start_warning
Signalleuchte blinken:stop
http://<ip-adresse>/control?cmd=event,stop_warning
Signalleuchte an
http://<ip-adresse>/control?cmd=event,led=1
Signalleuchte aus
http://<ip-adresse>/control?cmd=event,led=0
Rules Set 1 (Startsound beim Einschalten)
Hier wird die Track-Nummer hinter „play“ angegeben, die beim Einschalten gespielt werden soll und auch gleich die Laustärke mittels „vol“ definiert (Einstellbereich 1-30).
On System#Boot do vol,28 play,1 endon
Rules Set 2
Die v.g. Kommandos werden durch folgende Regeln realisiert (Bereits bei Auslieferung gespeichert).
//start the warning signal when we receive a start_warning event: On start_warning do timerSet,1,1 endon //stop the warning signal when we receive a stop_warning event: On stop_warning do timerSet,1,0 endon //create an actual warning signal, every time timer 1 expires: On Rules#Timer=1 do //repeat after 2 seconds timerSet,1,1 //pulse some led on pin 4 shortly Pulse,16,1,500 endon On led do gpio,16,%eventvalue% endon
Im Router (z.B. Fritzbox) sollte man in der Netzwerk-Übersicht dem Kombisignalgeber immer die selbe IP-Adresse zuweisen. Somit ändert sich diese nicht und man kann in FHEM mit dieser IP-Adresse arbeiten.
(Auswahl: [X] Diesem Netzwerkgerät immer die gleiche IPv4-Adresse zuweisen)
Somit in folgendem Script für <ip-adresse> die Adresse im Heimnetz eintragen.
sub PlaySound($) { my ($track)= @_; system("wget -q -O- 'http://<ip-adresse>/control?cmd=play,".$track."'"); } sub BlinkLED($) { my ($value)= @_; if ( $value eq "start_warning") { system("wget -q -O- 'http://<ip-adresse>/control?cmd=event,start_warning'"); } if ( $value eq "stop_warning") { system("wget -q -O- 'http://<ip-adresse>/control?cmd=event,stop_warning'"); } if ( $value eq "on") { system("wget -q -O- 'http://<ip-adresse>/control?cmd=event,led=1'"); } if ( $value eq "off") { system("wget -q -O- 'http://<ip-adresse>/control?cmd=event,led=0'"); } }
DOIF
Hier ein Beispiel wie per DOIF (hier bei schwacher Batterie) ein Track z.B. 0025_Batteriewarnung.mp3 abgespielt wird und die LED anfängt zu blinken.
define not_BatteryCheck notify .*:[Bb]attery:.* { if ($EVENT !~ m/ok/ ) { my $alias = $attr{$NAME}{'alias'}; Log 3, "$NAME : Batteriewarnung $EVENT [$alias]"; PlaySound("25"); BlinkLED("start_warning"); } }
An folgendem Beispiel erkennt man, wie im ioBroker mit Blocky ein Script erstellt werden kann, welches z.B. Track Nr. 5 abspielt. Bei euch muss natürlich die IP-Adresse in der Funktion mit eurer ersetzt werden.
var timeout, Track; /** * Spiele einen MP3 Track aus dem Kombisignalgeber ab. */ function SpieleMP3(Track) { try { require("request")(('http://10.4.70.174/control?cmd=play,' + String(Track))).on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); } console.log('MP3 wurde abgespielt'); } timeout = setTimeout(function () { SpieleMP3('5'); }, 0);