Hallo zusammen,
ich habe die Frage, ob mir jemand etwas beim schreiben eines Moduls zur Steuerung des Humax UHD 4tune+ helfen kann.
Für Perl bin ich einfach zu doof :-D
Steuern lässt er sich einfach über UDP.
Anhand von Wireshark mitschnitten könnte man hiermit sicher auch noch andere Receiver von Humax steuern.
Theoretisch müssten zusätzlich diese funktionieren:
Humax FVP-4000T
HMS-1000S/DE
Humax H3 HSO-1000
HDR-2000T
HDR-FOX T2
HDR-7500T
HDR-7510T/AU
HDR-1003S/AU
iCord Cable
HD-FOX C/Retails/DE
HD-FREE/ME
HD3000HD/ME
HD3100HD/ME
HD3020HD
HD3025HD
iCord HD+/ADM/ME
Aber ein bisschen was habe ich schon hinbekommen, bzw. zusammengetragen.
Im Moment steuere ich das Gerät über folgenden Code in 99_MyUtils.pm
Gefunden im FHEM Forum
sub UDP_Msg($$)
{
my ($dest,$cmd) = @_;
eval "require IO::Socket::INET";
if($@) {
Log 1, $@;
return "Can't load IO::Socket::INET"
}
my $sock = IO::Socket::INET->new(
Proto => 'udp',
PeerPort => 22558,
PeerAddr => $dest
);
if(!$sock) {
return "something went wrong"
}
$sock->send($cmd);
$sock->close();
return "send $cmd"
}
zusammen mit einem Dummy
Internals:
CFGFN
NAME Humax_Remote
NR 40583
STATE Play
TYPE dummy
READINGS:
2018-01-28 23:34:09 state Play
Attributes:
group Humax
room Wohnzimmer
setList Pause Play Stop
webCmd Pause:Play:Stop
und einem DOIF:
Internals:
CFGFN
DEF ([Humax_Remote] eq "Pause") ({UDP_Msg("10.0.1.3","hmxra\00\00\00rcu\00\01\00\00\000091\00\00\00\00\00\90\1e\01\01\00\00\00")})
DOELSEIF ([Humax_Remote] eq "Play") ({UDP_Msg("10.0.1.3","hmxra\00\00\00rcu\00\01\00\00\000090\00\00\00\00\00\90\1e\01\01\00\00\00")})
DOELSEIF ([Humax_Remote] eq "Stop") ({UDP_Msg("10.0.1.3","hmxra\00\00\00rcu\00\01\00\00\000092\00\00\00\00\00\90\1e\01\01\00\00\00")})
NAME Humax_Remote_DOIF
NR 40651
NTFY_ORDER 50-Humax_Remote_DOIF
STATE cmd_2
TYPE DOIF
READINGS:
2018-01-28 23:34:09 Device Humax_Remote
2018-01-28 23:34:09 cmd 2
2018-01-28 23:34:09 cmd_event Humax_Remote
2018-01-28 23:34:09 cmd_nr 2
2018-01-28 23:34:09 e_Humax_Remote_STATE Play
2018-01-28 23:34:09 error {UDP_Msg("10.0.1.3","hmxra\00\00\00rcu\00\01\00\00\000090\00\00\00\00\00\90\1e\01\01\00\00\00")}: send hmxrarcu09090e
2018-01-28 23:33:19 mode enabled
2018-01-28 23:34:09 state cmd_2
Regex:
condition:
0 InternalDoIf($hash,'Humax_Remote','STATE') eq "Pause"
1 InternalDoIf($hash,'Humax_Remote','STATE') eq "Play"
2 InternalDoIf($hash,'Humax_Remote','STATE') eq "Stop"
devices:
0 Humax_Remote
1 Humax_Remote
2 Humax_Remote
all Humax_Remote
do:
0:
0 {UDP_Msg("10.0.1.3","hmxra\00\00\00rcu\00\01\00\00\000091\00\00\00\00\00\90\1e\01\01\00\00\00")}
1:
0 {UDP_Msg("10.0.1.3","hmxra\00\00\00rcu\00\01\00\00\000090\00\00\00\00\00\90\1e\01\01\00\00\00")}
2:
0 {UDP_Msg("10.0.1.3","hmxra\00\00\00rcu\00\01\00\00\000092\00\00\00\00\00\90\1e\01\01\00\00\00")}
3:
helper:
DOIF_Readings_events
DOIF_eventas
event Play
globalinit 1
last_timer 0
sleeptimer -1
timerdev Humax_Remote
timerevent Play
triggerDev Humax_Remote
timerevents:
Play
timereventsState:
state: Play
triggerEvents:
Play
triggerEventsState:
state: Play
internals:
0 Humax_Remote:STATE
1 Humax_Remote:STATE
2 Humax_Remote:STATE
all Humax_Remote:STATE
itimer:
readings:
trigger:
uiState:
uiTable:
Attributes:
room Wohnzimmer
Beim DOIF sollte euch auffallen, dass sich nur ein Teil des Strings ändert. Dies müsste sich doch mit einer Art "lookup table" abhängig vom STATE vereinfach lassen, oder?
Ich bin mir sicher, dass das jemand sinnvoll zu einem Modul zusammenfassen könnte.
Weitere Kommandos (z.B. Rewind, Forward, Rec, Volume...) kann ich gerne zur Verfügung stellen.
Wünschenswert wäre ein Define mit der IP-Adresse des Receivers.
Am Ende würde ich das dann gerne mit dem FRITZBOX Modul kombinieren, damit bei einem eingehenden Anruf der Receiver auf Pause stellt und am Ende des Gesprächs automatisch das aktuelle Programm fortsetzt.
Ich freue mich auf eine gute Zusammenarbeit ;-)
Für Interessenten, hier mein Modul. Hab es doch noch recht fix hinbekommen... Gar nicht so schwer wie ich dachte ;)
define <NAME> HumaxRemote <IP-RECEIVER> <PORT>
Der Port ist bei meinem Humax UHD 4tune+ - 22558 - sollte bei allen dieser Geräte gleich sein.
Beispiel:
define Humax HumaxRemote 192.168.0.10 22558
Steuerung funktioniert einfach über das Dropdown:
set <NAME> <CMD>
z.B. set Humax PAUSE
oder:
set <NAME> ZZCodeTester <##>
z.B.: set Humax ZZCodeTester 90 ( => PLAY)
Testen ist gerne erwünscht. Gerne auch für andere HUMAX Receiver
Hallo,
ich habe das Module gerade installiert.
Habe einen HD NANO.
Leider funktioniert bisher nichts.
STATE=???
Hast du eine Idee?
VG
Wolfgang
Hallo Wolfgang,
Ich komme heute leider nicht dazu dies zu prüfen, melde mich aber morgen nochmal mit der Lösung.
VG
Matthias
Hallo Matthias,
danke für deine Hilfe.
VG
Wolfgang
Hallo Wolfgang,
Also so wie es aussieht lässt sich der Nano nicht über UDP Befehle steuern und somit funktioniert das Modul leider nicht.
Lässt sich dein Nano über die Humax Remote App steuern?
Wenn ja findet sich aber vielleicht noch ein weg.
State ??? Ist übrigens ,,normal". Da ich selbst eigentlich keine Ahnung von Perl Modulen habe, kann ich es leider nicht besser. Mein modul sendet nur blind die entsprechenden UDP Befehle an das definierte Geräte.
Hallo Matthias,
danke für die Informationen.
Die RemoteApp erkennt meinen Receiver nicht.
Daher muss ich jetzt mal nachdenken wie es weiter geht.
Als Möglichkeiten gibt es dann einen unterstützten Receiver zu besorgen. Da ich bereits mit Kodi's arbeite, könnte man auch dort mal schauen.
Ich habe hier einige Ansätze gelesen: https://forum.fhem.de/index.php?topic=40920.0
Wenn du nicht noch eine tolle Idee hast, sind die Tage meines HUMAX dann wohl gezählt, er geht dann wohl als Backup in die Kiste ;-))
VG
Wolfgang