Autor Thema: Imperial i110 über undokumentierte API steuern (HTTPMOD)  (Gelesen 647 mal)

Offline ZDX

  • New Member
  • *
  • Beiträge: 30
Hallo FHEM-Gemeinde,
habe bereits vergebens nach einem Modul für unser Internetradio "Imperial i110" welches eher unbekannt ist gesucht.

Habe herausgefunden, dass es einen Telnet-Server am laufen hat (Benutzer "root" und Passwort sehr einfach zu erraten) und man das Radio per HTTP sozusagen steuern kann.

Hier eine kleine Auflistung der Steuerungsmöglichkeiten:

Gerätename abrufen
http://10.0.0.2/irdevice.xml

Zum Hauptmenü mit gewählter Sprache wechseln
http://10.0.0.2/init?language=de

Kanal-Hotkeys 1-5 abrufen
http://10.0.0.2/hotkeylist

Info über derzeitige Wiedergabe
http://10.0.0.2/playinfo

Kanal-Logo abrufen
http://10.0.0.2:8080/playlogo.jpg

Lautstärke von 0-31 setzen oder stumm schalten
http://10.0.0.2/setvol?vol=15&mute=0

Zurück
http://10.0.0.2/back

Stop
http://10.0.0.2/stop

Ganz zurück
http://10.0.0.2/exit

Tastendruck senden
http://10.0.0.2/Sendkey?key=4

Boot-Logo setzen (Mit URL, soll JPG sein!)
http://10.0.0.2/mylogo?url=http://example.com/logo.jpg

Menü mit ID öffnen
http://10.0.0.2/gochild?id=2

Stream abspielen
http://10.0.0.2/LocalPlay?url=http://example.com/stream.wav&name=NAME

Audiodatei als Nachricht speichern
http://10.0.0.2/LocalPlay?url=http://example.com/msg.wav&save=1

Gerätename setzen
http://10.0.0.2/set_dname?name=NAME-HIER

Hier noch weitere Links:
Liste der mögl. Tasten
Liste der "Childs" mit ID

Durch das Aufrufen der URL/GET-Request wird die Aktion ausgeführt.

Das möchte ich nun vielleicht in FHEM verwenden, habe aber noch keinen richtigen Ansatz.
Vielleicht wäre ja eventuell für andere auch ein Modul nicht schlecht, das müsste ich jedoch noch irgendwie lernen.
« Letzte Änderung: 20 Januar 2019, 16:46:54 von xulodaZ »

Offline Klaus0815

  • Full Member
  • ***
  • Beiträge: 493
Antw:Internetradio (Imperial) über undokumentierte API steuern
« Antwort #1 am: 12 August 2018, 20:18:07 »
Was willst Du denn genau steuern?
Oder willst Du es einfach nur in FHEM drin haben?

Das Radio hat zumindest mal keine Session ID oder so nen Quatsch, sondern lässt sich einfach von extern steuern, wäre froh meins hätte so was

Warum schickst nicht einfach die Befehle direkt, entweder aus FHEM oder per vielen kleinen Bash-Scripts?
Letztendlich geht es doch bei einer Integration in eine Hausautomatisierung um On/Off, paar Presets abrufen und lauter /leiser.
Evtl. schön ist noch eine Rückmeldung / Songtext usw, aber das kannst laut Deiner Liste auch mit playinfo abrufen?

Mit was willst DU das Gerät denn letztendlich steuern?


Viele Grüße

Klaus



Offline ZDX

  • New Member
  • *
  • Beiträge: 30
Antw:Internetradio (Imperial) über undokumentierte API steuern
« Antwort #2 am: 24 Dezember 2018, 19:10:46 »
Hallo Klaus (und eventuelle andere Leser!),

habe es jetzt geschafft: mit HTTPMOD kann man die Daten ganz einfach abrufen und das Gerät steuern.
Hier der Auszug aus meiner fhem.cfg:

define Radio HTTPMOD none 120
attr Radio devStateIcon (Wiedergabe.*):rc_GREEN:power (Playing.*):rc_GREEN:power off:rc_RED (Zwischenspeichern.*):time_clock:power (Buffering.*):time_clock:power (Station.*):checkbox_checked:power (Verbinden.*):refresh:power (Connecting.*):refresh:power
attr Radio disable 0
attr Radio enableControlSet 0
attr Radio get01Name deviceName
attr Radio get01Poll 1
attr Radio get01URL http://10.0.0.2/irdevice.xml
attr Radio get02Name playInfo
attr Radio get02Poll 1
attr Radio get02URL http://10.0.0.2/playinfo
attr Radio get03Name dlnaName
attr Radio get03URL http://10.0.0.2/getdlnaname
attr Radio reading01Name volume
attr Radio reading01XPath-Strict //result/vol/text()
attr Radio reading02Name muted
attr Radio reading02XPath-Strict //result/mute/text()
attr Radio reading03MaxAge 121
attr Radio reading03MaxAgeReplacement off
attr Radio reading03MaxAgeReplacementMode text
attr Radio reading03Name state
attr Radio reading03XPath-Strict //result/status/text()
attr Radio reading04Name sid
attr Radio reading04XPath-Strict //result/sid/text()
attr Radio reading05Name streamFormat
attr Radio reading05XPath-Strict //result/stream_format/text()
attr Radio reading06Name logoUrl
attr Radio reading06XPath-Strict //result/logo_img/text()
attr Radio reading07Name deviceName
attr Radio reading07XPath-Strict //root/device/friendlyName/text()
attr Radio reading08Name title
attr Radio reading08XPath-Strict //result/song/text()
attr Radio reading09Name artist
attr Radio reading09XPath-Strict //result/artist/text()
attr Radio reading10Name stationInfo
attr Radio reading10XPath-Strict //result/station_info/text()
attr Radio reading11Name dlnaName
attr Radio reading11XPath-Strict //result/name/text()
attr Radio room Badezimmer
attr Radio set01Max 31
attr Radio set01Min 0
attr Radio set01Name volume
attr Radio set01URL http://10.0.0.2/setvol?vol=$val
attr Radio set02IMap 0:no, 1:yes
attr Radio set02Max 1
attr Radio set02Min 0
attr Radio set02Name muted
attr Radio set02URL http://10.0.0.2/setvol?mute=$val
attr Radio set03Name playStreamUrl
attr Radio set03TextArg 1
attr Radio set03URL http://10.0.0.2/LocalPlay?name=FHEM&url=$val
attr Radio set04IMap 1:menu, 4:left, 5:right, 31:up, 32:down, 6:enter, 7:power, 8:mute, 9:volumeUp, 10:volumeDown, 11:alarm, 12:sleepTimer, 13:language, 14:dim, 15:favChannels, 17:0, 18:1, 19:2, 20:3, 21:4, 22:5, 23:6, 24:7, 25:8, 26:9, 28:mode, 30:stop, 36:usb, 46:radioMenu
attr Radio set04Max 40
attr Radio set04Min 1
attr Radio set04Name sendKey
attr Radio set04URL http://10.0.0.2/Sendkey?key=$val
attr Radio set05Name back
attr Radio set05NoArg 1
attr Radio set05URL http://10.0.0.2/back
attr Radio set06Name stop
attr Radio set06NoArg 1
attr Radio set06URL http://10.0.0.2/stop
attr Radio set07Name exit
attr Radio set07NoArg 1
attr Radio set07URL http://10.0.0.2/exit
attr Radio set08Max 148
attr Radio set08Min 1
attr Radio set08Name goChild
attr Radio set08URL http://10.0.0.2/gochild?id=$val
attr Radio set09Name power
attr Radio set09NoArg 1
attr Radio set09URL http://10.0.0.2/Sendkey?key=7
attr Radio set11Name init
attr Radio set11NoArg 1
attr Radio set11URL http://10.0.0.2/init
attr Radio set12Hint cs,da,de,en,es,fi,fr,hu,it,nl,no,pl,pt,ru,sk,sv,tr
attr Radio set12Name initLanguage
attr Radio set12TextArg 1
attr Radio set12URL http://10.0.0.2/init?language=$val
attr Radio set13Name deviceName
attr Radio set13TextArg 1
attr Radio set13URL http://10.0.0.2/set_dname?name=$val
attr Radio showError 0
attr Radio verbose 2
attr Radio webCmd volume
attr Radio widgetOverride volume:slider,1,1,31,1

Wünsche noch schöne Feiertage und einen guten Rutsch!
« Letzte Änderung: 20 Januar 2019, 16:49:10 von xulodaZ »

Offline fiedel

  • Hero Member
  • *****
  • Beiträge: 1703
Antw:Internetradio (Imperial) über undokumentierte API steuern
« Antwort #3 am: 25 Dezember 2018, 10:03:24 »
Sehr schön! Hattest du mal dieses Modul probiert?
Sollte doch auch zu deinem Radio passen.

Frohes Fest!  :)
FHEM 5.7 FeatureLevel: 5.7 auf Dreamplug/Deb. 7; Perl: v5.14.2
HM: HM-CFG-USB-2 + hmland | SlowRF: CUNO V2.1/CULFW V 1.43 868
OWServer:LinkUSBi | OWDevice:DS18S20|DS2401|DS2406|DS2423
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline ZDX

  • New Member
  • *
  • Beiträge: 30
Antw:Internetradio (Imperial) über undokumentierte API steuern
« Antwort #4 am: 25 Dezember 2018, 19:44:44 »
Hallo fiedel,

danke für den Tipp, ja, gerade nochmal zur Sicherheit getestet.

Funktioniert nicht, wird anscheinend einfach nicht so unterstützt von der Modellreihe.
Logauszug:
2018.12.25 19:36:00 5: Test.Radio: URL http://10.0.0.2:80/fsapi/GET/netRemote.nav.state?pin=1234 returned:
<?xml version="1.0" encoding="UTF-8"?><result><rt>NO_SUPPORT</rt></result>
2018.12.25 19:36:00 5: Test.Radio: URL http://10.0.0.2:80/fsapi/GET/netRemote.sys.power?pin=1234 returned:
<?xml version="1.0" encoding="UTF-8"?><result><rt>NO_SUPPORT</rt></result>
2018.12.25 19:36:01 5: Test.Radio: URL http://10.0.0.2:80/fsapi/GET/netRemote.sys.caps.volumeSteps?pin=1234 returned:
<?xml version="1.0" encoding="UTF-8"?><result><rt>NO_SUPPORT</rt></result>
2018.12.25 19:36:01 5: Test.Radio: URL http://10.0.0.2:80/fsapi/GET/netRemote.nav.status?pin=1234 returned:
<?xml version="1.0" encoding="UTF-8"?><result><rt>NO_SUPPORT</rt></result>

Danke trotzdem :-)

 

decade-submarginal