Das direkte Ansprechen des MP3-Funkgongs ist über den Datenpunkt SUBMIT möglich, hierzu muß ein String übergeben werden:
LED
HM_WriteValueString(41960 /*[Hardware\Homematic\Diele\FunkGong LED]*/,"SUBMIT",'1,1,108000,34,34,0,0,0,0,0,0,0,0');
String beim LED-Kanal, jeweils durch ‚,‘ (Komma) getrennt:
- 1 = Aktiv / 0 = Inaktiv (Ausschalten)
- Anzahl der Wiederholungen (0 = keine Ansteuerung)
- Ansteuerdauer in Sekunden (max. 108000)
- bis 13. LED-Farbe und Ansteuerzeit der Farbe, gem. nachfolgender Tabelle:
0 = Aus
2 = Pause
17 = Rot kurz
18 = Rot lang
33 = Grün kurz
34 = Grün lang
49 = Orange kurz
50 = Orange lang
Bitte immer min. 2 Werte größer als 0 für die LED übertragen, sonst hängt sich der Gong auf (die rote Ausführungs-LED bleibt an!).
TON
HM_WriteValueString(51736 /*[Hardware\Homematic\Diele\FunkGong TON]*/ ,"SUBMIT","0.2,1,5,8");
Spielt einmal MP3 Nummer 8 für 5 Sekunden mit 20% Lautstärke ab.
String beim TON-Kanal, jeweils durch ‚,‘ (Komma) getrennt:
- Lautstärke in % (0 = Aus, 0.1 - 1 = 10% bis 100% in 10% Schritten)
- Anzahl der Wiederholungen (0 = keine Ansteuerung)
- Ansteuerdauer in Sekunden (max. 108000)
- bis 13. 1-255 = MP3 File / 0 = DingDong-Ton
*** ALT ***
Nur noch aus Dokumentationsgründen vorhanden !
Anbei zwei kleine Scripte (eines nicht von mir), welche es ermöglichen den MP3-Funkgong per Script aus IPS herraus anzusteuern.
Vorteile:
[ul]
[li] Umgehen des Firmware-Fehler mit max.32 Direkverknüpfungen möglich.
[/li][li] Einsparen der Virtuellen Kanäle in der CCU
[/li][/ul]
Nachteile:
[ul]
[li] Vielleicht min. Verzögerung zwischen Trigger und Ausführung? (Konnte ich bisher nicht feststellen)
[/li][/ul]
Vorraussetzungen:
[ul]
[li] MP3-Funkgong (schon logisch, gell
[/li][li] CCU (LAN-Adapter habe ich nicht, somit nicht getestet)
[/li][li]
[/li][/ul]
ToDo:
[ul]
[li]Anstatt den Namen vom Kanal in der CCU; soll es möglich sein die HM-ID oder die IPS-Instanz-ID zu übergeben.
[/li][/ul]
Verbesserungen, oder Kritik erwünscht!
Beispiele:
<?
/*================ Doku in der HM_MP3_Gong.inc ================*/
include "HM_MP3_Gong.inc"; // V0.9b von Michael Tröger - 28.12.2012
//Beispiele:
// LED:
$HM_MP3Gong_LED_Kanal_Name="FunkGong LED"; // Name des LED Kanals des MP3-Funk-Gong in der __CCU__ !!!
$led=array(S_RED,S_GREEN,WAIT,WAIT,S_ORANGE,S_GREEN); //Farb Reihenfolge S_ = kurz, L_ = lang
print HM_LED_MP3Gong($HM_MP3Gong_LED_Kanal_Name,$led,3); // print, damit das Errgebnis geloggt wird
//print HM_LED_MP3Gong($HM_MP3Gong_LED_Kanal_Name,OFF); // LED sofort aus
// MP3:
$HM_MP3Gong_Ton_Kanal_Name="FunkGong TON"; // Name des Ton Kanals des MP3-Funk-Gong in der __CCU__ !!!
$mp3=array(4,3,2,1); //Playlist: Files mit ',' getrennt
//$mp3=4; //Falls nur eine Datei abgespeilt werden soll reicht auch ein int
print HM_TON_MP3Gong($HM_MP3Gong_Ton_Kanal_Name,$mp3,MAX,1,20); // print, damit das Errgebnis geloggt wird
//print HM_TON_MP3Gong($HM_MP3Gong_Ton_Kanal_Name,OFF); // Ton sofort ausschalten
?>
HM_MP3_Gong.inc
<?
include "HM_Remote_Script.inc"; // V0.0 von Martin Heinzel - 20.02.2011
/*===================== HM_MP3_Gong =====================
HM_MP3_Gong - Michael Tröger - 28.12.2012
Version: (IPS2.6)0.9beta
Beschreibung:
Mit diesen Funktionen kann der MP3-Funk-Gong per Script angesprochen werden.
Vorraussetzungen:
Der MP3-Funk-Gong ist an der CCU angelernt. LAN-Adapter z.Z. nicht unterstüzt/getestet (habe kein :-D )
===================== KONSTANTEN =====================
OFF = Ansteuerung beenden / aus
WAIT = Pause zwischen den LED-Ansteuerungen
S_RED = Rot kurz
L_RED = Rot Lang
S_GREEN = Grün kurz
L_GREEN = Grün lang
S_ORANGE = Orange kurz
L_ORANGE = Orange lang
MAX = 100% Lautstärke
LAUT = 80% Lautstärke
MITTEL = 50% Lautstärke
LEISE = 30% Lautstärke
DINGDONG = DingDong-Ton
===================== FUNKTIONEN =====================
------------------- HM_LED_MP3Gong -------------------
HM_LED_MP3Gong ($ObjectName,$LEDS=S_RED,$loops=3,$maxtime=108000)
String $ObjectName
ist der Name des Kanal's vom Gong in der CCU !
Array $LEDS , optional
Enthält die anzusteuernden LED-Farben und Zeiten (siehe oben)
Wird nichts übergeben wird die Rote LED kurz angesteuert.
OFF oder 0 um eine Wiedergabe abzubrechen.
int $loops , optional
Anzahl der Wiederholungen.
Wird nichts übergeben wird die Ansteuerung dreimal wiederholt.
int $maxtime ,optional
Zeit in Sekunden welche die gesamte Ansteuerung ausgeführt wird.
Wird die Zeit erreicht, bricht der Gong die Ansteuerung ab, auch wenn nicht alle
LEDS angesteurt oder Wiederholungen durchgeführt wurden.
Wird nichts übergeben wird die maximale Zeit eingetragen.
Beispiel:
$HM_MP3Gong_LED_Kanal_Name="FunkGong LED"; // Name des LED Kanals des MP3-Funk-Gong in der __CCU__ !!!
$led=array(S_RED,S_GREEN,WAIT,WAIT,S_ORANGE,S_GREEN); //Farb Reihenfolge S_ = kurz, L_ = lang
print HM_LED_MP3Gong($HM_MP3Gong_LED_Kanal_Name,$led,1); // print, damit das Errgebnis geloggt wird
------------------- HM_LED_MP3Gong -------------------
HM_TON_MP3Gong ($ObjectName,$Playlist=DINGDONG,$volume=1,$loops=1,$maxtime=108000)
String $ObjectName
ist der Name des Kanal's vom Gong in der CCU !
Array $Playlist , optional
Enthält die abzuspielenden Nummern der MP3-Files als Array.
Wird nichts übergeben wird der normale 'DINGDONG'-Ton angesteuert.
OFF oder 0 um eine Wiedergabe abzubrechen.
float $volume
Lautstärke der Wiedergabe (0= aus, 1=100%)
oder auch MAX,LAUT,LEISE,MITTEL
int $loops , optional
Anzahl der Wiederholungen.
Wird nichts übergeben wird die Wiedergabe einmal ausgeführt.
int $maxtime ,optional
Zeit in Sekunden welche die gesamte Ansteuerung ausgeführt wird.
Wird die Zeit erreicht, bricht der Gong die Wiedergabe ab, auch wenn nicht alle
Files abgespielt oder Wiederholungen durchgeführt wurden.
Wird nichts übergeben wird die maximale Zeit eingetragen.
Beispiel:
$HM_MP3Gong_Ton_Kanal_Name="FunkGong TON"; // Name des Ton Kanals des MP3-Funk-Gong in der __CCU__ !!!
$mp3=array(1,3,5,6,7); //Playlist: Files mit ',' getrennt
print HM_TON_MP3Gong($HM_MP3Gong_Ton_Kanal_Name,$mp3,LAUT); // print, damit das Errgebnis geloggt wird
===================== ENDE FUNKTIONEN =====================
Änderungen
----------
28.12.2012 initial Beta V0.9
===============================================================*/
//--------------------------- Werte für das LED-Array ----------------------------
define("OFF", 0);
define("WAIT", 2);
define("S_RED", 17);
define("L_RED", 18);
define("S_GREEN", 33);
define("L_GREEN", 34);
define("S_ORANGE", 49);
define("L_ORANGE", 50);
//--------------------------- Werte für den MP3-Gong ----------------------------
define("MAX",1);
define("LAUT",0.8);
define("MITTEL",0.5);
define("LEISE",0.3);
define("DINGDONG",1);
function HM_LED_MP3Gong ($ObjectName,$LEDS=S_RED,$loops=3,$maxtime=108000)
{
/*===================== Erläuterungen =====================
$GongCMD sind min.4 max. 13 Werte, welche mit ',' getrennt werden.
1. = 0 = Kanal inaktiv (aus/ausschalten) 1= Kanal aktiv
2. = Wiederholungen 1-255 (Achtung: 0 = keine Wiedergabe)
3. = Abspielzeit in sek. (108000 = max = Schleife komplett wiedergeben + Wiederholungen)
4. - 13. LED-Farbe + Zeit
mit $GongCMD = '0'; kann die Wiedergabe abgebrochen werden.
Gültige LED/Zeit-Werte für 4.-13.:
0 = aus
2 = pause
34 = grün lang
33 = grün kurz
18 = rot lang
17 = rot kurz
50 = orange lang
49 = orange kurz
Erklärung:
Farbe: Bit 5 & 6 : Es ist jede Komination erlaubt, beide 1 = Orange.
Zeit: Bit 1 & 2 : Es darf nur ein von beiden Bits gesetzen werde.
Bit 3 & 4 : immer 0, nicht verwenden
d.h.:
50 = 32 + 16 + 2 = lange Orange
17 = 16 + 1 = rot kurz
16 = rot ohne Zeit, der Gong macht nix!
2 = pause
(&||) + (||)
32,16,8,4,2,1
| | | | | |
| | | | 0 1 = (kurz)
| | | | 1 0 = (lang)
| | | 0 = immer
| | 0 = immer
| 1 = rot an
1 = grün an
===================== CODE ===================== */
if (is_array($LEDS)) {
$GongCMD = '1,'.$loops.','.$maxtime.','.implode(",",$LEDS);
} else {
$GongCMD = '1,'.$loops.','.$maxtime.','.$LEDS;
if ($LEDS==OFF) $GongCMD = '0';
}
return HM_SendCmd($ObjectName,$GongCMD);
}
function HM_TON_MP3Gong ($ObjectName,$Playlist=DINGDONG,$volume=1,$loops=1,$maxtime=108000)
{
/*===================== Erläuterungen =====================
$GongCMD sind min.4 max. 13 Werte, welche mit ',' getrennt werden.
1. = 0.0 - 1 Float Lautstärke 0.1 = 10% 1= 100% (bei 20% habe ich erst einen Ton)
2. = Wiederholungen (Achtung: 0 = keine Wiedergabe)
3. = Abspielzeit in sek. (108000 = max = Datei komplett wiedergeben bzw alle Wiederholungen)
4. = Nr. der ersten MP3-Datei in der Playlist (optional, dann Eingebauter 'DingDong'-Ton; ist auch = 0)
5. = Nr. der zweiten MP3-Datei in der Playlist (optional)
6. - 13. Nr von weiteren MP3-Dateien in der Playlist (optional)
mit $GongCMD = '0'; kann die Wiedergabe abgebrochen werden.
===================== CODE ===================== */
var_dump($Playlist);
if (is_array($Playlist)) {
$GongCMD = $volume.','.$loops.','.$maxtime.','.implode(",",$Playlist);
} else {
$GongCMD = $volume.','.$loops.','.$maxtime.','.$Playlist;
if ($Playlist==OFF) $GongCMD="0";
}
return HM_SendCmd($ObjectName,$GongCMD);
}
function HM_SendCmd ($ObjectName,$cmd)
{
$Instance = IPS_GetInstanceListByModuleID("{A151ECE9-D733-4FB9-AA15-7F7DD10C58AF}");
if (!count($Instance))
return "CCU Instance wurde nicht gefunden!";
$CCU_IP = IPS_GetObject($Instance[0])["ObjectSummary"];
if (!$CCU_IP)
return "CCU konnte nicht ermittelt werden!";
$HM_Script = "
var gong = dom.GetObject('".$ObjectName."');
var gongton = gong.DPByHssDP('SUBMIT');
gongton.State('".$cmd."');
";
return HMRS_HTTP_Post($CCU_IP, $HM_Script);
}
?>
HM_Remote_Script.inc
HMRS_HTTP_Post - Martin Heinzel - 20.02.2011
(vor hier entnommen :rolleyes:)
<?
function HMRS_HTTP_Post($CCU_IP, $HM_Script)
{
/*=============================================
HMRS_HTTP_Post - Martin Heinzel - 20.02.2011
Version: 0.0
Beschreibung:
Mit dieser Funktion werden HomeMatic Scripte per HTTP Post an die HomeMatic
verschickt.
Änderungen
----------
tt.mm.yyyy von Version x.x -> x.x
Berschreibung:
================================================*/
//--------------------------- Main ----------------------------
// Initialisieren der Socket-Verbindung
$fp = fsockopen ($CCU_IP, 8181, $errno, $errstr, 2);
$res = "";
if (!$fp)
{
$res = "$errstr ($errno)<br />
";
}
else
{
// Zusammenstellen des Header für HTTP-Post
fputs($fp, "POST /Test.exe HTTP/1.1
");
fputs($fp, "Content-type: application/x-www-form-urlencoded
");
fputs($fp, "Content-length: ". strlen($HM_Script) ."
");
fputs($fp, "Connection: close
");
fputs($fp, $HM_Script);
while(!feof($fp))
{
$res .= fgets($fp, 500);
}
fclose($fp);
}
return $res;
//----------------------- Main ENDE ----------------------------
}
?>
Michael
HM_MP3_Gong_Script.zip (3.77 KB)