[gelöst] Log Meldung aus z.B. DOIF bei Perl Verwendung

Begonnen von ch.eick, 28 April 2021, 12:02:27

Vorheriges Thema - Nächstes Thema

ch.eick

EDIT: Ich habe einen obskuren Weg gefunden  8) ::)
Das hat wohl nichts mit dem HTTPMOD direkt zu tun. Im Log oder im Browser erscheint wohl die Ausgabe vom letzten Kommando.
Wenn man nun ein weiteres Perl Kommando ohne Ausgabemeldung absetzt, dann wird halt nichts gemeldet und die Log Meldung fällt weg.

DOELSEIF
([+:06] and !([:00] or [:30]))                                                                           ## wer keinen BYD HV Speicher hat kann das löschen

   ({
     CommandGet(undef, "WR_1_Speicher_1 BatteryInformation");
     CommandGet(undef, "WR_1_Speicher_1 StatisticInformation");
     my $keine_log_meldung;                                                                               ## Das verhindert die Log Meldung vom letzten CommandGet() ???
    }
   )




Hallo zusammen,
ich habe da eine Meldung im Log, die ich nicht weg bekomme. Es wird das HTTPMOD mit einem CommandGet aufgerufen.


2021.04.28 11:24:00.021 2: WR_1_Speicher_1_ExternControl: {      CommandGet(undef, "WR_1_Speicher_1 BatteryInformation");      CommandGet(undef, "WR_1_Speicher_1 StatisticInformation");     }: StatisticInformation requested, watch readings

Wenn das ganze auf der Kommandozeile ausgeführt wird, erscheint die selbe Meldung auf dem Bildschirm im Browser Fenster.

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Damian

Wenn ein Befehl etwas ungleich "" liefert, dann wird es vom DOIF als Fehlermeldung interpretiert.

Im DOIF-FHEM Modus reicht am Ende der Befehl return ""

Im DOIF-Perl-Modus sollte die Meldung gar nicht kommen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

Zitat von: Damian am 28 April 2021, 17:07:48
Wenn ein Befehl etwas ungleich "" liefert, dann wird es vom DOIF als Fehlermeldung interpretiert.

Im DOIF-FHEM Modus reicht am Ende der Befehl return ""

Im DOIF-Perl-Modus sollte die Meldung gar nicht kommen.
Super, danke für die Info.

Mein Beispiel ist glaube ich der Perl Modus, aber leider kommt die Meldung trotzdem, wie im ersten post zu sehen ist.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Frank_Huber

Ich hake hier mal ein. ;-)
Gibt es für "normale" FHEM set xxx xxx Befehle auch eine Möglichkeit Rückmeldungen zu verwerfen?
Ich bekomme vom Fritzbox Modul eine Rückantwort beim Rebooten per TR064 Befehl.
Stört nicht wirklich, aber wenn es einen Weg gibt...

für die anderen Fälle verwende ich ein "return undef", das dürfte das gleiche sein wie das vorgeschlagene und funktioniert 1a.



ch.eick

Das sieht schon mal viel besser aus, danke dafür.

DOELSEIF
([+:06] and !([:00] or [:30]))                                                                           ## wer keinen BYD HV Speicher hat kann das löschen

   ({
     CommandGet(undef, "WR_1_Speicher_1 BatteryInformation");
     CommandGet(undef, "WR_1_Speicher_1 StatisticInformation");
     return undef                                                                                         ## Das verhindert die Log Meldung vom letzten CommandGet()
    }
   )
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Zitat von: Frank_Huber am 28 April 2021, 17:19:16
Gibt es für "normale" FHEM set xxx xxx Befehle auch eine Möglichkeit Rückmeldungen zu verwerfen?
Ich bekomme vom Fritzbox Modul eine Rückantwort beim Rebooten per TR064 Befehl.
Ich denke Du meinst dann sowas, das ist in diesem fall auch ohne Meldung, aber nur weil ein Perl Aufruf ohne Rückmeldung dahinter ist.
Das mit der verbose Abfrage für Meldungen mache ich schon seit geraumer Zeit und dadurch habe ich implizit die andere Meldung auch weg. Ist mir so noch gar nicht aufgefallen :-)

################################################################################################################
## 2 Aktuellen aWATTar Preis holen. Achtung, die Readings werden erst wegen des http Zugriffs, verzögert aktualisiert.
##
DOELSEIF
([:03])
   (set EVU_awattar reread)
   ({if (AttrVal("$SELF","verbose",0) >=3){Log 3, "EVU_Kosten cmd_2 : Preis aktualisiert"}})
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Damian

Zitat von: ch.eick am 28 April 2021, 17:18:57
Super, danke für die Info.

Mein Beispiel ist glaube ich der Perl Modus, aber leider kommt die Meldung trotzdem, wie im ersten post zu sehen ist.

Perlmodus fängt nicht mit einer runden Klammer auf, sondern eher mit einer geschweiften:

{
  if ([+:06] and !([:00] or [:30]))
  {
     ::CommandGet(undef, "WR_1_Speicher_1 BatteryInformation");
     ::CommandGet(undef, "WR_1_Speicher_1 StatisticInformation");
  }
}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

Zitat von: Damian am 28 April 2021, 20:10:48
Perlmodus fängt nicht mit einer runden Klammer auf, sondern eher mit einer geschweiften:
Okay, das probiere ich morgen direkt mal aus.

Also habe ich den Fhem Modus verwendet und darin dann in {} Perl ausgeführt. Man lernt ja nie aus.

Danke   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Sooo, ich habe es nun nochmal ausprobiert und hoffe jetzt den perl Modus richtig verwendet zu haben.


DOELSEIF
([+:06] and !([:00] or [:30]))                                                                           ## wer keinen BYD HV Speicher hat kann das löschen

  {
   CommandGet(undef, "WR_1_Speicher_1 BatteryInformation");
   CommandGet(undef, "WR_1_Speicher_1 StatisticInformation");
   return undef                                                                                           ## Das verhindert die Log Meldung vom letzten CommandGet()
  }

Lässt man das "return undef" weg, so erscheinen im Log diese Meldungen.

2021.04.29 17:27:40.043 2: WR_1_Speicher_1_ExternControl: {    CommandGet(undef, "WR_1_Speicher_1 BatteryInformation");    CommandGet(undef, "WR_1_Speicher_1 StatisticInformation");    }: StatisticInformation requested, watch readings
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Damian

nein, also im Perlmodus gibt es kein DOELSEIF und auch kein DOELSE ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ch.eick

Zitat von: Damian am 29 April 2021, 21:59:21
nein, also im Perlmodus gibt es kein DOELSEIF und auch kein DOELSE ;)
Hast Du mal einen Link, wo das richtig erklärt wird?
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick