Skip to content

Releases: makepkg/pico-admin-hid

Pico Admin HID v2.1.0 - INA226 Improve

Choose a tag to compare

@makepkg makepkg released this 25 Jun 19:49

🎉 Version 2.1.0 Release

🔄 What's New in 2.1.0

  • Power Monitor State Machine: PowerMonitorInput refactored to 4-state machine (MONITORING → TRIGGERED → SUSPENDED → SUSPENDED_WAITING)
  • USB Gate: Shutdown trigger fires only if USB is connected — no false triggers when server is already off
  • Smart Recovery: recovery_offset_percent prevents re-triggering immediately after battery recovers
  • Retry Logic: Configurable trigger_attempts and trigger_attempt_interval_sec replace old cooldown system
  • Auto-boot Protection: Auto-boot blocked in SUSPENDED state and restricted to 60s grace period after Pico startup
  • Safe Boot State: On startup with low battery and no USB — starts directly in SUSPENDED
  • Event Logging: State transitions logged to /power_monitor.log with automatic 20KB rotation
  • Config Editor Updated: New fields reflected in editor.html UI

⚠️ Migration from 2.0.0

Remove from config.json:

  • cooldown_sec
  • cancel_cooldown_sec

Add to config.json:

"recovery_offset_percent": 10,
"trigger_attempts": 3,
"trigger_attempt_interval_sec": 60

🎉 Version 2.0.0 Release

Major architectural refactoring to support extensible typed inputs and outputs with a unified pipeline execution engine. This release transforms Pico Commander from a hardcoded HID macro pad into a flexible automation runtime.

Pico Admin HID v2.0.0 - Massive refactoring

Choose a tag to compare

@makepkg makepkg released this 24 Jun 21:21

🎉 Version 2.0.0 Release

Major architectural refactoring to support extensible typed inputs and outputs with a unified pipeline execution engine. This release transforms Pico Commander from a hardcoded HID macro pad into a flexible automation runtime.

✨ Features

  • New Typed Inputs System: Unified management for hardware inputs (inputs_manager.py). Includes built-in hall type for sensors and power_monitor type for INA226 battery tracking.
  • New Modular Outputs System: Scenarios can now target different outputs (hid for USB keyboard emulation, gpio for physical relay/optocoupler control) within the same sequence.
  • Unified Pipeline Engine: Both menu clicks (active_menu) and hardware sensors (passive) now use the exact same pipeline and loop execution logic.
  • GPIO Auto-Boot: Added auto_boot capability for GPIO outputs to automatically pulse a power button (e.g., wake up a server) on startup if the USB host is not detected.
  • Advanced Power Monitoring: INA226 support with low-battery warning overlays, encoder-dismissible alerts, and a dynamic battery percentage splash screen during screensaver.
  • Web Config Studio: Fully functional visual configuration editor (editor.html) with drag-and-drop menu building and real-time validation.

📦 Hardware Required

  • Raspberry Pi Pico (RP2040)
  • SSD1306 OLED display (128×32, I2C)
  • Rotary encoder with push button
  • Hall effect sensors (Optional, for passive triggers)
  • INA226 module (Optional, for battery monitoring)
  • Tactile button (Optional, for boot mode selection)

🚀 Quick Start

  1. Install CircuitPython 9.x on Raspberry Pi Pico
  2. Copy all files from this release to the CIRCUITPY drive
  3. Install required libraries (see README.md Step 2)
  4. Configure your hardware in config.json
  5. Create scenarios and assign triggers

Full documentation: https://github.com/makepkg/pico-admin-hid#readme

📚 Documentation

📋 Required Libraries

  • adafruit_displayio_ssd1306.mpy
  • adafruit_display_text/ (folder)
  • adafruit_hid/ (folder)

Download from: https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases

🔧 What's Included

Core files:

  • boot.py - USB HID initialization
  • code.py - Main entry point
  • config.py - Configuration loader
  • trigger_bus.py - Core event coordination and pipeline engine
  • inputs_manager.py - Unified hardware sensor handler
  • encoder.py - Menu navigation and active triggers
  • display.py - OLED rendering
  • screensaver.py - Display timeout logic
  • output_hid.py / output_gpio.py - Output driver modules

Configuration:

  • config.json - Hardware, scenarios, triggers (customize this)

Tools:

  • editor.html - Visual configuration editor (open in browser)

📝 License

MIT License - see LICENSE file

🙏 Credits

Built with CircuitPython and Adafruit libraries. See CONTRIBUTORS.md for full attribution.


Tested with: CircuitPython 9.0.5
Hardware: Raspberry Pi Pico (RP2040)
Platform: Linux, macOS, Windows

Pico Admin HID v1.0.0 - Initial Release

Choose a tag to compare

@makepkg makepkg released this 05 Jun 20:11

🎉 Initial Release

Physical macro pad controller for Raspberry Pi Pico with OLED display, rotary encoder, and USB HID keyboard emulation.

✨ Features

  • Physical triggers: Hall sensors, button (passive system)
  • Menu-driven triggers: Rotary encoder navigation (active system)
  • USB HID: Keyboard, media keys, custom shortcuts
  • OLED display: 128×64 monochrome with screensaver
  • Web-based configuration: Visual JSON editor (editor.html)
  • SD card support: Config backup and import

📦 Hardware Required

  • Raspberry Pi Pico (not Pico W)
  • SSD1306 OLED display (128×64, I2C)
  • Rotary encoder with button
  • Hall effect sensors (2×)
  • Tactile button
  • Neodymium magnets (for Hall sensors)

🚀 Quick Start

  1. Install CircuitPython 9.x on Raspberry Pi Pico
  2. Copy all files from this release to CIRCUITPY drive
  3. Install required libraries (see README.md Step 2)
  4. Configure hardware in config.json
  5. Create scenarios and assign triggers

Full documentation: README.md

📚 Documentation

📋 Required Libraries

  • adafruit_displayio_ssd1306.mpy
  • adafruit_display_text/ (folder)
  • adafruit_hid/ (folder)

Download from: Adafruit CircuitPython Bundle 9.x

🔧 What's Included

Core files:

  • boot.py - USB HID initialization
  • code.py - Main entry point
  • config.py - Configuration loader
  • trigger_bus.py - Event coordination
  • passive.py - Hardware trigger handler
  • encoder.py - Menu navigation and active triggers
  • display.py - OLED rendering
  • screensaver.py - Display timeout logic

Configuration:

  • config.json - Hardware, scenarios, triggers (customize this)
  • settings.toml.example - USB device settings template

Tools:

  • editor.html - Visual configuration editor (open in browser)

Documentation:

  • Complete README with installation guide
  • User guides for configuration
  • Developer documentation for extending the system

📝 License

MIT License - see LICENSE file

🙏 Credits

Built with CircuitPython and Adafruit libraries. See CONTRIBUTORS.md for full attribution.


Tested with: CircuitPython 9.0.5
Hardware: Raspberry Pi Pico (RP2040)
Platform: Linux, macOS, Windows