Internetradios und andere fsapi gesteuerte Geräte HMsteuern

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

surfer09
Beiträge: 113
Registriert: 13.12.2014, 08:51
Hat sich bedankt: 3 Mal

Re: Internetradios und andere fsapi gesteuerte Geräte HMsteu

Beitrag von surfer09 » 16.10.2016, 09:19

Hallo zusammen,

ich nutze die Skripte von alchy ebenfalls zum Steuern meines Medion Internetradios. Allerdings habe ich hier jetzt ein kleines Problem: Wenn ich das Skript "Power Off" ausführe, hört zwar die Musik auf, aber das Radio an sich ist weiterhin noch pingbar. Es schaltet also nicht komplett aus. Hat jemand eine Idee?
Ich würde gerne irgendwie den Status abfragen, ob das Radio läuft oder nicht. Ich hatte gedacht, dass das über : "Ist das Radio pingbar?" machbar ist.
Es handelt sich um das Medion LIFE® P85035 (MD 87090).

Danke!

Gruß surfer ;-)

Benutzeravatar
Samson71
Beiträge: 1513
Registriert: 12.02.2014, 20:51
Wohnort: Niedersachsen
Hat sich bedankt: 51 Mal
Danksagung erhalten: 185 Mal

Re: Internetradios und andere fsapi gesteuerte Geräte HMsteu

Beitrag von Samson71 » 16.10.2016, 10:24

surfer09 hat geschrieben:...aber das Radio an sich ist weiterhin noch pingbar. Es schaltet also nicht komplett aus.
Dann freu Dich dass das so ist. Ich habe noch ein (deutlich) älteres Internetradio von Medion. Da hat die Netzwerkkarte eine "Nachlaufzeit" von ein paar Minuten und schaltet sich dann komplett ab. Sehr schön zu sehen am Lichtspiel der Dioden der Netzwerkkarte. Aus genau dem Grund geht aber auch die Steuerung per Script nur in der Nachlaufzeit. Danach leider nicht mehr. Wie soll das Radio denn Befehle empfangen und darauf reagieren, wen die Netzwerkverbindung vollständig getrennt wird?
Gruß, Markus

surfer09
Beiträge: 113
Registriert: 13.12.2014, 08:51
Hat sich bedankt: 3 Mal

Re: Internetradios und andere fsapi gesteuerte Geräte HMsteu

Beitrag von surfer09 » 16.10.2016, 10:50

Hallo Samson,

ja, das stimmt schon. Wie fragt man dann aber ab, ob das Radio läuft oder nicht? Die Homematic bekommt ja jetzt nicht mit, wenn ich das Radio noch manuell ein-/ausschalte.

Gruß surfer ;-)

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Internetradios und andere fsapi gesteuerte Geräte HMsteu

Beitrag von alchy » 18.10.2016, 20:54

Nach meinen alten Aufzeichnungen sollte das so gehen:

Code: Alles auswählen

http://IP.DEINES.EIGENEN.RADIO/fsapi/GET/netRemote.play.status?pin=DEIN_PIN&sid=DEINE_SID

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

surfer09
Beiträge: 113
Registriert: 13.12.2014, 08:51
Hat sich bedankt: 3 Mal

Re: Internetradios und andere fsapi gesteuerte Geräte HMsteu

Beitrag von surfer09 » 23.10.2016, 22:51

Hallo Alchy! Danke für deine Rückmeldung. Wo muss ich diese Codezeilen jetzt einfügen?
Ich stehe etwas aufm Schlauch gerade...

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Internetradios und andere fsapi gesteuerte Geräte HMsteu

Beitrag von alchy » 24.10.2016, 08:12

surfer09 hat geschrieben:Wo muss ich diese Codezeilen jetzt einfügen?
Ich stehe etwas aufm Schlauch gerade...
Woher soll ich denn das wissen? :mrgreen: Ich habe doch weder so ein Radio noch andere FSAPI Geräte.
Ich habe nur ein paar alte Aufzeichnungen von damals, als ich das Script geschrieben habe für den User Gerber_ , der mir die dafür nötigen Rückgaben aber auch zukommen hat lassen.
Und das ist über 1.5 Jahre her, wie ich auch am Script sehe. :shock:
Ich stehe erst Recht auf dem Schlauch ohne passende Informationen. :wink:

Was wird denn ausgegeben, wenn du das folgende Script im Executer bzw. unter Script testen ausführst?

Code: Alles auswählen

!FSAPI gesteuerte Geräte in die Homematic integrieren
!Status des radios integrieren 
!++++++ SETUP FÜR DAS SCRIPT ++++++
var IP_RADIO = "192.168.2.164";   ! IP des zu steuernden Gerätes
var i_PIN = "1234";      ! Pin des zu steuernden Gerätes
var CUXD_ID1 = "CUX2801001:1";    ! CUXD Serial Nummer des CUXD_EXEC Kanales zum Holen der SessionID
var CUXD_ID2 = "CUX2801001:2";   ! CUXD Serial Nummer des CUXD_EXEC Kanales zum Absenden des Befehls
!++++++ SETUP ENDE ++++++
var url = "http://"#IP_RADIO#"/fsapi/CREATE_SESSION?pin="#i_PIN#"";
dom.GetObject("CUxD."#CUXD_ID1#".CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD."#CUXD_ID1#".CMD_QUERY_RET").State(1);
string sback = dom.GetObject("CUxD."#CUXD_ID1#".CMD_RETS").State();
integer ian = sback.Find("sessionId")+10;
integer ien = ian +10;
integer i_SID = sback.Substr(ian,ien-ian);
!SessionID geholt weiter mit Abfrage ob an
var urlstatus = "http://"#IP_RADIO#"/fsapi/GET/netRemote.play.status?pin="#i_PIN#"&sid="#i_SID #"";
dom.GetObject("CUxD."#CUXD_ID2#".CMD_SETS").State("wget -q -O - '"#urlstatus#"'");
dom.GetObject("CUxD."#CUXD_ID2#".CMD_QUERY_RET").State(1);
string sstatus = dom.GetObject("CUxD."#CUXD_ID2#".CMD_RETS").State();
integer i_van = sstatus.Find("u8")+3;
integer i_ven = i_van +2;
integer i_stat = sstatus.Substr(i_van,i_ven-i_van).ToInteger();
if (i_stat == 2) { WriteLine("Radio ist an"); } else { 
WriteLine("Radio ist aus");
}
Wenn die Ausgabe NICHT zum Status des Radios passt, musst du den HomeMatic Script Executor (Signatur) installieren und mir die JSON Rückgabe des Scriptes zukommen lassen.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

surfer09
Beiträge: 113
Registriert: 13.12.2014, 08:51
Hat sich bedankt: 3 Mal

Re: Internetradios und andere fsapi gesteuerte Geräte HMsteu

Beitrag von surfer09 » 24.10.2016, 08:49

Guten Morgen!

Oh sorry Alchy, ich dachte du wärst hier der Internetradioexperte :wink: . Hast mir aber wieder mal geholfen, denn dein Skript funktioniert mit meinem Radio! Der Script Executor gibt die richtigen Werte aus.
Jetzt muss ich nur noch sehen, wie und wo ich das Skript einbauen muss. Es wäre ja schon nett, wenn mir das Skript die entsprechenden Variablen befüllt (Radio ist an / Radio ist aus).

Danke dir erstmal!
Dateianhänge
Medion_HM Script Executor.jpg

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Internetradios und andere fsapi gesteuerte Geräte HMsteu

Beitrag von alchy » 24.10.2016, 09:08

surfer09 hat geschrieben: Oh sorry Alchy, ich dachte du wärst hier der Internetradioexperte :wink: .
Die Scripte sind von mir, ohne das ich sie ausprobieren oder nutzen könnte.
Das ist eben der springende Punkt - da benötige ich Hilfe von dem der Hilfe benötigt.
surfer09 hat geschrieben: Hast mir aber wieder mal geholfen, denn dein Skript funktioniert mit meinem Radio! Der Script Executor gibt die richtigen Werte aus.
In diesem Fall, haben die alten Aufzeichnungen aber auch gereicht:
surfer09 hat geschrieben: Jetzt muss ich nur noch sehen, wie und wo ich das Skript einbauen muss.
Gibt es unterschiedliche Möglichkeiten, welche von der Art deiner Bedienung abhängen. Steuerst du das Radio auch mal mit der normalen FB bzw. per Hand, dann wird dir nichts übrig bleiben, als kontinuierlich zu pollen und den Status des Radios zu erfragen.
Statt der WriteLinezeilen also einfach eine Logik Systemvariable (im Beispiel: HamaRadio Status schalten:

Code: Alles auswählen

!FSAPI gesteuerte Geräte in die Homematic integrieren
!Status des radios integrieren 
!++++++ SETUP FÜR DAS SCRIPT ++++++
var IP_RADIO = "192.168.2.164";   ! IP des zu steuernden Gerätes
var i_PIN = "1234";      ! Pin des zu steuernden Gerätes
var CUXD_ID1 = "CUX2801001:1";    ! CUXD Serial Nummer des CUXD_EXEC Kanales zum Holen der SessionID
var CUXD_ID2 = "CUX2801001:2";   ! CUXD Serial Nummer des CUXD_EXEC Kanales zum Absenden des Befehls
!++++++ SETUP ENDE ++++++
var url = "http://"#IP_RADIO#"/fsapi/CREATE_SESSION?pin="#i_PIN#"";
dom.GetObject("CUxD."#CUXD_ID1#".CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD."#CUXD_ID1#".CMD_QUERY_RET").State(1);
string sback = dom.GetObject("CUxD."#CUXD_ID1#".CMD_RETS").State();
integer ian = sback.Find("sessionId")+10;
integer ien = ian +10;
integer i_SID = sback.Substr(ian,ien-ian);
!SessionID geholt weiter mit Abfrage ob an
var urlstatus = "http://"#IP_RADIO#"/fsapi/GET/netRemote.play.status?pin="#i_PIN#"&sid="#i_SID #"";
dom.GetObject("CUxD."#CUXD_ID2#".CMD_SETS").State("wget -q -O - '"#urlstatus#"'");
dom.GetObject("CUxD."#CUXD_ID2#".CMD_QUERY_RET").State(1);
string sstatus = dom.GetObject("CUxD."#CUXD_ID2#".CMD_RETS").State();
integer i_van = sstatus.Find("u8")+3;
integer i_ven = i_van +2;
integer i_stat = sstatus.Substr(i_van,i_ven-i_van).ToInteger();
if (i_stat == 2) { dom.GetObject(ID_SYSTEM_VARIABLES).Get("HamaRadio Status").State(1); } else { 
dom.GetObject(ID_SYSTEM_VARIABLES).Get("HamaRadio Status").State(0);}
und das Script in ein Programm einfügen, welches alle x Minuten (NICHT sekunden) getriggert wird.

Alchy
Zuletzt geändert von alchy am 24.10.2016, 10:28, insgesamt 1-mal geändert.
Grund: sicheren Aufruf der Speichervariable geändert

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

surfer09
Beiträge: 113
Registriert: 13.12.2014, 08:51
Hat sich bedankt: 3 Mal

Re: Internetradios und andere fsapi gesteuerte Geräte HMsteu

Beitrag von surfer09 » 24.10.2016, 09:46

Ah, verstehe.. Ich habe das jetzt auch soweit angepasst, aber irgendwo habe ich scheinbar noch einen Denkfehler. Ich habe das Gefühl, das das Programm den Status der Variable nicht verändert.
Ich habe mal das angepasste Skript und einen Screenshot meiner Radiovariable angehangen:

Code: Alles auswählen

var IP_RADIO = "192.168.1.195";   ! IP des zu steuernden Gerätes
var i_PIN = "1234";      ! Pin des zu steuernden Gerätes
var CUXD_ID1 = "CUX2801001:1";    ! CUXD Serial Nummer des CUXD_EXEC Kanales zum Holen der SessionID
var CUXD_ID2 = "CUX2801001:2";   ! CUXD Serial Nummer des CUXD_EXEC Kanales zum Absenden des Befehls
!++++++ SETUP ENDE ++++++
var url = "http://"#IP_RADIO#"/fsapi/CREATE_SESSION?pin="#i_PIN#"";
dom.GetObject("CUxD."#CUXD_ID1#".CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD."#CUXD_ID1#".CMD_QUERY_RET").State(1);
string sback = dom.GetObject("CUxD."#CUXD_ID1#".CMD_RETS").State();
integer ian = sback.Find("sessionId")+10;
integer ien = ian +10;
integer i_SID = sback.Substr(ian,ien-ian);
!SessionID geholt weiter mit Abfrage ob an
var urlstatus = "http://"#IP_RADIO#"/fsapi/GET/netRemote.play.status?pin="#i_PIN#"&sid="#i_SID #"";
dom.GetObject("CUxD."#CUXD_ID2#".CMD_SETS").State("wget -q -O - '"#urlstatus#"'");
dom.GetObject("CUxD."#CUXD_ID2#".CMD_QUERY_RET").State(1);
string sstatus = dom.GetObject("CUxD."#CUXD_ID2#".CMD_RETS").State();
integer i_van = sstatus.Find("u8")+3;
integer i_ven = i_van +2;
integer i_stat = sstatus.Substr(i_van,i_ven-i_van).ToInteger();
if (i_stat == 2) { dom.GetObject("Medion_Radio").State(0); } else {
dom.GetObject("Medion_Radio").State(1);
}
Das Radio läuft zwar, aber die Variable ändert den Wert nicht auf "läuft". Der Wert bleibt auf "ist aus" stehen.
Dateianhänge
Variable.jpg

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Internetradios und andere fsapi gesteuerte Geräte HMsteu

Beitrag von alchy » 24.10.2016, 09:59

Wenn das vorherige Script mit den WriteLines immer den korrekten Zustand des Radios angezeigt hat, wie du ja geschrieben hast, muss auch diese Version funktionieren. :shock:
[EDIT]
Aber da habe ich so meine Zweifel an der Aussage. :wink:
da jetzt der Post auch noch einen Anhang enthält.
[/EDIT]


Ausser - ein Standardfehler - :wink:

du hast mehrer Objekte mit dem Namen Medion_Radio. :?: :?:

Natürlich muss auch das Programm getriggert werden, also letzte Ausführungszeit des Programms mit letzter Änderungszeit der Systemvariablen vergleichen.

Alchy
Zuletzt geändert von alchy am 24.10.2016, 10:24, insgesamt 1-mal geändert.
Grund: siehe EDIT

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“