Octoprint 3D Drucker MQTT

Guten Abend,

bin nun stolzer Besitzer eines Anet A8 3D Drucker…

Aufbau war mit Youtube Videos in 4 Stunden erledigt… Seit dem druckt er… ich habe noch viele Wege vor mir, aber die sind machbar, das Ding ist günstig und druckt seine Verbesserungen im Grunde für Centbeträge selbst…

ABER

ICh will das Ding im Symcon… Also erstmal einen Raspberry heute mit Octoprint geflasht und rumgespielt… läuft stabil, hat sein eigenes Raspberry Gehäuse heute gedruckt… zufrieden…

Nun habe ich das MQTT Plugin heute gefunden… hat dafür jemand schon eine Integration in Symcon?

Falls nicht mache ich mich an die Tests, aber man muss ja das Rad nicht neu erfinden und wenn, dann wird es ohne Hilfe einfach nicht gehen!

ICh freue mich auf eventuelles Feedback, und wenn nix kommt, hoffe ich auf eure Hilfe das neue Problem zu lösen!

Viele Grüße

Da erschließt sich mir der Sinn nicht:confused:
Überwachung, wann fertig?
Neuer Haustürschlüssel, wenn verloren gegangen… oder sowas:D

EDIT/
Ein Welcomelogo-Print für Besucher fällt mir für die Hausautomatisierung gerade noch ein…

Tut mir leid, solang niemand anders was einfällt, verschiebe ichs erstmal zum OT

mhhh das ist schade… denn immerhin ginge damit die komplette steuerung des druckers aus symcon raus… statistiken etc…

warum das auf einmal offtopic ist muss ich nun nicht ganz verstehen oder?

und wenn sich dir der sinn nicht so ganz erschließt… einfach mal drüber nachdenken warum man die usv im symcon haben will… statistik, überwachung… naja… da hat vllt auch einfach der falsche den thread gelesen

Also ich kenne da auch jemand, der seinen 3D Drucker im IPS eingebunden hat (nicht über MQTT) und dort die restliche Druckzeit anzeigt, Push-Nachricht aufs Handy bei Druck-Ende, X Minuten nach Druck-Ende den Strom vom Drucker abschalten, …

Grüße,
Chris

vllt kannst du mir dazu mehr berichten? es muss ja nicht mqtt sein… ist nur das einzige protokoll was ich derzeit in die richting gefunden habe

Er hat einen Drucker mit Repetier Firmware und da gibt es dann eine Webseite vom Drucker mit allen möglichen Infos, man kann auch eine Kamera einbinden, viiiel anstellen, …
…und diese Webseite wird einfach ausgelesen :slight_smile:

Den Repetier Server kann man auch mit anderen Druckern verwenden. Vielleicht ist das ja auch was für dich…
Repetier-Server

Grüße,
Chris

der octoprintserver stellt auch eine website zur verfügung, diese auszulesen, habe ich nich nicht probiert, find ich aber auch ein weng naja, wenn es denn geiler geht :wink: hoffe verstehst mich… gibt halt das mqtt plugin… das nutze ich ja mit den wemos und espeasy auch… ich muss mal schauen was da so ankommt… nur bin ich eben kein held diesen string zu zerhacken und großartig was draus zu machen… habe zig wemos hier laufen mit espeasy… und kann die wundervoll auslesen… schicke sachen gebaut… aber ohne das auslesescript hier… ich wäre keinen meter weiter gekommen… leider…

Sollte doch schnell aufgebaut sein. Auf dem Raspberry noch den Mosquitto Broker installieren und schauen was Octoprint alles so sendet. Auf welchem Topic der sendet steht doch auf Github. Ein MQTT Plugin für Symcon existiert auch bereits. Habe damit schon rumgespielt, funktioniert einwandfrei.
Gruß
Georg

PS: Vielen Dank noch für den Tip „Octoprint“. Direkt installiert, funktioniert ebenfalls super. :slight_smile:

ich mag eben nicht noch hier und da was installieren… eigentlich soll der server nur senden und symcon empfangen… mitm wemos funzt das ganz gut…

ich muss mal schauen was er sendet bzw was symcon empfängt… der umweg über broker und plugins… mhhh wenn ich mich daran erst gewöhne, bin ich auch ganz schnell von symcon weg… dafür wars aber bis jetzt zu teuer [emoji6] denn all das… also hier und da was installieren und zum schluss mal ein ergebnis haben, das können die ganzen freewarelösungen auch… aber mittlerweile werden solche themen hier ja leider schon ins off topic verschoben… irgendwas habe ich wohl leider verpasst in der symcon welt…

So ganz verstehe ich die Aufregung auch nicht.
Mittlerweile sind diese Randthemen doch etabliert in Symcon. Da wird doch alles eingebunden und angezeigt.

Ich habe auch Repetier Server für meine Drucker und Octoprint kenne ich. In IPS brauch ich das persönlich nun nicht, weil es native Lösungen gibt aber warum nicht.

Ich wünsche schon mal ein frohes Fest und ne besinnliche Zeit. [emoji6]

Gesendet von iPhone mit Tapatalk

Sry, nicht gleich beleidigt sein. :wink:
Evtl. ists in der PC-Ecke auch erstmal ganz gut angesiedelt.

Eine USV ist meistens in irgendeiner dunklen Ecke oder Schrank und verrichtet über Jahre still ihren Dienst, ohne dass man etwas startet oder ständig schaut ob es Fehler gibt, oder die Batterie sich langsam dem Lebensende nähert.
Das sehe ich auch sinnvoll, auch wenn bessere USVs auch emails versenden können.

Zeigt ein 3D-Drucker nicht beim Start des Druckvorgang schon an, wenn dieser etwa beendet ist?
Oder muss man den ständig beobachten, ob er noch läuft? Filament nachfüllen vielleicht?!

Also so ganz abwegig ist die Idee nicht …
Monitoring vom Drucker
Notabschaltung in Verbindung mit dem Rauchmelder z.B. ist auch sicher sinnvoll.
Ggf einschalten von Lüftung…

Die Integration in IPS ist ja dann dank mqtt auch nicht schwer.

Einen Pi mit nem Mosquitto aufgesetzt und /# in IPS abonniert. Dann kann man ja im Log schauen was raus purzelt

Ich finde die Diskussion ob sinnvoll oder nicht, echt lächerlich.
Steht hier irgendwo geschrieben, was mit Symcon gemacht werden darf und was nicht. Das sollte ja wohl jedem noch selber überlassen sein.

Guten Abend!
Also MQTT fällt nun flach, habe einfach keine Lust den nächsten Server laufen zu haben, den aber braucht es leider.

OctoPrint hat aber eine Api… Was ja schonmal sehr schön ist. Noch besser, sie ist so dokumentiert, das man sie auch versteht.
Allerdings frage ich mich, wie ruft man die Abfragen im Smycon Script auf?!

Bsp Verbindungsstatus zum Drucker:
Connection handling — OctoPrint 1.3.6rc3.post4.dev0+g777c021 documentation

Aber wie nutze ich diesen ersten Block im example nun, damit Symcon sendet und die antwort in eine Variable legt, diese ausgewertet und schwupp hat man alles im System was das Herz begehrt…

Kann mir da jemand zu helfen?

Grüße!

PS: sollte ich da was fertig kriegen, geb ich das natürlich hier online… dazu brauch ich aber den Anfang…

Hi!

Das geht im PHP ganz einfach mit curl. Da gibt es eine Menge Scripte hier im Forum, wo du dir das abschauen kannst. Spontan fallen mir die Scripte zu KWL Helios oder auch Vistapool ein…oder mein SonosBY, FritzBox Scripte von Nall chan uvm…
Auch bei Google findet man ohne Ende zu PHP mit curl und POST/GET.

Grüße,
Chris

Hi!
Dieser Hinweis auf curl war das was meinem Kopf fehlte, denke ich. Hab auch einiges gefunden und kann nun probieren. Melde mich wenn ich weiter gekommen bin, oder fest stecke :slight_smile:

Vielen Dank und viele Grüße!

Hallo,

wie versprochen hier das Script mit dem Ihr schnell und einfach die Daten vom Octoprintserver auslesen lassen könnt!

Bitte ganz oben eure Variabeln neu verknüpfen, die ServerIP und euren API Key eintragen… starten und fertig…

<?
//Variablen definieren 
$statusID=18758 /*[3D Drucker\Status]*/;
$BedIstID=50417 /*[3D Drucker\BED ist]*/;
$BedSollID=58510 /*[3D Drucker\BED soll]*/;
$NozzleIstID=42855 /*[3D Drucker\Temperaturen\Nozzle ist]*/;
$NozzleSollID=47179 /*[3D Drucker\Temperaturen\Nozzle soll]*/;
$GroesseID=35342 /*[3D Drucker\Druckauftrag\Größe]*/;
$TimeID=26582 /*[3D Drucker\Druckauftrag\Druckzeit]*/;
$TimeLeftID=39530 /*[3D Drucker\Druckauftrag\verbleibende Druckzeit]*/;
$DateiID=24486 /*[3D Drucker\Druckauftrag\Datei]*/;
$FortschrittID=46698 /*[Wohnung\Keller\3D Drucker\Druckauftrag\Fertig]*/;

//Server Infos
$url = "192.168.2.121";
$apiKey = 'xxxxxxxxxxxxxxxxx'; 



//Abruf und Speichern von Connection Infos
$headers = array(
     'X-Api-Key: '.$apiKey
);
// Send request to Server
$ch = curl_init($url.'/api/connection');
// To save response in a variable from server, set headers;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Get response
$response = curl_exec($ch);
curl_close($ch);
$liste=json_decode($response);

//print_r($liste); // Hier kannst du ansehen was alles ausgegeben wird

//Speichern in Symcon
SetValue($statusID,$liste->current->state);





//Abruf und Speichern von Printer Infos
$headers = array(
     'X-Api-Key: '.$apiKey
);
// Send request to Server
$ch = curl_init($url.'/api/printer');
// To save response in a variable from server, set headers;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Get response
$response = curl_exec($ch);
curl_close($ch);
$liste=json_decode($response);

//print_r($liste); // Hier kannst du ansehen was alles ausgegeben wird

//Speichern in Symcon
SetValue($BedIstID,$liste->temperature->bed->actual);
SetValue($BedSollID,$liste->temperature->bed->target);
SetValue($NozzleIstID,$liste->temperature->tool0->actual);
SetValue($NozzleSollID,$liste->temperature->tool0->target);





//Abruf und Speichern von Job Infos
$headers = array(
     'X-Api-Key: '.$apiKey
);
// Send request to Server
$ch = curl_init($url.'/api/job');
// To save response in a variable from server, set headers;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Get response
$response = curl_exec($ch);
curl_close($ch);
$liste=json_decode($response);

//print_r($liste); // Hier kannst du ansehen was alles ausgegeben wird

//Speichern in Symcon
SetValue($GroesseID,($liste->job->file->size)/1000000);
SetValue($TimeID,(($liste->progress->printTime)/60)/60);
SetValue($TimeLeftID,(($liste->progress->printTimeLeft)/60)/60);
SetValue($DateiID,$liste->job->file->name);
SetValue($FortschrittID, $liste->progress->completion);


?>

Vielleicht hilft es ja dem einen oder anderen… viel Spass damit!

So… noch ein klein wenig verändert…

<?
//Variablen definieren 
$statusID=18758 /*[Wohnung\Keller\3D Drucker\Status]*/; //STRING
$BedIstID=50417 /*[Wohnung\Keller\3D Drucker\Temperaturen\Bed ist]*/; //FLOAT
$BedSollID=58510 /*[Wohnung\Keller\3D Drucker\Temperaturen\Bed soll]*/;  //FLOAT
$NozzleIstID=42855 /*[Wohnung\Keller\3D Drucker\Temperaturen\Nozzle ist]*/;   //FLOAT
$NozzleSollID=47179 /*[Wohnung\Keller\3D Drucker\Temperaturen\Nozzle soll]*/;  //FLOAT
$GroesseID=35342 /*[Wohnung\Keller\3D Drucker\Druckauftrag\Größe]*/;    //FLOAT
$TimeID=50869 /*[Wohnung\Keller\3D Drucker\Druckauftrag\Druckzeit]*/; //STRING
$TimeLeftID=34598 /*[Wohnung\Keller\3D Drucker\Druckauftrag\verbleibende Druckzeit]*/; //STRING
$DateiID=24486 /*[Wohnung\Keller\3D Drucker\Druckauftrag\Datei]*/;//STRING
$FortschrittID=46698 /*[Wohnung\Keller\3D Drucker\Druckauftrag\Fortschritt]*/; //INTEGER

//Server Infos
$url = "192.168.2.121";
$apiKey = 'B5C8C83F37F7436681731853CCD9D86A'; 



//Abruf und Speichern von Connection Infos
$headers = array(
     'X-Api-Key: '.$apiKey
);
// Send request to Server
$ch = curl_init($url.'/api/connection');
// To save response in a variable from server, set headers;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Get response
$response = curl_exec($ch);
curl_close($ch);
$liste=json_decode($response);

//print_r($liste); // Hier kannst du ansehen was alles ausgegeben wird

//Speichern in Symcon
SetValue($statusID,$liste->current->state);





//Abruf und Speichern von Printer Infos
$headers = array(
     'X-Api-Key: '.$apiKey
);
// Send request to Server
$ch = curl_init($url.'/api/printer');
// To save response in a variable from server, set headers;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Get response
$response = curl_exec($ch);
curl_close($ch);
$liste=json_decode($response);

//print_r($liste); // Hier kannst du ansehen was alles ausgegeben wird

//Speichern in Symcon
SetValue($BedIstID,$liste->temperature->bed->actual);
SetValue($BedSollID,$liste->temperature->bed->target);
SetValue($NozzleIstID,$liste->temperature->tool0->actual);
SetValue($NozzleSollID,$liste->temperature->tool0->target);





//Abruf und Speichern von Job Infos
$headers = array(
     'X-Api-Key: '.$apiKey
);
// Send request to Server
$ch = curl_init($url.'/api/job');
// To save response in a variable from server, set headers;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// Get response
$response = curl_exec($ch);
curl_close($ch);
$liste=json_decode($response);

//print_r($liste); // Hier kannst du ansehen was alles ausgegeben wird

//Speichern in Symcon
SetValue($GroesseID,($liste->job->file->size)/1000000);

	$secs=$liste->progress->printTime;
	$now = date_create('now', new DateTimeZone('GMT'));
	$here = clone $now;
	$here->modify($secs.' seconds');

	$diff = $now->diff($here);

	  
SetValue($TimeID,$diff->format('%h h %i min '));

	$secs=$liste->progress->printTimeLeft;
	$now = date_create('now', new DateTimeZone('GMT'));
	$here = clone $now;
	$here->modify($secs.' seconds');

	$diff = $now->diff($here);

	  
SetValue($TimeLeftID,$diff->format('%h h %i min '));


SetValue($DateiID,$liste->job->file->name);
SetValue($FortschrittID, $liste->progress->completion);


$a=$liste->progress->printTimeLeft;
IF ($a==0)
	{
	SetValue(41143 /*[Wohnung\Keller\3D Drucker\Druckauftrag\Abgeschlossen]*/,'Berechne...');
	}
Else
	{
	$timestamp=time();
	$time=$timestamp+$a;
	SetValue(41143 /*[Wohnung\Keller\3D Drucker\Druckauftrag\Abgeschlossen]*/,date('l G:i',$time).' Uhr');
	}