Hauptmenü

Volume Steuerung eines Devices

Begonnen von SouzA, 28 Oktober 2021, 08:20:08

Vorheriges Thema - Nächstes Thema

SouzA

Moin,

ich habe eine (für mich) Kuriosität entdeckt.
Und ich würde gerne wissen wieso das so ist.
Also, ich habe ein GoogleCast-Device eingebunden:
Internals:
   CASTNAME   Kitchen
   DEF        googlecast "Kitchen"
   FHEMPYTYPE googlecast
   FUUID      6163e408-f33f-7c83-5ae0-dfbf6336d2a11ed8
   FVERSION   10_PythonModule.pm:0.182830/2019-01-16
   IODev      local_pybinding
   NAME       GC_Kueche
   NR         631
   PYTHONTYPE googlecast
   STATE      online
   TYPE       PythonModule
   READINGS:
     2021-10-27 18:18:59   app_id         
     2021-10-11 09:13:42   cast_type       audio
     2021-10-28 07:46:15   connection      connected
     2021-10-27 18:18:59   display_name   
     2021-10-11 09:13:42   ignore_cec      0
     2021-10-11 09:28:56   mediaPlayerState UNKNOWN
     2021-10-11 09:28:56   mediaStreamType UNKNOWN
     2021-10-11 09:13:42   model_name      Chromecast Audio
     2021-10-11 09:13:43   mute            0
     2021-10-11 09:13:42   name            Kitchen
     2021-10-27 18:18:59   session_id     
     2021-10-28 07:46:04   spotify_login   <html></html>
     2021-10-28 07:46:06   spotify_user    login required
     2021-10-28 07:46:15   state           online
     2021-10-27 18:18:59   status_text     
     2021-10-27 18:18:59   transport_id   
     2021-10-11 09:13:42   uuid            6c42c2d
     2021-10-28 07:54:43   volume          70
   args:
     GC_Kueche
     PythonModule
     googlecast
     Kitchen
   argsh:
Attributes:
   cmdIcon    pause:rc_PAUSE play:rc_PLAY
   event-on-change-reading .*
   event-on-update-reading .*
   group      googlecast
   icon       gassistant
   room       fhempy,Multiroom
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
   webCmd     volume:play:pause


Dieses Device will ich in der Lautstärke begrenzen, wenn es über Volume 35 geht.
Der Verstärker der mit dem Chromecast bespielt wird, übersteuert sonst...
Also ein DOIF:

Internals:
   DEF        (
[GC_Kueche:volume] > 35
)
(set GC_Kueche volume 35)
   FUUID      5cc58ebb-f33f-7c83-dbfe-14acc055b6b63560
   FVERSION   98_DOIF.pm:0.249050/2021-09-01
   MODEL      FHEM
   NAME       di_multiroom_set_kitchen_vol_35
   NOTIFYDEV  global,GC_Kueche
   NR         490
   NTFY_ORDER 50-di_multiroom_set_kitchen_vol_35
   STATE      cmd_1
   TYPE       DOIF
   VERSION    24905 2021-09-01 18:35:54
   READINGS:
     2021-10-28 07:53:05   cmd             1
     2021-10-28 07:53:05   cmd_event       di_multiroom_set_kitchen_vol_35
     2021-10-28 07:53:05   cmd_nr          1
     2021-10-28 07:53:02   mode            enabled
     2021-10-28 07:53:05   state           cmd_1
   Regex:
     accu:
     collect:
     cond:
       GC_Kueche:
         0:
           volume     ^GC_Kueche$:^volume:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0            ::ReadingValDoIf($hash,'GC_Kueche','volume') > 35
   do:
     0:
       0          set GC_Kueche volume 35
     1:
   helper:
     DEVFILTER  ^global$|^GC_Kueche$
     NOTIFYDEV  global|GC_Kueche
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   
     timerevent
     timerevents
     timereventsState
     triggerDev
   readings:
     all         GC_Kueche:volume
   uiState:
   uiTable:
Attributes:
   do         always
   icon       helper_doif
   room       Multiroom


Wenn ich jetzt über die Google App, also von extern, die Lautstärke am Chromecast verstelle, dann triggert das DOIF und stellt mein Device auf Volume 35.
Wenn ich allerdings in fhem die Lautstärke ändere, dann triggert das DOIF nicht.
Habe bereits aus Verzweiflung die event-attribut-Karte gezogen. Ohne Erfolg.
Warum?

Thx und bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

Ohne Auszug aus dem Eventmonitor, wird man hier nicht viel dazu sagen können.

DOIF unterbindet "Selbsttriggerung", dh. es reagiert nicht auf selbst generierte Events - vielleicht hat es damit etwas  zu tun.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SouzA

Hi,

danke für die Antwort.

Das ist das DOIF-Tools Log:
2021-10-28_09:19:52.478 GC_Kueche volume 87
2021-10-28_09:20:22.990 GC_Kueche volume 100
2021-10-28_09:20:24.631 GC_Kueche volume 68
2021-10-28_09:20:25.586 GC_Kueche volume 35
2021-10-28_09:20:26.591 GC_Kueche volume 24
2021-10-28_09:20:27.628 GC_Kueche volume 61

2021-10-28_09:21:20.610 GC_Kueche volume: 75
2021-10-28_09:21:20.862 di_multiroom_set_kitchen_vol_35 cmd_nr: 1
2021-10-28_09:21:20.862 di_multiroom_set_kitchen_vol_35 cmd: 1
2021-10-28_09:21:20.862 di_multiroom_set_kitchen_vol_35 cmd_event: GC_Kueche
2021-10-28_09:21:20.862 di_multiroom_set_kitchen_vol_35 cmd_1
2021-10-28_09:21:21.426 GC_Kueche volume: 35
2021-10-28_09:21:23.658 GC_Kueche volume: 84
2021-10-28_09:21:23.725 di_multiroom_set_kitchen_vol_35 cmd_nr: 1
2021-10-28_09:21:23.725 di_multiroom_set_kitchen_vol_35 cmd: 1
2021-10-28_09:21:23.725 di_multiroom_set_kitchen_vol_35 cmd_event: GC_Kueche
2021-10-28_09:21:23.725 di_multiroom_set_kitchen_vol_35 cmd_1
2021-10-28_09:21:24.425 GC_Kueche volume: 35
2021-10-28_09:21:25.800 GC_Kueche volume: 34
2021-10-28_09:21:26.428 GC_Kueche volume: 73
2021-10-28_09:21:26.487 di_multiroom_set_kitchen_vol_35 cmd_nr: 1
2021-10-28_09:21:26.487 di_multiroom_set_kitchen_vol_35 cmd: 1
2021-10-28_09:21:26.487 di_multiroom_set_kitchen_vol_35 cmd_event: GC_Kueche
2021-10-28_09:21:26.487 di_multiroom_set_kitchen_vol_35 cmd_1
2021-10-28_09:21:27.072 GC_Kueche volume: 35

Bis einschließlich 2021-10-28_09:20:27.628 ist die Lautstärke in fhem verändert.
Danach über die App.

Events Ansteuerung extern:
2021-10-28 09:25:42 PythonModule GG_Wohnkueche volume: 43
2021-10-28 09:25:42 PythonModule GG_Haus volume: 23
2021-10-28 09:25:42 PythonModule GG_Alarm volume: 22
2021-10-28 09:25:42 DOIF di_multiroom_set_kitchen_vol_35 cmd_nr: 1
2021-10-28 09:25:42 DOIF di_multiroom_set_kitchen_vol_35 cmd: 1
2021-10-28 09:25:42 DOIF di_multiroom_set_kitchen_vol_35 cmd_event: GC_Kueche
2021-10-28 09:25:42 DOIF di_multiroom_set_kitchen_vol_35 cmd_1
2021-10-28 09:25:42 LightScene scenes_Multiroom GC_Kueche.volume: <html><div id="GC_Kueche"  title="online" class="col2">online</div></html>
2021-10-28 09:25:42 PythonModule GC_Kueche volume: 66
2021-10-28 09:25:43 PythonModule GG_Alarm volume: 18
2021-10-28 09:25:43 PythonModule GG_Haus volume: 18
2021-10-28 09:25:43 PythonModule GG_Wohnkueche volume: 28
2021-10-28 09:25:43 LightScene scenes_Multiroom GC_Kueche.volume: <html><div id="GC_Kueche"  title="online" class="col2">online</div></html>
2021-10-28 09:25:43 PythonModule GC_Kueche volume: 35


Events Ansteuerung in fhem:
2021-10-28 09:29:24 LightScene scenes_Multiroom GC_Kueche.state: <html><div id="GC_Kueche"  title="online" class="col2">online</div></html>
2021-10-28 09:29:24 PythonModule GC_Kueche volume 58
2021-10-28 09:29:24 PythonModule GC_Kueche volume: 58
2021-10-28 09:29:25 PythonModule GG_Haus volume: 22
2021-10-28 09:29:25 PythonModule GG_Alarm volume: 21
2021-10-28 09:29:25 PythonModule GG_Wohnkueche volume: 39
2021-10-28 09:29:28 LightScene scenes_Multiroom GC_Kueche.state: <html><div id="GC_Kueche"  title="online" class="col2">online</div></html>
2021-10-28 09:29:28 PythonModule GC_Kueche volume 80
2021-10-28 09:29:28 PythonModule GC_Kueche volume: 80
2021-10-28 09:29:29 PythonModule GG_Haus volume: 25
2021-10-28 09:29:29 PythonModule GG_Wohnkueche volume: 50
2021-10-28 09:29:29 PythonModule GG_Alarm volume: 23


Es ändert sich offensichtlich immer das Reading Volume.
Nur triggern tut das DOIF nur bei extern. Ich verstehe nicht, wo für das DOIF der unterschied ist.

Thx und bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

Ich weiß nicht wie du die Lautstärke in FHEM veränderst, aber es wird hier offenbar nicht das Reading verändert - es fehlt der Doppelpunkt nach dem Reading, welcher das Reading von seinem Inhalt trennt, daher wird DOIF nicht getriggert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SouzA

#4
Hi,

dies gebe ich oben in die Leiste ein:
set GC_Kueche volume 70

das steht im DOIF-Log:
2021-10-28_09:55:33.812 GC_Kueche volume 70


das steht im Reading:
volume 70 2021-10-28 09:55:33

Und wie soll man da jetzt nen Doppelpunkt hin kriegen?

Thx und bis denn
SouzA

Edit:
Im angehängten Bild sieht man, was in der App ankommt...

Btw. Das selbe verhalten auch bei dem im fhem-Device vorhandenen Schieberegler oder den vorhandenen set-Befehl.
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

Ich vermute, dass durch den set-Befehl das Reading Volume ohne Event in dem Modul gesetzt wird.

Du kannst im DOIF aber auch auf alle Events eines Devices  reagieren mit:

https://fhem.de/commandref_DE.html#DOIF_checkReadingEvent
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SouzA

Zitat von: Damian am 28 Oktober 2021, 10:06:22
Ich vermute, dass durch den set-Befehl das Reading Volume ohne Event in dem Modul gesetzt wird.

Du kannst im DOIF aber auch auf alle Events eines Devices  reagieren mit:

https://fhem.de/commandref_DE.html#DOIF_checkReadingEvent

Das hat geholfen. Vielen Dank!

Thx und bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

SouzA

Nein doch nicht. Schade.

Das DOIF triggert dann erst bei der zweiten Volume-Änderung aus fhem heraus??
Also du denkst, das liegt am googlecast-Modul?

Thx und bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

Zitat von: SouzA am 28 Oktober 2021, 10:32:12
Nein doch nicht. Schade.

Das DOIF triggert dann erst bei der zweiten Volume-Änderung aus fhem heraus??
Also du denkst, das liegt am googlecast-Modul?

Thx und bis denn
SouzA

Wie schon gesagt, womöglich funkt da noch die Selbsttriggerung dazwischen, die das DOIF-Modul blockiert. Dafür gibt es auch ein Attribut:

https://fhem.de/commandref_DE.html#DOIF_selftrigger

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SouzA

Zitat von: Damian am 28 Oktober 2021, 11:50:26
Wie schon gesagt, womöglich funkt da noch die Selbsttriggerung dazwischen, die das DOIF-Modul blockiert. Dafür gibt es auch ein Attribut:

https://fhem.de/commandref_DE.html#DOIF_selftrigger

Moin  :)

also das mit dem Selftrigger war es auch nicht. Egal ob all oder wait...
Immer erst bei der zweiten Änderung des Volumes nach der letzten Triggerung des DOIF wird das DOIF erneut getriggert.  ???

Hast du vielleicht noch eine Idee?

Thx und bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

Poste mal die Events von diesem Vorgang.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SouzA

#11
Zitat von: Damian am 29 Oktober 2021, 07:48:16
Poste mal die Events von diesem Vorgang.
Ok.

Events (Filter: (GC_Kueche|di_multiroom_set_kitchen_vol_35))

2021-10-29 08:59:31 LightScene scenes_Multiroom GC_Kueche.state: <html><div id="GC_Kueche"  title="online" class="col2">online</div></html>
2021-10-29 08:59:31 PythonModule GC_Kueche volume 58
2021-10-29 08:59:31 PythonModule GC_Kueche volume: 58
2021-10-29 08:59:35 DOIF di_multiroom_set_kitchen_vol_35 cmd_nr: 1
2021-10-29 08:59:35 DOIF di_multiroom_set_kitchen_vol_35 cmd: 1
2021-10-29 08:59:35 DOIF di_multiroom_set_kitchen_vol_35 cmd_event: GC_Kueche
2021-10-29 08:59:35 DOIF di_multiroom_set_kitchen_vol_35 cmd_1
2021-10-29 08:59:35 LightScene scenes_Multiroom GC_Kueche.state: <html><div id="GC_Kueche"  title="online" class="col2">online</div></html>
2021-10-29 08:59:35 PythonModule GC_Kueche volume 73
2021-10-29 08:59:35 PythonModule GC_Kueche volume: 73
2021-10-29 08:59:36 LightScene scenes_Multiroom GC_Kueche.volume: <html><div id="GC_Kueche"  title="online" class="col2">online</div></html>
2021-10-29 08:59:36 PythonModule GC_Kueche volume: 35


Bei Sekunde 31 auf 58 gestellt.
Bei Sekunde 35 auf 73 gestellt....
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

Es ist mir ein Rätsel, warum es beim DOIF-Modul nicht ankommt.

Was passiert, wenn das Modul etwas anderes setzt? Z. B.

(
[GC_Kueche:volume] > 35
)
(setreading mydummy volume 35)

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

SouzA

Zitat von: Damian am 29 Oktober 2021, 09:47:11
Es ist mir ein Rätsel, warum es beim DOIF-Modul nicht ankommt.

Was passiert, wenn das Modul etwas anderes setzt? Z. B.

(
[GC_Kueche:volume] > 35
)
(setreading mydummy volume 35)


Hi,
da geht es sofort ???

(
[GC_Kueche:volume] > 35
)
##(set GC_Kueche volume 35)
(setreading mydummy volume 35)



Events (Filter: (mydummy|GC_Kueche|di_multiroom_set_kitchen_vol_35))
2021-10-29 12:18:04 dummy mydummy volume: 35
2021-10-29 12:18:04 DOIF di_multiroom_set_kitchen_vol_35 cmd_nr: 1
2021-10-29 12:18:04 DOIF di_multiroom_set_kitchen_vol_35 cmd: 1
2021-10-29 12:18:04 DOIF di_multiroom_set_kitchen_vol_35 cmd_event: GC_Kueche
2021-10-29 12:18:04 DOIF di_multiroom_set_kitchen_vol_35 cmd_1
2021-10-29 12:18:04 LightScene scenes_Multiroom GC_Kueche.state: <html><div id="GC_Kueche"  title="online" class="col2">online</div></html>
2021-10-29 12:18:04 PythonModule GC_Kueche volume 52
2021-10-29 12:18:04 PythonModule GC_Kueche volume: 52
2021-10-29 12:18:07 dummy mydummy volume: 35
2021-10-29 12:18:07 DOIF di_multiroom_set_kitchen_vol_35 cmd_nr: 1
2021-10-29 12:18:07 DOIF di_multiroom_set_kitchen_vol_35 cmd: 1
2021-10-29 12:18:07 DOIF di_multiroom_set_kitchen_vol_35 cmd_event: GC_Kueche
2021-10-29 12:18:07 DOIF di_multiroom_set_kitchen_vol_35 cmd_1
2021-10-29 12:18:07 LightScene scenes_Multiroom GC_Kueche.state: <html><div id="GC_Kueche"  title="online" class="col2">online</div></html>
2021-10-29 12:18:07 PythonModule GC_Kueche volume 41
2021-10-29 12:18:07 PythonModule GC_Kueche volume: 41


Bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee

Damian

Es ist immer ungünstig, wenn man einen Loop baut. D. h. man erzeugt Events auf die man selbst reagiert.

Sowohl DOIF als FHEM unterbinden solche Loops, damit das System sich nicht aufhängt - anscheinend bei dir mit Nebeneffekten.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF