(Projekt wird nicht weiterentwickelt!!) MyPython - Repetier-Server

Begonnen von Gear, 05 Dezember 2020, 14:20:49

Vorheriges Thema - Nächstes Thema

Gear

...............:::::::EDIT:::::::...............

"MyPython - Repetier-Server" wird nicht weiterentwickelt, da der RepetierServer nun über eine MQTT anbindung verfügt.

...............:::::::EDIT END:::::::...............

Moin Moin Zusammen,

ich habe das Script für die RepetierServer Anbindung überarbeitet und auf GitHub geladen.
GitHub: https://github.com/TyroTechSoft/FHEM-MyPython

Bitte die alte Datei, welche manuell eingefügt wurde wieder löschen, genau wie die Dummy's.

Das Script nutzt die API von RepetierServer, um die Daten auf den FHEM-Server zu übertragen.

Aktuell befindet sich das Script noch im Test, somit können Fehler auftreten.
Zum aktuellen Zeitpunkt habe ich noch keine Debug Ausgaben eingebaut, da es mir Zeitlich noch nicht möglich war.

Das Script liest alle Drucker eines Servers aus und legt ein zugehöriges Dummy-Device an, welches dann die Daten bekommt.
Das Reading "state" ändert sich und kann folgende Werte ausgeben, auf die man triggern kann. (noch ungetestet)
- Now Offline
- Now Online
- Now Printing
- Now Printing Finish
> JobLast gibt nach dem Druck den letzten Job zurück, zeitgleich wird auch der state: "Now Printing Finish" zurückgegeben.
>> Ich lasse mich via Telegram über den fertigen Druck meiner Drucker informieren.
>> Zudem lass ich mir die Stromkosten und den Verbrauch über jeden Druck zurückgeben.

Befehle via FHEM über RepetierServer zum Drucker funktionieren jetzt, sind jedoch noch in der Testphase.
Benutzung auf eigene Gefahr.
Einrichtung ist weiter unten in diesem Post.


Einrichtung
Wir führen folgende Befehle auf dem FHEM-Server durch und starten ihn neu.
Es wird PIP und FHEM für die Kommunikation zwischen dem Script und FHEM installiert.
sudo apt-get install python3-pip
pip3 install fhem


Nun fügen wir das Update-Control für den RepetierServer hinzu, Update nicht vergessen, um das Script zu laden.
update add https://raw.githubusercontent.com/TyroTechSoft/FHEM-MyPython/main/controls_70_RepetierServer.txt

Jetzt müssen wir ein WEB Device anlegen, über dass das Script auf FHEM zugreift.
HTTPS:
define WEB.Python FHEMWEB 8086 global
attr WEB.Python HTTPS 1
attr WEB.Python sslVersion TLSv12:!SSLv3

HTTP:
define WEB.Python FHEMWEB 8086 global

Dieses Web Device sichern wir jetzt mit "basicAuth" ab, wie unter folgenden Link.
> Device Name: WEB.Python und nicht WEB
https://wiki.fhem.de/wiki/FritzBox_Webzugriff_absichern

Nun fügen wir je Server ein Dummy hinzu.
> Die Printer werden automatisch angelegt und der Name baut sich auf dem Server Dummy auf: MeinRepetierServer.PrinterName
Die dem Drucker zugewiesene Gruppe wird beim Erstellen des Printer-Dummy übertragen. Eine Gruppe muss hinterlegt sein!
Name des Server-Dummy ist frei wählbar.
Es müssen noch die Serverdaten eingetragen werden:

- <ip> = Die IP des Repetier-Server
- <Port> = Der Port des Repetier-Server
- <Protocol> = Auswahl zwischen http und https
- <API-Key> = Hier wird der API-Key des RepetierServer eingetragen

define RepetierServer.3DDrucker.Server.0 dummy
attr RepetierServer.3DDrucker.Server.0 userattr RS-Protocol:http,https RS-IP RS-Port RS-Token RS-Device:Server
attr RepetierServer.3DDrucker.Server.0 RS-Device Server
attr RepetierServer.3DDrucker.Server.0 RS-IP <ip>
attr RepetierServer.3DDrucker.Server.0 RS-Port <Port>
attr RepetierServer.3DDrucker.Server.0 RS-Protocol <Protocol>
attr RepetierServer.3DDrucker.Server.0 RS-Token <API-Key>
attr RepetierServer.3DDrucker.Server.0 group RepetierServer


Nun können wir testen, ob wir alles richtig gemacht haben.
RepetierServer starten und dann folgenden Befehl in FHEM ausführen.
Bitte hier folgende Daten anpassen:

- <fhemIP> = IP des FHEM Servers (localhost)
- <fhemPort> = Port von WEB.Python (8086)
- <fhemProtocol> = http / https
- <fhemUser> = User von WEB.Python
- <fhemPass> = Pass von WEB.Python (Bitte ein Passwort ohne Leerzeichen nehmen)
- <TimeOut> = Ich nutze hier 5, dieser Wert sollte nicht unter 4 sein, er dient dem TimeOut, wenn der FHEM-Server mal nicht erreicht werden kann

"python3 /opt/fhem/FHEM/70_RepetierServer.py <fhemIP> <fhemPort> <fhemProtocol> <fhemUser> <fhemPass> <TimeOut> &"

Wenn alles richtig funktioniert hat, dann sollte nun für jeden Drucker ein Dummy-Device vorhanden sein.

Anschließend können wir ein at erstellen, welches das Script automatisch aufruft.
define at.RepetierServer at +*00:00:15 "python3 /opt/fhem/FHEM/70_RepetierServer.py <fhemIP> <fhemPort> <fhemProtocol> <fhemUser> <fhemPass> <TimeOut> &"
attr at.RepetierServer alignTime 00:00


!!! Achtung !!!
!!! Das Befehle senden ist aktuell noch in der Testphase, Benutzung auf eigene Gefahr !!!


Nun müssen wir um Befehle an den Drucker senden zu können noch ein Notify erstellen.
Hierzu können wir den Aufruf aus dem at übernehmen und fühen hinten noch folgende Variabeln an: $NAME $EVENT
define Notify.RepetierServer.SendCMD notify RepetierServer.3DDrucker.Server..*:(CMD|GCode)..* "python3 /opt/fhem/FHEM/70_RepetierServer.py <fhemIP> <fhemPort> <fhemProtocol> <fhemUser> <fhemPass> <TimeOut> $NAME $EVENT &"

Ausführbare Befehle sind aktuell nur die Homing Befehle, es sollen aber noch irgendwann Custom Befehle geben.
Zudem besteht die Möglichkeit, GCode Befehle zu senden, diese können wie in der Konsole angegeben werden:
G1 X50 Y100 F8000

Hierbei ist ein erneutes aufrufen alle 15 Sekunden das Minimum, was ich empfehle.
Wenn mehr als 1 Server abgefragt werden sollte, dann wird je Server die Abrufzeit von 15 Sekunden + 5 Sekunden erhöht.
Bei 1 Server = 15 Sekunden
Bei 2 Server = 20 Sekunden
Bei 3 Server = 25 Sekunden
Bei 4 Server = 30 Sekunden
usw...

Dies ist leider so, da eine TimeOut Zeit von 5 Sekunden für das Abrufen der Daten vom RepetierServer angesetzt ist, wenn der Server nicht innerhalb von 5 Sekunden antwortet, wird er als Offline angezeigt.




Viel Spaß!

Beste Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

G4Cab

Moin, schön das sich jemand der Sache annimmt.

Verstehe ich es richtig, das ich eine weitere FHEM Instanz auf dem Repetier-Server anlege?

Wo sollen die Dummy Geräte angelegt werden? Auf dem FHEM-Server oder auf der FHEM-Instanz auf dem Repetier-Server?

Gear

#2
Zitat von: G4Cab am 22 Dezember 2020, 23:05:11
Moin, schön das sich jemand der Sache annimmt.
Moin, gerne =)
Ich werde mich auch mal mit GutHub auseinandersetzen, sodass man das darüber einbinden kann. ;)

Zitat von: G4Cab am 22 Dezember 2020, 23:05:11
Verstehe ich es richtig, das ich eine weitere FHEM Instanz auf dem Repetier-Server anlege?
Wo sollen die Dummy Geräte angelegt werden? Auf dem FHEM-Server oder auf der FHEM-Instanz auf dem Repetier-Server?

Da habe ich mich wohl falsch ausgedrückt, werde ich gleich noch eintragen in meinem ersten Post.
Also, die Dummy's legst du auf deiner Hauptinstanz an, das Script holt sich die Daten via API vom Repetier-Server.
> Somit muss auf dem Repetier-Server kein FHEM installiert werden.
Der FHEM und Repetier-Server müssen sich im gleichen Netzwerk befinden.

Kannst du mir, wenn es läuft nen Feedback geben? Danke =D
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Gear

Ich habe den ersten Post überarbeitet.
Das Script ist nun auf GitHub und vieles mehr!

Beste Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Thargor

Hallo Gear,

hab eben deine Anleitung befolgt und bislang scheint alles zu funktionieren. Super. Vielen Dank!

Gruß Thargor

Thargor

Nachtrag: Wenn der Server ausgeschaltet ist, bekomme ich im Reading RunState: "Can't Connect to Server!"
Allerdings behält sowohl der Server den state "Online" als auch der Drucker den state "Now Online"

Gear

Zitat von: Thargor am 24 März 2021, 01:43:10
Nachtrag: Wenn der Server ausgeschaltet ist, bekomme ich im Reading RunState: "Can't Connect to Server!"
Allerdings behält sowohl der Server den state "Online" als auch der Drucker den state "Now Online"
Das ist mir gestern auch aufgefallen, aber danke für die Info, steht schon auf der ToDo-Liste, wird dann auch mit dem nächsten Update behoben.
RunState: "Can't Connect to Server!" ist hier der entsprechende State, wenn der Server Offline ist.

Zitat von: Thargor am 24 März 2021, 01:19:28
hab eben deine Anleitung befolgt und bislang scheint alles zu funktionieren. Super. Vielen Dank!
Das freut mich zu hören!
Gravierende Fehler sollten nicht auftreten, zumindest habe ich bisher noch keinen gehabt.


Aktuell bin ich an der Sache mit der Steuerung aus FHEM heraus dran, darum habe ich noch keine neues Update rausgehauen.
Ich schau mal, dass ich das jetzt am WE evtl gefixed bekomme.


Danke für deine Rückmeldung!!
Schönen Abend und bleib gesund.

Beste Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Thargor

Zitat von: Gear am 24 März 2021, 18:55:46
Das ist mir gestern auch aufgefallen, aber danke für die Info, steht schon auf der ToDo-Liste, wird dann auch mit dem nächsten Update behoben.

Super.

Zitat von: Gear am 24 März 2021, 18:55:46
Aktuell bin ich an der Sache mit der Steuerung aus FHEM heraus dran, darum habe ich noch keine neues Update rausgehauen.
Ich schau mal, dass ich das jetzt am WE evtl gefixed bekomme.

Ich bin gespannt. Die Einbindung war für mich die letzte Zutat von Octoprint zu wechseln.

Gruß Thargor


Gear

Zitat von: Thargor am 25 März 2021, 13:12:51
Ich bin gespannt. Die Einbindung war für mich die letzte Zutat von OctoPrint zu wechseln.
Hatte früher bei einem Drucker auch OctoPrint mit dem Modul, nur nachdem jetzt hier vier Drucker stehen, bin ich auf RepetierServer umgestiegen, da es besser mit mehreren Druckern umgehen kann. =D
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Gear

Neues Update:
Fix:
- Nun wird der Server und die zugehörigen Drucker als "Offline" / "Now Offline" angezeigt, wenn der Server nicht erreichbar ist.
Add:
- Befehle von FHEM können den Drucker steuern. (siehe Zitat aus ersten Beitrag)

Zitat von: Gear am 05 Dezember 2020, 14:20:49
!!! Achtung !!!
!!! Das Befehle senden ist aktuell noch in der Testphase, Benutzung auf eigene Gefahr !!!


Nun müssen wir um Befehle an den Drucker senden zu können noch ein Notify erstellen.
Hierzu können wir den Aufruf aus dem at übernehmen und fühen hinten noch folgende Variabeln an: $NAME $EVENT
define Notify.RepetierServer.SendCMD notify RepetierServer.3DDrucker.Server.0.*:(CMD|GCode)..* "python3 /opt/fhem/FHEM/70_RepetierServer.py <fhemIP> <fhemPort> <fhemProtocol> <fhemUser> <fhemPass> <TimeOut> $NAME $EVENT"

Ausführbare Befehle sind aktuell nur die Homing Befehle, es sollen aber noch irgendwann Custom Befehle geben.
Zudem besteht die Möglichkeit, GCode Befehle zu senden, diese können wie in der Konsole angegeben werden:
G1 X50 Y100 F8000


Ich wünsche euch einen schönen Sonntag!

Beste Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

shrek

Hallo
ich wollte das Skript nach der Anleitung installieren
aber leider bekomme ich bei dem Befehl
update add https://raw.githubusercontent.com/TyroTechSoft/FHEM-MyPython/main/controls_70_RepetierServer.txt
immer diesen Fehler
-bash: update: Kommando nicht gefunden.

ich weis nicht warum mein pi 4 (64bit Raspberry Pi OS) das nicht annimmt
könnte mir da einer helfen

Esjay

Das solltest du in die Fhem Kommandozeile eintragen, und nicht auf OS Ebene  ;)

Grüße

shrek


Esjay

Zur Info:
Das nächste große Update von Repetier-Server 1.3.0 ist jetzt draußen.

Das ist neu:
* MQTT Integration inkl. Heimassistent MQTT Entdeckung.
* Neue Push-Nachricht zielt auf Pushover und Dritte (z. B. CallMeBot) über Webhooks ab.
* Verbesserte Handhabung für Z-Gurtdrucker.
* Es wurde die Möglichkeit hinzugefügt, mehrere Gcode- und Projektdateien gleichzeitig hochzuladen.
* Sicherheitsfrage für Touchscreen sowie für GPIO-Aktionen hinzugefügt.
* Webcam-Nutzung in ausgeführten Skripten auf macOS erlauben.
* Repariert: Knöpfe in den Dialogeingängen in der Touchscreen-Schnittstelle werden jetzt nach Eingabe korrekt beschriftet.
* Repariert: Schichthöhe für sequentielle Druckkörper könnte negativ sein.
* Repariert: Füge den OK-Button zum Host-Aufforderung hinzu, wenn keine Auswahl gegeben ist
* Habe einige Syntax-Hervorhebungsfälle in G-Code-Editoren repariert.
* Festes Rendering der PrusaSlicer-Ausgabe mit , statt . für Informationen zur Breite und Höhe.
* Beim Abbruch eines Drucks während des Anhaltens in alte Position behoben.
* Repariert: 2D Bett View Touch Handling auf mobilen Geräten.
* Viele kleinere Probleme wurden behoben oder verbessert.

Grüße

Gear

Zitat von: Esjay am 15 Februar 2022, 21:41:22
Zur Info:
Das nächste große Update von Repetier-Server 1.3.0 ist jetzt draußen.

Ich dachte erste, WTF?! bis ich realisiert habe, ach ja moin. ^^

Danke für die Info =D
Wollte mich am WE hinsetzen und weitermachen, aber das hat sich dann wohl erledigt. =)

Werde am WE mal das neue Update testen und dann im 1. Post ergänzen, weil wegen nicht mehr von nöten.

Einen schönen Abend!
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <