FS20 IRB (Internet Radio Box) - Steuerscript

Hallo zusammen,

seit kurzem gibt es die FS20IRB: ELV FS20 Internet Radio Box FS20 IRB, Komplettbausatz | ELV-Elektronik .

Da es eine Weboberfläche für die Steuerung hat, schreit es danach von IPS gesteuert zu werden :smiley:

Die ELV-Entwickler haben es beim Stromsparen aber leider etwas zu gut gemeint.
Das LAN-Port ist im StandBy deaktiviert :mad:
Also ist das Gerät im StandBy über LAN nicht erreichbar und kann daher auch so nicht eingeschaltet werden.

Die jenigen die eine FHZ haben können es natürlich per FS20-Befehl einschalten und dann die http-Kommandos schicken.

Ich wollte es aber rein über http steuern und dazu muss das LAN-Port immer an sein.

Das lässt sich eigentlich recht einfach bewerkstelligen:
1.) „T3“ entfernen und Pins 2-3 brücken.
2.) „T4“ und „T5“ entfernen.

„T3“ wird über den FS20-Atmel gesteuert und unterbricht im StandBy die Stromzufuhr zu den restlichen Komponenten.
„T4“ und „T5“ deaktivieren den Vorverstärker und sind im StandBy durchgeschaltet, also entfernen und der Vorverstärker bleibt an.

Anbei ein Bild vom Umbau…

Und hier mein Steuerscript für die FS20 IRB.
Sollte jemandem etwas in dem Script bekannt vorkommen, könnte es daran liegen das es aus diversen anderen Scripten aus dem Forum zusammengeschnippelt ist :stuck_out_tongue:
An dieser Stelle danke an die Vordenker!

Das inklude-Script (fs20irb.ips.php):


<?php
 
function gethttp($url,$postData,$user,$pass)
{
    $handle = curl_init($url);
    curl_setopt_array($handle, array(
        CURLOPT_RETURNTRANSFER     => true,
        CURLOPT_CONNECTTIMEOUT     => 15,
        CURLOPT_TIMEOUT            => 15,
        CURLOPT_MAXREDIRS          => 10,
        CURLOPT_POST             => true,
    CURLOPT_HTTPAUTH           => CURLAUTH_BASIC,
    CURLOPT_USERPWD            => $user.':'.$pass,
        CURLOPT_POSTFIELDS        => $postData
    ) );
    $result = curl_exec($handle);
    $errNo    = curl_errno($handle);
    $errMsg = curl_error($handle);
    curl_close($handle);
}
class fs20irb
{
   var $ip;
   var $user;
   var $password;
   function fs20irb($irb_cfg)
   {
      $this->ip = $irb_cfg["ip"];
      $this->user = $irb_cfg["user"];
      $this->password = $irb_cfg["password"];
   }
   function power_up()
   {
    $post_url = "http://".$this->ip."/index.htm";
    $post_Data = 'btnStationStart=Starten';
    gethttp($post_url,$post_Data,$this->user,$this->password);
    IPS_Sleep(200);
    $post_Data = 'btnAmplifierSwitch=Einschalten';
    gethttp($post_url,$post_Data,$this->user,$this->password);
   }
   function power_down()
   {
    $post_url = "http://".$this->ip."/index.htm";
    $post_Data = 'btnAmplifierSwitch=Ausschalten';
    gethttp($post_url,$post_Data,$this->user,$this->password);
    IPS_Sleep(200);
    $post_Data = 'btnStationStop=Stoppen';
    gethttp($post_url,$post_Data,$this->user,$this->password);
   }
   function volume_up()
   {
    $post_url = "http://".$this->ip."/index.htm";
    $post_Data = 'btnVolumeUp=Lauter';
    gethttp($post_url,$post_Data,$this->user,$this->password);
   }
   function volume_down()
   {
    $post_url = "http://".$this->ip."/index.htm";
    $post_Data = 'btnVolumeDown=Leiser';
    gethttp($post_url,$post_Data,$this->user,$this->password);
   }
   function station_next()
   {
    $post_url = "http://".$this->ip."/index.htm";
    $post_Data = 'btnStationNext=Nächster';
    gethttp($post_url,$post_Data,$this->user,$this->password);
   }
   function station_prev()
   {
    $post_url = "http://".$this->ip."/index.htm";
    $post_Data = 'btnStationPrev=Vorheriger';
    gethttp($post_url,$post_Data,$this->user,$this->password);
   }
   function mode_next()
   {
    $post_url = "http://".$this->ip."/index.htm";
    $post_Data = 'btnPlayerModeNext=Nächster';
    gethttp($post_url,$post_Data,$this->user,$this->password);
   }
   function mode_prev()
   {
    $post_url = "http://".$this->ip."/index.htm";
    $post_Data = 'btnPlayerModePrev=Vorheriger';
    gethttp($post_url,$post_Data,$this->user,$this->password);
   }
   function station_id($st_id)
   {
    $post_url = "http://".$this->ip."/stations.htm";
    $post_Data = 'hidStationIndex='.$st_id.'&btnPlay=Radio';
    gethttp($post_url,$post_Data,$this->user,$this->password);
   }
}
 
?>

Die Steuerbefehle:


<?
 
require("fs20irb.ips.php");
 
$irb_cfg["ip"]="192.168.0.46";
$irb_cfg["user"]="admin";
$irb_cfg["password"]="admin";
 
$irb=new fs20irb($irb_cfg);
// $irb->power_up();
// $irb->power_down();
// $irb->volume_up();
// $irb->volume_down();
// $irb->station_next();
// $irb->station_prev();
// $irb->mode_next();
// $irb->mode_prev();
// $irb->station_id(86);
 
?>

Hallo,

finde das könnt’ eine interessante Sache werden wenn ich mir die Features ansehe von dem Ding. Ein steuerbarer Netzwerkplayer so ala Mini-Squeezebox etc. in Richtung Wiedergabe von Ansagen …

" Technische Daten FS20 IRB …
Wiedergabe aus dem Netzwerk: Musikdateien und Playlisten im MP3-Format (über Web-Server)
…"

Aus der Beschreibung geht das leider nicht besonders gut hervor oder ich sehe es im moment leider nicht.
Läßt sich das aus der Weboberfläche wirklich so verwenden um ein File abzuspielen?

Wäre dann schon interessant dort wo ein LAN-Kabel liegt. Kleiner Speaker dran und fertig.

Grüße,
Josef.

Hi,

hab mir das mal angeschaut.
Also dem Ding einfach eine URL übergeben und es spielt, geht mal nicht.
Da ich bis jetzt nur Funktionen gefunden habe um URLs zur Geräteinternen Playliste hinzuzufügen und dann diese anhand der Playlist-ID abzuspielen, dürfte es nicht so einfach gehen…

Aber eine Funktion ala FS20/HomeMatic-MP3-Funkgong wäre damit auf jeden Fall gegeben.
*) MP3s am IPS-Webserver ablegen
*) URLs zur Playlist hinzufügen
*) Files per Playlist-ID aufrufen

Wenn man aber die Playlist nur mit 1 URL „füttert“ und das Audio-File in IPS dynamisch generiert ist eigentlich theoretisch auch TTS über das Ding möglich…
Habs aber noch nicht geschafft das das Ding mir ein .wav-File abspielt…

Danke schon mal fürs Durchsehen!

Also Files über den IPS eigenen Webserver könnte man schon mal zur Verfügung stellen. Dann fehlt eigentlich nurnoch das Encoding in Richtung MP3. Bei Sachen die nicht unendlich lang sind könnte das schon klappen.

Grüße,
Josef.

Moin!

Finde das Projekt ebenfalls sehr interresant, gerade für tts Durchsagen und eben als alternative für teure Streamer…

Habe hier mal was gefunden, evtl. hilft das ja weiter:

Boxoft WAV to MP3 Converter (freeware) - Batch Free WAV to MP3 Converter, Support Watched folder converting - Boxoft.com

Das ist nen feines Tool zum wav2mp3 wandeln.
Das geniale daran, man kann auch hotfolder einrichten, sobald dort etwas drin abgelegt wird, wird es automatisch in mp3 gewandelt.

aber für den HM-Funkgong ist das nichts oder ??? ich meine mich zu erinnern, das man die files nicht draufspielen kann…richtig ???

Ne, die müssen da ja auf die SD Karte.

Das ist ja mal richtig geil das Teil. Endlich was preiswertes für mein Badezimmer. Jetzt noch Lautsprecher einbauen und schon hat man ein unsichtbares Radio im Badezimmer. Werde mir das Teil auf jedenfall bestellen. Danke für die Arbeit :wink:

Hallo zusammen

Auch wenn dieser Thread hier etwas alt ist, es gibt ein relevantes Update dazu:
Die Hardware-Modifikation wie von Chrisu beschrieben ist in der aktuell ausgelieferten Version des FS20 IRB von ELV nicht mehr notwendig. Es wurde mitlerweilen in der Software gelöst.
Um den FS20 IRB ständig eingeschaltet zu lassen (und damit auch den Ethernetport) kann wie folgt vorgegangen werden:
Den Taster „Fernbedienung anlernen“ für 30 Sekunden gedrückt halten (bis die rote LED schnell blinkt).
Wenn nun die Stromversorgung eingeschaltet wird, startet der FS20 IRB sofort mit der Wiedergabe des zuletzt ausgewählten Streams. Ich habe bei meinem Gerät sogar auf das anlöten des FS20-Empfängers verzichtet, da ich den nicht verwende.

Softwarestand bei meinem Gerät (um das anzuzeigen eine ungültige URL angeben --> bsp. http://<fs20-irb_adresse>/abc):
Software: v1.0.4
TCP/IP-Stack: v5.25

Gruss Letraz