Modul für WLAN Radios mit Frontier Silicon Chipsatz (SilverCrest/Medion/Hama...)

Begonnen von mumpitzstuff, 07 November 2017, 00:21:27

Vorheriges Thema - Nächstes Thema

mumpitzstuff

Ich habe jetzt einen development branch angelegt und eine neue Version eingecheckt mit folgenden Änderungen (noch nicht über update erhältlich):

- command stream added to stream any http url or local files
- attribute streamInput added (default: dmr)
- attribute streamWaitTimes added (default: 0:2:0:0)
- attribute streamPath added (default: /opt/fhem/)
- attribute streamPort added (default: 5000)
- version increased from 1.1.5 to 1.1.6

Ich versuche mal zu beschreiben wie es funktionieren sollte:

1. Möglichkeit:

Wenn man dem Kommando stream eine url übergibt, die mit http:// oder https:// beginnt, dann wird diese url dem Radio übergeben und das versucht den Stream direkt abzuspielen.

2. Möglichkeit:

Wenn man in /opt/fhem ein mp3 File platziert z.B. /opt/fhem/1.mp3 und dieses mit den Rechten von FHEM versieht (sudo chown fhem: /opt/fhem/1.mp3), dann kann man diese mp3 Datei abspielen, indem man stream einfach 1.mp3 übergibt. FHEM öffnet dann einen lokalen Webserver und streamt damit die lokale Datei an das Radio.
Mit den neuen Attributen kann man den Pfad anpassen in dem die Dateien liegen sollen und auch den zu verwendenen Port des Webservers festlegen. Der Standardport ist 5000.

Das ist alles noch nicht sonderlich schön, sollte aber hoffentlich schon mal funktionieren. Ich versuche jetzt noch den Speicherverbrauch des lokalen Webservers zu senken und die Robustheit zu erhöhen. Vielleicht kann ich auch noch einen Playlist Support nachreichen, denn einzelne Dateien machen außer bei Hörbüchern noch nicht wirklich Sinn. Ein Zusammenspiel von stream und speak ist auch noch nicht möglich. Außerdem kann man einen Stream nicht mit Stop stoppen und mit Start wieder starten. Das ist aktuell auch noch nicht so optimal, liegt aber eher am Radio. Da muss ich bei Bedarf noch was basteln.

betateilchen

Kannst Du für Deinen temporären Webserver nicht die FHEM internen Mechanismen (siehe 02_HTTPSRV.pm einsetzen?

Der Pfad /opt/fhem sollte auf keinen Fall default bleiben. Warum nicht $modpath/www ?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

mumpitzstuff

Ich hatte bereits versucht FHEM für die Auslieferung der mp3 Dateien zu verwenden. Es gab dabei aber Probleme mit dem HEAD request. Grundsätzlich kann man FHEM dazu bringen darauf zu antworten, leider hat mein Radio damit aber nicht umgehen können, woran auch immer das liegt. Ich denke deshalb nicht, das ich mit diesem Modul weiter komme. Auch hier werden ja nur die Dateien verschickt. Das funktioniert aber auch, indem man Dateien wie z.b. /opt/fhem/www/images/1.mp3 referenziert. Mit dem Media Player geht das dann auch, nur mit dem Radio leider nicht, da dem Radio die Antwort auf den HEAD request nicht gefällt.

Ich kann noch www an den default Pfad dran hängen, das ist kein Problem.

Future001

Hallo,

mit dem neuen Lidl Silvercrest SIRD C3 (und neuester Firmware) stürzt Fhem leider ab:

Not a HASH reference at ./FHEM/17_SIRD.pm line 2314

Ich habe auch alte Versionen des Moduls probiert - da verschiebst sich aber nur die Codezeile weiter nach oben.

Die älteren SIRD C2 funktionieren aber!

Gibt es da evtl. eine Lösung?
FHEM auf Raspi3, CUL868, RFXTRX433
MAX! mit Cube eingebunden, Temps, und viele weitere Geräte

mumpitzstuff


Future001

FHEM auf Raspi3, CUL868, RFXTRX433
MAX! mit Cube eingebunden, Temps, und viele weitere Geräte

mumpitzstuff

Ich habe wieder eine neue Testversion sowohl in git (development) eingecheckt, als auch hier angehangen. Die Änderungen sind folgende:

- command stream added to stream any http url or local files
- attribute streamInput added (default: dmr)
- attribute streamWaitTimes added (default: 0:0:0:0)
- attribute streamPath added (default: /opt/fhem/www/)
- attribute streamPort added (default: 5000)
- attribute ttsJingle added to play a jingle located on a webserver or Dlna server in front of the speak command
- speak command can work with up to 200 chars now if attribute ttsJingle is not used (100 if ttsJingle is used)
- attribute ttsWaitTimes can now be 0:0:0:2:0:0 (default value changed)
- some internal changes to increase stability of speak
- version increased from 1.1.6 to 1.1.7

Das stream command kann z.B. mit folgender Url getestet werden:

http://stream.sunshine-live.de/dnb/mp3-128/surfmusik/

Man kann aber auch jede andere mp3 Datei nehmen die auf einem Webserver oder Dlna Server liegt. Alternativ lassen sich auch lokale mp3 Dateien streamen. Dazu startet das Modul intern einen eigenen Webserver und streamt darüber die Datei an das Radio. Wenn man das Attribut streamPath nicht setzt, dann muss man dazu lediglich in /opt/fhem/www eine mp3 Datei wie z.B. 1.mp3 kopieren und diese mit den Rechten von FHEM versehen. Danach kann man speak einfach den Namen der mp3 Datei übergeben z.B.:

1.mp3

Beim speak Kommando habe ich eine Wartezeit weg optimiert und gucke stattdessen direkt beim Radio, ob das Laden des Streams abgeschlossen ist. Wenn ihr ttsWaitTimes verwendet habt, dann könnt ihr dort die zweite Zahl auf 0 anstatt 2 setzen. Ich habe auch die Routine zur Wiederherstellung des ursprünglichen Zustandes nach einem speak Kommando optimiert, so dass das jetzt schneller ablaufen sollte.

Es gibt ein neues Attribut ttsJingle. Damit kann man vor einem speak eine mp3 Datei abspielen lassen. Diese Datei muss sich auf einem Webserver oder Dlna Server befinden.

Wenn ein stream läuft, dann kann man diesen nun mit Stop anhalten, im Moment aber noch nicht wieder mit Play starten. Pause funktioniert leider auch nicht, das liegt, zumindest bei mir, aber am Radio.

Wenn mir keine Bugs reportet werden, dann werde ich diese Version in ca. 1 Woche offiziell frei geben und mich danach dem Playlisten Support zuwenden bzw. auch das Abspielen anderer Dateiformate als nur mp3 Dateien erlauben.

mumpitzstuff

Habe git noch mal aktualisiert und auch den Beitrag davor. Dieses Feature ist neu dazu gekommen:

- speak command can work with up to 200 chars now if attribute ttsJingle is not used (100 if ttsJingle is used)

Frage: Wird generell gewünscht mehr als die jetzt möglichen 200 Zeichen für die Sprachausgabe verwenden zu können? Ich bin mir noch nicht ganz sicher ob es geht und vor allem wie, aber wenn ein berechtigtes Interesse besteht, dann könnte ich mich mal daran versuchen.

Lichti

Sprachausgabe funktioniert super !
Und für mich sind 100 Zeichen mehr als ausreichend.

Könnte man ttsJingle auch direkt in das speak-Kommando einbauen ?
Beim Logitech-Radio geht das z.B. so:
"set SqueezeBoxRadio talk |horn.mp3| Es ist $hour Uhr $min"
(der Jingle wird mit senkrechten Strichen eingefasst und kann an beliebiger Stelle im Text stehen)

Noch ein kleines Problem (stört mich allerdings nicht allzu sehr):
Bei ausgeschaltetem Radio und speak ist immer noch kurz der letzte Radiosender zu hören.
Kommt vermutlich daher, das beim Wechsel des Inputs das Radio auch gleich eingeschaltet wird.
Wenn ich vor dem speak-Kommando ein mute-Kommando schicke, geht es. Und mute wird für die Durchsage auch automatisch wieder ausgeschaltet.
Wäre es möglich. das mute vor dem speak einzubauen (evtl. abschaltbar, falls sich andere Radios da anders verhalten) ?

mumpitzstuff

Das mit dem mute hört sich plausibel an. Werde ich einbauen.

Das einbauen des jingles funktioniert prinzipbedingt nur davor oder danach und nicht mittendrin. Da danach für mich keinen Sinn ergeben hat, habe ich die jetzige Version implementiert.
Ich setze beim Radio 2 streams (es gehen nur genau 2) und das Radio spielt dann beide nacheinander ab. Wenn man den jingle mittendrin haben wollen würde, bräuchte ich 3 slots anstatt 2.

Lichti

OK, soweit klar. Und der Jingle ist wirklich nur davor sinnvoll.
Wäre es trotzdem möglich, das irgendwie in das speak-Kommando einzubauen, damit man verschiedene Jingles verwenden kann ?

Lucky2k12

Ich habe grade mal versucht, das speak Kommando zum Laufen zu kriegen.
Leider schaltet das Radion von SWR kurz auf stumm, also irgendwas kommt an.
Im Log sehe ich nichts. Was sind die Voraussetzungen für tts, was muss intalliert sein?
currentTitle

Internals:
   CFGFN     
   CHANGED   
   DEF        192.168.178.21 1234 20
   INTERVAL   20
   IP         192.168.178.21
   NAME       Kuechenradio
   NOTIFYDEV  global
   NR         785
   NTFY_ORDER 50-Kuechenradio
   PIN        1234
   STATE      on
   TYPE       SIRD
   VERSION    1.1.7
   READINGS:
     2018-05-31 14:56:22   currentTitle    http://translate.google.com/translate_tts?ie=UTF-8&tl=de&client=
     2018-05-31 14:48:13   duration        0
     2018-05-31 13:50:08   friendlyName    SilverCrest SIRD 14 A2
     2018-05-31 14:56:22   infoText       
     2018-05-31 14:55:19   input           dmr
     2018-05-31 14:48:16   mute            off
     2018-05-31 14:56:23   playStatus      idle
     2018-05-31 14:48:15   position        0:00
     2018-05-31 15:00:11   power           on
     2018-05-31 15:00:11   presence        present
     2018-05-31 15:00:11   preset         
     2018-05-31 14:48:15   repeat          off
     2018-05-31 14:59:47   rssi            49
     2018-05-31 14:48:16   shuffle         off
     2018-05-31 14:56:24   signalStrength  0
     2018-05-31 15:00:09   state           on
     2018-05-31 13:50:08   version         ir-mmi-FS2026-0500-0106_V2.6.19c7.EX59333-1RC8
     2018-05-31 14:53:33   volume          50
     2018-05-31 14:53:33   volumeStraight  10
   helper:
     sid        607480179
     suspendUpdate 0
     CL:
       Authenticated 1
       BUF       
       FW_ID      2526
       LASTACCESS 1527770970
       NAME       WEB_192.168.178.35_50421
       NR         2524
       PEER       192.168.178.35
       PORT       50421
       SNAME      WEB
       SSL       
       STATE      Connected
       TEMPORARY  1
       TYPE       FHEMWEB
       canAsyncOutput 1
Attributes:
   autoLogin  1


Edit: Ich hab mal die URL aus dem currentTitle Reading im Browser aufgerufen, da kommt folgendes:
Unsere Systeme haben ungewöhnlichen Datenverkehr aus Ihrem Computernetzwerk festgestellt. Bitte versuchen Sie es später erneut. Warum?

Diese Seite wird angezeigt, wenn Google automatisch Anfragen aus Ihrem Computernetzwerk erkennt, die anscheinend gegen die Nutzungsbedingungen verstoßen. Die Sperre läuft ab, sobald diese Anfragen eingestellt werden.

Dieser Datenverkehr wurde möglicherweise von bösartiger Software, einem Browser-Plug-in oder einem Skript gesendet, das automatische Anfragen verschickt. Falls Sie Ihre Netzwerkverbindung mit anderen teilen, bitten Sie Ihren Administrator um Hilfe. Möglicherweise ist ein anderer Computer, der dieselbe IP-Adresse verwendet, für die Anfragen verantwortlich. Weitere Informationen

Eventuell sehen Sie diese Seite, weil Sie komplexe Anfragen verwenden, die bekanntermaßen von Robots verwendet werden, oder weil Sie sehr schnell Anfragen senden.
HP T610, HM, Jeelink, LGW, mapleCUL868+434

mumpitzstuff

Das ist komisch. Habe ich bei meinen Tests noch nie gesehen. Kannst du vom Browser aus dann eine Art Rätsel lösen, um die Sperre wieder aufzuheben? Ansonsten mal warten und später probieren. Dagegen kann ich auf jeden Fall wenig machen.

mumpitzstuff

Beim jingle geht es also weniger um die Position als vielmehr um die Möglichkeit verschiedene jingles verwenden zu können. Ich denke drüber nach.

Lucky2k12

Ok, Jetzt geht es wieder,
allerdings ist es sehr leise, obwohl ich alles voll aufgedreht habe.
HP T610, HM, Jeelink, LGW, mapleCUL868+434