[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

Hallo,

Muss ich mir anschauen. Eigentlich gleich war mir so als wenn die Daten für Volumeveränderung noch wo anders her kommen. Deswegen hatte ich das gelassen.
Ist nur der Solider falsch oder fehlt komplett das Reading für volume nach dem Define? Ruhig Mal so bis zu 30s warten.
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

Das Reading fehlt, da kein event/player_volume_changed ausgelöst wird. Wenn man den Slider betätigt, setzt der die gewünschte Lautstärke und ist ab da synchron da ein player/ set_volume abgefangen wird. Beides kommt eben erst wenn der User tätig wird und nicht schon beim Define. Ist nur ein Schönheitsfehler.

CoolTux

Seltsam, ich schaue mal ob ich die Daten aus einem anderen get bekommen würde was schon aktiv ist und ich da nur beim Auswerten einen Fehler habe. Wenn nicht baue ich das natürlich gerne ein.


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

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

Nein noch nicht. Bin gerade mit Depechem dabei was zu analysieren.
Im übrigen hast Recht mit Volume, wieso ich das nicht gemacht habe ist mir ein Rätsel.

Ich werde heute Abend oder Morgen Deine Codeteile einbauen.



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

moin, geht denn der HEOS Account? Wenn ja, wo/wie gibt man das PW ein?
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

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

Zitat von: grappa24 am 08 Februar 2017, 21:48:37
Hast Du Modul mit mute2play schon im git in der 0.1.45?

Hallo Grappa,

Ich habe Deine Vorschläge in 0.1.47 eingebaut. Ist noch nicht im Git. Kommt die Tage.
Einzig Deinen Code für die AttrFn habe ich nicht genommen, der hätte nur das Reading gesetzt und das wäre ja redundante Haltung der Info, denn im Attribut steht ja schon ob mute2play aktiv ist oder nicht.


Grüße
Leon
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

@All

Ich Bin gerade mit Depechem dabei noch einige Grundlagen zu der Gruppensteuerung heraus zu finden. Das Gruppenmodul ist an sich fertig.
Ich versuche nun heraus zu finden wie und wo es am besten ist eine Gruppe zu erstellen. Meiner Meinung nach wäre es Sinnvoll das im Mastermodul zu machen. Doch dann müsste man sehen können welche Player zur Verfügung stehen und basierend darauf eine Auswahl treffen können.
Ich bin aber noch am überlegen wie man das genau machen kann.
Wenn man über die API erstmal eine Gruppe angelegt hat, bleibt diese mit dem Teamleader immer erhalten. Man entfernt einfach alle Mitglieder ausser dem Teamleader und schon ist die Gruppe inaktiv.
Es wäre also auch eine Überlegung wert einfach eine Gruppe von Hand an zu legen in dem man immer nur einen Leader mit angibt und dann innerhalb des Gruppendevices seine Teammember aussuchen kann.

Oder man macht das doch über das Mastermodul, dann aber einfach nur in dem man da einen Teamleader an gibt.

set createGroup <Auswahl aller Player als Leader>

und schon wird die Gruppe angelegt und die weiteren Member muss man dann in der Gruppe angeben.

Mir rauscht der Kopf.  ;D

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

pataya

Hmm wie wäre es mit Gruppenbildung aus den Playern heraus?
Also quasi:
set Player1 groupadd <playername>
set Player1 groupdel <playername>


Denke gerade schon weiter an die Steuerung bspw. in TabletUI. Dann kann über Player1 abgespielt werden mit Buttons darunter die eben die Player hinzufügen/entfernen.

CoolTux

Geht auch. Musst aber dann jedes Playerdevice anfassen welches Du in die Gruppe haben willst. Dann musst ja auch noch sagen in welche Gruppe. Einfach add del geht nicht. Das entfernen würde ich in der Tat dann wirklich nur im Gruppendevice machen. Da hast du einen Überblick über alle zur Gruppe gehörenden Player.
Ich kann mir aber vorstellen im Playerdevice ein set groupLeader zu machen. Und dann wird automatisch eine Gruppe erstellt und über das Gruppendevice werden dann andere Player hinzugefügt oder entfernt.
Das ist doch cool, oder?

Derweil sitze ich immer noch am Bufferüberlauf Problem. das werden wir spätestens bekommen wenn wir Favoritenlisten einlesen. Habe da aber denke was gefunden. Arbeite daran.
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

pataya

Joa, so ähnlich meinte ich das:
set Player1 groupLeader
set Player1 groupadd <playername>
set Player1 groupdel <playername>

Damit wäre Player1 gleichzeitig das Gruppendevice solange bis die Player wieder entfernt werden.
Die Liste der <playername> kann ja aus dem Masterdevice ausgelesen werden.

Wie wird deine Idee dann in einer GUI realisiert? Also wie füge ich bspw. einen anderen Player zu einer Gruppe hinzu?

hanseis

Hallo Leon,

der Vorschlag mit dem mute2play war von mir, Grappa hatte nur danach gefragt.  ;)
Das mit dem Bufferüberlauf habe ich auch schon gemerkt. Hatte ihn erst mal hoch gesetzt und dann mit
$hash->{CD}->print($string);
gespielt.
Das Gegenstück in der HEOSMaster_Read sieht dann so aus

    $buf = $hash->{CD}->getline;  
    unless( defined $buf) {
    Log3 $name, 3, "HEOSMaster ($name) - Keine Daten empfangen";
    return undef;
    }


Das frisst bis jetzt alles.  8) Da kannst du dir dann das HEOSMaster_PreResponseProsessing sparen.

CoolTux

Hast Du auch mal geschaut wie sich FHEM in dem Moment verhält? Ich denke nämlich das es da blockiert. Bin mir aber nicht ganz sicher.
Deswegen wird in FHEM Modulen mit einem Zwischen Puffer gearbeitet. Ich habe nun eine fertige Lösung dafür. Ich gebe zu sie ist Umfangreicher wie Deine, aber dafür FHEM Konform  :)
Und sie prüft den JSON String gleich noch auf Korrektheit. Wir wissen ja nicht was da tatsächlich an Datenmengen kommt wenn wir erstmal die Favoritenliste einlesen.
Ich habe aktuell ein Ähnliches Problem bei meinem LGTV Modul, und da kommen eine Menge Daten wenn ich die SenderInfo Liste einlese. Alle Sender plus Info was gerade läuft und als nächstes laufen wird. Das sind bei mir fast 400 Sender.


Grüße

PS:
Noch mal ganz dollen Dank für Deine Anmerkungen, Ideen und vorallem den fertigen Code. Sowas erspart mir viel Arbeit, ob Du es glaubst oder nicht.
Im Gegensatz zu Euch habe ich kein HEOS und musste mir dafür Extra einen Emulator bauen der ja erstmal mit den entsprechenden Response Daten zum testen gefüttert werden will.
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

Wird es auch eine Anbindung der Playlisten wie bei Sonos geben?
Wenn ich die CLI richtig verstanden habe, lassen diese sich ja auslesen.

Habe dir mal ein List meines Sonos gemacht. Evtl kann man das Format in etwa so aufbauen
Internals:
   DEF        RINCON_XXXXXXXXXXXXXXXXXXXXXXX_MR
   NAME       Sonos_Wohnzimmer
   NR         415
   NTFY_ORDER 50-Sonos_Wohnzimmer
   STATE      appeared
   TYPE       SONOSPLAYER
   UDN        RINCON_XXXXXXXXXXXXXXXXXXXXXXX_MR
   Readings:
     2017-02-08 14:57:38   AlarmList       {}
     2017-02-08 14:57:38   AlarmListIDs
     2017-02-08 14:57:38   AlarmListVersion RINCON_XXXXXXXXXXXXXXXXXXXXXXXX:0
     2016-10-24 15:24:28   AlarmRunning    0
     2016-10-24 15:24:28   AlarmRunningID
     2016-12-16 20:08:11   Balance         0
     2016-12-26 12:03:03   Bass            7
     2016-10-24 15:24:28   CrossfadeMode   0
     2016-10-24 15:24:28   DailyIndexRefreshTime 18:00:00
     2017-02-09 06:00:00   Favourites      {'FV:2/10' => {'Title' => 'bigFM Saarland','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As54188%3Fsid%3D254%26amp%3Bflags%3D8224%26amp%3Bsn%3D0'},'FV:2/12' => {'Title' => 'bigFM live','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As84203%3Fsid%3D254%26amp%3Bflags%3D8224%26amp%3Bsn%3D0'},'FV:2/6' => {'Title' => 'planet radio','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As2726%3Fsid%3D254%26amp%3Bflags%3D32%26amp%3Bsn%3D0'},'FV:2/5' => {'Title' => 'sunshine live','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As10637%3Fsid%3D254%26amp%3Bflags%3D32%26amp%3Bsn%3D0'},'FV:2/9' => {'Title' => 'planet radio','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As2726%3Fsid%3D254%26amp%3Bflags%3D8224%26amp%3Bsn%3D0'},'FV:2/7' => {'Title' => 'YOU FM - YOUNG FRESH MUSIC','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As24878%3Fsid%3D254%26amp%3Bflags%3D32%26amp%3Bsn%3D0'},'FV:2/4' => {'Title' => 'You FM','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As87105%3Fsid%3D254%26amp%3Bflags%3D32%26amp%3Bsn%3D0'}}
     2016-12-18 12:26:07   FavouritesVersion RINCON_XXXXXXXXXXXXXXXXXXXXXXX,19
     2016-10-24 15:24:28   GroupMute       0
     2017-02-07 10:54:54   GroupVolume     14
     2016-10-24 15:24:28   HeadphoneConnected 0
     2016-10-24 15:24:27   IsMaster        1
     2017-02-09 06:00:00   LastActionResult GetFavouritesWithCovers: {'FV:2/10' => {'Title' => 'bigFM Saarland','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As54188%3Fsid%3D254%26amp%3Bflags%3D8224%26amp%3Bsn%3D0'},'FV:2/12' => {'Title' => 'bigFM live','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As84203%3Fsid%3D254%26amp%3Bflags%3D8224%26amp%3Bsn%3D0'},'FV:2/6' => {'Title' => 'planet radio','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As2726%3Fsid%3D254%26amp%3Bflags%3D32%26amp%3Bsn%3D0'},'FV:2/5' => {'Title' => 'sunshine live','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As10637%3Fsid%3D254%26amp%3Bflags%3D32%26amp%3Bsn%3D0'},'FV:2/9' => {'Title' => 'planet radio','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As2726%3Fsid%3D254%26amp%3Bflags%3D8224%26amp%3Bsn%3D0'},'FV:2/7' => {'Title' => 'YOU FM - YOUNG FRESH MUSIC','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As24878%3Fsid%3D254%26amp%3Bflags%3D32%26amp%3Bsn%3D0'},'FV:2/4' => {'Title' => 'You FM','Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As87105%3Fsid%3D254%26amp%3Bflags%3D32%26amp%3Bsn%3D0'}}
     2016-12-26 12:02:53   Loudness        1
     2016-10-24 15:24:27   MasterPlayer    Sonos_Wohnzimmer
     2016-10-24 15:24:28   Mute            0
     2016-10-24 15:24:28   OutputFixed     0
     2016-12-18 22:14:34   Playlists       {'SQ:1' => {'Cover' => 'http://192.168.100.83:1400/getaa?u=x-file-cifs%3a%2f%2f192.168.100.110%2fmusic%2fSing%20Meinen%20Song%20-%20Das%20Weihnachtskonzert%20Vol%202%20(2015)%2f01_christina_stuermer_-_merry_xmas_everbody.mp3&amp;v=196','Title' => 'Weihnachten'},'SQ:0' => {'Cover' => '/fhem/sonos/cover/playlist.jpg','Title' => 'Radio'}}
     2016-10-24 15:24:28   PlaylistsVersion RINCON_XXXXXXXXXXXXXXXXX,4
     2016-12-15 17:59:58   QueueHash       XXXXXXXXXXXXXXXXX
     2016-12-15 17:59:58   QueueVersion
     2016-12-18 22:15:17   Radios          {'R:0/0/14' => {'Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As2726%3Fsid%3D254%26amp%3Bflags%3D8224%26amp%3Bsn%3D0','Title' => 'planet radio'},'R:0/0/8' => {'Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As24878%3Fsid%3D254%26amp%3Bflags%3D32%26amp%3Bsn%3D0','Title' => 'YOU FM - YOUNG FRESH MUSIC'},'R:0/0/13' => {'Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As84203%3Fsid%3D254%26amp%3Bflags%3D8224%26amp%3Bsn%3D0','Title' => 'bigFM live'},'R:0/0/2' => {'Cover' => 'http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3As10637%3Fsid%3D254%26amp%3Bflags%3D32%26amp%3Bsn%3D0','Title' => 'sunshine live'}}
     2016-12-18 12:26:07   RadiosVersion   RINCON_XXXXXXXXXXX,19
     2016-10-24 15:24:28   Repeat          0
     2016-10-24 15:24:28   RepeatOne       0
     2016-10-24 15:24:28   Shuffle         0
     2016-12-26 12:24:45   SlavePlayer     []
     2016-10-24 15:24:28   SleepTimer      off
     2016-10-24 15:24:27   SleepTimerVersion
     2016-10-24 15:24:28   SubEnable       1
     2016-10-24 15:24:28   SubGain         0
     2016-10-24 15:24:28   SubPolarity     0
     2016-12-16 20:08:26   Treble          -1
     2016-10-24 15:24:28   TruePlay        0
     2017-02-07 10:54:53   Volume          14
     2016-12-16 13:03:55   ZoneGroupID     RINCON_XXXXXXXXXXXXXXXXX:__
     2016-12-26 12:24:45   ZoneGroupName   Wohnzimmer
     2016-12-26 12:24:45   ZonePlayerUUIDsInGroup RINCON_XXXXXXXXXXXXXXXXX
     2016-11-27 11:12:28   currentAlbum
     2017-02-07 13:37:34   currentAlbumArtURI ./www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_AlbumArt.gif
     2017-02-07 13:37:34   currentAlbumArtURL http://192.168.100.83:1400/getaa?s=1&u=x-sonosapi-stream%3as84203%3fsid%3d254%26flags%3d8224%26sn%3d0
     2016-11-27 11:12:28   currentAlbumArtist
     2016-11-27 11:12:28   currentArtist
     2017-02-08 14:57:36   currentNormalAudio
     2016-10-24 15:24:28   currentOriginalTrackNumber
     2017-02-07 13:37:34   currentSender   bigFM live
     2017-02-02 05:31:10   currentSenderCurrent
     2017-02-07 15:34:10   currentSenderInfo
     2017-02-07 13:37:34   currentStreamAudio 1
     2016-11-27 11:12:28   currentTitle
     2017-02-07 13:37:34   currentTrack    1
     2016-11-27 11:12:28   currentTrackDuration 0:00:00
     2017-02-07 15:34:11   currentTrackPosition 0:00:00
     2017-02-07 13:37:34   currentTrackProvider Radio
     2017-02-07 13:37:34   currentTrackURI aac://streams.bigfm.de/bigfm-hotmusicradio-128-aac?usid=0-0-H-A-D-02
     2016-10-24 15:24:27   fieldType
     2017-02-07 15:34:10   infoSummarize1  bigFM live:
     2017-02-07 15:34:10   infoSummarize2  STOPPED => bigFM live:
     2017-02-07 10:55:37   infoSummarize3  Lautstärke: 14 ~ Ton An ~ Balance: Mitte ~ Kein Kopfhörer
     2016-10-24 15:24:28   infoSummarize4
     2016-12-16 13:03:54   location        http://192.168.100.83:1400/xml/device_description.xml
     2016-11-27 11:12:28   nextAlbum
     2017-01-16 13:02:06   nextAlbumArtURI ./www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_NextAlbumArt.png
     2016-11-27 11:12:28   nextAlbumArtURL /fhem/sonos/cover/empty.jpg
     2016-10-24 15:24:28   nextAlbumArtist
     2016-11-27 11:12:28   nextArtist
     2016-10-24 15:24:28   nextOriginalTrackNumber
     2016-11-27 11:12:28   nextTitle
     2016-11-27 11:12:28   nextTrackDuration
     2016-10-24 15:24:28   nextTrackProvider
     2016-11-27 11:12:28   nextTrackURI
     2017-02-07 13:37:34   numberOfTracks  3
     2016-12-16 13:03:54   playerType      S3
     2017-02-08 14:57:36   presence        appeared
     2016-10-24 15:24:28   roomIcon        living
     2016-12-16 13:03:54   roomName        Wohnzimmer
     2016-12-16 13:03:54   roomNameAlias   Wohnzimmer
     2016-12-16 13:03:54   saveRoomName    Wohnzimmer
     2016-12-16 13:03:54   serialNum       XX-XX-XX-XX-XX-XX
     2017-01-26 11:15:58   softwareRevision 7.1
     2017-02-08 14:57:37   state           appeared
     2017-02-07 13:37:47   svHasClient_Sonos_Bad 0
     2017-02-07 13:37:35   svHasClient_Sonos_Wohnzimmer 0
     2017-02-07 13:37:35   svIsInAnyGroup  0
     2017-02-07 13:37:35   svIsInThisGroup none
     2017-02-07 15:34:10   svTrackPosition 0
     2017-02-07 15:34:11   svTransportStatePause 0
     2017-02-07 15:34:10   svTransportStatePlay 0
     2017-02-07 15:34:11   svTransportStateStop 1
     2017-02-07 15:34:10   transportState  STOPPED


die sv* Readings sind UserReadings.