Anbindung 3D-Drucker an FHEM mit Mainsail/Moonraker/Klipper

Begonnen von JWRu, 31 Januar 2022, 12:32:03

Vorheriges Thema - Nächstes Thema

JWRu

Ich habe meinen 3D-Drucker kürzlich "geklippert"  und Octoprint durch Mainsail und Moonraker ersetzt.
Bisher hatte ich ihn über das OctoPrint-Modul an FHEM angebunden und konnte so den Status in FHEM sehen.
Jetzt überlege ich, wie ich das mit Mainsail und Moonraker mache und sehe zwei Möglichkeiten:

1. Moonraker stellt ja einen MQTT-Client zur Verfügung, über den ich das machen könnte. Ich habe eh einige MQTT-Devices laufen.
2. Moonraker hat eine umfangreiche HTTP API, die ich mit HTTPMOD nutzen könnte.

Gibt es schon irgendwelche Erfahrungen zu diesem Thema?
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon-Sensoren; TFA-Sensoren; Steuerung Viessmann-Heizung; Arduinos für Strom-, Wasser-, Gaszähler, Rauchmelder und FI-Schutzschalter

erotikbaer

Hi,
ich bin auch gerade auf der Suche wie ich den Klipper Status zu Fhem oder noch besser direkt per pushover an meine clients bekomme.
Hast du irgendeinen Weg gefunden?

Gruß Christian

JWRu

ZitatHast du irgendeinen Weg gefunden?
Ich habe es mit MQTT gemacht. So sieht der Eintrag in der moonraker.conf aus:
[mqtt]
address: XXX.XXX.XXX.XXX
port: 1883
username: XXXXXX
password: XXXXX
mqtt_protocol: v3.1.1
enable_moonraker_api: True
status_objects:
    webhooks
    extruder=temperature
    heater_bed=temperature
    fan=speed
default_qos: 0
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon-Sensoren; TFA-Sensoren; Steuerung Viessmann-Heizung; Arduinos für Strom-, Wasser-, Gaszähler, Rauchmelder und FI-Schutzschalter

erotikbaer

ok super, danke dir.
hast du eine idee wie man den druckfortschritt in prozent bekommen könnte? und im idealfall noch den dateinamen der gcode?

JWRu

Hier müsste es drinstehen:

https://moonraker.readthedocs.io/en/latest/printer_objects/

Einfach noch zusätzlich im Abschnitt "status_objects:" einfügen.
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon-Sensoren; TFA-Sensoren; Steuerung Viessmann-Heizung; Arduinos für Strom-, Wasser-, Gaszähler, Rauchmelder und FI-Schutzschalter

erotikbaer


pula

Hi!
bin auch grade von octoprint auf fluidd umgestiegen.
könntet ihr so nett sein und hier den mqtt-abschnitt der moonraker.conf teilen?
ich würde gerne von den print_stats gerne nur ausgewählte objekte per mqtt senden, bin aber wegen der notation unsicher.
ist auch blöd zum testen, weil dazu ein druck gestartet werden muss ;-)
danke im voraus und cheers,
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

JWRu

So sieht meine aus:
[mqtt]
address: XXX.XXX.XXX.XXX
port: 1883
username: XXXXXX
password: XXXXXX
mqtt_protocol: v3.1.1
enable_moonraker_api: True
status_objects:
    webhooks
    extruder=temperature
    heater_bed=temperature
    fan=speed
default_qos: 0
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon-Sensoren; TFA-Sensoren; Steuerung Viessmann-Heizung; Arduinos für Strom-, Wasser-, Gaszähler, Rauchmelder und FI-Schutzschalter

pula

@JWRU:
Danke! Die ist ziemlich straight forward :-)
Aber genau die Temperaturen möchte ich nicht drin haben, weil sie mir den mosquitto vollspammen...
Ich hätte es so probiert, tut aber nicht (und in der moonraker.log seh ich dazu auch nix):
instance_name: fluidd
status_objects:
    webhooks
    print_stats=state
    print_stats=filename
    print_stats=total_duration
    print_stats=print_duration
    print_stats=message


Ich vermute, daß die Notation nicht richtig ist, aber wissen tu ich es noch nicht...
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

JWRu

ZitatAber genau die Temperaturen möchte ich nicht drin haben, weil sie mir den mosquitto vollspammen...
Dafür habe ich im FHEM-Device "event-min-interval" gesetzt.
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon-Sensoren; TFA-Sensoren; Steuerung Viessmann-Heizung; Arduinos für Strom-, Wasser-, Gaszähler, Rauchmelder und FI-Schutzschalter

pula

Zitat von: JWRu am 25 März 2022, 14:50:09
Dafür habe ich im FHEM-Device "event-min-interval" gesetzt.
Gute Idee! Der mosquitto selber wird aber dabei trotzdem zugespammt :-(
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

JWRu

ZitatIch hätte es so probiert, tut aber nicht (und in der moonraker.log seh ich dazu auch nix):
"print_stats" funktioniert nur, wenn eine [virtual_sdcard] in der Klipper printer.cfg definiert ist und von dieser auch gedruckt wird.
ZBox; RasPi 3B; RasPi Zero W; Homematic; Z-Wave; EnOcean, Shelly; DuoFern; Oregon-Sensoren; TFA-Sensoren; Steuerung Viessmann-Heizung; Arduinos für Strom-, Wasser-, Gaszähler, Rauchmelder und FI-Schutzschalter

rspecht

#12
Hallo Zusammen,

damit mir mein Mosquito nicht zugespamt wird habe ich nun die API von Moonraker genutzt. Hier als Info:
defmod JSON_3DDrucker1_Stats1 JsonMod http://ip1.2.3.4/printer/objects/query?webhooks&print_stats&heater_bed&temperature_sensor%20chamber&extruder=target,temperature,power
attr JSON_3DDrucker1_Stats1 interval * * * * *
attr JSON_3DDrucker1_Stats1 readingList complete()
attr JSON_3DDrucker1_Stats1 room 3D Drucker
attr JSON_3DDrucker1_Stats1 stateFormat result.status.heater_bed.temperature °C, result.status.temperature_sensor_chamber.temperature °C, result.status.print_stats.state


Ach und als Webcmd kann man auch GCodes, Macros usw. senden:
http://ip1.2.3.4/printer/gcode/script?script=M109%20S250

Mehr Infos mit: /printer/objects/list

Viel Spaß damit :)



Tante Edit:
Hier noch das Device zum Steuern der Makros:

defmod HTTPMOD_3DDrucker1_Ctrl1 HTTPMOD none 0
attr HTTPMOD_3DDrucker1_Ctrl1 room 3D Drucker
attr HTTPMOD_3DDrucker1_Ctrl1 set01Name Change_ABS
attr HTTPMOD_3DDrucker1_Ctrl1 set01NoArg 1
attr HTTPMOD_3DDrucker1_Ctrl1 set01URL http://ip1.2.3.4/printer/gcode/script?script=CHANGE_ABS
attr HTTPMOD_3DDrucker1_Ctrl1 set02Name Change_PLA
attr HTTPMOD_3DDrucker1_Ctrl1 set02NoArg 1
attr HTTPMOD_3DDrucker1_Ctrl1 set02URL http://ip1.2.3.4/printer/gcode/script?script=CHANGE_PLA
attr HTTPMOD_3DDrucker1_Ctrl1 set03Name Preheat_Bed
attr HTTPMOD_3DDrucker1_Ctrl1 set03NoArg 1
attr HTTPMOD_3DDrucker1_Ctrl1 set03URL http://ip1.2.3.4/printer/gcode/script?script=PREHEAT_BED
attr HTTPMOD_3DDrucker1_Ctrl1 webCmd Change_ABS:Change_PLA:Preheat_Bed