Hallo,
ich habe einen Snapmaker Artisan (das ist ein 3in1 Gerät für 3D-Druck, Lasergravur/-scheiden, CNC).
Da würde ich gerne zumindest mal den aktuellen Status abfragen (was macht das Gerät? Zumindest ist es im idle oder führt es einen Job aus). Es hängt an einer Zigbee Steckdose, die den Strom misst, damit habe ich es rudimentär aber mehr schlecht als recht erstmal umgesetzt.
Das Gerät ist im lokalen Netzwerk. Die dazugehörige Software ist Luban:
https://snapmaker.com/snapmaker-luban
https://github.com/Snapmaker/Luban
Diese kann sich mit dem Gerät verbinden, sieht die verschiedene Werte (Status, Temperaturen,...) und kann es auch steuern. Dies geht auch mit anderer Software wie Cura über ein Plugin:
https://github.com/Snapmaker/SnapmakerCuraPlugin/tree/main
Ich habe da mal bei Letzterem in ein Script im Verzeichnis network_plugin reingeschaut. Hier wird wohl eine Verbindung via Port 8080 auf eine API (api_prefix = ":8080/api/v1") aufgemacht (zur API habe ich leider nichts gefunden). Ein Versuch das einfach mal im Browser mit ip-adresse:8080/api/v1 aufzurufen ging nicht (ERR_CONNECTION_REFUSED). Ich bin im Scripting leider nicht so firm, als dass ich da sonst was Brauchbares rauslesen könnte. Aber da draußen gibts ja Euch - denke mal dass es evtl. für Euch ganz easy ist und ihr mir einen Tipp habt, wie ich damit evtl. den Status regelmäßig in einen Datenpunkt laden kann. Denke mal, dass die Magie in diesem Python Script irgendwo verborgen ist:
https://github.com/Snapmaker/SnapmakerCuraPlugin/blob/main/network_plugin/HTTPNetworkedPrinterOutputDevice.py
oder wie es Luban macht:
https://github.com/Snapmaker/Luban/blob/767fdd048eb1c141ce539dd2f12aeb076ab9582d/src/app/flux/machine/Server.js
Ich bin auch mal noch den offiziellen weg gegangen und habe dazu einen Adapter Request aufgemacht:
https://github.com/ioBroker/AdapterRequests/issues/869
Wenn es mehrere brauchen könnten wäre das evtl. was. Sonst reicht mir aktuell auch erstmal eben nur den Status in einen Datenpunkt zu bekommen.
Danke im Voraus
P.S: Hier sind die Zustände zu finden die ich gerne hätte: https://github.com/Snapmaker/Luban/blob/main/packages/luban-platform/src/machine-state/common/WorkflowStatus.ts
Was ich auch schon versucht habe: Das Gerät an einen Raspi mit Octoprint anzuschließen (dafür gibt es ja einen Adapter). Allerdings bringt Octoprint nur den Status, wenn der Job auch über Octoprint gestartet wurde (was ja dann nur für 3D Drucke geht).