Autor Thema: [70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker  (Gelesen 46555 mal)

Offline markus_fhem

  • New Member
  • *
  • Beiträge: 18
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #195 am: 21 November 2021, 19:40:57 »
Ich schließe mich dem an, beobachte bei mir die gleiche Thematik. Gleiche Error-Message und Online ist false, aber die anderen Readings werden normal aktualisiert.
Octoprint und Fhem sind erst seit zwei Tagen aktiv, weswegen ich nicht sagen kann, ob es vorher anders war.

Hab mir nun erstmal mit einem kleinen DOIF beholfen, das den online-Status auf true setzt, wenn er false ist und die Readings trotzdem events auslösen.

defmod di_3D_MegaSOnline DOIF (["^3D_MegaS$:^(job|progress|temperature).*"] and [3D_MegaS:online] eq "false") \
(setreading 3D_MegaS online true)
attr di_3D_MegaSOnline do always

Im Modul ist in Zeile 272 eine if-Abfrage auf $err drin. Wenn die einmal true geworden zu sein, springt der Online-Status richtigerweise auf false (warum hier eigentlich true und false und nicht online/offline?), kommt dann aber nicht mehr zurück in den richtigen Status.

Offline markus_fhem

  • New Member
  • *
  • Beiträge: 18
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #196 am: 21 November 2021, 20:30:07 »
Lösung für alle anderen:

eta {POSIX::strftime("%H:%M:%S",localtime(time+ ReadingsNum($NAME, "progress_printTimeLeft", 0)))}
Grüßle

Pascal

Vielen Dank für diese kompakte Lösung.
ich habe bei mir noch die Sekunden entfernt, damit sich das Reading nicht so häufig aktualisiert. Insbesondere wenn man zur Vorhersage nicht die OctoPrint-eigene Methode, sondern PrintTimeGenius verwendet, pendelt sich der Wert schon nach ganz kurzer Zeit stabil auf +/- wenige Minuten ein.

Edit: Noch um einen Trigger ergänzt, damit es nicht bei allen readings aktualisiert, denn sonst zählt es weiter, auch wenn der Druck schon zuende ist.

eta:progress_printTimeLeft.* {POSIX::strftime("%H:%M",localtime(time+ ReadingsNum($NAME, "progress_printTimeLeft", 0)))}
« Letzte Änderung: 22 November 2021, 11:39:56 von markus_fhem »
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline ERI

  • New Member
  • *
  • Beiträge: 14
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #197 am: 23 Dezember 2021, 15:02:47 »
da ich  Octoprint nur beobachte, habe ich das Mqtt plugin im Octo installiert. So weit  so  gut.
Und  eben  ein device als  MQTT2  device  angelegt ....   Alles fast  schön
nur ich kommen mit diesen  Jason maps  nicht klar nicht nur  hier nicht  sonder auch  generell  ist das  irgendwie ....
ich empfange  über temparatur sowohl die  Bett als auch  die  Düsen Temperatur
sowohl target als auch aktuelle Werte
ich bin  irgend  wie  zu blöde  das  richtig mit  der  map aufzulösen
kann das mal wer erklären  weil ich habe auch im Forum und im wiki nichts gefunden, was mich weiter bringt,  dank im vorraus 
 das  sind die readings :

_timestamp 1608938025 
actual 59.66
target 60.0
************************
die  werte enthalten    abwechselnd  die  Werte für  Bett und Düse  >:(

die readinglist 
...
hPgUeKvBOBDHp:octoPrint/temperature/tool0:.* { json2nameValue($EVENT) }
hPgUeKvBOBDHp:octoPrint/temperature/bed:.* { json2nameValue($EVENT) }
*****************************************************
Im  MQtt    browser  sehe  ich  die  werte 
unter  Octoprint/ temerature/

bed= {"_Timestamp":1234567890,"actual":60.03 ,"target" :60.00}
Tool0= {"_Timestamp":1234567890,"actual":200.13 ,"target" :200.00}

nur bekomme ich  es  nicht   hin  die Werte  bed.actual  und bed.target
bzw  das  gleich  fürs  tool aus zu filtern  so das
    
so das   das State  format
data_MACHINE_TYPE oparate data_FIRMWARE_NAME is state_id complete: progress %
<br>
mqtt
bed:actual -> bed:target °C
tool0:actual -> tool0:target °C

  sinnvoll gefüllt wird

Offline Thyraz

  • Hero Member
  • *****
  • Beiträge: 1292
Antw:[70_OctoPrint.pm] zum Steuern von OctoPrint 3D Drucker
« Antwort #198 am: 24 Februar 2022, 14:39:29 »
Die Frage ist lange her, aber da es keine Reaktion auf die letzten Probleme gab, habe ich mich auch entschieden OctoPrint über MQTT2_Device anzubinden.

Hier mal eine erste Konfiguration, welche die Temperaturen, den PrinterStatus, den Druckfortschritt und den aktuellen Dateinamen in Readings verpackt.

Mehr folgt sicher noch.

Attribut readingList:
octoPrint/temperature/tool0:.* { json2nameValue($EVENT, 'TEMP_NOZZLE_', $JSONMAP) }
octoPrint/temperature/bed:.* { json2nameValue($EVENT, 'TEMP_BED_', $JSONMAP) }
octoPrint/event/PrinterStateChanged:.* { json2nameValue($EVENT, 'PRINTER_STATE_', $JSONMAP) }
octoPrint/progress/printing:.* { json2nameValue($EVENT, 'PROGRESS_', $JSONMAP) }

Attribut jsonMap:
TEMP_BED__timestamp:0
TEMP_BED_actual:TemperatureBedCurrent
TEMP_BED_target:TemperatureBedTarget
TEMP_NOZZLE__timestamp:0
TEMP_NOZZLE_actual:TemperatureNozzleCurrent
TEMP_NOZZLE_target:TemperatureNozzleTarget
PRINTER_STATE_state_id:PrinterState
PRINTER_STATE_state_string:0
PRINTER_STATE__event:0
PRINTER_STATE__timestamp:0
PROGRESS_progress:Progress
PROGRESS_location:0
PROGRESS_path:FileName
PROGRESS__timestamp:0
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...
Gefällt mir Gefällt mir x 1 Liste anzeigen

 

decade-submarginal