Zuletzt angesehen: • mp3_kombisignalgeber
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Kombisignalgeber / MP3-Player mit LED Signalleuchte
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 anlernen, sondern integriert es einfach im lokalen Netzwerk per WLAN.
Die WLAN-Verbindung wird genau wie bei unserer Mini-Wetterstation hergestellt. Demzufolge hier ein Verweis auf dessen Doku: WLAN Konfigurieren
In den MP3-Player wird eine microSD/microSDHC-Speicherkarte eingesteckt, welche bis zu 32GB fassen kann.
Da MP3-Tacks aber nicht viel Speicher benötigen, reicht eine 256MB oder 1-2GB Speicherkarte vollkommen aus.
Die Karte wird mit FAT formatiert und es wird ein Ordner namens mp3 angelegt. In diesen werden sämtliche Tracks beginnend mit dem Dateinamen 0001_trackname.mp3 bis 9999_trackname.mp3 abgelegt.
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.
Konfiguration (bei Auslieferung bereits vorhanden)
Kommandos per URL
Die Wiedergabe bzw. die Signalleuchte wird per URL aktiviert.
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
Regeln
Rules Set 1 (Startsound beim Einschalten)
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
FHEM Integration
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"); } }
ioBroker Integration
Im ioBroker kann mit Blocky folgendes Beispiel Blocky Script erstellt werden, welches z.B. Track Nr. 5 abspielt. Bei euch muss natürlich die IP-Adresse in der Funktion mit eurer ersetzt werden.
JavaScript Code:*
<code>
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); </code>