[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker

Begonnen von michael.winkler, 31 Dezember 2017, 16:56:28

Vorheriges Thema - Nächstes Thema

michael.winkler

Zitat von: JamesB am 04 Dezember 2018, 22:07:37
Ich verwende diese Version: 2018-10-12, v0.0.11
Hast du das JSON Modul installiert?

Wenn nicht probier mal


sudo apt-get install libjson-perl

jeti

#121
Zitat von: michael.winkler am 06 Dezember 2018, 07:19:28
Bist du dir sicher dass der Port 5000 stimmt? Ansonsten mal ein Verbose 5 LOG erstellen
Wo kann ich den Port auf Octoprint nachsehen??? Ich finde es gerade nicht mehr  :o

und anbei der log:

Zitat
2018.12.06 17:07:31 5 : OctoPrint JGaurora [OctoPrint_HD_HandleCmdQueue] - send command url = http://192.168.1.189:5000/api/printer?exclude=state,sd&apikey=xxx
2018.12.06 17:07:31 5 : OctoPrint JGaurora [OctoPrint_HD_HandleCmdQueue] - send command data =
2018.12.06 17:07:31 5 : OctoPrint JGaurora [OctoPrint_HD_HandleCmdQueue] - send command head = Content-Type: application/json
2018.12.06 17:07:31 4 : IP: 192.168.1.189 -> 192.168.1.189
2018.12.06 17:07:31 4 : HttpUtils: 192.168.1.189: Connection refused
2018.12.06 17:07:31 5 : OctoPrint JGaurora [OctoPrint_ReceiveCommand] called function
2018.12.06 17:07:31 5 : OctoPrint JGaurora [OctoPrint_ReceiveCommand] [readings_printer] Data =
2018.12.06 17:07:31 5 : OctoPrint JGaurora [OctoPrint_ReceiveCommand] [readings_printer] JSON =
2018.12.06 17:07:31 5 : OctoPrint JGaurora [OctoPrint_ReceiveCommand] [readings_printer] JSON = NODATA
2018.12.06 17:07:31 5 : OctoPrint JGaurora [OctoPrint_ReceiveCommand] ERROR = 192.168.1.189: Connection refused


:-\ jetzt gehts, der Port 5000 war falsch, ohne Port Angabe gehts nun... Danke für den Tip!!

JamesB

Ja das Modul sollte richtig installiert sein:

libjson-perl ist schon die neueste Version (2.90-1).

Diesen Log habe ich mit Verbose=5 erstellt:

https://forum.fhem.de/index.php/topic,81929.msg866795.html#msg866795
ESXi - Debian / 2 x Raspberry PI 3 / CUNX / KS 300 / HM

JamesB

Problem Eingeschränkt. Der JSON String kann nicht dekodiert werden.

Fehler:
JSON text must be an object or array (but found number, string, true, false or null, use allow_nonref to allow this) at ./FHEM/70_OctoPrint.pm line 258

Das dürfte im Zusammenhang mit dem HMCCU RPC-Server stehen. Auf einer 2. Maschine läuft das Modul. Den Fehler hatte ich schon mal in ähnlicher Form.


ESXi - Debian / 2 x Raspberry PI 3 / CUNX / KS 300 / HM

masterpete23

ich würde gerne ein Notify nutzen.
Derzeit bekomme ich bei 0% 20% 40% 60% und 80% nen Bild der Cam.


Anscheinend springt er bei 100% gleicht auf fertig.
Was habt ihr für gute Ideen / Umsetzungen zum Notify DOIFs etc?
Internals:
   DEF        MarieLuise:progress_completion_percent:.* {
    if (Value($NAME) eq "Printing") {
        my $progressPercent = ReadingsNum($NAME, "progress_completion_percent", 0);
        if ($progressPercent % 20 == 0) {
            fhem("get 3DDruckerKamera image");
            fhem("sleep 2; set teleBot sendImage ./www/snapshots/3DDruckerKamera_snapshot.jpg Fortschritt: $progressPercent %");
        }
    }
}
   NAME       n_MarieLuiseProgressTelegram
   NOTIFYDEV  MarieLuise
   NR         603
   NTFY_ORDER 50-n_MarieLuiseProgressTelegram
   REGEXP     MarieLuise:progress_completion_percent:.*
   STATE      2019-01-16 08:40:10
   TRIGGERTIME 1547624410.84923
   TYPE       notify
   READINGS:
     2019-01-07 09:28:32   state           active
Attributes:
   group      Kellerlogik
   room       Logik

Userreading vom Drucker
userReadings progress_completion_percent { sprintf("%d", ReadingsNum($NAME, "progress_completion", 0)) }

Christoph Morrison

Zitat von: masterpete23 am 16 Januar 2019, 11:45:14
ich würde gerne ein Notify nutzen.
Derzeit bekomme ich bei 0% 20% 40% 60% und 80% nen Bild der Cam.

Steig auf DOIF um und nutze das State-Machine-Feature um ein Bild bei 0,20,40,..,100% zu schicken, aber bei 100%/fertig nur wenn vorher der 80%-Status wahr war.

masterpete23

Ho das klingt kompliziert? Hättest du einen hilfreichen abwandelbaren Codeschnipsel?

Christoph Morrison

Zitat von: masterpete23 am 17 Januar 2019, 11:32:56
Ho das klingt kompliziert? Hättest du einen hilfreichen abwandelbaren Codeschnipsel?

Eigentlich ist das sogar ziemlich einfach ;). Ich hab hier einen Briefkasten mit zwei Sensoren (Klappe oben, Klappe unten). Wenn Post eingworfen wird (Klappe oben = auf) soll eine Nachricht gepusht und ein Todoist-Task angelegt werden. Aber: Wenn unten geöffnet wird und Post drin war, soll der Status zurück auf "leer" gesetzt werden (und eine Nachricht gepusht werden, dass sich jemand erbarmt hat den allfälligen Papiermüll zu entsorgen). Ich möchte aber auch keine Nachricht/Task haben jedesmal wenn Post nachträglich eingeworfen wird und noch keiner geleert hat, einmal reicht. Also muss man den Status des ganzen irgendwie vorhalten. Hier meine Lösung (das ist Version 2, Version 1 war ohne state machine fünfmal so umfangreich und immer buggy):

(ich konne die Definition hier eben nicht posten, da das Forum den Quellcode irgendwie bemängelt hat, aber mir nicht verraten wollte, wieso)

Der entscheidende Teil ist $cmd=~"0|2" - hiermit nagelst du den Automaten darauf fest, dass der Zustand nur geändert wird, wenn vorher ein anderer (0 = kein Zustand, 2 = ist leer) wahr war. Mit $cmd=~"1" lege ich fest, dass der zweite Teil nur dann wahr werden kann wenn auch Post eingeworfen wurde.

Die Abwandlung für den Drucker wäre, dass man jeweils prüft ob (progress = 20% und vorheriger status bzw. cmd_x == 0), (progress = 40% und vorheriger status bzw. cmd_x == 20% ), usw. Die state machine läuft dann immer nur von 0 bis 100 durch und fängt dann wieder von vorne an (deswegen nennt man die Dinger auch finite state machine (fsm) - endlicher Automat).

retikulum

Hi.
Ich nutze dein Modul regelmäßig. Einfach klasse!

Ich hätte aber ein Feature-Request:
Es wäre super, wenn es ein "set reset" geben würde, um ein Teil der Readings zurückzusetzen (Temperatur, Progress, job_file_xxx,...).
Oder, dass das automatisch zurückgesetzt wird, wenn Octoprint offline ist.
Momentan mache ichs mittels DOIF jeden einzelnen Wert zurücksetzen, wenn das Reading "online" dann "false" ausspuckt.

Ist nur, um die cfg ein wenig aufgeräumter zu halten :-)

Sorry, falls dieser Request hier bereits existiert und ichs überlesen haben sollte.

retikulum

Zitat von: Christoph Morrison am 17 Januar 2019, 12:12:06
Ich hab hier einen Briefkasten mit zwei Sensoren (Klappe oben, Klappe unten).

Ui, ich habs bisschen einfacher... Ein Sensor am Boden.. ein ausgeleierter Endstop meines Druckers. Und ein Stück Pappe drauf zugeschnitten als Boden.
Wenn Brief reinfällt wird der Sensor ausgelöst, wenn Briefkasten leer wird, entspannt sich der Sensor wieder. Über event-on-change-reading und schon hat man zwei Zustände gelesen/geloggt.

mark79

#130
Ich möchte ein Problem (Fhem Absturz) melden. Das Octoprint Modul oder Fhem kommt nicht so gut mit Sonderzeichen als Dateiname in der gcode Datei zurecht.

Simplyfi3d hat mir ein komisches Sonderzeichen (Rasierpin�elhallter.gcode) in den Dateinamen gehauen, welches in Octoprint hochgeladen wurde und Fhem ist darauf hin abgekackt mit folgender Fehlermeldung: Wide character at /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1/Encode.pm line 228.

Das hat einige Zeit gedauert, bis ich mal den Ursache gefunden habe... Geholfen hat ein "attr global verbose 5".

Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten


mark79

Hallo

Zitat von: michael.winkler am 04 April 2019, 08:27:23
Hast du die aktuelle Version im Einsatz?

Daran habe ich gar nicht gedacht... Ich habe eine etwas ältere Version:
Zitatroot@fhem:/opt/fhem/FHEM# cat 70_OctoPrint.pm
# $Id: 70_OctoPrint.pm 15133 2017-09-24 21:03:57Z michael.winkler $
############################################################################
# 2018-09-05, v0.0.10
#
# v0.0.10
# - BUGFIX:  Readings mit 0 wurden nicht geschrieben
# - CHANGE:  readingsBulkUpdateIfChanged to readingsBulkUpdate

Ich werde das updaten und dann noch mal ausprobieren.


Viele Grüße
Mark
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

mark79

Hallo, mit der aktuellen tritt das Problem nicht mehr auf.
Sorry für den Trubbel, ich dachte ich wäre mit dem Modul up2date. :)


Viele Grüße
Mark
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

DasQ

Zitat von: DasQ am 28 November 2018, 14:51:30
etwasw OT: gibts da irgend eine möglichkeit das mit dem MQTT2 server zu kombinieren?
mir erstellt es jedesmal ein neues MQTT2_device

das problem ist gelöst

https://forum.fhem.de/index.php/topic,99512.msg931945.html#msg931945
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org