-
DueUI is an alternate web-based user Interface for the Duet family of products. It's not meant to replace the full fledged DuetWebControl (DWC) interface but rather to complement it. I needed something more compact, kind of like the PanelDue user interface and had started looking at ways to make the PanelDue more user-customizable. Unfortunately, while the PanelDue is great at what it does, trying to develop a framework that would let it be more customizable without recompiling the firmware every time just wasn't feasable. It then dawned on me that 7" Android tablets with serviceable browsers were ridiculously cheap so I started down the road of creating a customizable widget based user interface that could run on any modern browser. Not only does it work well on tablets, it works great on a small(ish) touch screen attached to an SBC. I run it on an 11" 1920x1080 touchscreen monitor mounted on the side of my printer.
DueUI Wiki
Download
https://github.com/gtjoseph/DueUI/releases/tag/v3.0.1-beta1
Yeah I know it should really be 2.0.0 but I wanted to be cool and make it match RRF 3.0 and the Duet3.
I also know that it's not exactly Beta "Firmware" but it's still a Beta something. If a mod wants to move it, that's fine.What's New in 3.0.0-beta1
-
The DueUI Wiki!!
- Complete documentation with examples for every widget.
- Samples of the printer status objects.
- Installation and Upgrade guide.
- Sample configs.
-
Functions, templates and constants can now be defined in the config file.
-
A new backend for the Duet Software Framework.
Standalone still works. -
There are some new widgets
- "Image" allows you to embed an image or a Motion JPEG stream anywhere.
- "File Dropdown" allows you to display a select box with a list of files.
- "File Select" is a File Dropdown with accompanying Refresh and Run/Print
buttons.
-
Lots of behind-the-scenes updates.
-
Stuff I can't remember.
Here's a screen shot of my "Print" panel...
...and my Movement panel...
Remember, this is my layout. You can make yours look like anything you want.
I've been using it with my Duet3 and the DSF for a few months now and I think I've got all the bugs. As with any Beta release though, I'm sure there are others I haven't caught.
What's New in 3.0.1-beta1
Updates for Standalone Duet
- Added a dueui_config_default_standalone.json file.
- Fixed some issues in the standalone backend.
Settings Update
-
Moved the "Backend Type" selection to the top of the page and
changed "NonDSF" to "Standalone". -
If the backend type changes:
- The Hostname label will change to "SBC" or "Duet" as appropriate.
- The DueUI Config URL will change to an appropriate URL path
and default file name (if it was one of the defaults to start with). - If DSF is selected, the Polling Intervals will be hidden.
-
Changed the default config file name to
"dueui_config_default_standalone.json" to match the default backend
type.
What's New in 3.0.1-beta2
Fixed issue with fields showing the format instead of value
- When first started or refreshed, the UI could display format
strings like "${state.heat.heaters[1].current.toFixed(1)}" for a
short time iunstead of the actual value. This was due to the model
not being populated before the UI elements. Now we populate the
model before showing the UI.
Minor backend refactoring
Add refresh_seconds to the Image widget
- Some WebCams only provide an image snapshot instead of
a live MJPEG stream. If you have one, you can now set
"refresh_seconds" to control how often teh image should
be refreshed.
-
-
Impressive! Thank you !
-
My first impression seeing this thread was "What is DueUI"? Unfortunately, that first question wasn't answered early in the post... (In fact, I really didn't get an answer until I followed your wiki link.)
So, please accept my suggestion based on that first impression: In the top line of the post, mention what this is. For example: "A lightweight replacement (or addition) to DWC"
-
Admittedly I wondered for two seconds if it was to replicate PanelDue on hdmi, and while I guess it kinda is? Its also kinda unfamiliar, but still looks much more suited to touch than vanilla DWC.
Awesome work!
-
Blank config URL would not pick the default for me, even with DSF mode set. I believe it is trying RR_ commands that don't work on RRF3 with Pi.
Changing config url to 192.168.7.101/dueui/dueui_config_default.json worked.
-
What am I doing wrong when I see this?
I took the 'DSF' release since it seemed to contain the files in unzipped form, unzipped the contents of that file to the wwwroot of the lighttpd server on a Pi running at 192.168.0.23, pointed the config to http://192.168.0.23/dueui/dueui_config_default.json and the location of the Duet to 192.168.0.42
(I swap to names instead of IP's when things work)The config JSON appears when the URL is entered in a browser, so the link to the config is OK. The Duet is also reachable since the ATX power button works.
[edit]
http://dueui.org/v3/ does the same, so probably not installation related.
[/edit] -
@garyd9 said in DueUI Release 3.0.0-beta1 Available:
My first impression seeing this thread was "What is DueUI"? Unfortunately, that first question wasn't answered early in the post... (In fact, I really didn't get an answer until I followed your wiki link.)
So, please accept my suggestion based on that first impression: In the top line of the post, mention what this is. For example: "A lightweight replacement (or addition) to DWC"
Yeah, that's a great point. I'll update the first post.
-
@Danal said in DueUI Release 3.0.0-beta1 Available:
Blank config URL would not pick the default for me, even with DSF mode set. I believe it is trying RR_ commands that don't work on RRF3 with Pi.
Changing config url to 192.168.7.101/dueui/dueui_config_default.json worked.
Rats. I thought I had that fixed. If you want to create your own config, stick in in /sys/ and change the URL to
http://<sbc>/machine/file/sys/<your_config.json>
-
@DaBit said in DueUI Release 3.0.0-beta1 Available:
What am I doing wrong when I see this?
I took the 'DSF' release since it seemed to contain the files in unzipped form, unzipped the contents of that file to the wwwroot of the lighttpd server on a Pi running at 192.168.0.23, pointed the config to http://192.168.0.23/dueui/dueui_config_default.json and the location of the Duet to 192.168.0.42
(I swap to names instead of IP's when things work)The config JSON appears when the URL is entered in a browser, so the link to the config is OK. The Duet is also reachable since the ATX power button works.
The default config is set for a Duet3 with the DSF. I need to get a default config up for the Duets in standalone mode. Sorry about that. I'll get one up shortly.
Which version of RRF are you running?
-
That would be 3.01-beta1+1 (2020-01-15b2)
The board I am running is a Duet2 Wifi -
@DaBit said in DueUI Release 3.0.0-beta1 Available:
That would be 3.01-beta1+1 (2020-01-15b2)
Perfect.
-
Reading the post here and the github page it looks very impressive. Thanks for doing it. A quick question about the installation, if I upload DueUI-1.1.0.zip to the Duet as described, will the zip file stay as is on the SD card or will it be decompressed into multiple directory and files?
(my preference is to have the DueUI as a single file or directory on the SD so I can easily manage and delete if needed).
-
@zapta said in DueUI Release 3.0.0-beta1 Available:
Reading the post here and the github page it looks very impressive. Thanks for doing it. A quick question about the installation, if I upload DueUI-1.1.0.zip to the Duet as described, will the zip file stay as is on the SD card or will it be decompressed into multiple directory and files?
(my preference is to have the DueUI as a single file or directory on the SD so I can easily manage and delete if needed).
Unfortunately, the DWC unzips the file and places the javascript files in /www/js, the css files in /www/css, etc. right beside the DWC files. With the exception of 2 font files, all DueUI files start with "dueui" though so it'd be easy to get rid of.
On an SBC/DSF, you'd manually unzip the zip file and it all goes in 1 directory: /opt/dsf/sd/www/dueui
-
What's New in 3.0.1-beta1
https://github.com/gtjoseph/DueUI/releases/tag/v3.0.1-beta1
Updates for Standalone Duet
- Added a dueui_config_default_standalone.json file.
- Fixed some issues in the standalone backend.
Settings Update
-
Moved the "Backend Type" selection to the top of the page and
changed "NonDSF" to "Standalone". -
If the backend type changes:
- The Hostname label will change to "SBC" or "Duet" as appropriate.
- The DueUI Config URL will change to an appropriate URL path
and default file name (if it was one of the defaults to start with). - If DSF is selected, the Polling Intervals will be hidden.
-
Changed the default config file name to
"dueui_config_default_standalone.json" to match the default backend
type.
-
I liked the previous version, but had left you with some crude code ~20 July, and comments related to my simple needs, but I had abandoned use of DueUI as I thought you had abandoned this project as there had been no response and looked like there would be no support.
I notice babystepping is now included - thanks?
Is there anything critical that is new? Although I can implement and customise this I am not conversant with JSON in general & my brain will take some hours to reboot into this project.
-
@garis I am so sorry. It was your post that got me working on the additional stuff and I just lost track of that other thread. I have definitely not abandoned this project. The two big hold-ups for me have been writing the documentation for the wiki and the fact that both RRF3 and the DSF were getting lots of changes in preparation for the Duet3 release, and are still getting lots of changes. Every time I thought about doing another release, something else in the environment changed.
Anyway, the biggest functional change is the ability to interface to the SBC. Others include the Image/WebCam support and the File Select widget. The File Select widget could be a great space saver because it only occupies a small space on the layout and the files only show in the dropdown when you click on it.
As I've been going through the default configs, I've also realized that the config is getting a bit "verbose" :). I'm trying to find ways to balance config complexity and flexibility so I'll probably come up with more "composite" widgets.
-
With the new standalone config it works. Now I have to adjust the config for my printer, but since adding the second extruder and the webcam image took 15 minutes that seems completely doable.
Just wondering / thinking out loud: let's assume dueui can run under Electron. How hard would it be to add a backend that talks over serial (to the PanelDue port) or USB virtual comport instead of Wifi?
That would make the printer usable when the Wifi infrastructure disappears. For example, when I want to put the printer temporarily at the school of my sons to let the kids play with it..It is probably easier to add an access point to the printer (or use the Pi for that) and just give the printer it's own Wifi network, but I can dream, right?
-
@DaBit That could be really interesting. None of the actual UI stuff would need to change at all. It'd be just adding another backend that implements the same contract that the other two do. I'll look into it!
-
I skimmed through the code, and if you add a third backend for serial which emits M408 and reads the response it should work. Don't ask me how to do that; I never did serious Javascript before.
However, I do have the serial line coming from the PanelDue connector connected to the Pi, so I can test. And setting up the build environment would be possible too.
I just set DueUI up on the Pi + 7" Pi screen on the printer.
Of course I have to configure it. I do get the basic idea of how to do that. However, a few things:
-
The camera image is not refreshing. DWC reloads the image every X milliseconds, DueUI does not. Not a big issue; having the camera image taking up real estate on the 7" Pi screen while I only have to look up 30cm to have a real view makes no sense.
-
Current/last file says 'unknown'. Which makes sense if I look at the config, line 355 of dueui_config_default_standalone.json. Isn't the real current filename available somewhere (I am not seeing it in a M408 response either)?
"value": "Current/Last File: ${state.status == 'P' ? 'unknown' : 'Not printing'}",
- Time and times left stay at 0:00:00. In the config the calculated values are commented out, but the referenced values seem OK. Still a beta thing?
-
-
Maybe I'm missing something, but how would this make the paneldue any more functional than it already is on IO0? I.e. you cannot start jobs from SD. (you could probably execute macros or console commands to start prints, but the paneldue cannot list the fake sd card on the pi)?