[21_HEOSMaster,21_HEOSPlayer,21_HEOSGroup] Module für das Denon Multiroomsystem

Begonnen von CoolTux, 21 Januar 2017, 21:47:52

Vorheriges Thema - Nächstes Thema

CoolTux

Genau sowas habe ich gebraucht. Ich habe nämlich nicht wirklich eine Idee wie man Multimedia so darstellen kann.
Aber ja, am Ende soll auch Playlisten gehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

oli82


CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

grappa24

vlt ne blöde Frage Leon, aber Du baust den Gruppenmechanismus schon so, dass sich die Gruppen mit den Einstellungen in der app synchronisieren?
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

CoolTux

Guten Morgen,

Anders macht es ja kein Sinn. Der Synchronisation beim FHEM Anlegen einer Gruppe passiert ja schon alleine durch die Schaltbefehle zum Anlegen welche an die API gehen. Andersrum muss ich noch schauen wie ich das mache, ich denke aber das ich auf ein Event reagieren kann wenn sich was bei der Gruppeneinstellung ändert so das ich die Gruppen neu einlesen kann.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

grappa24

Hallo, ich hab sowohl beim HEOSMaster als auch bei den HEOSPlayern verbose auf 0 gesetzt, um mein LOG zu "schonen"  ;)  Gibts denn eine Möglichkeit, die folgenden Meldungen im LOG noch zu unterdrücken, mein LOG-file wird sehr groß und bremst FHEM 2017.02.11 15:06:27 1: unknown buffer length
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

CoolTux

Zitat von: grappa24 am 11 Februar 2017, 20:21:32
Hallo, ich hab sowohl beim HEOSMaster als auch bei den HEOSPlayern verbose auf 0 gesetzt, um mein LOG zu "schonen"  ;)  Gibts denn eine Möglichkeit, die folgenden Meldungen im LOG noch zu unterdrücken, mein LOG-file wird sehr groß und bremst FHEM 2017.02.11 15:06:27 1: unknown buffer length


Ohne Update nicht. Ich werde mal anfangen die Logausgaben weiter an zu passen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Guten Morgen,

Kurzer Zwischenbericht.
Auch wenn es hier ruhig ist so seit gewiss das im Hintergrund fleißig gecodet wird. Das Gruppenmodul ist weitestgehend fertig. Nun geht es darum wie man eine Gruppe über FHEM am besten erstellt. Tests mit Depechem haben dabei ergeben das meine erste Umsetzung leider nicht so ganz klappt wie gewünscht. Nun versuche ich ab zu wägen ob man den Ansatz dennoch folgt nur anders Umsetzt oder komplett andern das ganze macht. Da sitze ich nun seit einiger Zeit dran.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

hanseis

Hallo Leon,

erstmal vielen Dank für deine Vorlage. Ich wollte auch schon laaaange ein HEOS Modul schreiben, bin aber nie dazu gekommen. :-[
Dank deiner hervorragenden Arbeit habe ich mich dann endlich aufgerafft und noch etwas weiter an deinem Modul geschraubt. Wenn du magst, kann ich dir meinen Code irgendwie zukommen lassen und du kannst das, was dir gefällt, in deinen Code übernehmen. Was hälst du davon? Ich muss dazu sagen das ich vorher noch nie ein Modul für FHEM geschrieben habe. 8)

So, bei mir geht im Master nun folgendes zusätzlich zu deinem Modul:
get showAccount "zeigt User und Passwort in Klartext an"

im Player geht:
get playlists "gibt die Namen der Playlisten durch Komma getrennt zurück"
get channels "gibt die Namen der Favoriten durch Komma getrennt zurück"
get channelscount "gibt die Anzahl der Favoriten zurück"
get inputs "gibt die Namen der verfügbaren Quellen durch Komma getrennt zurück"
get Media "gibt die Namen der verfügbaren Medien bzw Container durch Komma getrennt zurück"

set channel NR "spielt einen vorher mit der App erstellten Favoriten ab"
set channelUp  "schaltet auf den nächsten Favoriten in der Favoritenliste um"
set channelDown  "schaltet auf vorherigen Favoriten in der Favoritenliste um"
set playlist NAME  "spielt eine Playlist mit dem Namen 'NAME' ab"
set input NAME "setzt das Reading 'input' auf den gewählten Input"
set media NAME "setzt das Reading 'media' auf den gewählten Namen und spielt dieses ab wenn es ein Medium ist ansonsten liest es den Container ein"

wenn mit der App auf einen anderen Radiosender geschaltet wird, überprüft das Modul ob es einer aus der Favoritenliste ist und aktualisiert das "channel" Reading. Ebenso wenn ein Favorit per App hinzugefügt wird.
Bei Änderungen der Quellen werden diese neu eingelesen. Das Playermodul ließt alle Quellen ein, wobei es den USB und AUX Quellen jeweils diesen Prefix anhängt.
Momentan kämpfe ich noch mit UTF8 Strings. Die Argumente die von FHEM zurück gegeben werden sind UTF8 codiert. Die Name Eigenschaft im JSON String ist anscheinend ASCII. Da muß ich irgendwie ne Menge Sonderzeichen umwandeln.

Melde dich einfach wenn du meinen Code haben möchtest. :)


CoolTux

Hallo Hans,

Ich nehme natürlich sehr gerne Deinen Code an. Schreibe Dir nachher eine PM.
Um die Daten vom Player nach utf8 zu encoden kannst du das Modul Encode nehmen. Mir war zwar so als wenn ich das schon machen würde, aber kann auch woanders gewesen sein.


use Encode(encode_utf8);

$json = decode_json(encode_utf8($response));



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

hanseis

Hallo Leon!

Die utf8 Kodierung hast du schon gemacht. FHEMWeb zeigt das aber nicht richtig an. Beim return von Get und Set dürfen die Leerzeichen nicht escaped werden. Beim return von $list in Get und Set müssen sie in $list escaped werden.  :o Aber bei einigen Sendern mit Sonderzeichen bricht die DropDown Box immer noch den Text um. >:(
Inzwischen hab ich "set clearQueue" und "set saveQueue" hinzugefügt. Diese löschen die aktuelle Warteschlange bzw. speichern sie als Favorit ab.
Na du wirst es ja sehen. Ich hab den Code angehangen. :)

grappa24

Hab mal den Stand von Dir hanseis von heute eingespielt. Läuft perfekt bei mir, alles soweit stabil. Besonders mute2play find ich genial .... Auch die neuen features mit den channeln funktionieren ...
Grüße, Dieter
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

CoolTux

Zitat von: grappa24 am 17 Februar 2017, 16:30:43
Hab mal den Stand von Dir hanseis von heute eingespielt. Läuft perfekt bei mir, alles soweit stabil. Besonders mute2play find ich genial .... Auch die neuen features mit den channeln funktionieren ...
Grüße, Dieter

Super, wenn das so toll läuft und Ihr zufrieden mit der Umsetzung seit, übernehme ich das direkt ohne Prüfung.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Ich habe noch mal Gedanken wegen Group gemacht. Ich mache das jetzt so das ich bei einem Playerdevice die Möglichkeit anbieten ein set group zu machen und als Parameter einen der anderen Player aus zu wählen. Somit ist der Player über dem man den set Befehl macht automatisch der leader und der zweite Ausgewählt ist Mitglied. So oft erstellt man ja keine neue Gruppe. Man entfernt zwar die Mitglieder aber die Gruppe selber bleibt ja meist gleich mit ein und dem selben Leader.

Was sagt ihr dazu?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

grappa24

Zitat von: CoolTux am 17 Februar 2017, 17:04:00
So oft erstellt man ja keine neue Gruppe.
Wenn ich gruppiere, dann immer "Wohnnzimmer" und "Küche", betreibe "Küche" aber auch oft solo.

Vom Gefühl her würde ich das Gruppieren im Moment noch eher über die app machen, es sollte sich allerdings im FHEM-Modell abbilden lassen. Gerade das Gruppieren ist eher was für ein grafisches UI.
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...