Home Assistant Integration
-
@oliof Uhh that would be a nice start!
I'm hoping that prusas release of their "PrusaLink" integration for Home Assistant will cause RRF to get one too -
While waiting, you can easily use this:
https://github.com/iz3man/duet3d/blob/main/duet3d.yamlJust add the lines to your configuration.yaml, modify for your printer and restart HA.
-
@pkos Nice
-
-
@nikscha It works I've been using it for ages now, although I don't have a very elaborate layout. I mostly have HA watch hotend temp and once it's been at 45C for 2 minutes after a print - it switches the printer off.
My code is as follows:
- platform: rest name: Voron_24 Status resource: http://<ip_here>/rr_status?type=3 value_template: "{{ value_json.status }}" json_attributes: - temps - fractionPrinted force_update: true - platform: template sensors: voron_24_head_temp_current: value_template: "{{ states.sensor.voron_24_status.attributes.temps.current[1] }}" friendly_name: Hotend Temp voron_24_bed_temp_current: value_template: "{{ states.sensor.voron_24_status.attributes.temps.current[0] }}" friendly_name: Hotbed Temp voron_24_print_percentage: value_template: "{{ states.sensor.voron_24_status.attributes.fractionPrinted }}%" friendly_name: Print progress
And this is how I put display it in Lovelace.
The important bits here (if you know this, forgive me, if not - maybe it will help) - is to keep the naming consistent. HA will convert the name from the first sensor into an entity_id.
So in my case, here it reads Voron_24 Status. HA will take it, convert it internally to voron_24_status and this is what you use below in the actual sensors.And since I am waaaaaay too lazy ( ) I am going to wait for MQTT to come along before solving issues like not zeroing out of entries when the printer is off
See if that will work and if you get stuck, ping me and I'll be happy to help.
-
@nikscha I could not make it work either using RRF3.
I ended up modifying another integration to make it work with RRF 3.
You can find it on my repo :
https://github.com/repier37/hass-Duet3D
Basically I just added authentication to the integration I forked to be able to retrieve data.
It is still using the rr_status command that is planned to be removed in RRF3.5 if I recall correctly, but it should work with earlier version. It should not be too hard to move to rr_model as it should only be changing json parsing. -
Many thank's for your work!
Hopefully we can expect a update do see the RRF 3.5 working too.
-
@repier37 just installed your plugin but it doesn't seam to connect to my printer (6HC/v3.4.5 with SBC).
If I send a manual http request it seams like I get access without a password.
http://10.0.0.68/machine/connect?password=
Any ideas what I might have done wrong? All sensors are setup, but values do not change.
duet3d_printer: host: !secret duet3d_host name: !secret duet3d_name password: !secret duet3d_password number_of_tools: 1 bed: true sensors: monitored_conditions: - 'Current State' - 'Temperatures' - 'Job Percentage' - 'Time Elapsed' - 'Time Remaining' - 'Position'
-
Seams like rr_status has been deprecated in v3.4.5, http://10.0.0.68/machine/Status works though so for this to work with the current version of RRF some work needs to be done on this integration. unfortunately I'm not a Python dev.
Btw, is there a websocket or webhooks that can be used or can we only rely on polling updates?
-
Hey folks,
i picked this topic up yesterday and refactored the integration to make it work again with the new/machine/status
endpoint.
https://github.com/Lyr3x/hass-Duet3DNot happy yet with the position entity and the fact that there is no proper config flow and entities are not attached to a device. I will work on that in the next days. Might take some time as I need to dig into that to understand how custom components are built and what the spaghetti code in the integration is doing
I removed the job percentage yesterday temporarily to get this out of my way, because there is not such attribute, but I already spotted that it can be easily calculated with the file size. Contributions are welcomed!I also removed the password property, as this is not needed for the endpoint. Furthermore, I might need to set up a proper session when the integration has maybe a service to send G/M codes as well. We'll see.
Hope that it is of some help for you as well
-
@pkos said in Home Assistant Integration:
While waiting, you can easily use this:
https://github.com/iz3man/duet3d/blob/main/duet3d.yamlJust add the lines to your configuration.yaml, modify for your printer and restart HA.
LOL. Looking for a way to get MQTT running on Duet-Wifi board, find this thread, and then a link to MY github
Btw: This is still using perfectly fine with the latest betafirmware
And I found this github for MQTT integration which gives basically the same info - but haven't tested yet, as I'm waiting for native MQTT support before I start ripping everything apart again.
-
@Lyr3x good work, wow! I'll check it out in the next few days!
-
@izeman Looks Awesome
how did you get the controls for PLA and that switch into HASS? -
@izeman this is only working if you are not using SBC mode if I am not mistaken.
I worked on updating the integration to work asynchronous without blocking requests, which is working fine now (still need to merge).
There is quite some rework necessary to get config and options flow running, but I finally understood how the flows should be implemented. Canβt give a timeline yet though.Configuration via configuration.yaml is working fine including time elapsed and remaining. I also added the progress sensor back and calculating the progress via total layers and printed layers.
-
@Lyr3x I'm gettting an error when setting up the integration, could you help me out?
I have two printers, one running Duet Wifi 2 without SBC (RRF 3.4.5), and one running a Duet 3 Mini5+ WITH SBC (RRF 3.5.0beta3).
However both gave the same error as above. Navigating to 'printerip'/maschine/status also returns the json, so I doubt the issue is related to the printers? What else can I try? It might be noteworty that I run HASS on Docker? -
@nikscha
Here's the HASS log:Logger: aiohttp.server Source: data_entry_flow.py:387 First occurred: 15:43:51 (17 occurrences) Last logged: 16:20:39 Error handling request Traceback (most recent call last): File "/usr/local/lib/python3.10/site-packages/aiohttp/web_protocol.py", line 435, in _handle_request resp = await request_handler(request) File "/usr/local/lib/python3.10/site-packages/aiohttp/web_app.py", line 504, in _handle resp = await handler(request) File "/usr/local/lib/python3.10/site-packages/aiohttp/web_middlewares.py", line 117, in impl return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 81, in ban_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 236, in auth_middleware return await handler(request) File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle result = await result File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 180, in post return await super().post(request, flow_id) File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 73, in wrapper result = await method(view, request, data, *args, **kwargs) File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 110, in post result = await self._flow_mgr.async_configure(flow_id, data) File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 286, in async_configure result = await self._async_handle_step( File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 387, in _async_handle_step if not isinstance(result["type"], FlowResultType): TypeError: 'NoneType' object is not subscriptable
-
@nikscha as Said before the config flow is not working. You need to configure it via the configuration.yaml at the moment
-
@Lyr3x Ohh I see. Fair enough. I'm still having problems though:
I added the follwoing to my config:# Duet Integration duet3d_printer: host: !secret duet3d-host name: !secret duet3d-name number_of_tools: 1 bed: true sensors: monitored_conditions: - 'Current State' - 'Temperatures' - 'Job Percentage' - 'Time Elapsed' - 'Time Remaining' - 'Position'
I also added the entries for host and name to the secrets.yaml.
However HASS wont restart:
-
@nikscha oh the readme is still wrong. It is not
Job percentage
butProgress
-
@Lyr3x that did the trick, thanks!
The integration is working well, can I do anything to test it for you?