Wlan Speaker mit MQTT steuern

Begonnen von simonsky, 14 August 2022, 13:25:50

Vorheriges Thema - Nächstes Thema

simonsky

Hallo zusammen vielleicht kann mir einer helfen.
Ich wollte mir eine einfache Klingel bauen die dann ein ESP8266 wiedergibt.
Nun habe ich einen Test nach dem Beispiel aufgebaut (https://www.youtube.com/watch?v=SPa9SMyPU58)
Alles ist angeschlossen und der Sound wird bei der Verbindung zu MQTT-Server wiedergegeben wie auf dem Video (Verbunden) Also ton geht schon mal :)
Jetzt habe ich in Fhem folgenden Eintrag erhalten define myTTSrelais notify myTTS:lastFilename:.* {   system("avconv -i /opt/fhem/$EVTPART1 -f s32be -acodec pcm_u8 -af \"volume=0dB\" -ac 1 -ar 33000 tcp://192.168.179.50:5522>/dev/null 2>&1&") }
setuuid myTTSrelais 62f8c9b4-f33f-86f8-73fe-82e86f59e968411d
define c_mqttmsg cmdalias mqttmsg .* AS {qx(/usr/bin/mosquitto_pub -h 192.168.179.50 -t \'$EVTPART0\' -m \'$EVTPART1\')}
setuuid c_mqttmsg 62f8d873-f33f-86f8-26bd-996eddb64df66d56
define MQTT2_MrDIY_Notifier MQTT2_DEVICE MrDIY_Notifier
setuuid MQTT2_MrDIY_Notifier 62f8da2d-f33f-86f8-ebaa-95cc2c6dc39bc859
attr MQTT2_MrDIY_Notifier readingList MrDIY_Notifier:/mrdiynotifier/status:.* status
attr MQTT2_MrDIY_Notifier room MQTT2_DEVICE
define FileLog_MQTT2_MrDIY_Notifier FileLog ./log/MQTT2_MrDIY_Notifier-%Y.log MQTT2_MrDIY_Notifier
setuuid FileLog_MQTT2_MrDIY_Notifier 62f8da2d-f33f-86f8-d79b-314ea16fd3c70f8d
attr FileLog_MQTT2_MrDIY_Notifier logtype text
attr FileLog_MQTT2_MrDIY_Notifier room MQTT2_DEVICE


Leider weiß ich nicht wie ich jetzt irgendein Befehl wie auf dem Video zu dem esp hinschicken kann damit der zb. eine mp3 Datei abspielen kann.
Ist das eigentlich so möglich wie ich das vorhabe oder bin ich total auf dem falschen weg.





Otto123

Hi,

meiner Meinung nach bist Du zu umständlich gestartet :)
Dieser mrdiynotifier will doch einen vorhandenen MQTT Server und sich dorthin verbinden - richtig?
Warum definierst Du nicht den MQTT2_SERVER in FHEM und verbindest ihn dorthin.
Der wird Dir ein MQTT2_DEVICE erzeugen.
Dort definierst Du dann einfach Deine setList entsprechend seiner Doku https://gitlab.com/MrDIYca/mrdiy-audio-notifier

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

simonsky

Fhem hat ja wie auf dem Bild zu sehen das Gerät erzeugt es ist ja verbunden.
Nur mein Problem ist das ich wirklich keine Ahnung habe wie ich jetzt diese befehle dort hinbringen soll  :-[
Mit den ganzen attr. bin ich mit MQTT echt noch überfragt. Bzw. wie der Aufbau dann zu sein hat.
Zu Deutsch ich bin zu blöde und weis nicht was ich in die Set liste schreiben muss.

DetlefR

Hallo,

vergiss erst mal "myTTSrelais" und "c_mqttmsg".

MQTT2_MrDIY_Notifier scheint ja schon eine Verbindung zu haben. Ansonsten würde da nicht "idle" als status drin stehen.
Dann erzeuge in MQTT2_MrDIY_Notifier ein Attribut setList. Das Beispiel kann so in die Commandozeile eingegeben werden.
attr MQTT2_MrDIY_Notifier setList mp3 /mrdiynotifier/play $EVTPART1
Danach sollte im Device MQTT2_MrDIY_Notifier mit "set mp3 http://irgendwas" etwas abgespielt werden können.
Die anderen Befehle https://www.instructables.com/MQTT-Audio-Notifier-for-ESP8266-Play-MP3-TTS-RTTL/
können auf die gleiche Weise eingetragen werden.
Dazu setList editieren und jeden Befehl in eine neue Zeile eintragen.

Otto123

Zitat von: simonsky am 14 August 2022, 16:09:39
Fhem hat ja wie auf dem Bild zu sehen das Gerät erzeugt es ist ja verbunden.
Sorry da habe ich vielleicht den Teil Deines Posts missverstanden, da ich Bilder selten "lese". ;) Als Tipp: Meist ist es besser und verständlicher ein list vom Device zu posten -> https://forum.fhem.de/index.php/topic,71806.0.html
Ich glaube Dein Fall ist erstmal so einfach wie DetlefR es geschildert hat, ansonsten kannst Du auch hier starten und Dir noch Anregungen holen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

simonsky

Hallo DetlefR danke erst mal für die Antwort.

Leider funktioniert das mit dem Befehl nicht er spielt einfach nix ab.
Habe auch mal die anderen befehle probiert bekomme leider kein einzigen ton raus nur der beim Starten, wenn er verbunden ist.
Trotzdem habe ich noch eine Frage erst mal wozu brauche ich das mit dem $EVTPART1 damit ich nicht ganz blöde bleibe.  ::)

Gruß Simonsky


Otto123

#6
$EVTPART1 ist der zweite Teil des $EVENT der an den Leerstellen zerlegt quasi ein Array 0..x ergibt
mp3 http://irgendwasist Dein EVENT aus setList
in $EVTPART1 steht http://irgendwas

Im MQTT2_SERVER kannst Du doch überwachen was gesendet wird? Show MQTT Traffic ganz oben links :)

Und es ist immer gut eine aktuelles list zu zeigen - damit wir nicht so "blöde im Salat stochern müssen"  ;D
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

simonsky

Hallo Otto
danke für die schnelle Antwort.

es wird folgender Befehl gesendet SENT

/mrdiynotifier/play

$EVTPART1 http://192.168.179.10/opt/fhem/mp3/Klingel.mp3








simonsky

Nachtrag denke so sollte es richtig heißen mp3 /mrdiynotifier/play http://192.168.179.10/opt/fhem/mp3/Klingel.mp3

Leider geht das auch nicht.

DetlefR

#9
Hallo,

schick doch mal das Ergebnis von
Zitatlist -r MQTT2_MrDIY_Notifier

Ich denke mal, irgendwie erzählen wir nicht vom gleichen ;)

Edit: Gern auch noch einen Screenshot

simonsky

#10
define MQTT2_MrDIY_Notifier MQTT2_DEVICE MrDIY_Notifier
attr MQTT2_MrDIY_Notifier readingList MrDIY_Notifier://status:.* status
attr MQTT2_MrDIY_Notifier room MQTT2_DEVICE
attr MQTT2_MrDIY_Notifier setList mp3 /mrdiynotifier/play $EVTPART1 http://streams.ilovemusic.de/iloveradio2.mp3

setstate MQTT2_MrDIY_Notifier mp3
setstate MQTT2_MrDIY_Notifier 2022-08-15 15:19:19 IODev MQTT_Server
setstate MQTT2_MrDIY_Notifier 2022-08-15 16:08:49 state mp3
setstate MQTT2_MrDIY_Notifier 2022-08-15 18:32:11 status idle


so wurde es automatisch angelegt nur die set liste ist von mir


DetlefR

ZitatsetList mp3 /mrdiynotifier/play $EVTPART1 http://streams.ilovemusic.de/iloveradio2.mp3

Das ist doppelt.
Nimm mal nur $EVTPART1
ZitatsetList mp3 /mrdiynotifier/play $EVTPART1
Die Adresse kommt dann in das Eingabefeld hinter "set  MQTT2_MrDIY_Notifier mp3". Da wo auf deinem Bild noch "attrTemplate" steht.

Alternativ, aber nicht schön
set MQTT_Server publish /mrdiynotifier/play http://streams.ilovemusic.de/iloveradio2.mp3


simonsky

Klappt leider auch nicht anscheinend mache ich irgendwas falsch oder der Player geht nicht richtig.
Leider hat der auch kein web interface damit man irgendwas mal sehen würde.

DetlefR

Versuch mal was einfacheres.
Mach aus dem mp3 ein say und schick ein einfaches Hallo.

set MQTT_Server publish /mrdiynotifier/say hallo
Das ganze einfach mal in die Kommandozeile

Otto123

#14
@simonsky Zeig doch mal ein list MQTT2_MrDIY_Notifier  und nicht die Raw Def.

Das hier zumindest:
attr MQTT2_MrDIY_Notifier setList mp3 /mrdiynotifier/play $EVTPART1 http://streams.ilovemusic.de/iloveradio2.mp3nicht im Sinne der Ansage.
So in etwa war es gemeint:
attr MQTT2_MrDIY_Notifier setList mp3:textField /mrdiynotifier/play $EVTPART1
Damit könntest Du damit etwas sinnvolles senden
set MQTT2_MrDIY_Notifier  mp3 http://streams.ilovemusic.de/iloveradio2.mp3
In der WebUI kannst Du dann einfach die URL in das Textfeld werfen und auf set drücken.

Ich sehe allerdings gerade: das Gerät auf dem zweiten Bild ist verstümmelt, da fehlt ein topic! Hatte ich gesagt das Bilder Bäh sind!?

Die Frage ist ja, ob der Topic den wir hier vermuten überhaupt stimmt!?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz