100% CPU-Last durch bestimmte Light -Scene

Begonnen von The Grue, 06 August 2023, 11:13:49

Vorheriges Thema - Nächstes Thema

The Grue

Servus!

Mein Heimkino wird erst durch FHEM bedienbar - vielen Dank schon mal dafür!
Da gibt es so viele Geräte und Leuchten die aufeinander abgestimmt bedient werden müssen. Und durch FHEM ist das mit dem Setzen einer Lightscene möglich.

Leider springt seit kurzem die CPU-Last von FEHM auf 100%, wenn ich die Szene Kino_Start setze. FHEM versagt damit praktisch komplett seinen Dienst, die ganze Heimautomatisierung klemmt. Das Kino startet natürlich auch nicht ordentlich :(

Die Szene:
#     Kino_Start:
#       Cinema.Rack on
#       kino.avr   ;sleep kino.avr.off ; set kino.avr on
#       kino.dekoleiste dim 99
#       kino.links.licht off
#       kino.mitte.licht off
#       kino.pc.power on
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 99
#       kino.theke.downlight off
#       kino.theke.licht off
#       kino.tuer.licht on

Spannend is vermutlich der Teil

#       Cinema.Rack on
#       kino.avr   ;sleep kino.avr.off ; set kino.avr on

Cinema.Rack ist ein Fibaro Switch, der die Kinotechnik ein/aus schaltet. Bevor er eingeschaltet wird, ist kino.avr "offline". Es dauert dann eine Weile, bis er online kommt, der State ist dann "off". Dann möchte ich ihn einschalten. Das hat eine Weile hervorragend funktioniert.

Ich schreibe das, weil ich *vermute*, daß hier der Hund begraben sein könnte. Gerade kann ich's leider nicht ausprobieren. Was meint Ihr? Was (außer dem sleep mal wegzulassen) könnte ich noch zur Fehlersuche testen?

Hier mal die ganze Szene:

define kino.Szenen LightScene kino.mitte.licht kino.tuer.licht kino.links.licht kino.rechts.licht kino.theke.downlight kino.pc.power kino.avr kino.dekoleiste kino.theke.arbeitsplatte Cinema.Rack Cinema.PID
attr kino.Szenen alias Kino: Szenen
attr kino.Szenen room Maschinenraum,Kino
attr kino.Szenen switchingOrder Kino_Start:Cinema.Rack,kino.avr,kino.pc.power,kino.dekoleiste,kino.tuer.licht,.* \
                                Kino_Film_Pause:kino.dekoleiste,kino.theke.arbeitsplatte,.* \
                                Kino_Film_läuft:.*.licht,kino.dekoleiste,.*\
                                Licht_Mitte:kino.mitte.licht,.*
#   CONFIGFILE ./log/LightScenes.save
#   DEF        kino.mitte.licht kino.tuer.licht kino.links.licht kino.rechts.licht kino.theke.downlight kino.pc.power kino.avr kino.dekoleiste kino.theke.arbeitsplatte Cinema.Rack Cinema.PID
#   FUUID      5d31bec9-f33f-39ae-161e-27a1b72126470b0d
#   HAS_DataDumper 1
#   HAS_JSON   1
#   NAME       kino.Szenen
#   NR         278
#   NTFY_ORDER 50-kino.Szenen
#   STATE      Alles_aus
#   TYPE       LightScene
#   eventCount 225
#   mayBeVisible 1
#   CONTENT:
#     Cinema.PID 1
#     Cinema.Rack 1
#     kino.avr   1
#     kino.dekoleiste 1
#     kino.links.licht 1
#     kino.mitte.licht 1
#     kino.pc.power 1
#     kino.rechts.licht 1
#     kino.theke.arbeitsplatte 1
#     kino.theke.downlight 1
#     kino.tuer.licht 1
#   READINGS:
#     2023-08-06 10:36:39   state           Alles_aus
#   SCENES:
#     Alles_aus:
#       Cinema.PID desired 8.0
#       kino.avr   off
#       kino.dekoleiste dim 0
#       kino.kodi  off
#       kino.links.licht off
#       kino.mitte.licht off
#       kino.pc.power off
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 0
#       kino.theke.downlight off
#       kino.theke.licht off
#       kino.tuer.licht off
#     Kino_Film_Pause:
#       kino.avr   on
#       kino.dekoleiste dim 99
#       kino.links.licht off
#       kino.mitte.licht off
#       kino.pc.power on
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 99
#       kino.theke.downlight off
#       kino.theke.licht on
#       kino.tuer.licht off
#     Kino_Film_läuft:
#       kino.avr   on
#       kino.dekoleiste dim 0
#       kino.links.licht off
#       kino.mitte.licht off
#       kino.pc.power on
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 0
#       kino.theke.downlight off
#       kino.theke.licht off
#       kino.tuer.licht off
#     Kino_Start:
#       Cinema.Rack on
#       kino.avr   ;sleep kino.avr.off ; set kino.avr on
#       kino.dekoleiste dim 99
#       kino.links.licht off
#       kino.mitte.licht off
#       kino.pc.power on
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 99
#       kino.theke.downlight off
#       kino.theke.licht off
#       kino.tuer.licht on
#     Licht_Mitte:
#       kino.dekoleiste dim 0
#       kino.links.licht off
#       kino.mitte.licht on
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 0
#       kino.theke.downlight off
#       kino.theke.licht off
#       kino.tuer.licht off
#     Lichter_An:
#       kino.dekoleiste dim 0
#       kino.kodi  off
#       kino.links.licht on
#       kino.mitte.licht on
#       kino.rechts.licht on
#       kino.theke.arbeitsplatte dim 99
#       kino.theke.downlight on
#       kino.theke.licht on
#       kino.tuer.licht on
#     Lichter_Aus:
#       kino.dekoleiste dim 0
#       kino.links.licht off
#       kino.mitte.licht off
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 0
#       kino.theke.downlight off
#       kino.theke.licht off
#       kino.tuer.licht off
#   devices:
#     Cinema.PID
#     Cinema.Rack
#     kino.avr
#     kino.dekoleiste
#     kino.links.licht
#     kino.mitte.licht
#     kino.pc.power
#     kino.rechts.licht
#     kino.theke.arbeitsplatte
#     kino.theke.downlight
#     kino.tuer.licht
#   switchingOrder:
#     Kino_Film_Pause:
#       kino.dekoleiste
#       kino.theke.arbeitsplatte
#       Cinema.PID
#       Cinema.Rack
#       kino.avr
#       kino.links.licht
#       kino.mitte.licht
#       kino.pc.power
#       kino.rechts.licht
#       kino.theke.downlight
#       kino.tuer.licht
#     Kino_Film_läuft:
#       kino.links.licht
#       kino.mitte.licht
#       kino.rechts.licht
#       kino.tuer.licht
#       kino.dekoleiste
#       Cinema.PID
#       Cinema.Rack
#       kino.avr
#       kino.pc.power
#       kino.theke.arbeitsplatte
#       kino.theke.downlight
#     Kino_Start:
#       Cinema.Rack
#       kino.avr
#       kino.pc.power
#       kino.dekoleiste
#       kino.tuer.licht
#       Cinema.PID
#       kino.links.licht
#       kino.mitte.licht
#       kino.rechts.licht
#       kino.theke.arbeitsplatte
#       kino.theke.downlight
#     Licht_Mitte:
#       kino.mitte.licht
#       Cinema.PID
#       Cinema.Rack
#       kino.avr
#       kino.dekoleiste
#       kino.links.licht
#       kino.pc.power
#       kino.rechts.licht
#       kino.theke.arbeitsplatte
#       kino.theke.downlight
#       kino.tuer.licht
#
setstate kino.Szenen Alles_aus
setstate kino.Szenen 2023-08-06 10:36:39 state Alles_aus


The Grue

Wenn ich den "sleep kino.avr.off" rausnehme, bleibt die CPU-Last normal...

The Grue

Ist es ein zu erwartender Effekt, daß die CPU-Last mit diesem Befehl auf 100% steigt? Dokumentiert ist es jedenfalls nicht...

sleep kino.avr.off ; set kino.avr on

The Grue

Ist es ein zu erwartender Effekt, daß die CPU-Last mit diesem Befehl auf 100% steigt? Dokumentiert ist es jedenfalls nicht...

sleep kino.avr.off ; set kino.avr on

LuckyDay

Zitatset command to be executed for <device> in <scene_name> to <cmd>. <cmd> can be any commandline that fhem understands including multiple commands separated by ;;

    set kino_group setcmd allOff LampeDecke sleep 30 ;; set LampeDecke off
    set light_group setcmd test Lampe1 sleep 10 ;; set Lampe1 on ;; sleep 5 ;; set Lampe1 off

warum ist nach deinem sleep keine Zahl angegeben , wie lange die Verzögerung sein soll?

binford6000

#5
ZitatWenn ich den "sleep kino.avr.off" rausnehme, bleibt die CPU-Last normal...
Dann hast du den Fehler ja schon eingegrenzt.
Wenn du dir jetzt noch die Doku zu sleep anschaust (help sleep) dann steht da:
  • "...nachdem es die spezifizierte Zeitspanne gewartet hat bzw. ein Event welches dem <suchmuster> entspricht aufgetreten ist..."
  • ...oder als Suchmuster (Gerätename oder Gerätename:Event)...

Letzteres ist vermutlich das was du machen möchtest. Ergo musst du das Event (schaue am besten im Event Monitor nach)
genauso dort angeben. Ich verwende das zB. so:
sleep SonosBridge:connected:.2; ..."
VG Sebastian

PS: Wichtig ist immer dass nach dem sleep noch ein Befehl kommt. Sonst blockiert FHEM.
Aber das hast du ja so schon eingebaut  ;)

binford6000

Zitatwarum ist nach deinem sleep keine Zahl angegeben , wie lange die Verzögerung sein soll?
Weil er auf auf ein Event warten möchte. Siehe meinen vorherigen Post.

VG Sebastian

The Grue

Zitat von: binford6000 am 15 August 2023, 19:41:25Letzteres ist vermutlich das was du machen möchtest. Ergo musst du das Event (schaue am besten im Event Monitor nach)
genauso dort angeben. Ich verwende das zB. so:
sleep SonosBridge:connected:.2; ..."
Mein Event sieht so aus:
2023-08-21 11:47:15.496 YAMAHA_AVR kino.avr off

Also sollte das hier funktionieren (kann gerade nicht testen), oder?

sleep kino.avr:off ; set kino.avr on

Sieht gefährlich aus (endless on/off loop), aber das wird ja nur ausgeführt wenn ich die Szene aktiviere, also nicht bei jedem Abschalten...

Otto123

ich würde das sleep noch benennen, sonst entstehen im Fehlerfall immer wieder neue und diese führen dann mal zu unerwarteten Ergebnissen:
sleep kino.avr:off kino_aus; set kino.avr ondamit wird immer überschrieben https://fhem.de/commandref_DE.html#sleep
Zitat von: The Grue am 21 August 2023, 12:01:38Sieht gefährlich aus (endless on/off loop)
So sieht es aus und ich vermute irgendwie der Thread Titel ist genau darauf begründet. Weil ich ehrlich gesagt die Befehlsabarbeitung in der Lightscene nicht kennen und die Befehlsfolge die bei Dir abläuft (ablaufen soll) nicht verstehe! Du schaltest an und wartest zunächst auf ein "aus"   ???  :o
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

The Grue

#9
Guter Hinweis mit der sleep-id, danke :)

Ja, sieht komisch aus, läuft aber so:

  • Die ganze Kinoausrüstung ist mittels Wallplug abgeschaltet. kino.avr ist im Zustand "absent"
  • Die Szene "Kino_Start" schaltet den Wallplug an. Leider bleibt der AVR im Standby und schaltet sich nicht selbst ein. Aber sobald das Ding gebootet ist, wechselt der Zustand auf "off". Darauf möchte ich mit dem sleep warten.
  • Sobald der AVR dann den Zustang "off" erreicht ist er ansprechbar und nach dem sleep wird er eingeschaltet.

Keine Ahnung warum, aber so wie ich das im ersten Post beschrieben habe hat das schon mal funktioniert...  Auch wenn's offensichtlich falsch war. O:-)
Aber da die Szene "Kino_Start" ja nur ein Mal von mir gestartet wird, gibt's auch keine Schleife. Ich kann auch gut nachvollziehen, daß der arme AVR nicht dauernd an- und ausgeschaltet wird — das hätte ich schnell gemerkt  ;D

Bei der Gelegenheit: Ich bin total begeistert, daß FHEM mir so was ermöglicht. Mit den drölfzig Geräten die da koordiniert werden wollen um Medienrechner, AVR, Beamer, Beleuchtung, Vorhang usw für ein ordentliches Kinoerlebnis zu erreichen wäre das ohne Automatisierung gar nicht möglich. Mit FHEM ist sogar der WAF relativ hoch  :-*

The Grue

Ne, war wohl nix :(

Gerade probiert, nach ein paar Sekunden ist die Last wieder bei 100% und der AVR wird gar nicht eingeschaltet - ziemlich sicher, weil auch sonst nix geht.

So sieht die Lightscene gerade aus. Bitte schaut doch mal rein, ob nicht doch was falsch ist:

define kino.Szenen LightScene kino.mitte.licht kino.tuer.licht kino.links.licht kino.rechts.licht kino.theke.downlight kino.pc.power kino.avr kino.dekoleiste kino.theke.arbeitsplatte Cinema.Rack Cinema.PID
attr kino.Szenen alias Kino: Szenen
attr kino.Szenen room Maschinenraum,Kino
attr kino.Szenen switchingOrder Kino_Start:Cinema.Rack,kino.avr,kino.pc.power,kino.dekoleiste,kino.tuer.licht,.* \
                                Kino_Film_Pause:kino.dekoleiste,kino.theke.arbeitsplatte,.* \
                                Kino_Film_läuft:.*.licht,kino.dekoleiste,.*\
                                Licht_Mitte:kino.mitte.licht,.*
#   CONFIGFILE ./log/LightScenes.save
#   DEF        kino.mitte.licht kino.tuer.licht kino.links.licht kino.rechts.licht kino.theke.downlight kino.pc.power kino.avr kino.dekoleiste kino.theke.arbeitsplatte Cinema.Rack Cinema.PID
#   FUUID      5d31bec9-f33f-39ae-161e-27a1b72126470b0d
#   HAS_DataDumper 1
#   HAS_JSON   1
#   NAME       kino.Szenen
#   NR         278
#   NTFY_ORDER 50-kino.Szenen
#   STATE      Alles_aus
#   TYPE       LightScene
#   eventCount 51
#   mayBeVisible 1
#   CONTENT:
#     Cinema.PID 1
#     Cinema.Rack 1
#     kino.avr   1
#     kino.dekoleiste 1
#     kino.links.licht 1
#     kino.mitte.licht 1
#     kino.pc.power 1
#     kino.rechts.licht 1
#     kino.theke.arbeitsplatte 1
#     kino.theke.downlight 1
#     kino.tuer.licht 1
#   READINGS:
#     2023-08-21 19:10:06   state           Alles_aus
#   SCENES:
#     Alles_aus:
#       Cinema.PID desired 8.0
#       kino.avr   off
#       kino.dekoleiste dim 0
#       kino.kodi  off
#       kino.links.licht off
#       kino.mitte.licht off
#       kino.pc.power off
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 0
#       kino.theke.downlight off
#       kino.theke.licht off
#       kino.tuer.licht off
#     Kino_Film_Pause:
#       kino.avr   on
#       kino.dekoleiste dim 99
#       kino.links.licht off
#       kino.mitte.licht off
#       kino.pc.power on
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 99
#       kino.theke.downlight off
#       kino.theke.licht on
#       kino.tuer.licht off
#     Kino_Film_läuft:
#       kino.avr   on
#       kino.dekoleiste dim 0
#       kino.links.licht off
#       kino.mitte.licht off
#       kino.pc.power on
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 0
#       kino.theke.downlight off
#       kino.theke.licht off
#       kino.tuer.licht off
#     Kino_Start:
#       Cinema.Rack on
#       kino.avr   ;sleep kino.avr:off start_cinema ; set kino.avr on
#       kino.dekoleiste dim 99
#       kino.links.licht off
#       kino.mitte.licht off
#       kino.pc.power on
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 99
#       kino.theke.downlight off
#       kino.theke.licht off
#       kino.tuer.licht on
#     Licht_Mitte:
#       kino.dekoleiste dim 0
#       kino.links.licht off
#       kino.mitte.licht on
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 0
#       kino.theke.downlight off
#       kino.theke.licht off
#       kino.tuer.licht off
#     Lichter_An:
#       kino.dekoleiste dim 0
#       kino.kodi  off
#       kino.links.licht on
#       kino.mitte.licht on
#       kino.rechts.licht on
#       kino.theke.arbeitsplatte dim 99
#       kino.theke.downlight on
#       kino.theke.licht on
#       kino.tuer.licht on
#     Lichter_Aus:
#       kino.dekoleiste dim 0
#       kino.links.licht off
#       kino.mitte.licht off
#       kino.rechts.licht off
#       kino.theke.arbeitsplatte dim 0
#       kino.theke.downlight off
#       kino.theke.licht off
#       kino.tuer.licht off
#   devices:
#     Cinema.PID
#     Cinema.Rack
#     kino.avr
#     kino.dekoleiste
#     kino.links.licht
#     kino.mitte.licht
#     kino.pc.power
#     kino.rechts.licht
#     kino.theke.arbeitsplatte
#     kino.theke.downlight
#     kino.tuer.licht
#   switchingOrder:
#     Kino_Film_Pause:
#       kino.dekoleiste
#       kino.theke.arbeitsplatte
#       Cinema.PID
#       Cinema.Rack
#       kino.avr
#       kino.links.licht
#       kino.mitte.licht
#       kino.pc.power
#       kino.rechts.licht
#       kino.theke.downlight
#       kino.tuer.licht
#     Kino_Film_läuft:
#       kino.links.licht
#       kino.mitte.licht
#       kino.rechts.licht
#       kino.tuer.licht
#       kino.dekoleiste
#       Cinema.PID
#       Cinema.Rack
#       kino.avr
#       kino.pc.power
#       kino.theke.arbeitsplatte
#       kino.theke.downlight
#     Kino_Start:
#       Cinema.Rack
#       kino.avr
#       kino.pc.power
#       kino.dekoleiste
#       kino.tuer.licht
#       Cinema.PID
#       kino.links.licht
#       kino.mitte.licht
#       kino.rechts.licht
#       kino.theke.arbeitsplatte
#       kino.theke.downlight
#     Licht_Mitte:
#       kino.mitte.licht
#       Cinema.PID
#       Cinema.Rack
#       kino.avr
#       kino.dekoleiste
#       kino.links.licht
#       kino.pc.power
#       kino.rechts.licht
#       kino.theke.arbeitsplatte
#       kino.theke.downlight
#       kino.tuer.licht
#
setstate kino.Szenen Alles_aus
setstate kino.Szenen 2023-08-21 19:10:06 state Alles_aus


Meine aktiven Perl-Zeiten sind eine gute Weile her. Kann ich irgendwie einen profiler attachen um zu sehen was sich da tut?