Hallo zusammen,
anbei nun mein 2. eigenes Modul für FHEM.
Da gibt es sicher noch einiges zu erweitern, aber ich denke es ist schon mal ein Anfang.
Was kann es?
Es verbindet sich per TCP/IP mit dem MediaPortal plugin "WifiRemote" und gibt die aktuellen Zustände des Mediaplayers als Readings aus.
Zudem erlaubt es auch die komplette Fernsteuerung des MediaPortals per FHEM.
Man kann sich also ganz einfach per weblink und ein paar Dummys eine Wifi Fernbedienung für das MediaPortal bauen :-)
Das MediaPortal ist ähnlich wie XBMC nur auf Windows basiert und einen eigenen TvServer.
Da ich dort mal im Entwicklerteam mit gemacht habe, war dieses Modul also nur die logische Konsequenz ;-)
Installation
Perl Modul für JSON installieren cpan install JSON
* Datei nach ins Module verzeichnis kopieren
reload 70_MEDIAPORTAL
Define
define mp MEDIAPORTAL <ip[:port] of WifiRemote plugin>
Attribute
authmethod => userpassword, passcode, both
username
password
Die Attribute müsst ihr nur angeben, wenn eine Anmeldung in WifiRemote erforderlich ist.
Das kann man selbst konfigurieren und ist alles beim Plugin beschrieben.
Set
set <name> command <beliebiges kommando wie stop, info, up, down....>
set <name> key <beliebiges taste die gesendet wird>
set <name> volume <lautstärke in %>
set <name> powermode <logoff/suspend...>
set <name> playfile <dateiname>
set <name> playchannel <channelid des TvProgramms>
set <name> playlist loadlist <name der playlistdatei in playlist folder, die geladen werden soll>
set <name> playlist loadfrompath <name der playlistdatei inkl. Pfad, die geladen werden soll>
set <name> playlist play <index innerhalb einer geladenen Playlist, ab dem abgespielt werden soll>
Wenn man einfach den letzten Parameter weglässt gibt es die jeweils gültigen Optionen.
18.07.2014 v0.3
* fixed stop command
* fixed playlist commands
* added playlist shuffle
* fixed console errors
* added log prefix
(Vielen Dank an spiff)
18.01.2013 V0.2
* Kleiner Bugfix
16.01.2014 V0.1
*Erste Version
Ah, schön mal wieder was von dir zu hören - und danke für das Plugin! Meine Frau hängt noch sehr an MP, weil die usability von XBMC einfach ... suboptimal ... ist. Werde das Plugin am Wochenende mal ausprobieren ;-)
Hi, das ist ja nett von dir zu hören. Bist ja auch schon ewig bei MP dabei gewesen. Bist du dort noch aktiv?
Nein, ich hab' privat leider seit einigen Jahren eine Menge um die Ohren und komme auch beruflich nicht mehr zum Programmieren.
Hätte auch nie gedacht, dass ich nach ca. 8 Jahren immer noch MP nutze - aber irgendwie gibt es selbst für viel Geld noch keine besseren Lösungen, die wirklich netzwerkfähig und aus einem Guss wären. Quasi Sonos auch für Filme, TV, etc...
Hi gemx,
ich wollte gerade schonmal ausprobieren, habe jedoch folgendes Problem:
ERROR:
Cannot load module MEDIAPORTAL
JSON habe ich installiert und die Datei ins Modulverzeichnis kopiert.
Definition:
define mp MEDIAPORTAL localhost:8017
Ich nutze auch aMPdroid mit dem MPExtended, das funktioniert alles.
Hast du eine Idee?
Viele Grüße
Spiff
Zitat von: Spiff am 17 Januar 2014, 21:07:54
Hi gemx,
ich wollte gerade schonmal ausprobieren, habe jedoch folgendes Problem:
ERROR:
Cannot load module MEDIAPORTAL
JSON habe ich installiert und die Datei ins Modulverzeichnis kopiert.
Definition:
define mp MEDIAPORTAL localhost:8017
Ich nutze auch aMPdroid mit dem MPExtended, das funktioniert alles.
Hast du eine Idee?
Viele Grüße
Spiff
Das ist ja merkwürdig.
Hast du mal per
reload 70_MEDIAPORTAL
das Modul neu geladen?
Wenn das nicht funktioniert müsste eigentlich eine sprechende Fehlermeldung kommen
bei reload 70_MEDIAPORTAL kommt:
Bareword "false" not allowed while "strict subs" in use at ./FHEM/70_MEDIAPORTAL.pm line 97.
und im DOS-Fenster:
Subroutine MEDIAPORTAL_Initialize redefined at ./FHEM/70_MEDIAPORTAL.pm line 34.
Subroutine MEDIAPORTAL_Define redefined at ./FHEM/70_MEDIAPORTAL.pm line 49.
Subroutine MEDIAPORTAL_Undef redefined at ./FHEM/70_MEDIAPORTAL.pm line 73.
Subroutine MEDIAPORTAL_Get redefined at ./FHEM/70_MEDIAPORTAL.pm line 84.
Beim reload der cfg kommt:
Subroutine MEDIAPORTAL_Initialize redefined at ./FHEM/70_MEDIAPORTAL.pm line 34,
<$fh> line 1034.
Subroutine MEDIAPORTAL_Define redefined at ./FHEM/70_MEDIAPORTAL.pm line 49, <$f
h> line 1034.
Subroutine MEDIAPORTAL_Undef redefined at ./FHEM/70_MEDIAPORTAL.pm line 73, <$fh
> line 1034.
Subroutine MEDIAPORTAL_Get redefined at ./FHEM/70_MEDIAPORTAL.pm line 84, <$fh>
line 1034.
Meine fhem-Version ist vom 08.01.14
Gruß
Spiff
Tja, seltsam, dass es bei mir diesbezüglich keinen Fehler gab.
Habe ne neue Version hochgeladen (im 1. Post), die sollte bei dir auch funktionieren :-)
Hi gemx.
Super, das funktioniert, danke!
Ich teste es mal ausgiebig.
Eine Kleinigkeit beim Start von fhem:
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 191.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 194.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 197.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 204.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 210.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 212.
Use of uninitialized value in concatenation (.) or string at ./FHEM/70_MEDIAPORT
AL.pm line 215.
Bis jetzt ist mir aber nichts aufgefallen, das nicht geht.
Viele Grüße
Spiff.
Hi gemx,
zwei Sachen bekomme ich nicht hin:
1.) Abspielen von Radiosendern:
Wenn ich die Channel-Nummer eines Radiosenders bei playchannel angebe, bleibt der Bildschirm schwarz, es passiert nichts. Bei aMPdroid kann man auch keine Radiosender einstellen, vielleicht liegt es an WifiRemote?
TV-Sender funktionieren.
2.) Abspielen von Playlists:
Bekomme ich einfach nicht hin. Ich habe eine .m3u und eine .wpl, die in MP auch angezeigt werden. Wie muss man das genau machen? Erst "playlist loadlist default.m3u" und dann "playlist play default.m3u"?
Bei letzterem zeigt fhemweb "playlist play needs a valid index to start of type int" an und im DOS-Fenster "Argument "default.m3u" isn't numeric in addition (+) at ./FHEM/70_MEDIAPORTAL.pm line 130."
Danke & Gruß
Spiff.
Zitat von: Spiff am 19 Januar 2014, 15:37:28
Hi gemx,
zwei Sachen bekomme ich nicht hin:
1.) Abspielen von Radiosendern:
Wenn ich die Channel-Nummer eines Radiosenders bei playchannel angebe, bleibt der Bildschirm schwarz, es passiert nichts. Bei aMPdroid kann man auch keine Radiosender einstellen, vielleicht liegt es an WifiRemote?
TV-Sender funktionieren.
2.) Abspielen von Playlists:
Bekomme ich einfach nicht hin. Ich habe eine .m3u und eine .wpl, die in MP auch angezeigt werden. Wie muss man das genau machen? Erst "playlist loadlist default.m3u" und dann "playlist play default.m3u"?
Bei letzterem zeigt fhemweb "playlist play needs a valid index to start of type int" an und im DOS-Fenster "Argument "default.m3u" isn't numeric in addition (+) at ./FHEM/70_MEDIAPORTAL.pm line 130."
Danke & Gruß
Spiff.
zu 1)
=> muss ich mal testen
zu 2)
Der Umgang mit Playlisten per WifiRemote erfolgt immer 2 Stufe.
1. Laden der Playlist
=> Hierzu muss man eines der beiden Load... Kommandos verwenden. Liegt die Playlist im playlistfolder von Mediaportal nimmt man "loadlist" ansonsten kann die Playlistdatei irgendwo liegen, dann muss man "loadfromfile" verwenden und den gesamten pfad angeben
2. Abspielen der Playlist
Die Playlist selbst ist ja bereits geladen. Der einzige Parameter für "play" ist der index des Stückes innerhalb der Playlist.
Also z.B. "play 0", um die Playlist von Anfang an abzuspielen
---> Hallo an alle
seit ihr mit dem Modul immer noch zufrieden?
ich werde es am WE mal testen!
ich nutze auch FHEM und Mediaportal toll wenn man systeme miteinander verbinden kann!
Mediaportal und FHEM sind einfach große klasse!!!
Hi!
Ich bekomme immer hin und wieder diese Fehler, weiss nicht genau, wann das passiert:
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 191.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 194.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 197.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 204.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 210.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 212.
Use of uninitialized value in concatenation (.) or string at ./FHEM/70_MEDIAPORT
AL.pm line 215.
Und ich bekomme es einfach nicht hin mit den Playlists.
Ich weiss nicht, was ich falsch mache, aber er scheint die Playlist nicht zu laden (ich mache es mit 'set mp playlist loadlist default.m3u'), die default.m3u ist im Standard-MP-Playlist-Verzeichnis.
Danach 'set mp playlist play 2' - er reagiert nicht.
Lautstärke einstellen usw. funktioniert aber wunderbar.
Gruß
Spiff.
Wow, das klingt super! Hatte mir jetzt mit der Krücke eventghost Webinterface geholfen. So sind natürlich noch ganz andere Möglichkeiten gesetzt! Ich teste es bei Gelegenheit mal an.
HALLO,
schönes ding tut was es soll,
außer
"command stop" geht bei mir nicht.....
fhem sagt immer Unknown command
andere befehle gehn.....
Hallo ich hab in meinem Log auch ständig die Meldungen:
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 191.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 194.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 197.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 204.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 210.
Use of uninitialized value in string eq at ./FHEM/70_MEDIAPORTAL.pm line 212.
Use of uninitialized value in concatenation (.) or string at ./FHEM/70_MEDIAPORTAL.pm line 215.
--> und bei ein paar Filmen hängt sich das Modul auf und damit stürzt FHEM ab ...
--> und wie gesagt Pause Play alle möglichen Commands gehen aber stop leider nicht :-(
mir wäre schon geholfen wenn die Meldungen nicht mehr kommen würden..
bekommt man das noch irgendwie in den griff?
Hallo!
Den Fehler mit "set mediaportal command stop" habe ich gefunden: es fehlt ein Leerzeichen in Zeile 108 vor stop. So funktioniert es:
my $mpcommands=" stop record pause play rewind forward replay skip back info menu up down left right ok volup voldown volmute chup chdown dvdmenu 0 1 2 3 4 5 6 7 8 9 0 clear enter teletext red blue yellow green home basichome nowplaying tvguide tvrecs dvd playlists first last fullscreen subtitles audiotrack screenshot ";
Die ganzen Fehler im Log scheinen mit der Variable
$json im Log-Teil des Moduls zu tun zu haben. Kann jemand helfen? Ich habe die Zeilen, in denen die Fehler auftauchen, fett markiert.
Vielen Dank & Grüße
Spiff
Zitatsub ProcessMessage($$) {
my ($hash,$msg)=@_;
my $json=decode_json($msg);
if ($json->{Type} eq "welcome") {
Log 5, "WELCOME received. Sending identify message.";
DevIo_SimpleWrite($hash,GetMSG_identify($hash),0);
} elsif ($json->{Type} eq "authenticationresponse") {
Log 5,"AUTHRESPONSE received. SUCCESS=$json->{Success}";
$hash->{STATE}="Authenticated. Processing messages.";
} elsif ($json->{Type} eq "status") {
Log 5,"STATUS received.";
readingsBeginUpdate($hash);
readingsBulkUpdate($hash,"IsPlaying",$json->{IsPlaying});
readingsBulkUpdate($hash,"IsPaused",$json->{IsPaused});
readingsBulkUpdate($hash,"Title",$json->{Title});
readingsEndUpdate($hash,1);
} elsif ($json->{Type} eq "volume") {
Log 5,"VOLUME received.";
readingsBeginUpdate($hash);
readingsBulkUpdate($hash,"Volume",$json->{Volume});
readingsBulkUpdate($hash,"IsMuted",$json->{IsMuted});
readingsEndUpdate($hash,1);
} elsif ($json->{Type} eq "nowplaying") {
Log 5,"NOWPLAYING received.";
} elsif ($json->{Type} eq "nowplayingupdate") {
Log 5,"NOWPLAYINGUPDATE received.";
} else {
Log 5, "unhandled message received: MessageType= $json->{Type}";
}
}
Danke für die Lösung mit dem Stop
jetzt wäre noch schön wenn man herausfinden würde wieso FHEM abstürzt bei ein paar wenigen Filmen....
je nach plattform kann das z.b. passieren wenn umlaute oder andere nicht ascii zeichen im json string sind. eventuell nicht so kodiert wie erwartet.
die fritzbox hat damit z.b. probleme.
gruss
andre
Hi,
ich habe die Fehler in der Konsole behoben.
Der Code war so aufgebaut, dass manche Nachrichten an einer falschen Stelle abgeschnitten wurden, was dazu führte, dass sie nicht wie erwartet anfingen.
Außerdem habe ich Befehle für das Einstellen eines Radiosenders (playradiochannel) und das Abspielen von Playlists mit Shuffle-Funktion (playlist loadlist_shuffle / playlist loadfrompath_shuffle) hinzugefügt und die Playlist-Befehle korrigiert. Funktioniert jetzt.
Version 0.3 im Anhang.
Zu dem Problem mit deinem Absturz:
Ist das auch bei Musik so? Ich habe gerade mal eine Datei mit "Ä" im Titel abgespielt, die Übertragung der Nachrichten ist laut Log okay - nur in fhemweb wird das Ä so angezeigt: �
Probier doch so mal, ob es bei dir deswegen abstürzt, bei mir geht das - ich lasse FHEM allerdings auch auf Windows laufen.
Du könntest FHEM mal auf verbose 5 laufen lassen und die Logs ansehen. Vorher bitte in angehängter Datei das "#" vor "Log 5,"MediaPortal: RAW DATA: $buf";" entfernen, dann können wir genau sehen, was vor dem Parsen ankommt.
Viele Grüße
Spiff
wenn du aus den decode_json() aufrufen ein JSON->new->utf8(0)->decode() machst stimmen die umlaute eventuell. damit hat die fritzbox aber wirkliche probleme.
gruss
andre
Hi Andre,
ja, das funktioniert tatsächlich!
Was meinst du genau? Hat die Fritzbox mit utf8 Probleme oder mit dem, wie es vorher war?
Wenn mit utf8, wie könnte man das Modul so gestalten, dass die fritzbox es mag, ich meine Umlaute aber trotzdem habe? :)
Viele Grüße
Spiff
klar funktioniert das :).
ja die fritzbox hat mit utf8 probleme. die JSON->new->utf8(0)->decode() variante schmiert komplett ab. ich weiss nicht ob immer oder nur abhängig von der perl version. schau mal im wiki da gibt es etwas zu fritzbox und utf8. der aktuelle 5.5. fhem installer bringt ein bisschen utf8 mit. aber nur wenn von grund auf installiert wird und nicht nur per update.
man kann im modul die plattform abfragen und dann abhängig davon die eine oder die andere variante aufrufen.
gruss
andre
ich hab gestern ins netatmo modul eine fritzbox erkennung und das umschalten zwischen beiden dexode aufrufen eingebaut.
gruss
andre
Hi Andre,
dankeschön für den Tipp!
Habe ich das richtig herausgelesen?
my $netatmo_isFritzBox = undef;
sub
netatmo_isFritzBox()
{
$netatmo_isFritzBox = int( qx( [ -f /usr/bin/ctlmgr_ctl ] && echo 1 || echo 0 ) ) if( !defined( $netatmo_isFritzBox) );
return $netatmo_isFritzBox;
}
if( netatmo_isFritzBox() ) {
$json = decode_json($data);
} else {
$json = JSON->new->utf8(0)->decode($data);
}
Gruß
Spiff
ja. das ist die stelle. du solltest nur in deiner kopie überall netatmo umbenennen :)
gruss
andre
hier stand mist.
Habe gerade die V0.3 im ersten Post veröffentlicht.
Diese überarbeitung stammt komplett von spiff. Vielen Dank :)
Hallo gmex,
ich habe dein Modul für MediaPortal gerade entdeckt da wollte ich gleich ausprobieren 8) .
Leider scheitert es schon daran das Modul zu laden da er die JSON.pm Datei nicht Localisieren kann.
Folgende Fehlermeldung:
Can't locate JSON.pm in @INC (@INC contains: /opt/fhem /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM ./FHEM/lib) at ./FHEM/70_MEDIAPORTAL.pm line 35.
BEGIN failed--compilation aborted at ./FHEM/70_MEDIAPORTAL.pm line 35.
In den angegebenen Ordnern ist die Datei auch nicht zu finden.
Ich habe das JSON Modul für Perl so Installiert wie du es im ersten Beitrag angegeben hast
cpan install JSON
unter
/home/pi/perl5/lib/perl5
konnte ich eine JSON.pm Datei finden.
Vielleicht kannst du mir helfen das gerade zu biegen?
Danke und Gruß
Markus
Hallo Markus,
versuche doch mal, die JSON.pm in eines dieser Verzeichnisse zu kopieren:
/opt/fhem
/etc/perl
/usr/local/lib/perl/5.14.2
/usr/local/share/perl/5.14.2
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.14
/usr/share/perl/5.14
/usr/local/lib/site_perl
. ./FHEM
./FHEM/lib
Gruß
Spiff
Hallo Spiff,
Danke für die schnelle Antwort,
ich hab jetzt ein bisschen getestet...
Ich habe mir jetzt eine Verknüpfung der JSON.pm und (ohne ging es nicht) den Ordner JSON ins /opt/fhem Verzeichnis gelegt. Danach ging es.
Gruß
Markus
wow, tolles Plugin! Ich bin total begeistert :)
Dank an die "beiden" Entwickler!
Ich habe meinen XBMC-RasPi kurzzeitig des Mediadienstes enthoben und mit FHEM und einem IR-Sensor versehen. Er sendet jetzt die Tastendrücke der MCE-FB über FHEM weiter zu MePo. Das geht gefühlt schneller als über den IR-Funk-IR Transmitter der sonst dazwischen ist um den Rechner im anderen Raum zu steuern. Hat beinahe sofort geklappt. Super! Ich weiß nicht, was WiFi-Remote zur Verfügung stellt, könnet man den Funktionsumfang noch erweitern? Zum Beispiel Popupmeldungen auf MePo wären nett :)
Das mein erstes sinnvolles Experiment mit FHEM, abgesehen von den Lampenspielen die man so macht ;)
kann man irgendwie die Zeitspanne bescheunigen, in der das Modul versucht MePo zu erreichen? Ich denke, das wird eine feste Pollingfrequenz oder so sein. Jedenfalls dauert es etwas lange, bis ein laufendes MePo bemerkt wird. Ich wecke den MePo-Rechner jetzt über Lirc und WOL, klappt in wenigen Sekunden. Dann kommt aber eine Zwangspause bis das Modul den Server gefunden hat und Befehle annimmt. Wäre es evtl. möglich durch einen Trigger (von der FB) an das Modul zu einem sofortigen Server-Suchen zu bewegen?
Hi aplatac!
Zitat von: aplatac am 02 Februar 2015, 23:21:03
Ich weiß nicht, was WiFi-Remote zur Verfügung stellt, könnet man den Funktionsumfang noch erweitern? Zum Beispiel Popupmeldungen auf MePo wären nett :)
Eigene Popup-Meldungen lässt MePo glaube ich noch nicht zu. Aber Erweiterungen sind möglich - eigentlich kann man alles, was die Schnittstelle zu MePo zur Verfügung stellt, auch in fhem ansprechen.
Eine Liste findest du hier:
http://wiki.team-mediaportal.com/1_MEDIAPORTAL_1/17_Extensions/3_Plugins/WifiRemote/Commands (http://wiki.team-mediaportal.com/1_MEDIAPORTAL_1/17_Extensions/3_Plugins/WifiRemote/Commands) für Kommandos, mit denen man MePo durch fhem steuern kann
http://wiki.team-mediaportal.com/1_MEDIAPORTAL_1/17_Extensions/3_Plugins/WifiRemote/Messages (http://wiki.team-mediaportal.com/1_MEDIAPORTAL_1/17_Extensions/3_Plugins/WifiRemote/Messages) für Nachrichten, die von MePo an fhem auf Anfrage gesendet werden können
Wenn du etwas Spannendes findest, können wir es bestimmt einbauen.
Zitat von: aplatac am 14 März 2015, 21:31:49
kann man irgendwie die Zeitspanne bescheunigen, in der das Modul versucht MePo zu erreichen? Ich denke, das wird eine feste Pollingfrequenz oder so sein. Jedenfalls dauert es etwas lange, bis ein laufendes MePo bemerkt wird. Ich wecke den MePo-Rechner jetzt über Lirc und WOL, klappt in wenigen Sekunden. Dann kommt aber eine Zwangspause bis das Modul den Server gefunden hat und Befehle annimmt. Wäre es evtl. möglich durch einen Trigger (von der FB) an das Modul zu einem sofortigen Server-Suchen zu bewegen?
Dazu kann ich leider wenig sagen. So wie ich das im MePo-Modul sehe, ist das eine fhem-interne Sache, die mit DevIO zu tun hat. Ob man ein Verbinden manuell anstoßen kann, weiss ich nicht. Müsstest du vielleicht an anderer Stelle nochmal erfragen. Bei mir dauert das Verbinden ca. 30 Sekunden.
Viele Grüße
Spiff
das gleiche Problem haben auch andere, siehe hier:
http://forum.fhem.de/index.php/topic,31639.msg241772.html#msg241772 (http://forum.fhem.de/index.php/topic,31639.msg241772.html#msg241772)
und ich glaube, den gleichen Ansatz hat auch schon einer bei XBMC vorgeschlagen.
Entschuldigt meine Unbedarftheit, aber könnte man das nicht auch so machen?
Hi aplatac.
Probier mal den Anhang.
Verbindung mit set mp connect erzwingen.
Gruß
Spiff
yes!
das sieht gut aus, klappt :)
Ich mach grad n paar Experimente wie ich es am besten einsetze...
das Modul läuft gut, aber leider scheint MediaPortal ein Probleme mit dem WiFiRemote-Plugin nach einem Standby (S3) zu haben. Gelegentlich nimmt es nach dem Aufwachen keine Befehle an.
Das Problem mit WiFi-Remote hat sich wieder verflüchtigt, evtl. lags an einer USB-Buchse mit Wackelkontakt, das war jedenfalls das Einzige was ich finden und beheben konnte...
Das Mediaportalmodul läuft gut mit dem neuen connect. Ich löse durch LIRC ein script aus, welches den Media-PC weckt, Beamer und AVR einschaltet, 12 Sekunden wartet (das ist ne Krücke, weil ich nicht genau prüfen kann wann Mediaportal bereit ist) und sende dann den connect-Befehl. Das Ganze dauert 13 Sekunden und so lange braucht eh der Beamer um die Lampe warm zu machen und vorher waren es bis zu 60 Sekunden. Deutlich verbesserter WAF :)
Hi!
Klingt doch super!
Ich werde in dem STV-Thread mal bescheid sagen, dass ich die Routine kopiert habe.
Bei mir läuft das Modul auch weiterhin gut - die connect-Sache benutze ich jedoch gar nicht.
Gruß
Spiff
@spiff: kennst du dich mit dem Power Scheduler++ Plugin aus?
Das hat eine Option in der man ihm einen Befehl/Script mitgeben kann, dass bei "power state change" ausgelöst wird. Laut Wiki übergibt er an eine Batch unter anderem eine Variabel "Standby", ich dachte wenn eben der Standby ausgelöst wurde. Aber leider führt er das Script eben nicht beim Einschlafen, sondern bei dem folgenden Aufwachen aus. Das nützt mir nichts, ich möchte gerne den Beamer und AVR per RasPi-LIRC ausschalten wenn MePo in den Standby geht. Zur Not könnte ich wie beim connect das Ganze von der anderen Seite aufziehen und mit dem Mediaportal-Modul prüfen ob dieses läuft und wenn nicht die Geräte ausschalten aber dann schaltet er mir auch den Verstärker aus wenn ich nur diesen einschalte und für Musik nutze. Also muss ich dann diesen Zustand extra abfangen was fummelig und ungeschickt wäre...
Hi,
nein, das kenne ich nicht.
Aber probiere doch mal die Software "Eventghost".
Ich bin von ihr sehr überzeugt. Sie ist open source und bietet einen irren Funktionsumfang.
Ich habe das gerade mal getestet: wenn der PC in den Standby geht, macht er vorher noch schnell das DVD-Laufwerk auf.
Du kannst auch Batch-Dateien ausführen lassen.
Wenn du eine .bat Datei folgender Art erstellst und sie dann bei dem Standby-Event ausführen lässt, sollte der jeweilige Befehl an fhem gesendet werden.
C:\Perl\bin\perl.exe ..\fhem.pl localhost:7072 "set Lampe on"
Das Ausführen externer Dateien findest du in Eventghost unter Befehl hinzufügen -> System -> starte Anwendung
Übrigens, wie man umgekehrt mit fhem Events in Eventghost ausführt, ist hier beschrieben:
http://forum.fhem.de/index.php/topic,13680.msg85892.html#msg85892
Viel Spaß!
Spiff
Edit:
(http://dg.fserver.de/forum/fhem/150414_EventGhost.png)
Nabend,
EventGhost... gute Idee, wusste nicht dass der auch auf Standby reagiert!
Zu meiner Schande muss ich sagen, dass ich den sogar schon drauf hatte
um damit den LIRC durchs Netz anzusprechen. Aber dann fand ich es mit
netcat eleganter ;)
Danke für den Tip!
Hallo Spiff,
Zitat von: Spiff am 14 April 2015, 22:24:40
(http://dg.fserver.de/forum/fhem/150414_EventGhost.png)
wie muss man das Webserver Plugin konfigurieren?
Ich möchte von einem Raspberry Pi mit FHEM ein Skript auf einem Windows PC mit Eventghost ausführen.
Gruß
TWART016
Hi,
siehe hier:
http://forum.fhem.de/index.php?topic=13680.msg327421#msg327421
Gruß
Spiff
Hallo,
ich wollte mal fragen, ob an dem Modul noch jemand arbeitet?
Es gäbe ein paar kleinere Punkte, die für meine einfache Anforderung (mitloggen, was wann abgespielt wurde) etwas störend sind.
Das wichtigste wäre der Einsatz von "$readingFnAttributes" bei den verfügbaren Attributen, da ich unbedingt ein "event-on-change-reading" benötige. Es gibt einfach zu viele Events :)
Und dann brauche ich auch noch "stateFormat".
Außerdem werden Umlaute nicht korrekt übertragen.
Des Weiteren stürzt das Modul manchmal ab, wenn Mediaportal beim Abschalten nicht mehr erreichbar ist.
Vielleicht ist da ja noch jemand, ansonsten würde ich das auch kurz einbauen, möchte aber natürlich keinen übergehen...
Danke schon mal.
Grüße
Reinerlein
so lange das nicht ins modul eingebaut ist kannst du dir bei den beidem attributen auch per userattr helfen und sie so hinzufügen.
gruss
andre
Hi Andre,
Danke für den Tipp. Daran hatte ich gar nicht mehr gedacht... jetzt fehlen mir nur noch die Umlaute und Sonderzeichen :)
Grüße
Reiner
Hallo gemx,
nach einer Woche nochmal ein Push des Threads.
Wirst du hier noch weitermachen, oder ist es dir recht, wenn ich das Modul übernehme?
Grüße
Reinerlein
Hi Reinerlein,
ich hatte ja auch ein bisschen daran rumgewerkelt, weil gemx nicht mehr so aktiv gewesen zu sein schien. Ich würde es begrüßen, wenn da noch jemand aktiv mitgestaltet!
Ich habe es auch nie geschafft, das Modul ins SVN hochzuladen.
Es wäre schön, wenn du bei der letzten Version v0.4a vom 19.03.2015 weitermachen würdest. Die Version im ersten Beitrag ist veraltet.
Viele Grüße
Spiff
Ach so und bezüglich der Umlaute:
schau mal hier:
http://forum.fhem.de/index.php/topic,18895.msg186709.html#msg186709
Anscheinend habe ich die Fritzbox-Erkennung gar nicht eingebaut... ::)
Benutzt du eine Fritzbox o.ä.? Versuch doch mal, ob das daran liegt und kommentiere Zeile 205
my $json=JSON->new->utf8(0)->decode($msg);
aus und nimm stattdessen Zeile 207
my $json=decode_json($msg);
Gruß
Spiff
Hi Spiff,
ich habe deine genannte Version leider übersehen gehabt, und mit der im ersten Post losgelegt ::)
Ich habe in meiner lokalen Version die Themen von mir bereits beseitigt. Da es ja keine offizielle Version war, ging da ja auch nichts bei einem Update verloren.
Ich werde mir mal die Unterschiede zwischen deiner Version und der aus dem ersten Post anschauen, und bei mir einarbeiten.
Das ganze ins Subversion zu bringen sollte dann kein Problem sein...
Danke schonmal für deine Hinweise... Ich habe gemx auch schon eine PN dazu gesendet. Gemäß Fhem-Richtlinien soll 3 Wochen gewartet werden, um dem Originalauthor eine Chance zur Reaktion zu geben.
Dazu werde ich den Thread hier im Wochenrythmus pushen.
Mal schauen, ob da noch eine Reaktion kommt...
Grüße
Reinerlein
Hi Spiff,
sehe ich das richtig, dass der Unterschied im zusätzlichen "connect"-Befehl und der anderen Behandlung des Json-Strings besteht?
Zu dem Connect: Hast du absichtlich den Teil mit dem Fork dringelassen? Das Mediaportal-Modul verwendet doch eigentlich gar kein forken...
Wenn das alles an Unterschied ist, dann hab ich das jetzt bei mir mit drin...
Was ich noch zusätzlich eingebaut habe ist ein direkter sleep-Befehl (als kurze Variante zu "powermode sleep") und ein integriertes Wakeup (über eine eigene interne MagicPacket-Funktion). Die dafür notwendige Mac-Adresse wird bei der ersten Verbindung ermittelt, sowie alle automatisch gelieferten Informationen in Readings verpackt (z.B. Laufzeit oder die aktuelle Position).
Außerdem habe ich einiges bereinigt, damit die Oberfläche alle get- und set-Anweisungen auch sauber (mit möglichen Auswahlwerten) anzeigt, und eine Doku begonnen :)
Der Weg um offiziellen Modul ist nur noch kurz...
Was ich leider überhaupt nicht testen kann, ist, ob meine Version noch auf einer Fritzbox lauffähig wäre. Verwendest du eine Fritzbox und könntest das dort testen?
Grüße
Reinerlein
Hi Reinerlein,
ja, es gab 2 verschiedene 0.3-Versionen: einmal die aus dem ersten Beitrag vom 18.7. und eine vom 23.7.
Ist jetzt bisschen unglücklich gelaufen, weil die letzte Version eigentlich sehr gut lief.
Wenn ich das richtig sehe (Zeilenangabe aus der Version vom 18.7., erster Beitrag):
Zeile 98 kleiner Tippfehler:
return "unknown argument, choose one of status nowplaying";
Und playradiochannel kam hinzu
} elsif ($cname eq "playradiochannel") {
if ($a[2] ne $a[2]+0) { return "playchannel needs a valid channelid of type int"; }
$cmd="{\"Type\":\"playradiochannel\",\"ChannelId\":$a[2]}\r\n";
Und Zeile 163, das Log 5,"MediaPortal: RAW MSG: $buf;" ist auskommentiert.
Ich habe alle Logs mit dem Prefix "Mediaportal: " versehen, das machte das LOG übersichtlicher und ich hatte ein paar auskommentierte 5er Logs eingefügt, die bei der Fehlerbehebung helfen sollten.
Das Wichtigste ist aber die Behebung des Fehlers in der JSON-Interpretierung.
Zeile 172:
$strippos=$i; --> if ($level==0) {$strippos=$i;}
Das ist das, was ich auf die Schnelle erkannt habe.
Aber es wäre mir lieb, wenn bei deiner Version nichts von meiner verloren geht. :)
Das mit dem Fork habe ich drin gelassen, weil ich die Routine aus einem anderen Modul kopiert hatte. Ich hatte dann nur ein paar Dinge abgeändert, dass sich da nichts in die Quere kommt und war froh, dass es überhaupt funktioniert hat ohne wirklich verstanden zu haben, was da passiert...
Wenn das schlanker geht: tob dich gerne aus. :)
Gruß
Spiff
Hi Spiff,
danke nochmal für diese Zusammenfassung. Das habe ich alles drin. Die neue Version bei mir sollte also nicht schlechter als die bisherige sein :)
Fehlt nur noch jemand, der das dann mal auf einer Fritzbox testen kann, sofern das überhaupt noch wichtig ist... Ist ja eine kleiner werdende Anwenderschaft :)
Grüße
Reinerlein
Hallo - freue mich auf eine neue Version (habe die aus Post #36 im Einsatz) - und teste gerne mit. Hab zwar eine Fritzbox, FHEM läuft jedoch separat.
Aktueller Stand bei mir ist, dass beim Titel nur der Sendername angezeigt wird - sollte das funktionieren?
STATE opened
TYPE MEDIAPORTAL
Readings:
2016-01-05 21:06:01 IsMuted false
2016-01-05 21:10:13 IsPaused false
2016-01-05 21:10:13 IsPlaying true
2016-01-05 21:10:13 Title ZDF HD
2016-01-05 21:06:01 Volume 100
2016-01-05 21:04:43 state opened
Danke!
Hi,
@Reinerlein
Klingt super!
Ich kann es leider auch nicht auf einer Fritzbox testen.
@spooy99
Das ist bei mir auch so.
Es lassen sich aber noch wesentlich mehr Informationen anzeigen, sie müssen nur in das Modul eingebaut werden. Reine Fleißarbeit ;)
Eine Liste ist hier zu sehen:
http://wiki.team-mediaportal.com/1_MEDIAPORTAL_1/17_Extensions/3_Plugins/WifiRemote/Messages
z.B. auch die Beschreibung aus den EPG-Daten oder auch die nächsten anstehenden Sendungen etc.
Ich habe momentan leider keine Zeit dafür, aber mal sehen, was Reinerlein noch so einbaut... ::) 8)
Gruß
Spiff
Hi Spiff,
das mit der aktuellen Sendung ist schon drin 8)
Ich schaue mal, was sonst noch interessant sein kann :)
Grüße
Reinerlein
Hi Reinerlein,
wie ist denn der Stand?
Gruß
Spiff.
Hi Spiff,
ich hatte das ja unter https://forum.fhem.de/index.php/topic,48911.0.html (https://forum.fhem.de/index.php/topic,48911.0.html) in einem neuen Thread angefangen.
Mir war heute aber noch aufgefallen, dass ich die letzte Änderung noch gar nicht eingecheckt hatte... Meintest du das?
Grüße
Reiner
Hi,
nein, ich hatte nur den aktuellen Thread nicht gesehen und lange kein Update mehr ausgeführt.
Jetzt ist alles klar, vielen Dank für deine Mühen, bisher funktioniert das Modul wie gewohnt, sogar noch besser dank der zusätzlichen Readings.
Viele Grüße
Spiff.