Autor Thema: 98_freezemon: Global symbol "$FW_CSRF" requires explicit package name  (Gelesen 458 mal)

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4250
Hallo,

wenn man freezemon recht weit am Anfang definiert, bekommt man die Meldung

2018.04.06 12:26:28 1: reload: Error:Modul 98_freezemon deactivated:
 Global symbol "$FW_CSRF" requires explicit package name (did you forget to declare "my $FW_CSRF"?) at /opt/fhem/FHEM/98_freezemon.pm line 520, <$fh> line 1.
BEGIN not safe after errors--compilation aborted at /opt/fhem/FHEM/98_freezemon.pm line 613, <$fh> line 1.

Fehlt da ein require 01_FHEMWEB.pm bzw. wozu braucht das Modul das überhaupt?

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2186
Hi Boris,

Danke für den Hinweis. Um das nachzustellen müsste ich die fhem.cfg anpassen, oder? Probiere ich gleich mal aus... Hat es einen Hintergrund, warum du Freezemon weit vorne definieren möchtest, oder war das Zufall?

Das CSRF Token brauche ich für den Aufruf des verbose 5 logs, irgendwie wollte das ohne Token nicht funktionieren. (Wenn's einen eleganteren Weg gibt bin ich für Tipps immer dankbar).

Grüße,

Oli

RasPi: RFXTRX, HM, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4250
Danke für den Hinweis. Um das nachzustellen müsste ich die fhem.cfg anpassen, oder? Probiere ich gleich mal aus... Hat es einen Hintergrund, warum du Freezemon weit vorne definieren möchtest, oder war das Zufall?

Das war Absicht. Ich wollte bereits während der Startphase Verzögerungen protokollieren.

Es gibt ein loginform-Hash. Darüber kannst Du die Meldungen aus Log3 abonnieren. Details siehe fhem.pl.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2186
Das war Absicht. Ich wollte bereits während der Startphase Verzögerungen protokollieren.
Das habe ich befürchtet. Freezemon wartet auf INITIALIZED und ordnet sich dabei auch noch ganz hinten ein (NotifyOrderPrefix).

Es gibt ein loginform-Hash. Darüber kannst Du die Meldungen aus Log3 abonnieren. Details siehe fhem.pl.

Muss ich mir mal ansehen, ob ich mir dadurch das "wrappen" der Log3 sub sparen kann... Das CSRF brauche ich aber für die Anzeige (Aufruf von "get freezemon log..." aus eine get-Popup heraus...)

Danke,

Oli
RasPi: RFXTRX, HM, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4250
Das CSRF brauche ich aber für die Anzeige (Aufruf von "get freezemon log..." aus eine get-Popup heraus...)

Und wer gar kein FHEMWEB einsetzt? Benutze doch $FW_CSRF erst, wenn Du aus dem get-Popup heraus aufgerufen wirst. Dann kannst Du vermutlich sicher sein, dass FHEMWEB geladen ist und $FW_CSRF definiert.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline KernSani

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2186
Und wer gar kein FHEMWEB einsetzt? Benutze doch $FW_CSRF erst, wenn Du aus dem get-Popup heraus aufgerufen wirst. Dann kannst Du vermutlich sicher sein, dass FHEMWEB geladen ist und $FW_CSRF
Mache ich ja :) Ändert aber nichts daran, dass die Variable zum define-Zeitpunkt definiert sein muss. Das habe ich nun durch ein use vars qw($FW_CSRF);behoben (allerdings werde ich das noch nicht sofort einchecken, ich gehe davon aus, dass du dir selbst behelfen kannst ;-)).

Zum eigentlichen Problem: Freezemon reiht sich beim INITIALIZED bewusst ganz hinten ein, damit beim Startvorgang nicht haufenweise Freezes gemeldet werden. Das ist natürlich genau das Gegenteil von dem, was du erreichen möchtest. Soll ich mir Gedanken machen, ob ich ein "earlyStart"-Attribut o.ä. einführen kann, oder kommst du so zurecht?

Grüße,

Oli
RasPi: RFXTRX, HM, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4250
Soll ich mir Gedanken machen, ob ich ein "earlyStart"-Attribut o.ä. einführen kann, oder kommst du so zurecht?

Sorry, hierauf wollte ich schon früher antworten. Ja, m.E. wäre es sinnvoll, so ein Attribut zu haben. Wenn es gesetzt wird, startet der freezemon ab seinem define, sonst erst nach einem INITIALIZED. Ersteres ist sinnvoll, um zu sehen, welche Geräte Verzögerungen bei der Startzeit erzeugen.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!