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 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
LOL 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.

Schaltung

Symbolische Schaltung. Die Verbindungen sind mit DUPONT-Kabel gesteckt.


Konfiguration (bei Auslieferung bereits vorhanden)


Kommandos per URL

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

Regeln

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

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