[patch] presenced, lepresenced, collectord

Begonnen von Martin Fischer, 28 Januar 2018, 14:53:15

Vorheriges Thema - Nächstes Thema

Martin Fischer

Hallo Zusammen,

die Anwesendheit überprüfe ich, wie vermutlich viele von Euch, mittels presenced, lepresenced und collectord (für beide Varianten). Ich betreibe verschiedene Netzwerkzonen, so dass sich die presenced bzw. lepresenced "Satelliten" nicht immer im selben Netz befinden, wie der collectord. Zum Teil ist hier auch NAT im Spiel.

Nun möchte ich die Erreichbarkeit sowie Funktionalität des gesamten "Orchesters" (collectord, collecterd für lepresenced, presenced und lepresenced) ausserhalb von FHEM z.B. mittels monit überwachen.

Dazu habe ich sowohl collectord, presenced und lepresenced um ein "ping" erweitert. "ping" ist jedoch nur weiterer command, der dann mit "pong" antwortet und die Verbindung trennt.

Hier ein Auszug für monit:
if failed host localhost port 5222 with send "ping\n" expect "pong" timeout 30 seconds then alert

Bei mir funktionieren die hier anhängenden Anpassungen, so dass ich mich freue, wenn diese nach einer Prüfung der Maintainer so oder angepasst, übernommen werden.

Viele Grüße
Martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Markus Bloch

Hallo Martin,

ich hab kein Problem damit das einzubauen. Würde das nicht auch mit "command rejected" funktionieren?

if failed host localhost port 5222 with send "ping\n" expect "command rejected" timeout 30 seconds then alert

Bei presenced und lepresenced (sofern ich mich nicht irre) schließt Du aktiv die Verbindung nach dem "pong". Beim collectord nicht. Hat das einen Grund?

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Martin Fischer

Hallo Markus,

Zitat von: Markus Bloch am 28 Januar 2018, 15:36:33
ich hab kein Problem damit das einzubauen. Würde das nicht auch mit "command rejected" funktionieren?

In der Theorie (und natürlich auch in der Praxis  ;) ) funktioniert das mit "command rejected".

Aber:
Mein Argument für ein "ping / pong" (oder etwas ähnliches, z.B. "knock / knock") ist, das ich ja gezielt eine Funktion testen will. Da ist es meiner Menung nach einfach schöner, wenn bei einer entsprechenden Abfrage auch die erwartet Antwort kommt.

Wenn man "command rejected" mißbraucht, weiss man ja eigentlich nicht ob der Befehl "ping" abgelehnt wird ("rejected") und ein Fehler vorliegt oder weil der Befehl unbekannt ist.

Wenn man "command unknown" mißbraucht, weiss man das der Befehl als falsch erkannt wurde. Das würde aber auch kommen, wenn man ein Typo hat. Ich fand es einfach nur "sauberer".  ;D

Zitat von: Markus Bloch am 28 Januar 2018, 15:36:33
Bei presenced und lepresenced (sofern ich mich nicht irre) schließt Du aktiv die Verbindung nach dem "pong". Beim collectord nicht. Hat das einen Grund?

Bei (le)presenced kann ich mich entsinnen, dass das Verhalten von unterschiedlich war: einer hat die Verbindung (laut log) von sich aus geschlossen, der andere nicht. Ist aber nur as der Erinnerung, hab die Änderung schon vor längerem angewandt und erst jetzt veröffentlicht.

Bei collectord wird die Verbindung laut log geschlossen. Daher habe ich das nicht nochmal eingebaut. Da bist Du tiefer im Bild  ;)

Viele Grüße
Martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Markus Bloch

Hallo Martin,

ich habe den Ping-Befehl für collectord und presenced übernommen und neue Pakete bereitgestellt.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Martin Fischer

Hallo Markus,

Zitat von: Markus Bloch am 29 Januar 2018, 21:38:28
ich habe den Ping-Befehl für collectord und presenced übernommen und neue Pakete bereitgestellt.

vielen Dank dafür! Das freut mich  :D

Wäre toll, wenn lepresenced noch nachzieht...

Viele Grüße
Martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

PatrickR

Mahlzeit!

Zitat von: Martin Fischer am 29 Januar 2018, 22:23:40
Wäre toll, wenn lepresenced noch nachzieht...
Na gut :)

Version 0.9 ist im SVN. Habe den Patch etwas modifiziert, neben "redaktionellen" Änderungen habe ich die Antwort noch etwas erweitert:

pr@epsilon:~% echo ping | nc rpi-flur 5333
pong [clients=3;devices=13;min_age=0;max_age=1133;beacons_hcitool=15870;beacons_hcidump=15870;beacons_diff=0]


Ggf. müsstest Du Dein Matching minimal anpassen, vermutlich expect "^pong". Dafür gibt es aber Potenzial für einen Ausbau des Checks.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

Martin Fischer

Zitat von: PatrickR am 01 Februar 2018, 20:52:30
Mahlzeit!
Na gut :)

Danke Dir...

Zitat von: PatrickR am 01 Februar 2018, 20:52:30
Version 0.9 ist im SVN. Habe den Patch etwas modifiziert, neben "redaktionellen" Änderungen habe ich die Antwort noch etwas erweitert:
[...]
Ggf. müsstest Du Dein Matching minimal anpassen, vermutlich expect "^pong". Dafür gibt es aber Potenzial für einen Ausbau des Checks.

Danke auch dafür... allerdings würde ich es eher begrüßen, wenn collectord, presenced UND lepresenced das gleiche Verhalten, sprich die gleiche Antwort liefern würden. Mir würde ein "pong" ausreichen.

Vielleicht als Kompromiss:
Pack doch die erweiterte Antwort zusätzlich in ein "status" cmd.

Viele Grüße
Martin
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

PatrickR

^pong sollte auf alle Varianten matchen.


Von unterwegs gesendet.
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

Martin Fischer

Nun, ich bin durchaus in der Lage "regular expressions" anzuwenden..  ;)  Darum ging es jedoch nicht. Es ging ja um "gleiches Verhalten".

Du hast es jetzt anders implementiert. Dafür bedanke ich mich und finde mich dann damit so ab.  :'(

So wie ich es sehe, gabe es im Vorfeld jedoch keine Anfrage / Anforderung zu den zusätzlichen Infos; ein einfaches "pong" hätte also meiner Meinung nach gereicht.

Aber lassen wir das..

Danke für die Anpassung...
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

PatrickR

#9
Hallo Martin!

Um ehrlich zu sein bin ich etwas irritiert.

Zitat von: Martin Fischer am 07 Februar 2018, 23:03:14
Nun, ich bin durchaus in der Lage "regular expressions" anzuwenden..  ;)  Darum ging es jedoch nicht. Es ging ja um "gleiches Verhalten".
Es ging mir nicht darum, Dich in der hohen Kunst der Programmierung zu belehren sondern lediglich darum, wie Du aus "Usersicht" das gleiche Ergebnis wie "gleiches Verhalten" bekommst, nämlich "gleiche Konfiguration". Das war mir auch deshalb besonders wichtig, weil ich Markus nicht mit meiner Implementierung quasi in Geiselhaft nehmen möchte.

Zitat von: Martin Fischer am 07 Februar 2018, 23:03:14
So wie ich es sehe, gabe es im Vorfeld jedoch keine Anfrage / Anforderung zu den zusätzlichen Infos; ein einfaches "pong" hätte also meiner Meinung nach gereicht.
Wenn wir ehrlich sind, dann gab es für lepresenced selbst auch keine Anforderung, nicht einmal für blescan.pl (wenn Du Dich noch erinnerst). Und ich muss Dir widersprechen. Die Anforderung gab es, nämlich bei mir selbst und inspiriert durch Deine Idee. Der Ansatz, neben einem Check, ob der Prozess läuft, auch "in den Prozess reinzuschauen" ist ja äußerst sinnvoll, gerade weil sich durch die wundervolle Bluetooth-Implementierung und Linux gerne mal was verhakt. Ich habe das allerdings weitergedacht, so dass man optional(!) echte Lebenszeichen von lepresenced und den gespawnten Prozessen bekommen kann und damit gleich - zumindest mit starker Unschärfe - Fehler wie das Ausbleiben jeglicher Beacons (vgl. Schwesterthread) detektieren kann.

Gerne können wir das - vielleicht bist Du mal in Berlin - bei einem Bier vertiefen :)

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

Martin Fischer

Hallo Patrick,

ich widerspreche Dir doch gar nicht.. meine Argumentation bezieht sich auf die Sicht des Users. _Ich_ halte es für sinnvoll, wenn sich die Drei gleich verhalten.. und man muss es nur einmal erklären und insbesondere für Anfänger nicht auf regexp verweisen.

Daher der Vorschlag, die zusätzlichen Informationen in einen extra command zu packen.

"ping": liefert "pong"
"status" liefert: clients=3;devices=13;min_age=0;max_age=1133;beacons_hcitool=15870;beacons_hcidump=15870;beacons_diff=0

Wem ein "pong" ausreicht, der senden einen "ping".. wer mehr wissen will, sendet ein "status" und benötigt den "pong" dann nicht...

Innerhalb FHEM gibt es schon genug unterschiedliche "Rückmeldungen" auf vermeintlich gleiche Aktionen. Aber diese Diskussion führe ich immer wieder mal schon seit gefühlt > 8 Jahren... irgendwo bei den ehemaligen FHEM Google Group nachlesbar  :o

ABER: das ist meine Meinung.. und die muss sich nicht mit Deiner decken, also.... alles gut...  ;)

Viele Grüße
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Markus Bloch

Zitat von: Martin Fischer am 10 Februar 2018, 23:38:07
Daher der Vorschlag, die zusätzlichen Informationen in einen extra command zu packen.

"ping": liefert "pong"
"status" liefert: clients=3;devices=13;min_age=0;max_age=1133;beacons_hcitool=15870;beacons_hcidump=15870;beacons_diff=0

Würde ich begrüßen.

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

stromer-12

Hallo Markus,

Zitat von: Markus Bloch am 29 Januar 2018, 21:38:28
ich habe den Ping-Befehl für collectord und presenced übernommen und neue Pakete bereitgestellt.

ist dieses presenced-1.5 auch für rpi ?
Ich habe die presenced-rpi-1.4 bei mir drauf.

Gruß
Stromer
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Markus Bloch

Hallo Stomer,

ja, die Version ist auch für den Rpi gedacht. Mit der Einführung von systemd ist die Unterscheidung hinfällig geworden.

Viele Grüße

Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

stromer-12

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL