hilfe für httpmod gesucht

Begonnen von the ratman, 06 März 2024, 09:57:07

Vorheriges Thema - Nächstes Thema

the ratman

#45
die 2 regex scheinen zu funzen - genau muss ichs probieren, wenn ich mal einen druck am laufen habe, derzeit sinds 2 mal 0.0 und kein fehler im log *g*

für manche ist es leicht, für andere ... ich weiß nicht, wie oft ich schon mit regex gespielt hab - aber mehr als abschreibübungen krieg' ich scheints nie wirklich hin ...
somit: vielen dank an dich!


zu "noshutdown" ...
war bis jetzt auf 0
bei 1: leider dasselbe, sobald ichs timeout 'runtersetze, gibts wieder "read from http://192.168.178.9:8899 timed out"

(wenn das dein Drucker verkraftet!)
das ist ja die frage. werd' ich wohl morgen mal probieren. setze grade ein test-fhem in meiner wsl2 auf. dann überlebt das wenigstens meine echte hausautomatisation, wenn wieder alles blockiert *g*
→do↑p!dnʇs↓shit←

the ratman

#46
so, die hoffnung steigt *g*
hab sogar die regex richtig für den rest hinbekommen und mir das mal (recht hässlich noch) in eine readingsgroup geschmissen.
das ist also nun die zusammenfassung von 3 httpmod modulen, die mehr oder weniger gleich (weil noch händisch) gestartet sind.

düse: 23.2 von 220.0 °c
bett: 47.1 von 65.0 °c
layer: 0 von 237
name: box_PLA_1h25m.gcode
endstopp: X-max: 110 Y-max: 110 Z-min: 0

die pflicht hab ich also mal erledigt.
bliebe die kür: warum kann ich im win und linux per curl trotz des timeouts abrufen, wie ich lustig bin, aber in fhem nicht?
besser gesagt: wie krieg' ich das in fhem auch hin? <-- für idioten, weil sonst wird das die nächste fragerunde hier *lach*

NACHTRAG:

und natürlich gleich die nächste dumme frage, wie sollt's anders sein? irgendwie such' ich wahrscheinlich falsch, aber zum folgenden find' ich nix bei tante google:
wenn ich mir meine zahl mit (\d+) hole, kriegt ich dann auch eventuelle vorzeichen mit? also nicht nur "000", sondern auch "-000"?
und wenn ich das "-" mit kriege, wie könnte ich dem guten endergebnis auch noch ein "+" verbassen, falls kein "-" da steht?
→do↑p!dnʇs↓shit←

canis

#47
Hi, mir ging es darum, den Drucker nach Beendigung des Jobs und der Abkühlphase abzuschalten und die Länge des verbrauchten Filaments anzuzeigen.

Zunächst die Daten aus dem Drucker einlesen: (IPs natürlich anpassen)
defmod Qidi_Klippy HTTPMOD http://192.168.211.118:7125/printer/objects/query?heater_bed&&extruder&&print_stats&&toolhead&&display_status&&virtual_sdcard 30
attr Qidi_Klippy userattr get01JSON get01Regex getData stateFormat
attr Qidi_Klippy enableControlSet 1
attr Qidi_Klippy enableCookies 1
attr Qidi_Klippy enforceGoodReadingNames 1
attr Qidi_Klippy event-on-change-reading .*
attr Qidi_Klippy extractAllJSON 1
attr Qidi_Klippy handleRedirects 1
attr Qidi_Klippy icon it_swap
attr Qidi_Klippy oldreadings result_status_print_stats_filament_used
attr Qidi_Klippy requestHeader Content-Type: application/json
attr Qidi_Klippy room Devices->3D_Qidi
attr Qidi_Klippy stateFormat Fortschritt progress_completion_percent %
attr Qidi_Klippy userReadings progress_completion_percent { ReadingsVal($name, "result_status_display_status_progress",0)*100 },\
Qidi_Used_Now {ReadingsVal($name,"result_status_print_stats_filament_used",0)}

Damit erhälst du alle verfügbaren (?), aber erforderliche Readings.

Für meine Zwecke gibt es da noch:
Die Meldung ans Handy, wenn der Druck fertig ist
defmod QiudiFertig DOIF ([Qidi_Klippy:progress_completion_percent] >= 100) \
({ fhem("set Pushover_Client msg 'Qidi fertig' priority=1") })
attr QiudiFertig disable 0
attr QiudiFertig event-on-change-reading .*
attr QiudiFertig room Devices->3D_Qidi,SystemUtils->Pushover

Die automatische Abschaltung, nachdem der Drucker abgekühlt ist:
defmod wd_QidiPowerOff watchdog Qidi_Klippy.progress_completion_percent.*100 00:20:00 Qidi_Klippy.result_status_print_stats_state.*printing set QidiPow off
attr wd_QidiPowerOff autoRestart 1
attr wd_QidiPowerOff disable 0
attr wd_QidiPowerOff room Devices->3D_Qidi

Und nun noch Qidi_Filament_Used und Qidi_Filament_Left, wobei Letzteres eigentlich das Wichtigste ist, was sich aus den o.g. Daten leicht errechnen läßt.

Das Qidi_Filament_Used und die Abschaltung des Druckers waren mit wichtig, um zu ermitteln, ob das verbliebend Filament für den Druck reich.

Ich poste das gerade, weil ich nun seit 4 Tagen eine Filamentwaage für die Trockenbox zum Einsatz gebracht habe, die auf +- 1 g die das Gewicht des ganzen Dings messen kann, daraus  läßt sich einfach errechnen, wieviel g Filament noch auf der Spule sind.

Entsprechende Berechnungen sind einfach.

LG Canis