Hallo zusammen
Ich möchte mittels FHEM ein Musiksystem (Bluesound) mittels Enocean Tastern steuern. Das System lässt sich per http-Befehlern nach dem Muster http://urlxxx/Play bewerkstelligen.
Zu diesem Zweck habe ich eine myutils Datei mit mehren Routinen erstellt.
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
# Enter you functions below _this_ line.
my $ipadr = "192.168.1.201:11000";
sub
StopBS() {
GetHttpFile($ipadr, "/Stop");
}
sub
PlayBS() {
GetHttpFile($ipadr, "/Play");
}
sub
PresetBS($) {
my ($preset) = @_;
GetHttpFile($ipadr, "/Preset?id=".$preset);
}
sub
VolrelBS($) {
my ($volrel) = @_;
GetHttpFile($ipadr, "/Volume?db=".$volrel);
}
sub
BluetoothBS() {
GetHttpFile($ipadr, "/Play?url=Capture:bluez");
}
sub
LineBS() {
GetHttpFile($ipadr, "/Play?url=Capture:plughw:0,0/48000/24/2");
}
sub
SkipBS() {
GetHttpFile($ipadr, "/Skip");
}
sub
LoadplaylistBS() {
GetHttpFile($ipadr, "/Load?name=demo");
}
1;
Wenn ich in der FHEM Befehlszeile zum Beispiel {SkipBS()} funktioniert das gande einwandfrei.
Wenn ich jedoch das Ganze mittels Enocen Taster steuern will, wird die entsprechende Routine mit einem Tastendruck mehrmals aufgerufen
Hier der Notify Eintrag für den Befehl Skip.
define skip notify Handsender:A0 set {SkipBS()} 1
Und hier die Schalter Definition
define Handsender EnOcean 00138F5C
attr Handsender IODev TCM_ESP3_0
attr Handsender eep F6-02-01
attr Handsender manufID 7FF
attr Handsender room EnOcean
attr Handsender subType switch
attr Handsender teachMethod RPS
define FileLog_Handsender FileLog ./log/Handsender-%Y.log Handsender
attr FileLog_Handsender logtype text
attr FileLog_Handsender room EnOcean
Weiss jemand was das Problem sein könnte? Vielleicht ruft FHEM die Routine solange auf solange der Schalter gedrückt ist.
Ich habe zuerst das ganze mit Httpmod realisiert, was auch geklappt hat, war jedoch umständlich, da ich bei einem IP Adress Wechsel des Musikplayers bei allen Aufrufen Skip, Volume etc. die Adresse ändern musste. Hier kann ich im File nur einmal die Adresse anpassen.
Gruss
Beat Graf
In den EventMonitor schauen und prüfen welche Events kommen...
Vermutlich kommen mehr Events die passen und dann auslösen.
Entweder anderen Event nehmen, also anderes RegEx beim Notify oder evtl. hilft event-on-change-reading oder in der myUtils mehrfaches Aufrufen in kurzer Zeit verhindern oder oder oder...
Gruß, Joachim
Ein list vom Schalterdevice wäre besser gewesen