[Gelöst] Wie programmiere ich schlanke, bei Erfolg selbst deaktivierende Suche?

Begonnen von GiBy, 07 März 2020, 14:14:57

Vorheriges Thema - Nächstes Thema

GiBy

Hallo zusammen

meine Forumssuche hat eben so viele off topic-Treffer ergeben, dass ich wieder einmal Eure Erfahrung anzapfen möchte:
Ich möchte ein Objekt anhand seiner IP finden und die Suchfunktion Device1
   function {`sudo /opt/fhem/IPing.sh <die jeweilige IP>`}
, welche aus FHEM per at
   { fhem ("set Device1 statusRequest ; defmod Device1_gefunden at +00:30:00 set Device1 inactive") }
für eine Zeitspanne von 30' aufgerufen wird, bei Erfolg abbrechen lassen.
(Die Suchfunktion ergibt eine 1, wenn erfolgreich bzw. eine 0, wenn kein Treffer).
Ich habe bis dato obige unflexible Lösung, möchte das Skript jedoch statt für die at-vorgegebene Zeitspanne eleganter "bis zur Auffindung" laufen lassen.
Wie gestalte man dies am ressourcenschonendsten oder gar schlank?

Danke schön.
Gebhardt
Nutze FHEM 5.9 auf Pi3B Raspbian
4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 mit Mosquitto und CUL 3.4 868MHz, λ/4-Antenne,
433MHz-Funkschaltdosen, Sonoff/Tasmota: RF Bridge 433 MHz (incl. Portisch-FW), Basic, POW-R2

KernSani

Ich verstehe leider nicht ganz, was du erreichen môchtest... Deine "Suche" ist doch prinzipiell ein PRESENCE, oder? Vielleicht erläuterst du mal genauer, was der Hintergrund ist, dann fällt es leichter eine Lösung vorzuschlagen.


Gesendet von iPhone mit Tapatalk
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

MadMax-FHEM

Wie immer: es gibt viele Möglichkeiten ;)

Wobei: ich hab noch nicht so ganz verstanden was wo wie...

EDIT: und ich bin nicht alleine ;)

Was macht der set Device1 statusRequest?

Führt dieser die "Suchfunktion" aus?

Ändert sich "etwas" bei Device1, wenn statusRequest "erfogreich" oder eben auch "nicht erfolgreich"!?

Wenn sich bei Device1 etwas ändert -> notify und dann inaktiv setzen

Ansonsten kannst du auch einfach "aus" dem Script heraus das Device1 auf inactive setzen (wenn erolgreich):


/usr/bin/perl /opt/fhem/fhem.pl 7072 "set Device1 inactive"


Vorausgesetzt du hast ein Telnet "definiert" (ist ab fhem 5.9 nicht mehr Standard)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

GiBy

Zitat von: GiBy am 07 März 2020, 14:14:57
...
Ich möchte ein Objekt anhand seiner IP finden und die Suchfunktion Device1
   function {`sudo /opt/fhem/IPing.sh <die jeweilige IP>`}
, welche aus FHEM per at
   { fhem ("set Device1 statusRequest ; defmod Device1_gefunden at +00:30:00 set Device1 inactive") }
für eine Zeitspanne von 30' aufgerufen wird, bei Erfolg abbrechen lassen.
(Die Suchfunktion ergibt eine 1, wenn erfolgreich bzw. eine 0, wenn kein Treffer).
...

Konkrete Anwendung:
Verlegt oder verliert Söhnchen oder sonst wer ein Schmachtfon im oder um's Haus oder auch in der Ferne (passiert an manchen Tagen mehrmals), so lässt sich durch dieses Device bedarfsweise feststellen, ob das Gerät eingeloggt und nah oder off u/o fern ist.

Zitat von: MadMax-FHEM am 07 März 2020, 14:25:06

Was macht der set Device1 statusRequest?

Führt dieser die "Suchfunktion" aus?

Ich schrieb bereits, dass ich sehr vergesslich bin, daher die HA-Lösung und so meine ich, dass Device1, welches das Ping-Skript aufruft (s. meinen ursprünglichen Beitrag) durch das dort beschriebene at zum Einen [it]set device1 statusRequest[/it] aus seiner Somnolenz gerissen und zum Anderen über das nachfolgende [it]defmod[/it]  wieder in den Schlaf versetzt wird. Vielleicht sollte ich statt statusRequest avtive benutzen?
Statt das Pingen für eine halbe Stunde ertragen zu müssen, würde ich es jedenfalls gern bei Erfolg/Anwesenheit des zu suchenden Schmachtfons auromatisch beenden lassen.

Zitat von: MadMax-FHEM

Ändert sich "etwas" bei Device1, wenn statusRequest "erfogreich" oder eben auch "nicht erfolgreich"!?

Wenn sich bei Device1 etwas ändert -> notify und dann inaktiv setzen

Ansonsten kannst du auch einfach "aus" dem Script heraus das Device1 auf inactive setzen (wenn erolgreich):


/usr/bin/perl /opt/fhem/fhem.pl 7072 "set Device1 inactive"


Vorausgesetzt du hast ein Telnet "definiert" (ist ab fhem 5.9 nicht mehr Standard)...quote author=GiBy link=topic=109053.msg1030068#msg1030068 date=1583586897]

Gruß, Joachim

Danke J.,
ich werde also erst einmalein weiteres Notify mit angehängtem ;; defmod ... wie beim o. erwähnten at ... schreiben, denn telnet und telnetblockingfn, oder wie es hieß, sind mir noch völlig unklar und suspekt, da es sich ja wohl um eine weitere Zugreifbarkeit von außen handelt.
Nutze FHEM 5.9 auf Pi3B Raspbian
4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 mit Mosquitto und CUL 3.4 868MHz, λ/4-Antenne,
433MHz-Funkschaltdosen, Sonoff/Tasmota: RF Bridge 433 MHz (incl. Portisch-FW), Basic, POW-R2

MadMax-FHEM

Noch mal: WAS IST Device1 bzw. WAS MACHT ES (genau)!?

Hast du dir schon mal Presence-Modul angesehen!?

Das zeigt dir an, ob die IP errecihbar ist: present
oder eben nicht: absent

Gut es pingt "ständig" je nach erwünschter Aktualität...

Also irgendwie verstehe ich (noch) nicht ganz...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

KernSani

Ich würde - hayte ich ja oben auch schonmal geschrieben- einfach ein PRESENCE Device nehmen. Die Pingerei überlastet dein Netz sicher nicht ;-)
Anekdote am Rande: (Gtag, nicht Smartphone aber ähnlices Szenario: Sohnemann ruft kürzlich an: "Schlüssel vergessen, komme nicht ins Haus". Papa guckt kurz nach, Schlüssel hat 6 Stunden zuvor das Haus verlassen und ist jetzt wieder da, ergo "Schau nochmal in allen Hosentaschen etc... Irgendwo muss er sein". 5 Minuten später ist Sohnemann im Haus ;-)


Gesendet von iPhone mit Tapatalk
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

GiBy

Zitat von: KernSani am 08 März 2020, 15:53:07
Ich würde - hayte ich ja oben auch schonmal geschrieben- einfach ein PRESENCE Device nehmen. Die Pingerei überlastet dein Netz sicher nicht ;-)
Anekdote am Rande: (Gtag, nicht Smartphone aber ähnlices Szenario: Sohnemann ruft kürzlich an: "Schlüssel vergessen, komme nicht ins Haus". Papa guckt kurz nach, Schlüssel hat 6 Stunden zuvor das Haus verlassen und ist jetzt wieder da, ergo "Schau nochmal in allen Hosentaschen etc... Irgendwo muss er sein". 5 Minuten später ist Sohnemann im Haus ;-)


Hatte/Habe es auch so gemacht, KernSani. Aufbauend auf dem Presence-Modul habe ich ein device, das, wenn über at oder direkt aktiviert, das ping-skript startet und das Ergebnis per MQTT sendet, und nun zuletzt statt des bisherigen at, das die Pingerei nach einer halben Stunde beendete, ein notify, das diese Meldungen des presence-Moduls überwacht und die Pingerei bei Präsenz beendet. Letzteres hatte ich auf Joachims Vorschlag (weiter oben) hin eingeführt.
Leider hatte ich das PRESENCE-Modul als Basis meiner Umsetzung anfänglich nicht erwähnt ... ich hatte wohl gedacht, dies sei offensichtlich.
Nutze FHEM 5.9 auf Pi3B Raspbian
4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 mit Mosquitto und CUL 3.4 868MHz, λ/4-Antenne,
433MHz-Funkschaltdosen, Sonoff/Tasmota: RF Bridge 433 MHz (incl. Portisch-FW), Basic, POW-R2

MadMax-FHEM

Ich verstehe zwar immer noch nicht warum (manuell) aktivieren und deaktivieren...
...wie schon von KernSani geschrieben: der Ping des Presence-Moduls bringt dein System sicher nicht um... ;)

So ganz genau weiß ich immer noch nicht wie/wo/was...
...aber wenn es (jetzt) für dich (zufriedenstellend) läuft: sehr gut! :)

Wenn dem so ist, dann bitte noch ein [gelöst] vor den ersten Post, danke!

Viel Spaß noch, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

GiBy

Zitat von: MadMax-FHEM am 09 März 2020, 10:56:52
Ich verstehe zwar immer noch nicht warum (manuell) aktivieren und deaktivieren...
...wie schon von KernSani geschrieben: der Ping des Presence-Moduls bringt dein System sicher nicht um... ;)

So ganz genau weiß ich immer noch nicht wie/wo/was...
...aber wenn es (jetzt) für dich (zufriedenstellend) läuft: sehr gut! :)

Wenn dem so ist, dann bitte noch ein [gelöst] vor den ersten Post, danke!

Viel Spaß noch, Joachim

Hallo KernSani u. MadMax-FHEM

Mein Problem ist einstweilen mittels
1) des per at zeitgesteuert oder manuell startbarem Such-Device (Ping-Skript), ,
2) notify mit Deaktivierung des Such-Devices, falls das Suchobjekt gefunden wurde, und
3) eines weiteren at zur Abschaltung des Such-Devices (spätestens nach wählbarer Zeitspanne oder zu Zeitpunkt) erträglich gelöst.
Das Presence-Modul hatte ich ohnehin benutzt, nur in den Posts zu erwähnen vergessen, und bereits vor meiner Rundfrage die unstabile Bluetooth-durch die m.E. stabile IP-Variante ersetzt.
@MadMax: KernSani hatte doch einen ähnlichen Fall beschrieben, ich denke, den Fall mit Söhnchens Schmachtfon in einem meiner Beiträge auch als Anwendung geschildert zu haben.
Und das [Gelöst] habe ich wohl jetzt nach Deinem Hinweis auch hinbekommen - war nicht trivial.

Ich danke Euch für Eure Tips. Ihr habt mir zwar nicht den Code für die einzig wahre, günstigste Variante fertig geliefert ;), aber doch, obwohl selbst im Dunkeln gelassen, geholfen. :)
Nutze FHEM 5.9 auf Pi3B Raspbian
4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 mit Mosquitto und CUL 3.4 868MHz, λ/4-Antenne,
433MHz-Funkschaltdosen, Sonoff/Tasmota: RF Bridge 433 MHz (incl. Portisch-FW), Basic, POW-R2