Hauptmenü

Shelly Button1 mit Fhem

Begonnen von Kurt77, 28 Juli 2020, 16:46:42

Vorheriges Thema - Nächstes Thema

Otto123

Oh Mann, da bin ich einfach drüber gegangen. Das habe ich nicht realisiert - Entschuldigung.
@Kurt
Ist dein Sonos insgesamt noch in Funktion, oder ist dein Player zu der Zeit wenn es nicht mehr funktioniert disappeared? Das Problem haben ja ein paar Leute hier im Forum. Reiner hat aber eine neue Version von Sonos rausgebracht, hast Du die schon?

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

Kurt77

Zitat von: Wzut am 01 August 2020, 17:16:50
@Otto, IMHO war das kein "Witz" , seine Posts sehen stark nach Kampf mit einem Screenreader aus.
Ich kämpfe nicht mit meinem Screenreader, sondern mit nicht vollständig barrierefreier Forensoftware!
Gruß Kurt

Kurt77

Zitat von: Otto123 am 02 August 2020, 00:01:13
Oh Mann, da bin ich einfach drüber gegangen. Das habe ich nicht realisiert - Entschuldigung.
Hallo Otto,
Kein Problem, kein Grund für eine Entschuldigung. Danke für Deine bisher gezeigte Geduld!
[quote author=Otto123 link=topic=113182.msg1075736#msg1075736
@Kurt
Ist dein Sonos insgesamt noch in Funktion, oder ist dein Player zu der Zeit wenn es nicht mehr funktioniert disappeared? Das Problem haben ja ein paar Leute hier im Forum. Reiner hat aber eine neue Version von Sonos rausgebracht, hast Du die schon?

Gruß Otto
[/quote]
Ich habe den forenbeitrag schon gelesen. Die neue Version werde ich schnelllstmöglich einspielen, aber nicht mehr heute.

Ich habe gesehen dass Sonos_Esszimmer noch "lebt", aber dafür steht ein anderer Player, der aktuell einen stream abspielt auf "disapeared".

Danke und schönen Abend!
Kurt

Kurt77

Hallo Otto,
nach dem Löschen und nachfolgender Neuanlage des Sonos-Device läuft jetzt alles seit 2 Tagen stabil.

Jetzt geht's natürlich weiter.
Ziel ist nun, die Mehrfachnutzung eines Schalters zu implementieren. Ich will also 3 Radiosender der Reihe nach durchschalten. Dazu gibt es ja auch einen sehr brauchbaren Wiki-Eintrag.

Auf dem Weg dahin bin ich über readingsval gestolpert.
Es funktioniert:

define n_test notify Shelly1Button1:event:.SSS { if ( ReadingsVal ("Sonos_Kueche","Volume",99 ) <  50 ) { fhem "set Sonos_Buero speak 40 de Hallo" }}

Es funktioniert nicht:

define n_test notify Shelly1Button1:event:.SSS { if ( ReadingsVal ("Sonos_Kueche","currentSender","" ) eq "NDR%20Info" ) { fhem "set Sonos_Buero speak 40 de Hallo" }}

Was ist beim 2. Notify falsch?

Danke und Gruß,
Kurt

Otto123

#34
Hallo Kurt,

ich glaube die code Tags sind eine unlösbare Aufgabe für Dich. Lass die einfach weg, es geht glaube ich ohne besser. Ich habe keine Ahnung ob man in der Forensoftware etwas für Barrierefreiheit tun kann, aber ich werde mich mal etwas damit beschäftigen.

Zu Deiner Frage: Das Problem ist schon verrückt, ich weiß, dass man den Sender so wie Du geschrieben hast übergeben muss - also Leerzeichen durch %20 ersetzt, quasi url encoded.
In dem Fall des Vergleiches darfst Du es nicht, also richtig muss es heißen:
( ReadingsVal ("Sonos_Kueche","currentSender","" ) eq "NDR Info" )
Ich habe das bei mir gerade getestet.
Du kannst ja den currentSender mal auslesen. So direkt in der FHEM Kommandozeile:
{ ReadingsVal ("Sonos_Kueche","currentSender","" )}Damit weißt Du was drin steht und genau auf diesen String musst Du mit eq testen.

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

Kurt77

Hallo Otto,
danke, das Notify funktioniert nun.

Was nicht funktioniert hat, ist die eingabe in der Kommandozeile:
syntax error at (eval 1242) line 1, at EOF

Zum Thema Code Tags. ja, das scheint ein unlösbares Problem zu sein, weil Deine (z.B. Post #18) und meine (z.B. Post #33) für mich identisch aussehen!
Muss ich bei Gelegenheit meine Frau mal draufgucken lassen.

Danke und noch einen schönen Tag!
Kurt

Otto123

Sorry Kurt, da war eine Klammer zu viel. Ich habe es oben korrigiert ;)

Dir auch einen schönen Tag
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

TomLee

#37
Hallo,

einfach im Event-Monitor das Event (die ganze Zeile) markieren auf welches das notify reagieren soll und mit dem Button oben 'Create/Modify Device' ein notify erstellen.

Angenommen die drei Radiosender sind in dem Reading RadiosList vorhanden, dann kannst diesen Code hier:

my $l = ReadingsVal("Sonos_Kueche","RadiosList","unknown");
$l =~ s/\|/,/g;
return fhem("set Sonos_Kueche StartRadio /".Each('Sonos_Kueche', $l)."/");

einfach in der DEF des notify in die {} eintragen.

Ergebnis : Mit jedem Event auf welches das notify reagiert wird der nächste Radiosender in RadiosList gestartet, am Ende der Liste wird wieder von vorne angefangen.

Gruß

Thomas

Kurt77

Zitat von: TomLee am 05 August 2020, 09:55:37
Hallo,

einfach im Event-Monitor das Event (die ganze Zeile) markieren auf welches das notify reagieren soll und mit dem Button oben 'Create/Modify Device' ein notify erstellen.

Angenommen die drei Radiosender sind in dem Reading RadiosList vorhanden, dann kannst diesen Code hier:

my $l = ReadingsVal("Sonos_Kueche","RadiosList","unknown");
$l =~ s/\|/,/g;
return fhem("set Sonos_Kueche StartRadio /".Each('Sonos_Kueche', $l)."/");

einfach in der DEF des notify in die {} eintragen.

Ergebnis : Mit jedem Event auf welches das notify reagiert wird der nächste Radiosender in RadiosList gestartet, am Ende der Liste wird wieder von vorne angefangen.

Gruß

Thomas
Hallo Thomas,
1. Wie kriege ich denn die 3 Radiosender in die RadiosList rein?

2. Der Code sieht dann also genau so aus?
define n_test notify Shelly1Button1:event:.SSS {
my $l = ReadingsVal("Sonos_Kueche","RadiosList","unknown")
$l = s/\|/,/g
return fhem("set Sonos_Kueche StartRadio /".Each('Sonos_Kueche', $l)."/")

3. Ich hätte gerne vor jedem Senderstart noch eine sprachdurchsage des Sendernamens.

Danke und Gruß,
Kurt

TomLee

#39
Sry, schon wieder nicht mehr dran gedacht obwohl das erst 1 1/2 Wochen her ist  :P https://forum.fhem.de/index.php/topic,10033.msg1073968.html#msg1073968

Du setzt das Attribut "getListsDirectlyToReadings" auf 1 am zentralen Sonos-Device, damit werden nach einem get Sonos_Kueche Radios die Readings "RadiosList" und "RadiosListAlias" gesetzt.

Bei mir hat das bisher nur beim ersten mal geklappt, ein weiteres get Sonos_Kueche Radios aktualisiert die Readings bisher nicht obwohl neue Radiosender in der App hinzugekommen sind.
Ich würde die Radiosender also vor dem ersten get Sonos_Kueche Radios in der App hinzufügen.
edit: das mit dem get Sonos_Kueche Radios klappt doch, die Readings werden nur stark zeitverzögert aktualisiert. Kann aber aktuell auch an meinem Netz liegen, mein Switch macht derzeit Probleme, gibt glaub ich dern Geist auf.


Es gibt auch noch das Attribut "getRadiosListAtNewVersion" das sollte die Readings "RadiosList" und "RadiosListAlias" automatisch aktualisieren, kommt aber erst mit der nächsten Version. https://forum.fhem.de/index.php/topic,10033.msg1074157.html#msg1074157


"Ich hätte gerne vor jedem Senderstart noch eine sprachdurchsage des Sendernamens."

Die ganzen current.*-Readings haben erst einen Inhalt wenn der Sender anfängt zu spielen, man könnte nach dem starten den Sender ansagen lassen.
Schau mal erst das die  Readings "RadiosList" und "RadiosListAlias" bekommst und das notify klappt.

Beta-User

Zitat von: TomLee am 05 August 2020, 14:02:17
"Ich hätte gerne vor jedem Senderstart noch eine sprachdurchsage des Sendernamens."

Die ganzen current.*-Readings haben erst einen Inhalt wenn der Sender anfängt zu spielen, man könnte nach dem starten den Sender ansagen lassen.
Schau mal erst das die  Readings "RadiosList" und "RadiosListAlias" bekommst und das notify klappt.
@TomLee: Das Each() sollte doch einen Sendernamen zurückliefern? Dann kann man den m.E. auch durchsagen lassen, oder übersehe ich was (@Kurt77: ich habe die Hardware nicht und kann daher nur tippen)?
________________
@Kurt77:
Sorry, wußte nicht, dass es für dich schwieriger ist, Links zu verfolgen und Infobausteine zusammenzupuzzeln. Sorry, wenn daher irgendwo was falsch rübergekommen sein sollte.

Was Code-Tags bzw. Formatierung angeht: mach doch einfach ein paar "--------" in eine neue Zeile, dann den Code/das list usw., und dann wieder eine abschließende Zeile (wieder "----", oder "+++++" oä.. Dann dürfte es für dich besser erkennbar sein, was du "eingekastelt" hast, und wir können das "bemühen" erkennen (sonst mosert ggf. der nächste wegen der "Tags" rum, ohne die Hintergründe zu kennen...).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

TomLee

#41
"@TomLee: Das Each() sollte doch einen Sendernamen zurückliefern? Dann kann man den m.E. auch durchsagen lassen, oder übersehe ich was"

Zur Wiedergabe mit StartRadio wird aber die Schreibweise mit den Punkten (Regulärer-Ausdruck-Schreibweise oder auch wie vor kurzem URL-encoded) benötigt, die ist weniger geeignet zur Sprachansage.

"setstate Sonos_Wohnzimmer 2020-07-24 13:01:27 RadiosList 011.FM.-.Non.Stop.60s|1LIVE.diggi..Top.40.Pop.|DASDING.92.5..Euro-Hits.|Hitradio.Ö3.99.9..Österreichisch.|Nota.Masria..Gemeinden.|PsyRadio.Chillout|Radio.Regenbogen|SWR4.Baden-Württemberg|SWR4.Rheinland-Pfalz|die.neue.welle.101.8..Rock.
setstate Sonos_Wohnzimmer 2020-07-24 13:01:27 RadiosListAlias 011.FM - Non Stop 60s|1LIVE diggi (Top 40/Pop)|DASDING 92.5 (Euro-Hits)|Hitradio Ö3 99.9 (Österreichisch)|Nota Masria (Gemeinden)|PsyRadio Chillout|Radio Regenbogen|SWR4 Baden-Württemberg|SWR4 Rheinland-Pfalz|die neue welle 101.8 (Rock)"

Man könnte jetzt so Spielchen machen wie gestern und über den Index eines Array den passenden Sender aus RadiosListAlias nehmen.

edit:

Achso oder einfach die Punkte durch Leerzeichen ersezen  ;D

TomLee

"oder übersehe ich was"

ich denke ja, für die Sprachausgabe muss einmal Each aufgerufen und dann wieder für die Wiedergabe StartRadio.

Also mein ich bekommt man mit der Sprachausgabe den nächsten Sender angesagt, mit StartRadio schaltet man aber schon wieder auf den nächsten Sender  ;D

Beta-User

"für die Sprachausgabe muss einmal Each aufgerufen und dann wieder für die Wiedergabe StartRadio".

Warum nicht die Rückmeldung von Each() in eine Variable packen *grins*?
(Bzw. diese Variable dann nochmal in eine zweite Variable umpacken für die punktbereinigte Variante zum Zwecke der Sprachausgabe?)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

TomLee

"Warum nicht die Rückmeldung von Each() in eine Variable packen *grins*?"

Ja soweit hatte ich auch schon gebaut und das funzt erst mal auch beim (um)schalten, bis mir die Erkentniss kam das so oder so Each aufgerufen wird und der Index erhöht wird oder versteh ich es immer noch nicht

          my $l = ReadingsVal("$sondev","RadiosList","unknown");
$l =~ s/\|/,/g;
my $lv = Each($sondev, $l)."/";
return fhem("set $sondev StartRadio /".$lv);