After installing HTTP binding: First I had to set authentication to Digest-Auth…
Second I needed to Add Channels and then Link them to JSONPATH (for example: $.printer.state)
And also important: Use “string” and not “number” for a new thing…
i’ve made a rule for shutting down the printer, when a job is finished. The behavior is controllable by a switch.
Maybe you want to use it.
Switch zigbee_plug_prusa "CORE One" <poweroutlet_eu> (g3DPrint, Strom, Zigbee) ["PowerOutlet"] {channel="mqtt:topic:zigbee:steckdose_prusa:state", homekit="Outlet"}
Number:Power zigbee_plug_prusa_power "CORE One Leistung [%.1f %unit%]" (g3DPrint, Strom) ["Power","Measurement"] {channel="mqtt:topic:zigbee:steckdose_prusa:power"}
String prusa_state "CORE One Status [%s]" (g3DPrint, Prusa) ["Status"] {channel="http:url:prusacoreone:state"}
Number prusa_progress "CORE One Progress [%.1f] %" (g3DPrint, Prusa) ["Status"] {channel="http:url:prusacoreone:progress"}
Number:Temperature prusa_temp_bed "CORE One Druckbett [%.1f %unit%]" (g3DPrint, Prusa, Temperaturen) ["Temperature","Measurement"] {channel="http:url:prusacoreone:temp_bed"}
Number:Temperature prusa_target_bed "CORE One Druckbett Soll [%.1f %unit%]" (g3DPrint, Prusa) ["Temperature"] {channel="http:url:prusacoreone:target_bed"}
Number:Temperature prusa_temp_nozzle "CORE One Nozzle [%.1f %unit%]" (g3DPrint, Prusa, Temperaturen) ["Temperature","Measurement"] {channel="http:url:prusacoreone:temp_nozzle"}
Number:Temperature prusa_target_nozzle "CORE One Nozzle Soll [%.1f %unit%]" (g3DPrint, Prusa) ["Temperature"] {channel="http:url:prusacoreone:target_nozzle"}
Switch prusa_sleepmode "CORE One Sleepmode [%s]" (g3DPrint, Prusa) ["Control"]
Then the rules
var Timer prusaSwitchOffTimer
// siehe https://github.com/prusa3d/Prusa-Firmware-Buddy/blob/master/lib/WUI/link_content/basic_gets.cpp
rule "CORE One finished or failed"
when
Item prusa_state changed from "PRINTING" to "FINISHED" or
Item prusa_state changed from "PRINTING" to "ATTENTION"
then
val int minutesBeforeShutdown = if(newState == "ATTENTION") 60 else 30
if ( prusa_sleepmode.state == ON) {
logInfo("prusa", "Schalte Prusa CORE One in {} Minuten ab", minutesBeforeShutdown)
}
if(prusaSwitchOffTimer !== null) {
prusaSwitchOffTimer.cancel()
}
prusaSwitchOffTimer = createTimer(now.plusMinutes(minutesBeforeShutdown)) [|
if ( prusa_sleepmode.state == ON) {
logInfo("prusa", "Schalte Prusa CORE One Strom ab")
zigbee_plug_prusa.sendCommand(OFF)
}
]
end
rule "CORE One busy"
when
Item prusa_state changed from "FINISHED" or
Item prusa_state changed from "ATTENTION"
then
if(prusaSwitchOffTimer !== null) {
logInfo("prusa", "prusaSwitchOffTimer killed")
prusaSwitchOffTimer.cancel()
prusaSwitchOffTimer = null
}
end