SMARTMON - ein Frontend für smartctl

Begonnen von hexenmeister, 15 Dezember 2014, 23:47:45

Vorheriges Thema - Nächstes Thema

Bensen9

Hi Hexenmeister,

Ich habe einen perl script welches ich geschrieben habe und jetzt aus FHEM mittels "perl script.pl" aufrufen wollte. Daraufhin is FHEM immer hängen geblieben und ich habe Stunden gesucht woran das liegen könnte. Jetzt hab ich gemerkt, dass es am SAMRTMON Modul liegt (hab es grade auch via update aktuell gesetzt). Wenn ich SMARTMON aus der config raus nehme geht alles.

Hast du ne Idee woran das liegen könnte.

Danke. Gruss Ben

MadMax-FHEM

Weil ich es jetzt erst (hier) noch mal lese (weil da: https://forum.fhem.de/index.php/topic,60474.msg1117125.html#msg1117125 geht es ja um "Shell-Scripte" [also "hauptsächlich"]) wenn es Perl ist, warum dann den "Umweg" über die Linux/OSX-Shell?

Warum nicht einfach in eine myUtils Sub packen? :)
https://wiki.fhem.de/wiki/99_myUtils_anlegen

Und wie ebenfalls "dort" geschrieben habe ich das SMARTMON-Modul im Einsatz (2 Platten remote per ssh, sollte aber "egal" sein) und auch einige Shell-Script (also KEIN Perl, weil das kommt in die myUtils) und keine Probleme...

@Hexenmeister: wie im anderen Thread ja bereits angedeutet bin ich dabei SMARTMON non-blocking "umzubauen"... Habe gemerkt, dass es fhem "freezed" wenn die Platte die norm. "schläft" abgefragt wird, weil das bis zu 6s dauern kann... Dachte (bis ich [noch mal]) in den Code geschaut habe, dass es eigentlich schon no-Blocking wäre...

Ich teste aktuell noch ein wenig und schaue noch mal durch den Code und würde es (bei Interesse) dann hier anhängen (mit Wunsch/Bitte um "Übernahme" :)  )...

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)

hexenmeister

Zitat von: Bensen9 am 03 Januar 2021, 02:32:23
Hast du ne Idee woran das liegen könnte.
Gute Frage, habe erstmal keine Idee. SMARTMON startet auch shell und wartet auf Rückmeldung. Vermutlich kommt das sich irgendwie in die Quere. Aber wie...

Aber MadMax-FHEM gat recht, welchen SInn ergibt es, Perl über Shell zu starten?

hexenmeister

Zitat von: MadMax-FHEM am 03 Januar 2021, 14:10:41
@Hexenmeister: wie im anderen Thread ja bereits angedeutet bin ich dabei SMARTMON non-blocking "umzubauen"... Habe gemerkt, dass es fhem "freezed" wenn die Platte die norm. "schläft" abgefragt wird, weil das bis zu 6s dauern kann... Dachte (bis ich [noch mal]) in den Code geschaut habe, dass es eigentlich schon no-Blocking wäre...

Ich teste aktuell noch ein wenig und schaue noch mal durch den Code und würde es (bei Interesse) dann hier anhängen (mit Wunsch/Bitte um "Übernahme" :)  )...
Das wäre definitiv sinnvoll. Werde ich natürlich gern in die Repo aufnehmen.

MadMax-FHEM

Zitat von: hexenmeister am 03 Januar 2021, 18:47:42
Das wäre definitiv sinnvoll. Werde ich natürlich gern in die Repo aufnehmen.

Na dann hänge ich mal eine Version hier dran.

Ich habe sie seit ca. 2 Tagen laufen und konnte nichts "negatives" sehen.
(gut ein wenig bin ich heute noch über's Logging und "Comments" / sollte aber "unkritisch" sein)

Ich bin nicht sicher, ob es die "beste Stelle" war, um bzgl. non-blocking "abzubiegen" aber es war (für mich) die einfachste Stelle ;)

SMARTMON_refreshReadings_ ist die Original-Sub. Habe ich nur drin gelassen um zu "spicken" (und notfalls zurück zu kommen)... ;)

Danke für's Übernehmen schon mal!

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)

Bensen9

Hallo ihr beiden. Naja mir ist nichts besseres eingefallen da ich mit myUtils noch nie gearbeitet habe.

Mein perl Script generiert eine statische picture gallery webpage aus meinem Bilder Archiv. Ich wollte das erst als Modul umsetzen aber dazu ist mein perl Verständnis zu schlecht. Aber ich versuche das mal mit myUtils.

Ich wollte das Programm dann eh der Community zur Verfügung stellen aber dazu hätte ich gern eine ordentliche Integration in FHEM. Vielleicht könnt ihr mir helfen dabei.

Trotz allem ist die Blockierung durch SMARTMON bei mir vorhanden... passiert immer egal welchen Shell Befehl ich absetze. Ich schau morgen mal ob's am Timing liegt.

Gruss Ben

MadMax-FHEM

Naja zur Verfügung stellen geht auch als Sub in myUtils im Forenbereich "code Schnipsel" (oder so)

Aber wenn es schon Perl ist, sollte eine Integration per myUtils (habe ich ja im anderen Thread verlinkt) nicht so schwer sein...

Wenn du hilfe brauchst einfach melden...

Komisch, dass es nur mit dem SmartMon auftritt...

Aber: wie lange "arbeitet" dein Script? Selbe Platte, die auch per SmartMon "geprüft" wird? Wie ist dein SmartMon-Intervall?

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)

Bensen9

Mein SMARTMON Interval ist auf 3600sec und prüft 4 Platten die am gleichen Rechner hängen wie FHEM.

Mein script kann nicht die Ursache sein, denn bereits ein simples "ls" bringt FHEM zum hängen.

Ich hab jetzt auch extra sicher gestellt, dass SMARTMON nicht läuft (also alle Platten geprüft worden sind) wenn ich ein "ls" über die Weboberfläche sende ... hängt trotzdem.

Läuft SMARTMON vielleicht noch (wartet auf Antwort) wärend meinem pause Interval?


MadMax-FHEM

Naja in der aktuellen Version "hängt" fhem sowieso solange eine Prüfung stattfindet.
Mit verbose5 bei den SMARTMON-Devices siehst du was gerade läuft und wann es fertig ist.

Die Platten sind alle lokal und nicht im "sleep"?
Wie geschrieben dauert der Test bei mir mit der Platte die in "sleep" ist ca. 6s.
Bei der anderen "Platte" (die eine SSD ist ;)  ) dauert es so 1-2s.
Beide Abfragen aber "remote" per ssh...

Wenn du beispielsweise "ls" eingibst, kommt dann irgendwann ein Ergebnis? Oder geht dann gar nichts mehr "nie mehr" in/mit fhem?

Hast du freezemon laufen?
Der würde anzeigen, dass und warum fhem hängt (so habe ich das ja entdeckt, dass SMARTMON "blocking" ist).

Geht denn ein anderes Shell-Kommando, was NICHT auf Platten zugereift?

Z.B. "date" (gibt es das auf OSX?) o.ä.

Weil irgendwie kann ich keinen Zusammenhang zwischen SMARTMON und deinem Problem sehen (und ich hab ja nun doch schon ein wenig Zeit im "Code" zugebracht ;)  )...
...außer dass: ls auf die Platte zugreift und auch wohl dein Perl-Script...

Mit verbose5 wird auch protokolliert, welche SMARTMON-Kommandos abgesetzt werden...
Du kannst ja auch mal die Kommados "per Hand" auf der Console eintippen und dann mal versuchen in fhem ein "ls" auszuführen...

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)

Bensen9

Die Platten sind alle lokal, ja. Es sind 1x SSD intern und 3x HDD extern via USB. Alle sind 24/7 ohne sleep (ich bilder mir ein das ist besser :-) ).

Wenn ich "date" eingeben (gibt es bei OSX ist ja quasi ein Linux) ist das gleiche wie bei "ls". Hab auch schon das SMARTMON für die interne Platte ausgemacht und nur für eine der anderen an ... kein Unterschied.

Verbose 5 zeigt alle Komandos, aber ich seh nix ungewöhnliches (mit Laien Augen).

Jetzt kommt aber das Beste ... hab dein Modul von oben runtergeladen und bei mir eingebaut ... alles geht :-). "ls" und "date" werden brav ins Log geschrieben und auch mein script läuft (auch wenn es natürlich über myUtil schöner wäre).

Ich werd mir mal Freezemon anschauen um eventuell noch was zu finden aber momentan kann ich nicht mehr sagen als dass die aktuelle Version bei mir den Fehler produziert aber deine nicht. Vielleicht liegt es ja doch an OSX, aber ob sich da ein weiterer Tester findet ist ungewiss.

Danke schon mal. I'll keep you posted. Gruss Ben

MadMax-FHEM

Freut mich, dass meine Anpassung des Moduls hilft... :)

Dann gibt es außer mir ja auch gleich noch einen "Tester" ;)

Eigenartig bleibt es trotzdem...
Weil der einzige Unterschied ist, dass die System-Kommandos bei "meiner Version" halt im Hintergrund ausgeführt werden (bzw. "in" einer "Kopie" von fhem) und im "Original" eben "einfach so" in fhem und zwar "blockend"...

Also in der Zeit wo das SMARTMON-Kommando läuft "geht in fhem gar nichts mehr" aber ansonsten ist das fhem "ganz normal"...

Eigenartig...

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)

hexenmeister

Hallo Joachim,

habe deine Version kurz getestet und ohne Änderng übernommen. Werde noch bei Gelegenheit den alten Code rauswerfen.
Vielen Dank für die Anpassung!

VG
Alexander

P.S. Auch nach längerem Nachdenken verstehe ich leider nicht, warum SMARTMON in Verbindung mit shell-Aufrufen den FHEM "einfriert"...  :(

MadMax-FHEM

Zitat von: hexenmeister am 04 Januar 2021, 16:29:35
Hallo Joachim,

habe deine Version kurz getestet und ohne Änderng übernommen. Werde noch bei Gelegenheit den alten Code rauswerfen.
Vielen Dank für die Anpassung!

Hallo Alexander,

gerne! Und: super! :)

Bin gerade dabei möglichst wenige freezes zu haben bzw. alles was irgendwie freezes verursacht/verursachen könnte irgendwie zu "eliminieren".
Und da dein Modul sehr übersichtlich ist und ich eh schon mal dran "gebastelt" hatte, dachte ich mir: ich hab Zeit, also probiere ich mal das mit non-blocking ;)
(weil die 6s [zwar bei mir nur 1x am Tag aber trotzdem] tun schon "weh" ;)  )


Dann morgen ein Update...

Zitat von: hexenmeister am 04 Januar 2021, 16:29:35
P.S. Auch nach längerem Nachdenken verstehe ich leider nicht, warum SMARTMON in Verbindung mit shell-Aufrufen den FHEM "einfriert"...  :(

Wie geschrieben: mir auch ein Rätsel.

Aber wenn die non-blocking Implementierung tatsächlich hilft :)
Wobei mich selbst das wundert...

Weil, dann wäre es ja nur eine Frage der Zeit, bis ein anderes Modul/Device "blockiert" und dann ist das "Problem" ja evtl. wieder da...

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)

Wernieman

Er hatte etwas von "Platten an USB" geschrieben und das auch ein "ls" zum  Hänger führt. Es gibt Betriebsysteme, die USB bei nicht Gebrauch schlafen legen. Das braucht auch etwas Zeit zum "aufwachen". Inder zeit kann natürlich kein I/O Stattfinden ... was zum beschriebenen verhalten führen könnte.

Die Frage wäre, ob auch auf Betriebsystemebende es zu den beschriebenen Hängern führen könnte ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

MadMax-FHEM

Dann sollte aber ein 'date' kein Problem sein.

Außer eben, dass der Smartmon-Scan doch (viel) länger dauert und fhem dann (nat.) gar nichts mehr macht...

Würde evtl. auch erklären warum dann die non-blocking Variante "hilft"...

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)