Musiksammlung in IPS einbinden

Ja, das Harmony Modul ist installiert und ich kann auch Skripte mit Aktionen starten. Das hatten wir ja schon im Harmony Forum besprochen. Problematisch wird es beim Aussehen des Webfronts und wenn ich z.b. das Licht dimmen will wenn ich auf Play drücke. Da wüsste ich nicht wie das gehen soll.

Da kümmert sich immer am Schluss drum wenn die Funktion so gegeben ist wie man das will.

Das hängt davon ab wann das passieren soll. Wenn Du z.B. ein Skript ausführst das Play ausführt dann reicht es in dem Skript ein weiteres Skript, nämlich das was die Lampe schaltet aufzurufen. Dafür gibt es den Befehl IPS_RunScript.
Also einfach in das Skript die Zeile


IPS_RunScript(12345 /*[Lampen schalten]*/);

ergänzen.

Wenn das ganze jetzt von weiteren Bedingungen abhängen soll wie der Tageszeit und so weiter dann musst Du das prüfen. Dazu musst Du Dich dann aber festlegen wann genau was passieren soll, dann kann man Dir da auch helfen.

Beispiel könnte sein das Du dann noch eine If Bedingung einfügst. Unter Kern Instanzen Location findest du z.B. eine Variable die Dir angibt ob es Tag oder Nacht ist. Wenn Du jetzt z.B. das Licht nur dann einschalten willst wenn es dunkel ist dann machst Du


$isday = GetValue(53150 /*[Location\Ist es Tag]*/);
	if(!$isday)
	{
		// bei Nacht
		IPS_RunScript(12345 /*[Lampen schalten]*/);
	}
	else
	{
		// bei Tag
		
	}

Ok. Ein Problem könnte dabei darstellen, dass ich natürlich Pause und Play und so von der Harmony Fernbedienung aus steuere und IPS keine Zustandmeldung darüber bekommt oder?

Grundsätzlich geht das schon, ist aber etwas komplizierter einzurichten, das liegt daran das die Logitech Remote grundsätzlich nur mitteilt wenn eine Aktion ausgelöst wurde, daher muss man leider den komplizierten Weg gehen. Wenn das eingerichtet ist, kannst Du aber auch auf einen Tastendruck der Logitech reagieren und dann zusätzlich beim Betätigen der Taste etwas über IP-Symcon auslösen. Ist also eine einmalige Sache dafür ist dann aber mehr möglich.

ok. dann werde ich mich da jetzt mal durcharbeiten.

ich soll ja diese Datei im Editor öffnen und verändern. Aber wie öffne ich die Datei über PUTTY?

Mit nano z.B. oder aber Du richtest Dir eine Remotedesktop Session ein, dann kannst Du auch Leafpad benutzten.

ok. Das habe ich jetzt eingerichtet. Muss jetzt ne Weile weg. Könntest du mir in der Zeit nochmal kurz schreiben, wie ich jetzt generell weiter vorzugehen habe, also in Bezug auf Roku, die Weboberfläche und die Denon steuerung? :slight_smile:

jetzt habe ich noch eine Frage: Ich habe jetzt in meiner Harmony Aktion meinen Bluray Player, aber IPS reagiert ja jetzt nur wenn ich bei Roku auf Play drücke. Ich will aber in der Aktion natürlich meinen BD Player haben weil der noch weitere Tasten hat die ich brauche im gegensatz zum Roku.?

Als erstes legst Du Dir noch ein Logitech Harmony fakeRoku in IP-Symcon an wenn nicht schon geschehen. Im nächsten Schritt suchst Du in der Harmony App den Roku mit Harmony Einrichtung -> Geräte und Aktionen hinzufügen und bearbeiten-> Geräte->Gerät hinzufügen->WLAN-Geräte suchen. Wenn der Roku gefunden wurde testest Du ob alles funktioniert, indem Du in der Harmony App das Roku Gerät aufrufst und dort eine Taste drückst, dann sollte in IP-Symcon angezeigt werden welche Taste gedrückt wurde.
fakeroku.png

Jetzt musst Du das Skript Get Harmony Keystroke an deine Bedürfnisse anpassen.


<?
//modify for your needs
$lastkeystroke = GetValue(12345 /*[Geräte\Heimkino\Harmony\ FHEM Fake Roku\Logitech Harmony fakeRoku\Letzter Tastendruck]*/);
			if ($lastkeystroke == "Up")
				{
					// Command 1
                                        // hier jeweils den Befehl hinzufügen indem ein weiteres Skript mit IPS_RunScript aufgerufen wird
				}
			elseif ($lastkeystroke == "Down")
				{
					// Command 2
				}
			elseif ($lastkeystroke == "Left")
				{
					// Command 3
				}
			elseif ($lastkeystroke == "Right")
				{
					// Command 4
				}
			elseif ($lastkeystroke == "Select")
				{
					// Command 5
				}
			elseif ($lastkeystroke == "Back")
				{
					// Command 6
				}
			elseif ($lastkeystroke == "Play")
				{
					// Command 7
				}
			elseif ($lastkeystroke == "Rev")
				{
					// Command 8
				}
			elseif ($lastkeystroke == "Fwd")
				{
					// Command 9
				}
			elseif ($lastkeystroke == "Search")
				{
					// Command 10
				}
			elseif ($lastkeystroke == "Info")
				{
					// Command 11
				}
			elseif ($lastkeystroke == "Home")
				{
					// Command 12
				}
			elseif ($lastkeystroke == "InstantReplay")
				{
					// Command 13
				}			
?>

das Skript kannst Du noch beliebig erweitern indem Du zusätzlich mit die Aktivitäts ID der aktiven Harmony Aktion ausliest und anhand der Harmony Aktion unterscheidest.

Dazu schaust Du erst mal nach wie die IDs der Aktivitäten heißen und notierst diese


$activities = HarmonyHub_GetAvailableAcitivities(44523 /*[Logitech Harmony Hub]*/); 
print_r($activities);  

Jetzt kannst Du das Skript um ein Prüfung auf Aktivitäten erweitern.


<?
//modify for your needs
$lastkeystroke = GetValue(44985 /*[Geräte\Heimkino\Harmony\ FHEM Fake Roku\Logitech Harmony fakeRoku\Letzter Tastendruck]*/);	
				
	$harmony_activity = GetValue(48772 /*[Logitech Harmony Hub Wohnzimmer\Harmony Activity]*/);			
	if ($harmony_activity == 12345678) // hier die Aktivitäten ID eintragen
	{
		if ($lastkeystroke == "Up")
				{
					// Command 1
				}
			elseif ($lastkeystroke == "Down")
				{
					// Command 2
				}
			elseif ($lastkeystroke == "Left")
				{
					// Command 3
				}
			elseif ($lastkeystroke == "Right")
				{
					// Command 4
				}
			elseif ($lastkeystroke == "Select")
				{
					// Command 5
				}
			elseif ($lastkeystroke == "Back")
				{
					// Command 6
				}
			elseif ($lastkeystroke == "Play")
				{
					// Command 7
				}
			elseif ($lastkeystroke == "Rev")
				{
					// Command 8
				}
			elseif ($lastkeystroke == "Fwd")
				{
					// Command 9
				}
			elseif ($lastkeystroke == "Search")
				{
					// Command 10
				}
			elseif ($lastkeystroke == "Info")
				{
					// Command 11
				}
			elseif ($lastkeystroke == "Home")
				{
					// Command 12
				}
			elseif ($lastkeystroke == "InstantReplay")
				{
					// Command 13
				}	
	}
	elseif ($harmony_activity == 34567890)	// hier die Aktivitäten ID eintragen
	{
		if ($lastkeystroke == "Up")
				{
					// Command 1
				}
			elseif ($lastkeystroke == "Down")
				{
					// Command 2
				}
			elseif ($lastkeystroke == "Left")
				{
					// Command 3
				}
			elseif ($lastkeystroke == "Right")
				{
					// Command 4
				}
			elseif ($lastkeystroke == "Select")
				{
					// Command 5
				}
			elseif ($lastkeystroke == "Back")
				{
					// Command 6
				}
			elseif ($lastkeystroke == "Play")
				{
					// Command 7
				}
			elseif ($lastkeystroke == "Rev")
				{
					// Command 8
				}
			elseif ($lastkeystroke == "Fwd")
				{
					// Command 9
				}
			elseif ($lastkeystroke == "Search")
				{
					// Command 10
				}
			elseif ($lastkeystroke == "Info")
				{
					// Command 11
				}
			elseif ($lastkeystroke == "Home")
				{
					// Command 12
				}
			elseif ($lastkeystroke == "InstantReplay")
				{
					// Command 13
				}	
	}	
	else
	{
		if ($lastkeystroke == "Up")
				{
					// Command 1
				}
			elseif ($lastkeystroke == "Down")
				{
					// Command 2
				}
			elseif ($lastkeystroke == "Left")
				{
					// Command 3
				}
			elseif ($lastkeystroke == "Right")
				{
					// Command 4
				}
			elseif ($lastkeystroke == "Select")
				{
					// Command 5
				}
			elseif ($lastkeystroke == "Back")
				{
					// Command 6
				}
			elseif ($lastkeystroke == "Play")
				{
					// Command 7
				}
			elseif ($lastkeystroke == "Rev")
				{
					// Command 8
				}
			elseif ($lastkeystroke == "Fwd")
				{
					// Command 9
				}
			elseif ($lastkeystroke == "Search")
				{
					// Command 10
				}
			elseif ($lastkeystroke == "Info")
				{
					// Command 11
				}
			elseif ($lastkeystroke == "Home")
				{
					// Command 12
				}
			elseif ($lastkeystroke == "InstantReplay")
				{
					// Command 13
				}	
	}			
?>

Du hast also jetzt pro Harmony Aktion 13 Tasten zur Verfügung auf die Du in IP-Symcon reagieren kannst. Jetzt musst Du Dir überlegen bei welchen Aktionen Du eine Mitteilung an IP-Symcon benötigst und musst dann in der Harmony Remote Software jeweils den Roku in die Harmony Aktion hinzufügen und das Roku Gerät auf die Tastenbelegung legen.

Den eigentlichen Befehl der dann ausgeführt werden soll musst Du dann aus IP-Symcon absetzten. Angenommen Du drückst also Play in der Aktion Film, dann kommt in IP-Symcon an das Play gedrückt wurde und das Skript s.o. ruft das Zielskript auf. In dem Zielskript steht dann der Befehl für Play von dem Gerät was Du steuern willst, sowie alle weiteren Befehle die zeitgleich mit Play ausgeführt werden sollen, wie z.B. Deine Lampen zu schalten.

Wenn Du das in der Harmony eingerichtet hast, hast Du zunächst mal die Voraussetzung das Du in jeder Aktion die Tastendrücke mitbekommst und dann beliebige Befehle absetzten kannst.

Im letzten Schritt, wen das so geht wie Du Dir das vorstellst, kommt dann die Visualisierung dran. Hier ist halt die Frage ob Dir das Layout des Webfronts ausreicht, ansonsten müsste man mit HTMLBoxen arbeiten, da bist Du dann flexibel, aber das ist auch aufwendiger. Wenn es vollkommen individuell sein soll ohne das Du Dich um HTML Code kümmerst ist eventuell noch IPSView eine sinnvolle Ergänzung wenn dir das Layout im Webfront nicht ausreicht.

Ok, vielen Dank, das beantwortet schonmal einiges. Ist zwar einiges zu schreiben, aber dafür klappt es dann.

Nochmal zu meiner obigen Frage:
Wenn ich jetzt normalerweise in meiner Harmony aktion sage, dass ich den Film wiedergebe mit meinem BD Player, muss ich ja jetzt Roku dafür nehmen. Wie schaffe ich es, dass ich in der Aktion auf der Harmony trotzdem noch die spezialtasten des BD Players habe? Die sind für IPS unwichtig, aber auf der Harmony brauche ich sie

In dem Moment wenn Du eine Roku Taste in der Harmony Remote belegst musst Du immer den eigentlichen Befehl der geschickt werden soll aus IP-Symcon absetzten, da ja sonst der Befehl nicht von der Harmony Remote abgesetzt wird. Du hast ja in IP-Symcon sämtliche Befehle die der Harmony Hub für dieses Gerät beherrscht zur Verfügung. Wenn bei der Taste nichts weiter zusätzlich passieren soll kannst Du ja den Blueray Player auf der Taste lassen. Relevant ist das nur, wenn dann irgendwas zusätzlich zum Befehl des Blueray Players passieren soll. Was meinst Du im Übrigen mit „Spezialtasten“?

ok, wenn ich Roku einbinde, habe ich ja Play, Pause, Up , etc.
Ich brauche aber noch z.b. wichtige Tasten von meinem BD Player wie: Eject, PlaybackInfo, MainMenu, Popupmenu,…sowas halt.
Und ich was grade nicht wie ich die trotz Roku in meine Harmony Aktion bekomme

So ganz folgen kann ich Dir gerade nicht aber vielleicht kannst Du ja auch mal ein Screenshot machen wo das genaue Problem ist. Du hast in der Aktion beide Geräte den Bluray Player und den Roku. Für die Tasten, für die es keine Funktion beim Roku gibt, legst Du ganz normal die Blueray Tasten mit einer Funktion auf die Taste. Für alle anderen Tasten hast Du die Wahl ob Du den Bluray Player drauf legst oder den Roku. So was wie eine Eject Taste gibt es ja sowieso nicht auf der Harmony Remote,entweder Du legst die also auf eine Taste die Du Dir aussuchst oder alternativ ins Display. Vielleicht habe ich aber einfach auch noch nicht verstanden was jetzt das genaue Problem bei der Tastenbelegung der Harmony ist.

Okm ich probiers nochmal anders:
Meine Harmony App auf dem Handy findet Fake Roku. Wenn ich aber in der App eine Aktion anlege werde ich gefragt, ob ich Roku ODER den Player als Wiedergabegerät haben will. Somit kann ich in der Aktion die die Tasten des BD nicht bediene wenn ich den Roku auswähle.
An der PC Software kann ich das nicht ausprobieren, weil die auch nach mehrmaliger Synchronisierung den Roku nicht bei Gerätes anzeigt.

Ich hoffe es ist jetzt klarer :wink:

Das ist ja schon mal was ;), und ein Tastendruck wird auch in IP-Symcon registriert?

Nun da müsste ich erst mal selber schauen, ich muss gestehen das ich die Harmony Remote App noch nie richtig benutzt habe um damit etwas zu konfigurieren, das habe ich bisher immer am PC gemacht. Also beim PC ist das so unter
Geräte für Aktion wählen zu den Geräten die sowieso in der Aktion sein müssen zusätzlich Roku 3 auswählen. Bei allen Nachfragen die da jetzt kommen habe ich alles auf dem Originalgerät gelassen. Anschließend gehe ich auf die Tasten Einstellungen und wähle dort die Aktion aus die nun zusätzlich den Roku enthält. Dann kann ich mir Tasten aussuchen auf die ich das legen will. Ob das jetzt bei der App anders ist müste ich selber erst schauen.

Komisch eigentlich sollten die ja dann synchron sein.

ok, also die Befehle werden von IPS erkannt und funktionieren auch.
Ich werde es dann morgen früh nochmal mit der PC Spftware probieren. Weil damit müsste es ja auf jeden Fall wie du es beschrieben hast gehen :slight_smile:

ok. Ich habe es jetzt mit der PC Software geschafft :slight_smile:

Dann gehts jetzt wieder mit dem Denon und Webfront. Was kann ich denn beim Denon noch ausprobieren und was meinst du in Bezug auf Webfront genau mit diesen HTML Sachen?

Zunächst mal ist in IP-Symcon zu trennen zwischen Geräten im Objektbaum und der Visualisierung. Sowohl Geräte als auch Skripte solltest Du so sauber in Kategorien ablegen, dass Du später, auch wenn es mal komplexer wird, jederzeit entsprechend Deiner Logik schnell weist wo etwas liegt.
Für die Visualisierung erstellst Du eine eigene Kategorie und unterhalb dieser Kategorie wie es für Dich Sinn macht die Visualisierung aufzubauen, z.B. nach Stockwerken / Räumen oder Anwendungsgebieten. In den entsprechenden Kategorien legst Du dann jeweils einen Link (CTRL+6) zu dem Gerät und der Variable an die Du in der Visualisierung darstellen willst. Bezüglich der Auswahl der Lieder ist hier leider Arbeit angesagt, wenn das denn mit dem Einbinden der Webseite des Denon nicht so klappt. Vielleicht hat aber auch jemand eine Idee wie man verhindert kann das aus dem iframe eine neue Seite aufgemacht wird. Ich würde an Deiner Stelle diese Fragestellung mit dem iframe vielleicht noch mal in einem separaten Thread stellen, denn die Verwendung der Denon Seite wäre sicher das einfachste.

Ansonsten müsste man erst mal rausfinden welche Befehle denn die Website absetzt um beim Denon Dinge zu steuren das mag von Modell zu Modell unterschiedlich sein, falls es da ein einheitliches Schema geben sollte könnte man das auch im Denon Modul ergänzen. Die datenerfassung must Du bei Deinem Modell selber machen. Helfen daraus dann was passendes zu Basteln kann man dann aber die Vorarbeit kannst nur Du leisten da Du das Modell besitzt. Dazu nutzt Du Wireshark bzw. das Capture Feature der Fritzbox falls Du eine besitzt. Ein gute Alternative stellt noch z.B. Chrome dar, dort öffnest Du die Denon Seite im Chrome Browser und öffnest die Entwicklertools (STRG+Shift+I). Hier siehst Du welche Befehle an den Denon abgesetzt werden.

Bei meinem Modell sieht so was z.B. vom Schema so aus


http://<IP DENON>/goform/formNetAudio_StatusXml.xml?_=<ID>&ZoneName=MAIN+ZONE

wenn man das im Browser eingibt bekommt man ein XML zurückgeliefert in der Form


<item>
<chFlag>
<value>0</value>
<value>8</value>
<value>0</value>
<value>0</value>
<value>0</value>
<value>0</value>
<value>0</value>
<value>0</value>
<value>0</value>
<value>0</value>
</chFlag>
<szLine>
<value>Podcast nach Ländern</value>
<value>Mittlerer Osten</value>
<value>Nordamerika</value>
<value>Ozeanien</value>
<value>Südamerika</value>
<value>Afrika</value>
<value>Asien</value>
<value>Europa</value>
<value>[ 1/9 ]</value>
<value/>
</szLine>
<Art>
<value>0</value>
</Art>
<PartyStatus>
<value>3</value>
</PartyStatus>
<PresetLists>
<value index="0" skip="OFF" table="OFF" param=""/>
<value index="1" skip="" table="A1" param=" "/>
<value index="2" skip="" table="A2" param=" "/>
<value index="3" skip="" table="A3" param=" "/>
<value index="4" skip="" table="A4" param=" "/>
<value index="5" skip="" table="A5" param=" "/>
<value index="6" skip="" table="A6" param=" "/>
<value index="7" skip="" table="A7" param=" "/>
<value index="8" skip="" table="A8" param=" "/>
<value index="9" skip="" table="B1" param=" "/>
<value index="10" skip="" table="B2" param=" "/>
<value index="11" skip="" table="B3" param=" "/>
<value index="12" skip="" table="B4" param=" "/>
<value index="13" skip="" table="B5" param=" "/>
<value index="14" skip="" table="B6" param=" "/>
<value index="15" skip="" table="B7" param=" "/>
<value index="16" skip="" table="B8" param=" "/>
<value index="17" skip="" table="C1" param=" "/>
<value index="18" skip="" table="C2" param=" "/>
<value index="19" skip="" table="C3" param=" "/>
<value index="20" skip="" table="C4" param=" "/>
<value index="21" skip="" table="C5" param=" "/>
<value index="22" skip="" table="C6" param=" "/>
<value index="23" skip="" table="C7" param=" "/>
<value index="24" skip="" table="C8" param=" "/>
<value index="25" skip="" table="D1" param=" "/>
<value index="26" skip="" table="D2" param=" "/>
<value index="27" skip="" table="D3" param=" "/>
<value index="28" skip="" table="D4" param=" "/>
<value index="29" skip="" table="D5" param=" "/>
<value index="30" skip="" table="D6" param=" "/>
<value index="31" skip="" table="D7" param=" "/>
<value index="32" skip="" table="D8" param=" "/>
<value index="33" skip="" table="E1" param=" "/>
<value index="34" skip="" table="E2" param=" "/>
<value index="35" skip="" table="E3" param=" "/>
<value index="36" skip="" table="E4" param=" "/>
<value index="37" skip="" table="E5" param=" "/>
<value index="38" skip="" table="E6" param=" "/>
<value index="39" skip="" table="E7" param=" "/>
<value index="40" skip="" table="E8" param=" "/>
<value index="41" skip="" table="F1" param=" "/>
<value index="42" skip="" table="F2" param=" "/>
<value index="43" skip="" table="F3" param=" "/>
<value index="44" skip="" table="F4" param=" "/>
<value index="45" skip="" table="F5" param=" "/>
<value index="46" skip="" table="F6" param=" "/>
<value index="47" skip="" table="F7" param=" "/>
<value index="48" skip="" table="F8" param=" "/>
<value index="49" skip="" table="G1" param=" "/>
<value index="50" skip="" table="G2" param=" "/>
<value index="51" skip="" table="G3" param=" "/>
<value index="52" skip="" table="G4" param=" "/>
<value index="53" skip="" table="G5" param=" "/>
<value index="54" skip="" table="G6" param=" "/>
<value index="55" skip="" table="G7" param=" "/>
<value index="56" skip="" table="G8" param=" "/>
</PresetLists>
<Rhapsody>
<value>0</value>
</Rhapsody>
<RhapsodySearch>
<value>0</value>
</RhapsodySearch>
<iRadio>
<value>0</value>
</iRadio>
<iRadioSearch>
<value>0</value>
</iRadioSearch>
<Napster>
<value>0</value>
</Napster>
<NapsterSearch>
<value>0</value>
</NapsterSearch>
<Flickr>
<value>0</value>
</Flickr>
<FlickrSearch>
<value>0</value>
</FlickrSearch>
<AddFlickrContact>
<value>0</value>
</AddFlickrContact>
<Pandora>
<value>0</value>
</Pandora>
<PandoraSearch>
<value>0</value>
</PandoraSearch>
<Lastfm>
<value>0</value>
</Lastfm>
<LastfmSearch>
<value>0</value>
</LastfmSearch>
<ModelId>
<value>2</value>
</ModelId>
<SalesArea>
<value>1</value>
</SalesArea>
<InputFuncSelect>
<value>Internet Radio</value>
</InputFuncSelect>
<NetFuncSelect>
<value>IRADIO</value>
</NetFuncSelect>
<InputFuncSelectMain>
<value>NET/USB</value>
</InputFuncSelectMain>
<VolumeDisplay>
<value>Relative</value>
</VolumeDisplay>
<MasterVolume>
<value>-32.5</value>
</MasterVolume>
<Mute>
<value>off</value>
</Mute>
<RemoteMaintenance>
<value>OFF</value>
</RemoteMaintenance>
<GameSourceDisplay>
<value>TRUE</value>
</GameSourceDisplay>
<LastfmDisplay>
<value>TRUE</value>
</LastfmDisplay>
<SubwooferDisplay>
<value>FALSE</value>
</SubwooferDisplay>
<Zone2VolDisp>
<value>TRUE</value>
</Zone2VolDisp>
</item>

Dieser Bereich ist bei mir die Display Anzeige


<szLine>
<value>Podcast nach Ländern</value>
<value>Mittlerer Osten</value>
<value>Nordamerika</value>
<value>Ozeanien</value>
<value>Südamerika</value>
<value>Afrika</value>
<value>Asien</value>
<value>Europa</value>
<value>[ 1/9 ]</value>
<value/>
</szLine>

da steht also drinnen was gerade zur Auswahl steht. Wenn das bei Dir ähnlich aufgebaut ist kann man dann aus den Daten selber eine HTML Seite bauen die diese Daten abfragt und darstellt. Dazu müsste man aber erst mal wissen wie das bei Dir aussieht, kannst ja mal vielleicht ein Screenshot von der Denon Webseite machen, wie diese aussieht und was man dort zur Auswahl hat, und diesen hier posten.

mal kurz zu dieser extra Kategorie für Webfront:
Meine Sachen werden ja automatisch in Webfront angezeigt, d.h. wenn ich jetzt noch eine Unterkategorie erstelle, dann bringt mir das nicht so viel :wink: