PyUnit is a custom firmware for iDryer Unit written in Python.
- Separate web panel for drying control
- Drying process graphs
- Improved temperature control algorithms
- Improved humidity control algorithms
- Storage mode with humidity maintenance
- Storage mode with temperature maintenance
Standby mode, the dryer does nothing.
Drying mode with a target humidity level. In this mode, the dryer maintains the set temperature with a possible overshoot of Max temperature delta. After reaching the target humidity, it transitions to the next mode.
Drying mode with target humidity maintenance. In this mode, the dryer maintains the target humidity by lowering the drying temperature or opening the vent. If the Storage temperature parameter is set, the temperature will not drop below it. The mode lasts until the Dry time expires.
Humidity maintenance mode. Activated after Timer drying if Storage temperature is not set. In this mode, the dryer maintains humidity within the specified range. If the humidity exceeds the allowed value, the dryer turns on the heater and dries for the duration of Humidity Dry Time. The cycle then repeats.
Humidity maintenance mode with temperature control. Activated after Timer drying if Storage temperature is set. In this mode, the Storage temperature is maintained, and the target humidity is attempted to be maintained. However, this may not be possible if the Storage temperature is too high.
Python 3.11 or higher. Lower versions of Python may be supported but have not been tested.
- Connect via SSH to your printer.
- Navigate to the user's home directory.
For example:
cd /home/orangepi - Clone the repository:
git clone https://github.com/xatang/PyUnit
- Use nano or another editor to edit config.json. Configuration parameters description
- Run install.sh:
bash install.sh
- The service should start. You can access it at
http://printer_ip:app_port/
Additionally, you can add the following commands to the Fluidd or Mainsail console filters to avoid a flood of messages during firmware operation.
SET_LED LED=[led_name] INDEX=
SET_HEATER_TEMPERATURE HEATER=[heater_name]
SET_SERVO SERVO=[servo_name]- To control the drying process via gcode macro, your printer must have the gcode_shell_command extension installed.
- After installation, modify the path to
config.jsonin./idryer_macros/api.pyto match your setup. - You can then replace your original
U1.cfgwith the contents of./idryer_macros/U1.cfg.example. Be sure to change/home/orangepito your actual path.
The unit ID is essentially the index of
config.json, starting from 0.
The preset number is also the index of the preset in each unit, starting from 0.
4:3 page that can be added as an HTTP webcam for viewing graphs.
4:3 page that can be added as an HTTP webcam for viewing statuses.
Page displaying only graphs.
Adding pages as a webcam does not allow you to control the firmware using buttons, as clicks are inactive in the camera area.

