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
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.
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
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.
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.
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
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
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
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
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
Poste mal die Events von diesem Vorgang.
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....
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)
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
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.
Zitat von: Damian am 29 Oktober 2021, 13:13:08
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.
Hättest du denn eine alternative Möglichkeit bzw. Vorschlag, wie man das lösen könnte?
Thx und bis denn
SouzA
Zitat von: SouzA am 29 Oktober 2021, 13:40:38
Hättest du denn eine alternative Möglichkeit bzw. Vorschlag, wie man das lösen könnte?
Thx und bis denn
SouzA
Sauber wäre etwas dazwischen zu schalten, z. B. einen Dummy und nur den zu schalten und mit dem DOIF auf den Dummy triggern und nur über das DOIF volume zu schalten.