Neues Modul 71_PHILIPS_AUDIO.pm für MCi, Streamium und Fidelio Geräte

Begonnen von ra666ack, 21 Februar 2015, 19:58:04

Vorheriges Thema - Nächstes Thema

Paul Guijt

Hallo Radek,

Ich habe ein Fidelio AW9000, und nütze dein Modul mit Freude.

An der Fidelio habe ich angeslossen:
- auf Optisch mein Squeezebox
- auf AUX mein Plattenspieler
und ich denke daran, auf MP3 ein Chromecast audio an zullen schliessen.

Ich wurde mich sehr freuen wenn ich FHEM auftragen könnte 'set Fidelio source AUX/Toslink/MP3/...

Bitte, wenn Du Zeit hast? Ich hoffe das so etwas ohne fiel Mühe ein zu bauen ist.

Freundliche Grüße,
Paul

Verstuurd vanaf mijn SM-N9005 met Tapatalk

RasPi 2B, CUL 433, Jens' FW, Berker, HomeMatic, KlikaanKlikuit, RFXtrx443, Squeezebox, Z-Wave, TradFri in die Niederlände

ra666ack

Hi Paul,

freut mich, dass das Modul Freude bereiten kann  :)

Da ich kein AW9000 selbst besitze, bräuchte ich Deine Unterstützung.

Kannst du im Web Browser http://[ip-address]:8889/index eingeben.
Ich gehe davon aus, dass AUX und Optisch auf dieser Seite erscheinen?

Falls ja, bitte den Quellcode der html Seite abspeichern und hier posten.

Ähnlich wie bei MP3 müsste dort so etwas wie:


...

{'name':'Mp3 Link',
'id':12,
'img':'res/Home_AUX.png',
'target':'/aux'}]};

...


erscheinen.

Speziell interessiert mich der Eintrag hinter "target".

Falls AUX und Optisch jedoch auf einer Unterseite erscheinen, bitte speichere von jeder Seite den Quellcode.
Kennzeichne bitte z.B. Top-level, level-1 usw.
In diesem Fall muss man sich hierarchisch durchklicken.

Danke

Radek

P.S.: Falls für dich einfacher, we could also switch to english.

ra666ack

Hi Paul,

ich lese grade in der Bedienungsanleitung, dass Dein Gerät "Musik von anderen Audiogeräten über die MP3-LINK-, COAXIAL-, OPTICAL- oder AUX IN (L/R)- Buchsen wiedergeben" abspielen kann.

Wenn wir schon dabei sind, sollten wir alle einbinden.

Danke und Gruß

Radek

Paul Guijt

Hi Radek,

Sure, switching to English would be more convenient. Aber aufs Deutsch versuchen gibt mir ein bisschen Übung  :).

Die Quellcode der HTML Seite habe ich angehängt.

Freundliche Grüße,
Paul
RasPi 2B, CUL 433, Jens' FW, Berker, HomeMatic, KlikaanKlikuit, RFXtrx443, Squeezebox, Z-Wave, TradFri in die Niederlände

ra666ack

Hi, vielen Dank.

Das sieht gut aus. Sollte klappen.

Kannst du die Funktionen bestätigen?

http://[ip-address]:8889/mp3link        -> MP3 Link
http://[ip-address]:8889/aux              -> Aux-In
http://[ip-address]:8889/digin_coaxial -> Coaxial
http://[ip-address]:8889/digin_optical -> Toslink

Kannst du die jeweilige Zeile im Browser testen?

Danke und Gruß

R.

Paul Guijt

RasPi 2B, CUL 433, Jens' FW, Berker, HomeMatic, KlikaanKlikuit, RFXtrx443, Squeezebox, Z-Wave, TradFri in die Niederlände

ra666ack

Sehr gut. Danke. Versuche ich diese Woche einzubinden. Evtl. am Wochenende.

ra666ack


Paul Guijt

Hallo Radek,

Ich könnte nur AUX und Optisch testen, und die wirken super.

Grüsse,
Paul
RasPi 2B, CUL 433, Jens' FW, Berker, HomeMatic, KlikaanKlikuit, RFXtrx443, Squeezebox, Z-Wave, TradFri in die Niederlände

ra666ack

Hi Paul,

Klasse. Der Rest sollte auch funktionieren.
Ich werde das Modul demnächst einchecken.

Viel Spass.

Gruß

Radek

Paul Guijt

Hallo Radek,

Ist es möglich ein Reading ein zu fügen das angebt welche Quelle (radio, aux, spdif, ...) man hört?

Freundliche Grüße,
Paul
RasPi 2B, CUL 433, Jens' FW, Berker, HomeMatic, KlikaanKlikuit, RFXtrx443, Squeezebox, Z-Wave, TradFri in die Niederlände

ra666ack

Hi Paul,

sollte gehen.
Könntest du mit http://[ip-address]:8889/digin_optical auf optical Input wechseln und den Sourcecode der HTM posten? Meine Geräte unterstützen diesen Eingang nicht.

Speziell:

'defaultAlbumArt':'---------------------'

Falls du auch Napster Account hast bitte ebenfalls.

Danke.

Radek

P.S.: Aux, Spotify, iNetRadio und Media Library sollten funktionieren.

Paul Guijt

Hallo Radek,

Die Sourcecode:
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
<meta name='apple-mobile-web-app-capable' content='yes' />
<meta http-equiv="expires" content="Fri, 31 Dec 2021 18:18:18 GMT" />
<meta http-equiv="cache-control" content="max-age=86400, must-revalidate" />
<meta http-equiv="last-modified" content="Tue, 13 Jan 2012 13:58:59 GMT" />
<script src="res/jquery.min.js"></script>
<link rel="stylesheet" href="res/WKSlider.css"/>
<script type="text/javascript" src="res/WKSlider.js"></script>
<link href="res/now_playing.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="res/iscroll.min.js"></script>
<script src='res/jquery.alerts.js'></script>
<link href='res/jquery.alerts.css' rel='stylesheet' type='text/css' />
<script language='javascript'>
$(document).bind('touchstart', function preventZoom(e) {
        var t2 = e.timeStamp;
        var t1 = $(document).data('lastTouch') || t2;
        var dt = t2 - t1;
        var fingers = e.originalEvent.touches.length;
$(document).data('lastTouch', t2);
        if (!dt || dt > 500 || fingers > 1){
return;}
e.preventDefault();
        $(document).trigger('click').trigger('click');
      });</script>

<script type="text/javascript">
var isWaitforResponse = 0;
var progressSelected = 0 ;
http = new XMLHttpRequest();
        t=setInterval("timedCount()",5000);
function timedCount()
{
    http.open("GET", "/ELAPSE", true);
    http.onreadystatechange=function() {
    if(http.readyState == 4) {
    if( http.responseText != "")
{
    var obj= eval('(' + http.responseText + ')');

    if(obj.command == 'HOME' ||obj.command == 'STOP' || obj.command == 'NOWPLAY'){
    clearInterval(t);
    CalculateAmountOnClick();
window.location = '/nowplay';
    }
else if(obj.command == 'ELAPSE'){
                                            if(obj.mute != playItem.muteStatus)
                                            {
                                                if(obj.mute == 0){
                                                document.getElementById('id-img-mute').src = 'res/Btn_Mute.png';
                                                playItem.muteStatus = 0;}
                                            else if(obj.mute == 1){
                                                document.getElementById('id-img-mute').src = 'res/Btn_Mute_on.png';
                                                playItem.muteStatus = 1;}
                                            }
                                            if(obj.volume != playItem.volume){
if(gVolumebarChanged){
                                gVolumebarChanged=0;}else{
playItem.volume = obj.volume;
                                                changepos_X(obj.volume);}
                                            }
                                        }
}
}
}
http.send();
}

function begin()
{
progressSelected = 1;
}
  var myScroll;
                function loaded() {
                   myScroll = new iScroll('album_art_table', {desktopCompatibility:true});
                    }
                if(!document.addEventListener) {
                document.attachEvent('touchmove,', function (e) {e.preventDefault();}, false);
                        document.attachEvent('DOMContentLoaded',function(){ setTimeout(function(){ loaded(); },100);},false);
                      }
                else {
                       document.addEventListener('touchmove', function (e) { e.preventDefault(); },false);
                       document.addEventListener('DOMContentLoaded',function(){ setTimeout(function(){ loaded(); },100);},false);
                    }
function animatePG()
{
if(progressSelected == 0)
{
$('#progress_panel').animate({
  marginTop: parseInt($('#progress_panel').css('marginTop'),10) == 0 ?
-$('#progress_panel').outerHeight():0
});
}
progressSelected = 0;
}
</script>
<title>Play screen</title>
<script type='text/javascript'>
   var playItem = {
                     'defaultAlbum':1,
                     'defaultAlbumArt':'res/Home_AUX_nowplaying.jpg',
                     'muteStatus':0,
                     'volume':48,
                     'maxvolume':64,
            'favstatus':1,
            'elapsetime':0,
            'totaltime':0 };      var previousPage = {'url':'/digin_optical'};

                        function gotoDevice(){clearInterval(t);
                        window.location = 'philips://remote/action=quit'}
                        function gotoHome(){
                        gotoPage('/index');
                        }

        function gotoNowPlaying(){}

function gotoSettings(){
gotoPage('/settings$01$01$01$0');
}
        function goback(){
        gotoPage(previousPage.url);
}function toggleMute(){
if(playItem.muteStatus==1){
document.getElementById('id-img-mute').src = 'res/Btn_Mute.png';
playItem.muteStatus = 0;
                submitPost('nowplay','/VOLUME$UNMUTE');
}
else{
document.getElementById('id-img-mute').src = 'res/Btn_Mute_on.png';
playItem.muteStatus = 1;
                submitPost('nowplay','/VOLUME$MUTE');
}
}

function goHome(){
gotoPage('/index');
} function CalculateAmountOnClick () {
var curtain = document.body.appendChild( document.createElement('div') );
curtain.id = 'curtain';
curtain.style.height = window.outerHeight + 'px';
curtain.onkeypress = curtain.onclick = function(){ return false; }
}

function submitPost(url,val)
{
var xmlhttp;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{

}
}
            xmlhttp.open("GET",val,true);
            xmlhttp.send();
}

function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
}
}function gotoPage(url){
clearInterval(t);
CalculateAmountOnClick();
checkAndClearPrevRequest();
window.location = url;
}
function checkAndClearPrevRequest(){
return;
if(http.readyState != 4 && http.readyState != 0)
{
http.abort();
//sleep(500);
}
}
</script> <style type='text/css' media='all'>
#scroller{float:left;width:100%;padding:0;}
#td_2{border-right:1px solid #4d4d4d;}
</style>

</head><body>
<div  id="outer_panel" >
  <div  id="top_panel" style="border-bottom:1px solid #4d4d4d;">
  <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
         <td width="20%" align='left' style="padding-left:6px;"></td>
         <td width="60%"><div align="center">Digital-in 2 (Optisch)</div></td>
         <td width="20%" align='right' style="padding-right:6px;">
         </td>
</tr>
</table>
  </div>
<div id="middle_panel_aux">
<table id="album_art_table" border="0" cellspacing="0" cellpadding="0" width="100%%">
      <tr align="center">
  <script type='text/javascript'>
if(playItem.defaultAlbum == 0)
document.write('<td><img src="'+playItem.albumArt+'"/></td>');
else
document.write('<td><img src="'+playItem.defaultAlbumArt+'"/></td>');
       </script>
      </tr>
</table>
</div>
<div id='bottom_panel_1'>
<table width="100%"align="center"><tr><td width="15%" align='right'>
<script type='text/javascript'>
                                if(playItem.muteStatus == 0)
                                    document.write('<img id="id-img-mute" width="40px" height="32px" onclick="toggleMute()" src="res/Btn_Mute.png"/>');
                                else
                                        document.write('<img id="id-img-mute" width="40px" height="32px" onclick="toggleMute()" src="res/Btn_Mute_on.png"/>');
                                </script>
</td>
<td width="70%" align='center'>
<div id="slidercontainer">
<div id="mySlider1" class="slider">
                        <div class="track"></div>
                        <div class="knob" role="slider" aria-valuemin="0" aria-valuemax="100"></div>
                    </div>
</div>
</td><td width="15%" align='left'><img src='res/Button_EQ.png' height=32px width=40px onclick="gotoPage('/settings$15$02$01$0');"></td></tr></table><br><br>
                <table id="table_new" height='100%%' width="100%%" style="border-top:1px solid #4d4d4d;">
<tr align='center'><td id='td_2' class='bottom_td' onclick='javascript:gotoDevice()'><div><img src="res/Tab_Home.png" height=48px width=72px style="-o-transform: scale(1);-moz-transform: scale(1);padding-right:4px;" /></div></td>
<td id='td_3' class='bottom_td' onclick='javascript:gotoNowPlaying()'><div><img src="res/Tab_NowPlaying_hl.png" height=48px width=72px style="-o-transform: scale(1);-moz-transform: scale(1);padding-right:4px;" /></div></td>
</tr></table></div>
</div>
<script type='text/javascript'>
var perc = (playItem.volume*100)/playItem.maxvolume;
var volSlider = new WKSlider('mySlider1',perc);
var gVolumebarChanged=0;
volSlider.callback = function (percentage) {
  var vol = Math.round((playItem.maxvolume * percentage)/100);
  playItem.volume = vol;
  gVolumebarChanged = 1;
  submitPost('nowplay','/VOLUME$VAL$'+vol);
}
                                function changepos_X(vol)
                  {
                      var perc = (vol*100)/playItem.maxvolume;
                      volSlider.changePos(perc);
                  }
</script>
</body>
</html>


Ich habe kein Napster account. Das gibt es auch nicht auf ein AW9000.

Freundliche Grüße,
Paul
RasPi 2B, CUL 433, Jens' FW, Berker, HomeMatic, KlikaanKlikuit, RFXtrx443, Squeezebox, Z-Wave, TradFri in die Niederlände

ra666ack

Hi Paul,

vielen Dank. Genau um diesen Eintrag geht es: 'defaultAlbumArt':'res/Home_AUX_nowplaying.jpg',
Allerdings gibt es zwischen den Geräten Unterschiede bei den Eingängen und deren Bezeichnungen. Bei mir ist dieser Eingang MP3...

Könntest du für alle Eingänge:

optisch   -> 'defaultAlbumArt':'res/Home_AUX_nowplaying.jpg'
coaxial   -> ?
analog    -> ?
mp3 link -> ?

Entweder den gesamten Quellcode schicken oder nur die "defaultAlbumArt:???????"

Besten Dank

Gruß

Radek

Paul Guijt

Hallo Radek,

Ich habe diese gefunden:


In Optisch:
'defaultAlbumArt':'res/Home_AUX_nowplaying.jpg',
document.write('<td><img src="'+playItem.defaultAlbumArt+'"/></td>');
In Coax:
'defaultAlbumArt':'res/Home_AUX_nowplaying.jpg',
document.write('<td><img src="'+playItem.defaultAlbumArt+'"/></td>');
In Aux:
'defaultAlbumArt':'res/Home_AUX_nowplaying.jpg',
document.write('<td><img src="'+playItem.defaultAlbumArt+'"/></td>');
in MP3:
'defaultAlbumArt':'res/Home_AUX_nowplaying.jpg',
document.write('<td><img src="'+playItem.defaultAlbumArt+'"/></td>');


Ich denke nicht das es dir helfen wird. Ich habe die HTML Texten aller Seiten verglichen, und das einzige Unterschied ist im Text nach

<body>
<div  id="outer_panel" >
<div  id="top_panel" style="border-bottom:1px solid #4d4d4d;">
<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0">
<tr> <td width="20%" align='left' style="padding-left:6px;"></td>
<td width="60%"><div align="center">


Danach steht "Digital-in 2 (Optisch)", "Digital-in 1 (Coax)", "Aux-in" oder "MP3 Link".

In http://192.168.178.29:8889/index habe ich gefunden:

{'name':'TuneIn Radio', 'id':4, 'img':'res/Home_InternetRadio.png', 'standby':0, 'nowPlay':'0', 'target':'/nav$03$01$001$0'},
{'name':'Spotify', 'id':9, 'img':'http://ecd.cpp.philips.com/images/spotify/Spotify-Status_V4-110_110.png', 'standby':0, 'nowPlay':'0', 'target':'/nav$09$02$001$0'},
{'name':'Deezer', 'id':9, 'img':'http://ecd.cpp.philips.com/images/deezer/Deezer-Status_V4-110_110.png', 'standby':0, 'nowPlay':'0', 'target':'/nav$09$02$002$0'},
{'name':'JUKE', 'id':9, 'img':'http://ecd.cpp.philips.com/images/juke/Juke_WHF_V2.png', 'standby':0, 'nowPlay':'0', 'target':'/nav$09$02$003$0'},
{'name':'MP3 Link', 'id':12, 'img':'res/Home_Mp3Link.png',        'standby':0, 'nowPlay':'0', 'target':'/mp3link'},
{'name':'Aux-in', 'id':1, 'img':'res/Home_AUX.png', 'standby':0, 'nowPlay':'0', 'target':'/aux'},
{'name':'Digital-in 1 (Coax)', 'id':6, 'img':'res/Home_DigitalIn.png', 'standby':0, 'nowPlay':'0', 'target':'/digin_coxial'},
{'name':'Digital-in 2 (Optisch)', 'id':5, 'img':'res/Home_DigitalIn.png', 'standby':0, 'nowPlay':'1', 'target':'/digin_optical'},
{'name':'Apparaatinstellingen', 'id':4, 'img':'res/Souces_Icon_Settings.png', 'standby':0, 'nowPlay':'0', 'target':'/settings$01$01$01$0'},
{'name':'Stand-by', 'id':6, 'img':'res/Btn_StandBy_Off.png', 'standby':1, 'nowPlay':'0', 'target':'/CTRL$STANDBY'}]


Ih habe die Datei angehangen. Kannst du etwas damit?

Freundliche Grüße,
Paul
RasPi 2B, CUL 433, Jens' FW, Berker, HomeMatic, KlikaanKlikuit, RFXtrx443, Squeezebox, Z-Wave, TradFri in die Niederlände