"Sender- /Inputliste" Radio weiterschalten? Doif / notify / sub?

Begonnen von aherby, 19 Juli 2020, 21:24:20

Vorheriges Thema - Nächstes Thema

aherby

Hallo Zusammen,

ich würde gern bei meinem DualRadio die Sender oder Input-Quellen mittels Homematic-Taster weiterschalten, finde aber keinen Weg / Lösung.

Das Radio hat 7 Input-Varianten, die ich durch kurzen Tastendruck auf den HM-Schalter durchschalten möchte:
Zitat
internetrado
spotify
ukw
dab
...


set DualIR6S input ...

setzt man die Eingangsquelle

Mit den folgenden Code hatte ich eine Taste vom HM-PB-6-WM55 halt doppelt belegt um wenigstens zwei Zustände zu erhalten

([KuTaster1:2.PRESS_LONG] eq "pressed") (trigger RD_KUECHE_HR3) DOELSEIF ([KuTaster1:2.PRESS_SHORT] eq "pressed") (trigger RD_KUECHE_FFH)


Dankeschön

Gruß aherby
FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.

amenomade

Damian hatte den Code für eine Durchschaltung mal erwähnt: https://forum.fhem.de/index.php/topic,105545.msg995335.html#msg995335

Bei deinem Triggern musst Du aber nicht nach Zustand (eq "pressed") sondern nach Events schalten.

[Taster:"on"] statt Taster eq "on"
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

aherby

Hallo amenomade,

danke für den Hinweis zum andern Beitrag.
Leider funktioniert folgendes nicht oder ich verstehe es gerade nicht


init {@{$_a}=qw/internetradio spotify mediaplayer dab ukw aux-modus dmr/;$_counter=0}\ {if ([KuTaster1:2.PRESS_SHORT:"pressed"] ) {set_State($_a[$_counter++]);fhem_set("DualIR6S input $_a[$_counter]"); $_counter=($_counter==@{$_a} ? 0:$_counter)}}


Der Taster hat halt 6 Wippen und leider enthält das Reading nur "PRESS_SHORT" oder "PRESS_LONG" für die einzelne Wippe
Zitat
2.PRESS_LONG                pressed      2020-07-14 10:09:13
2.PRESS_LONG_RELEASE 1                2020-07-14 10:09:13
2.PRESS_SHORT              pressed      2020-07-19 22:56:30
FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.

amenomade

Ich dachte, Du willst mit einem Event (immer das gleiche, z.B. "2.PRESS_SHORT pressed ") die Inputs duchschalten: internetradio =pressed=> spotify =pressed=> ukw =pressed=> dab ...=pressed=>internetradio...

Was willst Du denn genau machen? Welche Aktion => welcher Schaltbefehl?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

aherby

Hallo,

ja der Taster soll mittel "pressed" die "Inputs" durchschalten.
So wie du es beschrieben hast
FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

aherby

Servus
meinst du so?

Zitat
Internals:
   DEF        init {@{$_a}=qw/internetradio spotify mediaplayer dab ukw aux-modus dmr/;$_counter=0}\ {if ([KuTaster12:"on"] ) {set_State($_a[$_counter++]);fhem_set("DualIR6S input $_a[$_counter]"); $_counter=($_counter==@{$_a} ? 0:$_counter)}}
   FUUID      5f14af1f-f33f-94da-db0f-cc701dc01e5e8ec7
   MODEL      Perl
   NAME       schrittSchalter
   NOTIFYDEV  global
   NR         817
   NTFY_ORDER 50-schrittSchalter
   STATE      ???
   TYPE       DOIF
   VERSION    22398 2020-07-14 09:32:05
   READINGS:
     2020-07-19 23:55:55   block_init      executed
     2020-07-19 23:17:26   mode            enabled
   Regex:
     accu:
   condition:
     0          @{$hash->{var}{a}}=qw/internetradio spotify mediaplayer dab ukw aux-modus dmr/;$hash->{var}{counter}=0
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
     globalinit 1
     last_timer 0
     sleeptimer -1
   perlblock:
     0          init
     init       0
   uiTable:
   var:
     counter    0
     a:
       internetradio
       spotify
       mediaplayer
       dab
       ukw
       aux-modus
       dmr
Attributes:
   event-on-change-reading .*
   room       TEST
FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.

amenomade

Ja so meinte ich. Allerdings in Code Tags (das # Zeichen im Editormenü statt dieses Zitat Zeichen)

Hat er nicht gemeckert, wenn Du diese Definition eingetragen hast? Das kann ich mir nicht vorstellen. Es sei denn, Du hast direkt in der fhem.cfg Datei editiert... Ich kriege DItest DOIF: no right bracket: {@{$hash->{var}{a}}=qw/internetradio spotify mediaplayer dab ukw aux-modus dmr/
Unknown command $_counter=0}\, try help.
Unknown command fhem_set("DualIR6S, try help.
Unknown command $_counter=($_counter==@{$_a}, try help.



Jetzt gehst Du auf deinem DOIF über die FHEM Weboberfläsche, klickst Du auf DEF und ersetzt dieses Backslash in der Mitte durch ein Return (Zeilenumbruch)
Und poste dann wieder ein "list"
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

EDIT: und ersetze set_State($_a[$_counter++]);fhem_set("DualIR6S input $_a[$_counter]"); durch set_State($_a[$_counter]);fhem_set("DualIR6S input $_a[$_counter++]");
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

aherby

Radio zuckt aber schaltet nicht weiter...


Internals:
   DEF        init {@{$_a}=qw/internetradio spotify mediaplayer dab ukw aux-modus dmr/;$_counter=0}
{if ([KuTaster12:"on"] ) {set_State($_a[$_counter]);fhem_set("DualIR6S input $_a[$_counter++]");; $_counter=($_counter==@{$_a} ? 0:$_counter)}}
   FUUID      5f14af1f-f33f-94da-db0f-cc701dc01e5e8ec7
   MODEL      Perl
   NAME       schrittSchalter
   NOTIFYDEV  KuTaster12,global
   NR         817
   NTFY_ORDER 50-schrittSchalter
   STATE      ???
   TYPE       DOIF
   VERSION    22398 2020-07-14 09:32:05
   READINGS:
     2020-07-20 02:08:45   block_init      executed
     2020-07-20 02:08:45   mode            enabled
   Regex:
     accu:
     cond:
       KuTaster12:
         1:
           &STATE     ^KuTaster12$
   condition:
     0          @{$hash->{var}{a}}=qw/internetradio spotify mediaplayer dab ukw aux-modus dmr/;$hash->{var}{counter}=0
     1          if (::EventDoIf('KuTaster12',$hash,'on',1) ) {set_State($hash->{var}{a}[$hash->{var}{counter}]);fhem_set("DualIR6S input $hash->{var}{a}[$hash->{var}{counter}++]");; $hash->{var}{counter}=($hash->{var}{counter}==@{$hash->{var}{a}} ? 0:$hash->{var}{counter})}
   helper:
     DEVFILTER  ^global$|^KuTaster12$
     NOTIFYDEV  global|KuTaster12
     globalinit 1
     last_timer 2
     sleeptimer -1
   perlblock:
     0          init
     1          block_02
     init       0
   trigger:
     all         KuTaster12
   uiTable:
   var:
     counter    0
     a:
       internetradio
       spotify
       mediaplayer
       dab
       ukw
       aux-modus
       dmr
Attributes:
   event-on-change-reading .*
   room       TEST
FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.

amenomade

So... das DOIF sieht jetzt schon besser aus.

KuTaster12:"on" ? Was ist jetzt KuTaster12 ?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

aherby

Sorry der Taster
KuTaster12 war ein Test nur den Kanal vom Tester zu haben.


Internals:
   DEF        init {@{$_a}=qw/internetradio spotify mediaplayer dab ukw aux-modus dmr/;$_counter=0}
{if ([KuTaster1:2.PRESS_SHORT eq "pressed"] ) {set_State($_a[$_counter]);fhem_set("DualIR6S input $_a[$_counter++]");; $_counter=($_counter==@{$_a} ? 0:$_counter)}}
   FUUID      5f14af1f-f33f-94da-db0f-cc701dc01e5e8ec7
   MODEL      Perl
   NAME       schrittSchalter
   NOTIFYDEV  global,KuTaster1
   NR         817
   NTFY_ORDER 50-schrittSchalter
   STATE      ???
   TYPE       DOIF
   VERSION    22398 2020-07-14 09:32:05
   READINGS:
     2020-07-20 02:36:33   block_init      executed
     2020-07-20 02:36:33   mode            enabled
   Regex:
     accu:
     cond:
       KuTaster1:
         1:
           2.PRESS_SHORT eq "pressed" ^KuTaster1$:^2.PRESS_SHORT eq "pressed":
   condition:
     0          @{$hash->{var}{a}}=qw/internetradio spotify mediaplayer dab ukw aux-modus dmr/;$hash->{var}{counter}=0
     1          if (::ReadingValDoIf($hash,'KuTaster1','2.PRESS_SHORT eq "pressed"') ) {set_State($hash->{var}{a}[$hash->{var}{counter}]);fhem_set("DualIR6S input $hash->{var}{a}[$hash->{var}{counter}++]");; $hash->{var}{counter}=($hash->{var}{counter}==@{$hash->{var}{a}} ? 0:$hash->{var}{counter})}
   helper:
     DEVFILTER  ^global$|^KuTaster1$
     NOTIFYDEV  global|KuTaster1
     globalinit 1
     last_timer 2
     sleeptimer -1
   perlblock:
     0          init
     1          block_02
     init       0
   readings:
     all         KuTaster1:2.PRESS_SHORT eq "pressed"
   uiTable:
   var:
     counter    0
     a:
       internetradio
       spotify
       mediaplayer
       dab
       ukw
       aux-modus
       dmr
Attributes:
   event-on-update-reading .*
   room       TEST


Irgendwie kann ich nur folgendes eingeben

[KuTaster1:2.PRESS_SHORT eq "pressed"]


bei

[KuTaster1:2.PRESS_SHORT:"pressed"]
kommt eine Fehlermeldung
FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.

amenomade

#12
Wenn Du eine Fehlermeldung hast, wäre es hilfreich zu erwähnen, welche Fehlermeldung es ist...

Wahrscheinlich weil das Event "2.PRESS_SHORT:.pressed" ist.
Schau mal einfach im EventMonitor, finde das Event, markiere die Zeile und klicke auf "Create/Modify Device", dann DOIF. Du wirst die Regex sehen.

Ich vermute, das muss irgendwie so aussehen:
[KuTaster1:"^2.PRESS_SHORT:.pressed$"]
Mit oder ohne Punkt, ich weiss nicht
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

aherby

Der Event-Monitor mit

... {if ([KuTaster1:2.PRESS_SHORT ep "pressed"]) ...

gibt folgendes aus

2020-07-20 02:57:42 HMCCUDEV KuTaster1 2.PRESS_SHORT: pressed


Ändere ich den Code in

{if ([KuTaster1:2.PRESS_SHORT:"pressed"])

kommt diese Meldung:


schrittSchalter DOIF: no round brackets in regular expression: init {@{$hash->{var}{a}}=qw/internetradio spotify mediaplayer dab ukw aux-modus dmr/;$hash->{var}{counter}=0}
{if ([KuTaster1:2.PRESS_SHORT:"pressed"]) {set_State($hash->{var}{a}[$hash->{var}{counter}]);fhem_set("DualIR6S input $hash->{var}{a}[$hash->{var}{counter}++]");; $hash->{var}{counter}=($hash->{var}{counter}==@{$hash->{var}{a}} ? 0:$hash->{var}{counter})}}

FHEM 6.0 auf Raspberry Pi 4b 4GB, RaspberryMatic auf Raspi3b mit Charly-Funkmodul, ZigeeBridge mt deCONZ... . Homematic mittels HMCCU, Sonos 3xS1, 1xS6 (Play5 in der 2te Generation), 1xS9 (Soundbar), 1x SonosSub
1-Wire® to I2C host interface with ESD mit DS18B/S20.

Beta-User

Vielleicht hilft auch das hier weiter:
Zitat von: rudolfkoenig am 01 Mai 2020, 10:33:00
Evtl. kannst Du etwas mit der Each Funktion aus fhem.pl anfangen, was bei jedem Aufruf den naechsten Wert aus der Liste zurueckliefert, und wenn die Liste zu Ende ist, von vorne anfaengt.

define Test_ntfy notify Button { fhem "set Lamp ".Each("Lamp", "SCHWACH,AUS,MITTEL,AUS,HELL,AUS") }
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