Dies ist eine alte Version des Dokuments!


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 jedoch mit SSID „Kombisignalgeber“: 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

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.


JavaScript 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);

Navigation
Eigene Werkzeuge