Zum Inhalt springen

HM-OU-CFM-Pl MP3 Funk-Gong mit Signalleuchte

Aus FHEMWiki
HM-OU-CFM-Pl MP3 Funk-Gong mit Signalleuchte
HomeMatic MP3 Funk-Gong mit Signalleuchte
Allgemein
Protokoll HomeMatic
Typ Aktor
Kategorie HomeMatic
Technische Details
Kommunikation 868MHz
Kanäle 2
Betriebsspannung 230V
Leistungsaufnahme 0,5W im Standby
Versorgung Netz
Abmessungen 63x125x42mm
Sonstiges
Modulname CUL_HM oder HMCCUDEV
Hersteller ELV / eQ-3


HomeMatic Funk-Gong mit Signal-LED (dreifarbig, rot, orange, grün) zur akustischen oder optischen Signalisierung. Zur Tonausgabe kann der Funk-Gong auf einer FAT32-formatierten micro-SDHC gespeicherte MP3-Dateien ausgeben.

Beitrag auch anwendbar auf die mobile Variante HM-OU-CFM-TW.

Der Gong verfügt über zwei Kanäle: Kanal 1 für die LED, Kanal 2 für die MP3-Ausgabe. Die MP3-Dateinamen müssen zur Adressierung mit einem Code aus drei Ziffern beginnen, <NNN> = 000..255.

  • Der Gong kann MP3-Dateien nicht von allen Speicherkarten abspielen. Ist alles richtig konfiguriert und werden dennoch keine Sounddateien abgespielt kann ein anderes Fabrikat der Micro-SD helfen.

Hinweise zum Betrieb mit FHEM

Interface mit CCU, RaspberryMatic u.a. (Neu, Mischbetrieb mit HmIP)

Wird der Funkgong von FHEM mit dem Befehl

get <CCU-Device> createDev <HM-OU-CFM-Pl> 

angelegt, gibt es danach nur ein FHEM-Device vom Typ HMCCUDEV. Um die Kanäle ansprechen zu können, muss man einen Befehl

set <HM-OU-CFM-Pl> datapoint <string>

absetzen.

Kanal 1, Signal-LED

  • set <HM-OU-CFM-Pl> datapoint 1.STATE true schaltet die LED in den Modus, der durch die Link-Parameter L-1.LONG_ACT_TYPE/L-1.SHORT_ACT_TYPE vorgegeben ist. Diese Parameter existieren nur in einer Verknüpfung mit einem realen HM-Device, ihr Wert 0..6 ist deshalb nicht durch Skripte etc. änderbar. Als Standard wird deshalb 2=langsames rotes Blinken eingestellt.
 LONG_ACT_TYPE: ENUM [R,W] [Visible,Sticky] RANGE=0...6 DFLT=2 VALUES=NO_MSG,RED_SHORT,RED_LONG,GREEN_SHORT,GREEN_LONG,ORANGE_SHORT,ORANGE_LONG
  • set <HM-OU-CFM-Pl> datapoint 1.STATE false schaltet die LED aus.
  • set <HM-OU-CFM-Pl> datapoint 1.SUBMIT <string> schaltet die LED in einen Modus, der durch die kommagetrennten Bestandteile des Strings vorgegeben wird. Diese sind
    • Ein Aktivitätsparameter 1 oder 0, nur wenn er den Wert 1 hat, wird die LED auch angeschaltet
    • Die Anzahl der Ausführungen (mindestens 1)
    • Die Zeitdauer in Sekunden. Soll der Effekt durch die "normalen" Blinkdauern und die Anzahl der Ausführungen begrenzt werden, ist hier die Zahl 108000 einzutragen
    • Eine kommagetrennte Liste aus bis zu 10 Zahlencodes, dabei bedeuten 17=RED_SHORT, 18=RED_LONG, 33=GREEN_SHORT, 34=GREEN_LONG, 49=ORANGE_SHORT, 50=ORANGE_LONG
<HM-OU-CFM-Pl> datapoint 1.SUBMIT 1,1,108000,33,33,33

erzeugt also drei kurze grüne Lichtimpulse

Kanal 2, MP3-Player

  • set <HM-OU-CFM-Pl> datapoint 2.STATE true spielt die MP3-Datei mit der Nummer ab, die durch die Link-Parameter L-2.LONG_ACT_TYPE/L-2.SHORT_ACT_TYPE vorgegeben ist. Diese Parameter existieren nur in einer Verknüpfung mit einem realen HM-Device, ihr Wert 0..255 ist deshalb nicht durch Skripte etc. änderbar. Als Standard wird deshalb 0=Dateiname beginnt mit 000 eingestellt.
   LONG_ACT_TYPE: INTEGER [R,W] [Visible,Sticky] RANGE=0...255 DFLT=0
  • set <HM-OU-CFM-Pl> datapoint 2.STATE false schaltet das Abspielen vorzeitig aus
  • set <HM-OU-CFM-Pl> datapoint 2.SUBMIT <string> spielt MP3-Dateien ab in einem Modus, der durch die kommagetrennten Bestandteile des Strings vorgegeben wird. Diese sind
    • Ein Lautstärkeparameter 0.1, 0.2, 0.3, ... 1
    • Die Anzahl der Ausführungen (mindestens 1)
    • Die Zeitdauer in Sekunden. Soll der Effekt durch die "normalen" Dateilängen und die Anzahl der Ausführungen begrenzt werden, ist hier die Zahl 108000 einzutragen
    • Eine kommagetrennte Liste aus bis zu 10 Zahlencodes aus dem Bereich 0..255, diese beziehen sich auf die Dateinamen auf der Micro-SD-Karte.
<HM-OU-CFM-Pl> datapoint 2.SUBMIT 0.8,1,108000,25

spielt also einmal die Datei 025..xxx mit der Lautstärke 80% ab.

Tools

Zur komfortableren Bedienung kann man zwei Dummy-Devices und ein DOIF einrichten, das dann auf zwei kurze Perl-Programme zugreift (z.B. abzuspeichern in 99_myUtils.pm)

defmod WZ.Gong.LED dummy
attr WZ.Gong.LED readingList sequence
attr WZ.Gong.LED setList sequence
attr WZ.Gong.LED userattr repeat

Dieser Dummy akzeptiert einen set-Befehl, der eine kommagetrennte Liste von maximal 10 Parametern übergibt. Die Werte der Parameter können sein redS, redL, greenS, greenL, orangeS, orangeL oder pause. Das Attribut repeat ist optional

defmod WZ.Gong.MP3 dummy
attr WZ.Gong.MP3 readingList sequence
attr WZ.Gong.MP3 setList sequence
attr WZ.Gong.MP3 userattr repeat volume:0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1

Dieser Dummy akzeptiert einen set-Befehl, der eine kommagetrennte Liste von maximal 10 Parametern übergibt. Die Werte der Parameter müssen Zahlen zwischen 0 und 255 sein und bezeichnen die Dateinamen auf der Micro-SD-Karte. Die Attribute volume und repeat sind optional

defmod WZ.Gong.N DOIF ([WZ.Gong.LED:"sequence"])\
 ({gong_led("WZ.Gong","$EVENT")})\
 DOELSEIF\
 ([WZ.Gong.MP3:"sequence"])\
 ({gong_mp3("WZ.Gong","$EVENT")})
attr WZ.Gong.N do always

Die beiden kurzen Perl-Programme wandeln die übergebenen Daten in das korrekte Format für den datapoint SUBMIT um und setzen den Befehl ab.

sub gong_led($$){
 my ($dev,$evt) = @_;
 my $seq = $evt;
 $seq =~ s/sequence\:\s+//;
 my %colors=(
 "orangeS" => 49,
 "orangeL" => 50,
 "redS"    => 17,
 "redL"    => 18,
 "greenS"  => 33,
 "greenL"  => 34
 );
 my $rep=AttrVal($dev.".LED","repeat",1);
 foreach my $key (keys %colors) {
   my $color = $colors{$key};
   $seq =~ s/$key/$color/g;
 }
 #--
 if( $seq !~ /[0-9,]/){
   Log 1,"[gong_led] illegal sequence";
 }
 my $str="1,$rep,108000,$seq";
 fhem("set $dev datapoint 1.SUBMIT $str");
}
sub gong_mp3($$){
 my ($dev,$evt) = @_;
 my $seq = $evt;
 $seq =~ s/sequence\:\s+//;
 my $vol=AttrVal($dev.".MP3","volume",1);
 my $rep=AttrVal($dev.".MP3","repeat",1);
 #--
 if( $seq !~ /[0-9,]/){
   Log 1,"[gong_m3] illegal sequence";
 }
 my $str="$vol,$rep,108000,$seq";
 fhem("set $dev datapoint 2.SUBMIT $str");
}

Interface mit CUL_HM (Alt, reines HM Classic)

Wird der Funkgong von FHEM per autocreate angelegt, bekommen die Kanäle die Bezeichnungen <generierterName>_LED und <generierterName>_Mp3. Auch wenn der Gong u.a. die folgenden Befehle kennt:

set <HM-OU-CFM-Pl> led [redL|greenL|orangeL|redS|greenS|orangeS|pause][,<color2>...] [<repeat>] 
set <HM-OU-CFM-Pl> playTone <MP3No>[,<MP3No>..] [<repeat>] [<volume>]
set <HM-OU-CFM-Pl> off 
set <HM-OU-CFM-Pl> on 
set <HM-OU-CFM-Pl> on-for-timer <sec> 
set <HM-OU-CFM-Pl> on-till <time> 

funktionieren die allermeisten Einstellungen nicht, wenn nicht der jeweilige Channel vorher gepeered wurde. Auch die meisten Register sind nicht sichtbar, bevor der Channel nicht gepeered wurde.

Zum Peeren bieten sich z.B. die virtuellen Buttons einer VCCU an:

set <vccu_Btn1> peerChan 0 <HM-OU-CFM-Pl>_LED single

Aktionen können dann über einen langen oder kurzen Druck auf den oder die gepeerten virtuellen Buttons ausgelöst werden.

Zum Beispiel: Einstellen, dass die LED rot (RedL) leuchten soll, wenn der gepeerte virtuelle Button der vccu (vccu_Btn1) lang (lg) gedrückt wird.

set <HM-OU-CFM-Pl>_LED regSet lgActTypeLed RedL vccu_Btn1

Auslösen des roten Blinkens:

set vccu_Btn1 press long

Zum Beispiel: Einstellen der Lautstärke bei langem (lg) Druck auf den gepeerten virtuellen Taster vccu_Btn1:

set <HM-OU-CFM-Pl>_Led regSet lgIntense vol_100 vccu_Btn1

Zum Beispiel: MP3 mit der Nummer 002 soll bei langem (lg) Druck auf den gepeerten virtuellen Taster vccu_Btn1 gespielt werden:

set <HM-OU-CFM-Pl>_Mp3 regSet lgActTypeMp3 002 vccu_Btn1

(Das Register "lgActTypeMp3" ist auch nach Peeren des vccu_Btn1 nicht sichtbar, erst, nachdem man es erstmalig gesetzt hat. Das immer sichtbare Register "lgActType" gibt hingegen nur die Anzahl der Wiederholungen in der Aktion - für LED und MP3 gleich gültig! - an.)

Bekannte Probleme

  • Beim Pairen gibt es manchmal Probleme. Wiederholtes Pairen und/oder wiederholtes set <HM-OU-CFM-Pl> getConfig können helfen.
  • Um alle Register sehen zu können, sollte attr <HM-OU-CFM-Pl> expert 2_full eingestellt werden.
  • Der Gong hat auch interne Taster (self1), die statt der virtuellen Taster der VCCU genutzt werden können. Diese internen Taster müssen jedoch erst mit den folgenden Anweisungen sichtbar gemacht werden:
set <HM-OU-CFM-Pl>_LED regSet intKeyVisib visib
set <HM-OU-CFM-Pl>_Mp3 regSet intKeyVisib visib
set <HM-OU-CFM-Pl> getConfig

Links