Bekomme keine Werte ausgelesen (Octoprint)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Bowser
Beiträge: 2
Registriert: 17. Feb 2020 19:33
Answers: 0

Bekomme keine Werte ausgelesen (Octoprint)

Beitrag von Bowser »

Hallo,

ich bin neu hier und habe mir Openhab auf meinem Synology per Docker installiert.

Es läuft auch alles soweit.

Zu meinem Problem:

Ich nutze Octoprint für meinen 3D Drucker. Dort habe ich MQTT installiert. Er sendet auch Daten an meinen Server. Ich habe das mit MQTT Explorer ausgelesen.

Jetzt habe ich in meiner Haus.items Liste folgende Dinge eingetragen:

Code: Alles auswählen

// Anycubic //
Number AnetA6_Temp_Bed "Temperature Platte[%.1f °C]" {mqtt="<[192.168.188.34:octoprint/temperature/bed:state:JSONPATH($.actual)]"}
Number AnetA6_Temp_Tool0 "Temperature Düse[%.1f °C]" {mqtt="<[192.168.188.34:octoprint/temperature/tool0:state:JSONPATH($.actual)]"}
Number AnetA6_Progress "Fortschritt[%.0f %%]" {mqtt="<[192.168.188.34:octoprint/progress/printing:state:JSONPATH($.progress)]"}
Number AnetA6_TimeLeft "Dauer bis Ende[%.0f s]" {mqtt="<[192.168.188.34:octoprint/progress/printing:state:JSONPATH($.printer_data.progress.printTimeLeft)]"}
String OctoprintPrintTimeLeftString "Timer [%s]" <time>
in anet.rules steht folgendes:

Code: Alles auswählen

rule "Time Left String"
when
Item AnetA6_TimeLeft changed
then
val seconds = (AnetA6_TimeLeft.state as DecimalType).intValue
val int totalMinutes = seconds/60
val int remainderSecs = seconds%60
val int totalHours = totalMinutes/60
val int remainderMins = totalMinutes%60
val formattedTime = String::format("%02d", totalHours) + ":" + String::format("%02d", remainderMins) + ":" +
String::format("%02d", remainderSecs)
OctoprintPrintTimeLeftString.postUpdate(formattedTime)

end
und dann in Haus.sitemap das:

Code: Alles auswählen

    Frame label="3D-Drucker" {
Text item=AnetA6_Temp_Bed icon="temperature"
Text item=AnetA6_Temp_Tool0 icon="temperature"
Text item=AnetA6_Progress icon="batterylevel"
Text item=OctoprintPrintTimeLeftString}
Über BasicUI wird mir auch alles angezeigt, aber halt ohne Werte. Eigentlich sollte "Temperature Platte 210 Grad" etc. stehen.

Habe ich irgendwas vergessen?

mbs
Beiträge: 30
Registriert: 8. Jun 2019 20:27
Answers: 1

Re: Bekomme keine Werte ausgelesen (Octoprint)

Beitrag von mbs »

Hast Du noch andere Geräte die Du per MQTT steuerst, oder nur Octoprint? Welche MQTT Version setzt Du in openHAB ein?
openHAB3 | Alexa [Sprachsteuerung, Informationssystem] | coreELEC [SAT-IP-Clients] | innogy Smarthome [Heizung]| netatmo [Temperatur-, Regen- & Windmesser] | UBNT UniFi [UDMS PRO, AP AC Lite, AP AC Pro, Switch 24, Switch 8-150W, Switch 8-60W, Switch 8, Flex Mini ] | Zigbee2MQTT [Heiman CO- und Rauchmelder, Lightify Smart+, Philips hue, Xiaomi Lumi Kontakte & Wassersensoren ]

Benutzeravatar
udo1toni
Beiträge: 15248
Registriert: 11. Apr 2018 18:05
Answers: 242
Wohnort: Darmstadt

Re: Bekomme keine Werte ausgelesen (Octoprint)

Beitrag von udo1toni »

Willst Du wirklich mqtt1 verwenden?

Falls ja, hast Du mqtt1 installiert? Hast Du in der mqtt.cfg die Zugangsdaten zum Broker eingetragen?
Falls nein, hast Du mqtt2 installiert? Hast Du eine mqtt Bridge auf den Broker eingerichtet? Hast Du ein generic Thing unterhalb der Bridge angelegt? Packe die Konfiguration in Channel unterhalb dieses generic Things und verlinke Deine Items mit diesen Channels.

mqtt1 und mqtt2 funktionieren beide, notfalls auch gleichzeitig, haben aber bis auf das Protokoll nichts miteinander zu tun, die Konfiguration beider Addons läuft komplett unterschiedlich.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Bowser
Beiträge: 2
Registriert: 17. Feb 2020 19:33
Answers: 0

Re: Bekomme keine Werte ausgelesen (Octoprint)

Beitrag von Bowser »

Hallo,

also installiert ist binding-mqtt - 2.5.1. Woran erkennt man das es mqtt1 ist?

Ich habe das bei Youtube gefunden und einfach meine Daten angepasst und eingetragen.

Also einen mqtt Systembroker habe ich eingerichtet und das generic Thing für den Drucker. Bei der Bridge bin ich mir nicht sicher. Wo finde ich die Bridge? Ansonsten sind alle Items mit den Channels verbunden. Spuckt halt nur keine Werte aus.

Das mit der Bridge macht mich aber gerade stutzig....

mbs
Beiträge: 30
Registriert: 8. Jun 2019 20:27
Answers: 1

Re: Bekomme keine Werte ausgelesen (Octoprint)

Beitrag von mbs »

Dein Eintrag für die *.things sollte so aussehen:

Code: Alles auswählen

Thing mqtt:topic:octoprint "Octoprint MQTT" (mqtt:broker:a1e85160) @ "embedded-mqtt-broker" {
    Channels:
        Type string : connected					"Connected"					[ stateTopic="octoprint/mqtt" ]
        Type string : state						"State"						[ stateTopic="octoprint/event/PrinterStateChanged", transformationPattern="JSONPATH:$.state_string" ]
        Type string : event						"Event"						[ stateTopic="octoprint/event/+", transformationPattern="JSONPATH:$._event" ]
        Type string : filename					"Filename"					[ stateTopic="octoprint/progress/printing", transformationPattern="JSONPATH:$.printer_data.job.file.name" ]
        Type number : progress					"Progress"					[ stateTopic="octoprint/progress/printing", transformationPattern="JSONPATH:$.printer_data.progress.completion" ]
        Type number : printTime					"Time Printed"				[ stateTopic="octoprint/progress/printing", transformationPattern="JSONPATH:$.printer_data.progress.printTime" ]
        Type number : printTimeLeft				"Time Left"					[ stateTopic="octoprint/progress/printing", transformationPattern="JSONPATH:$.printer_data.progress.printTimeLeft" ]
        Type number : layerheight				"Layerheight"				[ stateTopic="octoprint/progress/printing", transformationPattern="JSONPATH:$.printer_data.currentZ" ]
        Type number : temperature-bed-actual	"Temperature Bed Actual"	[ stateTopic="octoprint/temperature/bed", transformationPattern="JSONPATH:$.actual" ]
        Type number : temperature-bed-target	"Temperature Bed Target"	[ stateTopic="octoprint/temperature/bed", transformationPattern="JSONPATH:$.target" ]
        Type number : temperature-hotend-actual	"Temperature Hotend Actual"	[ stateTopic="octoprint/temperature/tool0", transformationPattern="JSONPATH:$.actual" ]
        Type number : temperature-hotend-target	"Temperature Hotend Target"	[ stateTopic="octoprint/temperature/tool0", transformationPattern="JSONPATH:$.target" ]
}
diese Zeile:

Code: Alles auswählen

Thing mqtt:topic:octoprint "Octoprint MQTT" (mqtt:broker:a1e85160) @ "embedded-mqtt-broker" {
musst Du noch anpassen an deiner MQTT Konfiguration, jedefalls hast Du MQTT2, hasst aber die Abfragen über MQTT1 laufen.

deine *.items:

Code: Alles auswählen

Group gOctoprint "Octoprint" (gAll)

// MQTT
String					OctoprintConnected				"Verbunden [%s]"								<network>		(gOctoprint)    {channel="mqtt:topic:octoprint:connected"} 
String					OctoprintState					"Status [%s]"									<office>		(gOctoprint)	{channel="mqtt:topic:octoprint:state"}
String					OctoprintEvent					"Event [%s]"									<office>		(gOctoprint)	{channel="mqtt:topic:octoprint:event"}
String					OctoprintJobFileName			"Dateiname [%s]"								<office>		(gOctoprint)	{channel="mqtt:topic:octoprint:filename"}
Number:Dimensionless	OctoprintJobProgressCompletion	"Fertiggestellt zu [%.0f %%]"					<battery>		(gOctoprint)	{channel="mqtt:topic:octoprint:progress"}
Number					OctoprintPrintTime				"Druckzeit [%.0f s]"							<time>			(gOctoprint)	{channel="mqtt:topic:octoprint:printTime"}
String					OctoprintPrintTimeString		"Druckzeit [%s]"								<time>			(gOctoprint)
Number					OctoprintPrintTimeLeft			"Verbleibende Zeit [%.0f s]"					<time>			(gOctoprint)	{channel="mqtt:topic:octoprint:printTimeLeft"}
String					OctoprintPrintTimeLeftString	"Verbleibende Zeit [%s]"						<time>			(gOctoprint)
String					OctoprintPrintETAString			"ETA [%s]"										<time>			(gOctoprint)    
DateTime				OctoprintPrintETADateTime		"ETA [%1$tA, %1$td.%1$tm.%1$tY %1$tH:%1$tM]"	<time>			(gOctoprint)

Number:Length OctoprintJobCurrentLayerHeight			"Layer Höhe [%.1f mm]"							<flowpipe>		(gOctoprint)	{channel="mqtt:topic:octoprint:layerheight"}

Number:Temperature OctoprintPrinterHotEndTemp			"Nozzle Temperatur [%.1f °C]"					<temperature>	(gOctoprint)	{channel="mqtt:topic:octoprint:temperature-hotend-actual"} 
Number:Temperature OctoprintPrinterHotEndTempTarget		"Nozzle Zieltemperatur [%.1f °C]"				<temperature>	(gOctoprint)	{channel="mqtt:topic:octoprint:temperature-hotend-target"} 
Number:Temperature OctoprintPrinterBedTemp				"Bett Temperatur [%.1f °C]"						<temperature>	(gOctoprint)	{channel="mqtt:topic:octoprint:temperature-bed-actual"} 
Number:Temperature OctoprintPrinterBedTempTarget		"Bett Zieltemperatur [%.1f °C]"					<temperature>	(gOctoprint)	{channel="mqtt:topic:octoprint:temperature-bed-target"}

Switch OctoprintPower									"Power"															(gOctoprint)	{channel="mqtt:topic:sonoff-plug-1:power"}
Switch OctoprintShutdownAfterPrint						"Turn Off after Print"											(gOctoprint)
openHAB3 | Alexa [Sprachsteuerung, Informationssystem] | coreELEC [SAT-IP-Clients] | innogy Smarthome [Heizung]| netatmo [Temperatur-, Regen- & Windmesser] | UBNT UniFi [UDMS PRO, AP AC Lite, AP AC Pro, Switch 24, Switch 8-150W, Switch 8-60W, Switch 8, Flex Mini ] | Zigbee2MQTT [Heiman CO- und Rauchmelder, Lightify Smart+, Philips hue, Xiaomi Lumi Kontakte & Wassersensoren ]

Antworten