[gelöst]Wie überprüfe ich, ob ein "named" sleep exsistiert?

Begonnen von frober, 17 Oktober 2021, 14:45:41

Vorheriges Thema - Nächstes Thema

frober

Hallo zusammen,

da ich mit Watchdog meine Aufgabenstellung nicht umgesetzt bekomme, habe ich mich für ein notify mit perl und "named" sleep entschlossen.

Wie kann ich überprüfen ob das sleep existiert, bevor ich es lösche?

z.B.

.
.
fhem('sleep 60 mySleep quiet; set Pumpe off');
.
.
if (existiert mySleep) {fhem('cancel mySleep quiet');}
.
.
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

CoolTux

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://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

betateilchen

if($sleepers{$id})

Wobei $id in Deinem Beispiel 'mySleep' wäre.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

und in dem gezeigten Code steht den Klammern hinten eine Rundung besser .

frober

Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

betateilchen

Zitat von: TomLee am 17 Oktober 2021, 15:00:25
und in dem gezeigten Code steht den Klammern hinten eine Rundung besser .

::) das war doch nur ein Schema, ohne Anspruch auf Funktionsfähigkeit...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

frober

@betateilchen: danke, so hatte ich mir das vorgestellt :)

@TomLee: das war als Bsp. so dahin geschrieben, aber du hast natürlich Recht, ich korrigiere es, im Falle, dass es jemand benutzen möchte. ;)
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

betateilchen

Zitat von: frober am 17 Oktober 2021, 15:21:18
so hatte ich mir das vorgestellt

Sowas findet man am einfachsten heraus, wenn man einen Blick in die fhem.pl wirft :)
Etwas anderes habe ich auch nicht getan.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

frober

Zitat von: betateilchen am 17 Oktober 2021, 15:28:42
Sowas findet man am einfachsten heraus, wenn man einen Blick in die fhem.pl wirft :)
Etwas anderes habe ich auch nicht getan.

Ok, nur komme ich anscheinend nicht an die Variable dran
ERROR:
Global symbol "%sleepers" requires explicit package name (did you forget to declare "my %sleepers"?) at ./FHEM/99_myUtils_BrunnenpumpeSteuerung.pm line 28
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

betateilchen

die Variable existiert nur innerhalb von fhem.pl.

Davon, dass Du sie in einer 99_myUtil... nutzen willst, war bisher nicht die Rede.
Vielleicht funktioniert es, den hash als Aufrufparameter Deiner Funktion mitzugeben.
Aber selbst wenn das funktionieren würde, könntest Du an dieser Stelle den hash in main nicht verändern.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

#10
warum willst Du das überhaupt prüfen?

{CommandCancel(undef, "test") if ($sleepers{"test"})}

funktioniert jedenfalls in der FHEM Befehlszeile - also innerhalb von fhem.pl.

--
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Man koennte in diesem Fall auch ueber ein at nachdenken.

frober

Zitat von: betateilchen am 17 Oktober 2021, 15:38:32
warum willst Du das überhaupt prüfen?

Ich möchte kein sleep löschen, dass nicht existiert Finde ich sauberer aus ein quiet.

So funktionieren es nun :)
defmod n_BrunnenpumpeSteuerung notify MYSENSOR_(2|3):(status(1|2|3|4)|status):.* {my $s = 0;; $s = 1 if ($sleepers{"sleepBrunnenpumpe"});; Brunnenpumpensteuerung($EVTPART1,$s);;}


sub Brunnenpumpensteuerung {
  my $SUB = 'Brunnenpumpesteuerung'; # Name der sub für Warnmeldung
  my $EVENT = shift // return "Error, sub $SUB: we need EVTPART1 as parameter!";
  my $SLEEPERS = shift // return "Error, sub $SUB: we need \$sleepers as parameter!";
  my $PUMPE = ReadingsVal('Sonoff_Brunnenpumpe','POWER','OFF');
  my $SLEEP = 'sleepBrunnenpumpe';  # Name für "named" sleep
 
  if ($EVENT eq 'on') 
  {
if ($PUMPE eq 'OFF') {fhem('set Sonoff_Brunnenpumpe on; msg |Fhem-Meldung: Brunnenpumpe| Brunnenpumpe wurde eingeschaltet');}
if ($SLEEPERS) {fhem ("cancel $SLEEP quiet")};
return;
}
else
{
fhem("sleep 10 $SLEEP quiet; set Sonoff_Brunnenpumpe off; msg |Fhem-Meldung: Brunnenpumpe| Brunnenpumpe wurde ausgeschaltet");
return;
}
return;
}
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

frober

Zitat von: rudolfkoenig am 17 Oktober 2021, 16:22:38
Man koennte in diesem Fall auch ueber ein at nachdenken.

stimmt, soweit habe ich diesmal nicht gedacht ;)
Raspi 3b mit Raspbian Buster und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...