NEWS
Status Snapmaker Artisan auslesen
-
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/LubanDiese 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/mainIch 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.jsIch 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).
-
Niemand? Ich habe das Gefühl, dass hier (https://github.com/Snapmaker/Luban/blob/767fdd048eb1c141ce539dd2f12aeb076ab9582d/src/app/flux/machine/Server.js) drin fast alles fertig vorliegt, bekomme es aber mit meinen arg beschränkten Programmierfähigkeiten nicht hin.
So wie es aussieht muss man:- Per Post (denke mal das geht so mit dem Browser nicht) sich mit der API verbinden. Das sollte der Aufruf dazu sein:
http://<ip-Adresse des Snapmaker>:8080/api/v1/connect
Da sollte ein JSON u.a. mit einem Token zurückkommen (beim ersten mal muss eine Verbindung am Bildschirm des Gerätes freigegeben werden) - Mit dem Token sollte man den Status auslesen können
http://<ip-Adresse des Snapmaker>:8080/api/v1/status?token=<token>
Verbindet man sich mit Luban, wird im C:\Users\User\AppData\Roaming\snapmaker-luban\machine.json ein Token aktualisiert. Da ich schon an 1. scheitere habe ich mal versucht mich mit Luban zu verbinden und den dort abgelegten Token für 2. zu verwenden. Leider auch ohne Erfolg.
- Per Post (denke mal das geht so mit dem Browser nicht) sich mit der API verbinden. Das sollte der Aufruf dazu sein:
-
@mp_trixi
so wie es aussieht hat mein Modell gar keine API mehr und kommuniziert direkt via TCP. Da war die Rede von einem “SACP connector". Keine Ahnung was das ist. Hat das damit überhaupt Aussicht auf Erfolg mit iobroker, sprich kann sowas damit gesteuert/angesprochen werden?Das wäre wohl sowas:
https://github.com/macdylan/sm2uploader/blob/master/sacp.go
Zeile 151https://github.com/macdylan/sm2uploader/blob/master/connector_sacp.go
-
@mp_trixi sagte in Status Snapmaker Artisan auslesen:
Niemand?
wäre sehr begeistert, wenn sich jemand dem annehmen könnte.
PS: habs mal nach "Allgemein" verschoben. Passt hier mMn besser als in "Scripte".
-
@negalein
Mal schauen ob es hier besser läuft
Hast auch nen Snapmaker? Welches Model? -
@mp_trixi sagte in Status Snapmaker Artisan auslesen:
Hast auch nen Snapmaker? Welches Model?
Jep, den Artisan
-
@negalein
Na. Dann hoffen wir mal dass jemand was mit dem SACP anfangen kann und wir damit zum Ziel kommen. -
Vielleicht kann ich @jkvarel überreden, sich das mal anzugucken. Einen snap-inventwo Adapter
Wir haben den A350. Zur Zeit läuft er noch über den Repetier-Server und dem Adapter dazu. Da wir uns jetzt von den Creality Druckern trennen und auf Bambu wechseln, brauchen wir den Server nicht mehr. Den Bambu bekomme ich in den ioBroker, mir fehlt dann aber der Snapmaker.
-
@skvarel sagte in Status Snapmaker Artisan auslesen:
Vielleicht kann ich @jkvarel überreden, sich das mal anzugucken. Einen snap-inventwo Adapter
Ja, das wäre Mega!!!
HHab schon versucht den Artisan in Octoprint einzubinden.
Funktioniert nur so lala, da nicht der komplette Status übermittelt wird. -
@skvarel
Hi - ja das wäre wirklich super. Ich war dazu auch schon anderweitig unterwegs. Vom Snapmaker Support kam nichts brauchbares ((noch) nicht unterstützt). Im Snapmaker Forum habe ich brauchbarere Antworten dazu erhalten (ich hoffe es ist ok, dies hier zu verlinken):
https://forum.snapmaker.com/t/do-snapmaker-2-0-devices-have-a-webpage/5455/53Der Artisan unterscheidet sich zum A350 wohl darin, dass von HTTP over TCP auf SACP over TCP umgestellt wurde. Beim 2.0 gibt es eine Möglichkeit via UDP zumindest den Status zu erhalten. Vlt. wäre das ja auch für den Artisan ein erster Schritt (zum Letzteren gibt es ein HomeAssistant Beispiel und python Script).
-
@skvarel sagte in Status Snapmaker Artisan auslesen:
Vielleicht kann ich @jkvarel überreden, sich das mal anzugucken. Einen snap-inventwo Adapter
Hallo
Konntest du ihn überreden?