FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ch.eick am 28 April 2021, 12:02:27

Titel: [gelöst] Log Meldung aus z.B. DOIF bei Perl Verwendung
Beitrag von: ch.eick am 28 April 2021, 12:02:27
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
Titel: Antw:[gelöst] Log Meldung aus z.B. DOIF bei Perl Verwendung
Beitrag 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.
Titel: Antw:[gelöst] Log Meldung aus z.B. DOIF bei Perl Verwendung
Beitrag von: ch.eick am 28 April 2021, 17:18:57
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.
Titel: Antw:[gelöst] Log Meldung aus z.B. DOIF bei Perl Verwendung
Beitrag von: Frank_Huber am 28 April 2021, 17:19:16
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.


Titel: Antw:[gelöst] Log Meldung aus z.B. DOIF bei Perl Verwendung
Beitrag von: ch.eick am 28 April 2021, 17:37:44
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()
    }
   )
Titel: Antw:[gelöst] Log Meldung aus z.B. DOIF bei Perl Verwendung
Beitrag von: ch.eick am 28 April 2021, 17:42:00
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"}})
Titel: Antw:[gelöst] Log Meldung aus z.B. DOIF bei Perl Verwendung
Beitrag von: Damian am 28 April 2021, 20:10:48
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");
  }
}
Titel: Antw:[gelöst] Log Meldung aus z.B. DOIF bei Perl Verwendung
Beitrag von: ch.eick am 28 April 2021, 20:17:56
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
Titel: Antw:[gelöst] Log Meldung aus z.B. DOIF bei Perl Verwendung
Beitrag von: ch.eick am 29 April 2021, 17:30:31
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
Titel: Antw:[gelöst] Log Meldung aus z.B. DOIF bei Perl Verwendung
Beitrag von: Damian am 29 April 2021, 21:59:21
nein, also im Perlmodus gibt es kein DOELSEIF und auch kein DOELSE ;)
Titel: Antw:[gelöst] Log Meldung aus z.B. DOIF bei Perl Verwendung
Beitrag von: ch.eick am 29 April 2021, 22:19:42
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?