-
Notifications
You must be signed in to change notification settings - Fork 119
Version 2.6
Announcing OctoScreen version 2.6. Much work went into this release, and there is still much more to be done. But first, before we discuss what's in the release, we need to discuss what's not...
Much work went into version 2.6, but there is still more work and improvements to be done. In order to get this release out, some features and improvements had to be delayed. These include:
-
Custom buttons. OctoScreen is customizable, but at the screen level. What this means, is that you can customize how you navigate from panel to panel, but not the buttons themselves. This feature is one of the main reasons why I started working on OctoScreen, and I have big plans for adding customized buttons in the future.
-
Enhanced file system support. When printing, OctoScreen currently list the files which reside on the Raspberry Pi, but doesn't list the files which are on the SD card. A future release will include the ability to browse and print files from multiple sources, including the local file system as well as the SD card.
-
Print preview. I haven't researched this feature yet, but I plan to look into parsing gcode files and displaying embedded images when they exist, and give the user a preview of the model that will be printed (and possibly a preview of the model while it's being being printed, though screen limitation may prevent this)
-
Overhaul of the button layout and rendering engine. An issue that has plagued this project, is if the screen isn't big enough to display the graphics and the UI elements, the screen is resized and results in the screen expanding and shifting, resulting in the screen appearing to be cut off. A fix for this issue has recently been found and documented, and hopefully this will no longer be an issue. If users still report seeing this issue, the fix for this will require overhauling the layout and render engine in OctoScreen. Nearly all of the images are SVGs and can be scaled to fit the size of the screen, but this will take some effort to implement, and my hope is that the solution that has been documented will work and an overhaul won't be needed.
-
Overhaul of the application's state machine. Several users have reported problems starting OctoScreen and have reported their systems rebooting over and over. Couple this with OctoPrint's sort-of-wonky state machine when printing (when printing, there's really two states - warming up, and printing, and when in the "warming up" phase, OctoPrint is unresponsive to commands)... and the app can seem locked up, or unresponsive at times. OctoScreen uses a state machine (a fancy way to say that it has different states (or "modes") like "connecting" or "printing", or "idle"). I looked over the existing code which handles the state, and my initial impression was that it didn't directly match OctoPrint's states, and would be better if it closely matched OctoPrint's state machine. It's too early to tell, but I might spend some time looking into revamping OctoScreen's internal state machine.
Now that version 2.6 has been released and the infrastructure is there, I now plan on working on these features.
OK, now onto what's in the version 2.6 release...
- Changed the toolhead image to a hotend. Up close, the toolhead image is descriptive, but in normal use (say, 4 or more feet away from the screen), it looks more like a square, and when I first used OctoScreen, I didn't understand why the hotend was a square (and beside, a hotend heats up, not the toolhead) so I created SVGs to represent the hotends.
- No circle indicating the toolhead number or hotend number when there is only one toolhead. OctoScreen supports up to four toolheads, but the majority of printers only have a single toolhead. When there are two or more hotends the number (a circle with a number in the middle) is present on the hotend:
...but when there is only one hotend present, the "1" is not displayed:
-
Toolhead and hotend indexing conformity. In the previous version, at times the user saw "tool0" through "tool3" (0-based) and at other times saw "tool1" through "tool4" (1-based). I standardized OctoScreen so everything displayed is 1-based.
-
Color bars are no longer just decorative, they are now informative and indicate that the user will be taken to a different screen. When you see a button like this:
...instinctively, what does it do? And what do you expect will happen when you press it? Will pressing the button do something, or will the user be navigated to a different screen (AKA panel)? With software, there usually aren't ramifications when pressing buttons we aren't familiar with, but we're working with 3D printers here, and pressing a button can have consequences, like heating a hotend when we didn't mean to, or causing a toolhead to go crashing into the bed.
Now, in version 2.6, when you see a button with a solid bar underneath it:
...it means that pressing the button will take you to a different screen:
...and not cause the toolhead to move, and when you see a button which doesn't have a solid bar underneath it:
...you know that pressing the button will perform an action.
- Dashed bars have been added. When you see this button in the Filament screen:
...what does it mean? If you press it, will the extruder extrude 20mm of filament? Or does pressing the button perform another action?
In version 2.6, when you see a button which has a series of dashes underneath it:
...it means that the button is a toggle button and doesn't have an immediate action. For example, pressing the distance button cycles between 1mm, 10mm, 20mm, 50mm, 100mm, and then back again.
- Yellow bars indicate user interaction will be needed. When you print:
...or attempt to shutdown or restart:
...the user is now presented with a confirmation dialog box:
-
The buttons and layouts of the standard screens (Home, Filament, Move, Fan, and Temperature) were reorganized to be more logically grouped and organized.
-
The System screen now contains additional information, like the OctoPrint's version, and what the screen size is:
- Added fatal_error_window.go to display fatal startup messages. This gives the user more direct feedback and makes it clear what the issue is.
- Changed filename clip length in the print panel from 35 to to 20 to prevent the screen from expanding and going past the screen's bounds.
- Fixed a bug where pressing cancel during printing before the hotend and bed have warmed up, caused the system to crash and reboot.
- Fixed a bug when navigating between panels. When navigating from panel to panel, pressing the back button should always take the user back to the previous panel. There was a bug where, if the panel was a sub-panel of multiple container/parent panels, pressing the back button wouldn't always take the user back to the correct/previous panel.
- The Temperature Presets panel now limits the number of presets displayed. Having more than 10 presets caused the screen to be resized. The Temperature Presets panel now limits the number of temperature preset button to 10.
- Fixed a bug where the wrong path was being passed to the API to retrieve the file list, preventing the browsing of nested folders.
- Added extra bounds checking for MenuStructure
- Fixed bug where, if plug-in wasn't available, the settings and menu structure weren't set, resulting in a crash
- Fixed bug where the SharedNozzle flag wasn't being honored
- Added feature to obfuscate the API key, so the API key doesn't get logged
- Added fix so OCTOPRINT_APIKEY can be read from OctoScreen's config file
- Improved logging
- Added logging of environment variables
- Renamed variable to be more descriptive. Renamed things like "b" to "button" (or "b" to "buffer", or "b" to "byte", etc...)
- Broke large files up into smaller, reusable components.
- Organized files. The ui directory now contains mostly panel files. The uiWidgets directory was created for button classes and other UI components, and the utils directory was created for utility files.
-
The default OctoPi username is "pi" and the default password is "raspberry". If you haven't already changed them, you should consider changing them, since keeping the default username and password is a security risk.
-
Add
http://
orhttps://
to OCTOPRINT_HOST in /etc/octoscreen/config. OctoScreen requires a fully qualified URI for OCTOPRINT_HOST in order to connect to OctoPrint and its REST APIs. If usingoctopi.local
for OCTOPRINT_HOST, use"http://octopi.local"
instead of"octopi.local"
. Runnano /etc/octoscreen/config
and set OCTOPRINT_HOST to a fully qualified URI (likehttp://octopi.local
). -
Set up logging in OctoScreen. Logging is a great tool to discover errors and to trouble shoot issues. To set up logging in OctoScreen, do the following:
1.SSH into your OctoPi server
2.Edit the config file (typically `nano /etc/octoscreen/config`)
3.Look for OCTOSCREEN_LOG_FILE_PATH (or add it if it's missing)
4.Set the value to `OCTOSCREEN_LOG_FILE_PATH="/home/pi/logs/logfile.txt"`
Then create the initial log file by doing the following:
mkdir /home/pi/logs
touch /home/pi/logs/logfile.txt
Also, if you don't want logging turned on, either don't define OCTOSCREEN_LOG_FILE_PATH, or set OCTOSCREEN_LOG_FILE_PATH to an empty value (eg OCTOSCREEN_LOG_FILE_PATH=
)
* Set the logging level in /etc/octoscreen/config. The logger has different levels in which it logs messages. "debug" is the most verbose, where as "error" is the least. The different log levels (in order of increased logging) are: error, warn, info, debug.
Example: `OCTOSCREEN_LOG_LEVEL=debug`
Some additional tips about the log file:
- Log files aren't automatically truncated and will grow over time. For normal use, you'll probably want to set
OCTOSCREEN_LOG_FILE_PATH=
so log messages aren't added to your log file. - When you encounter an issue, turn logging on by setting
OCTOSCREEN_LOG_FILE_PATH=/home/pi/logs/logfile.txt
(or whatever your log file path is) and also setOCTOSCREEN_LOG_LEVEL=debug
. - After setting the log file or changing the logging level, you will need to reboot your machine. Run
sudo reboot now
.
If you use the OctoScreen Plugin (https://github.com/Z-Bolt/OctoPrint-Z-Bolt-OctoScreen) and have defined a custom menu structure, please note that some panels have been deprecated and some have been renamed:
- The filament_multitool panel has been deprecated. The filament panel now handles both single-hotend systems as well as multi-hotend systems. Please replace:
{
"name": "Extrude",
"icon": "filament",
"panel": "filament_multitool"
}
...with:
{
"name": "Filament",
"icon": "filament-spool",
"panel": "filament"
}
- The extrude_multitool panel has been deprecated. Please replace:
{
"name": "Extrude",
"icon": "filament",
"panel": "extrude_multitool"
}
...with:
{
"name": "Filament",
"icon": "filament-spool",
"panel": "filament"
}
- The extruder panel has been deprecated. Please replace
{
"name": "Extruder",
"icon": "extruder",
"panel": "extruder"
}
...with:
{
"name": "Filament",
"icon": "filament-spool",
"panel": "filament"
}
- The nozzle-calibration panel has been renamed. Please replace:
{
"name": "ZOffsets",
"icon": "z-offset-increase",
"panel": "nozzle-calibration"
}
...with:
{
"name": "ZOffsets",
"icon": "z-offset-increase",
"panel": "z-offset-calibration"
}