Autor Thema: Info: setreading auf das selbe Device in einem userreadings erzeugt loop  (Gelesen 422 mal)

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25321
Hallo Rudi,

Zur Info für Dich.
Ein User hat in einem userreading ein setreading auf das selbe Device, nicht aber auf das userreading, gemacht und festgestellt das FHEMWEB dann nicht mehr erreichbar ist. Ich habe das mal getestet und bin zum selben Ergebnis gekommen.

Ausgabe im Log:
Zitat
2020.04.19 10:23:59.780 1: PERL WARNING: Deep recursion on subroutine "main::AnalyzeCommandChain" at fhem.pl line 3812.
2020.04.19 10:23:59.780 3: eval: { fhem('setreading ' . $NAME . ' testreading blablub') }
2020.04.19 10:23:59.780 1: stacktrace:
2020.04.19 10:23:59.780 1:     main::__ANON__                      called by fhem.pl (3812)
2020.04.19 10:23:59.780 1:     main::AnalyzeCommandChain           called by fhem.pl (3812)
2020.04.19 10:23:59.780 1:     main::fhem                          called by (eval 243) (1)
2020.04.19 10:23:59.781 1:     (eval)                              called by fhem.pl (4697)
2020.04.19 10:23:59.781 1:     main::readingsEndUpdate             called by fhem.pl (4938)
2020.04.19 10:23:59.781 1:     main::readingsSingleUpdate          called by fhem.pl (2420)
2020.04.19 10:23:59.781 1:     main::CommandSetReading             called by fhem.pl (1247)
2020.04.19 10:23:59.781 1:     main::AnalyzeCommand                called by fhem.pl (1100)
2020.04.19 10:23:59.781 1:     main::AnalyzeCommandChain           called by fhem.pl (3812)
2020.04.19 10:23:59.781 1:     main::fhem                          called by (eval 242) (1)
2020.04.19 10:23:59.781 1:     (eval)                              called by fhem.pl (4697)
2020.04.19 10:23:59.781 1:     main::readingsEndUpdate             called by fhem.pl (4938)
2020.04.19 10:23:59.781 1:     main::readingsSingleUpdate          called by fhem.pl (2420)
2020.04.19 10:23:59.781 1:     main::CommandSetReading             called by fhem.pl (1247)
2020.04.19 10:23:59.781 1:     main::AnalyzeCommand                called by fhem.pl (1100)
2020.04.19 10:23:59.781 1:     main::AnalyzeCommandChain           called by fhem.pl (3812)
2020.04.19 10:23:59.781 1:     main::fhem                          called by (eval 241) (1)
2020.04.19 10:23:59.781 1:     (eval)                              called by fhem.pl (4697)
2020.04.19 10:23:59.781 1:     main::readingsEndUpdate             called by fhem.pl (4938)
2020.04.19 10:23:59.781 1:     main::readingsSingleUpdate          called by fhem.pl (2420)
2020.04.19 10:23:59.782 1:     main::CommandSetReading             called by fhem.pl (1247)
2020.04.19 10:23:59.782 1:     main::AnalyzeCommand                called by fhem.pl (1100)
2020.04.19 10:23:59.782 1:     main::AnalyzeCommandChain           called by fhem.pl (3812)
2020.04.19 10:23:59.782 1:     main::fhem                          called by (eval 240) (1)
2020.04.19 10:23:59.782 1:     (eval)                              called by fhem.pl (4697)
2020.04.19 10:23:59.782 1:     main::readingsEndUpdate             called by fhem.pl (4938)
2020.04.19 10:23:59.782 1:     main::readingsSingleUpdate          called by fhem.pl (2420)
2020.04.19 10:23:59.782 1:     main::CommandSetReading             called by fhem.pl (1247)
2020.04.19 10:23:59.782 1:     main::AnalyzeCommand                called by fhem.pl (1100)
2020.04.19 10:23:59.782 1:     main::AnalyzeCommandChain           called by fhem.pl (3812)
2020.04.19 10:23:59.782 1:     main::fhem                          called by (eval 239) (1)
2020.04.19 10:23:59.782 1:     (eval)                              called by fhem.pl (4697)
2020.04.19 10:23:59.782 1:     main::readingsEndUpdate             called by fhem.pl (4938)
2020.04.19 10:23:59.782 1:     main::readingsSingleUpdate          called by fhem.pl (2420)
2020.04.19 10:23:59.782 1:     main::CommandSetReading             called by fhem.pl (1247)
2020.04.19 10:23:59.782 1:     main::AnalyzeCommand                called by fhem.pl (1100)
2020.04.19 10:23:59.782 1:     main::AnalyzeCommandChain           called by fhem.pl (3812)
2020.04.19 10:23:59.783 1:     main::fhem                          called by (eval 238) (1)
2020.04.19 10:23:59.783 1:     (eval)                              called by fhem.pl (4697)
2020.04.19 10:23:59.783 1:     main::readingsEndUpdate             called by fhem.pl (4938)
2020.04.19 10:23:59.783 1:     main::readingsSingleUpdate          called by fhem.pl (2420)
2020.04.19 10:23:59.783 1:     main::CommandSetReading             called by fhem.pl (1247)
2020.04.19 10:23:59.783 1:     main::AnalyzeCommand                called by fhem.pl (1100)
2020.04.19 10:23:59.783 1:     main::AnalyzeCommandChain           called by fhem.pl (3812)
2020.04.19 10:23:59.783 1:     main::fhem                          called by (eval 237) (1)
2020.04.19 10:23:59.783 1:     (eval)                              called by fhem.pl (4697)
2020.04.19 10:23:59.783 1:     main::readingsEndUpdate             called by fhem.pl (4938)
2020.04.19 10:23:59.783 1:     main::readingsSingleUpdate          called by fhem.pl (2420)
2020.04.19 10:23:59.783 1: PERL WARNING: Deep recursion on subroutine "main::CommandSetReading" at fhem.pl line 1247.
2020.04.19 10:23:59.783 3: eval: { fhem('setreading ' . $NAME . ' testreading blablub') }
2020.04.19 10:23:59.783 1: stacktrace:
2020.04.19 10:23:59.783 1:     main::__ANON__                      called by fhem.pl (1247)
2020.04.19 10:23:59.784 1:     main::CommandSetReading             called by fhem.pl (1247)
.......
.......
.......


list vom Device
Internals:
   FUUID      5ddd211c-f33f-5153-42b7-d237e79cbf6e1dd5
   FVERSION   98_dummy.pm:0.206650/2019-12-06
   NAME       dummytest
   NR         82
   STATE      10
   TYPE       dummy
   READINGS:
     2020-03-30 17:41:14   humidity        20
     2020-03-30 17:49:08   temperature     10
Attributes:
   alias      Marko Dummy Test
   readingList temperature humidity
   room       Test
   setList    temperature humidity
   stateFormat temperature
   userReadings tmp:temperature:.* { fhem('setreading ' . $NAME . ' testreading blablub') }

Ich habe darauf aufmerksam gemacht das die Verwendung des setreading innerhalb eines userreadings nicht Gedacht ist.



Grüße
Marko
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline Benni

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2079
  • FHEMinist
Man könnte eventuell noch auf die Verwendung von event-on-change-reading aufmerksam machen.

gb#

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22327
Aus userReadings ein setreading aufzurufen ist nicht das, was der userReadings Erfinder im Sinn hatte.
Ich habe setreading erweitert, damit sie in diesem Fall (aufgerufen zwischen readingsBeginUpdate und readingsEndUpdate) nur den Wert setzt, aber nicht die komplette Event-Maschine erneut anstosst.
Bin unsicher, ob ich nicht sowas glatt untersagen sollte.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16260
  • s/fhem\.cfg/configDB/g
Bin unsicher, ob ich nicht sowas glatt untersagen sollte.

dafür!

Weil das Setzen eines reading aus einem userreading heraus in den seltensten Fällen überhaupt Sinn macht, bzw. weil man das gewünschte Ergebnis sicher auch auf anderen Wegen erreichen kann.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25321
Ich bin für ein komplettes untersagen dieses Unsinns
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22327
Habs geaendert: in so einem Fall wird eine Fehlermeldung im Log erzeugt.
Gefällt mir Gefällt mir x 3 Liste anzeigen

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25321
Mist wir brauchen mehr Gefällt mir Buttons  ;D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

 

decade-submarginal