Based upon the Public Invention General Purpose Alarm Device (GPAD), the Krake is a wireless annunciator and alarm device designed to alert humans to conditions requiring attention. The Krake combines visual, audible, serial, and network alarm communication into an open-source hardware and firmware platform.
The Krake extends the original GPAD architecture with:
- ESP32-based networking
- MQTT communication
- Rotary encoder navigation
- 20x4 LCD interface
- DFPlayer audio playback
- OTA firmware updates
- Configurable COM port
- Alarm queue handling
- GPAP alarm messaging
Krake hardware has been certified by the Open Source Hardware Association (OSHWA).
Certification UID:
US002818
OSHWA certification listing: OSHWA Certification Directory
The Krake has been developed primarily by volunteer engineer Nagham Kheir, with mentorship and oversight from volunteer Inventional Coach Lee Erickson.
Mentorship and Teamwork: The Story of the Krake
The Krake is intended to inform human operators of alarm conditions requiring attention.
One intended use case is monitoring elderly individuals or patients living independently. A Krake device mounted within a residence may announce:
- Falls
- Blood pressure abnormalities
- Sensor-triggered emergencies
- Medical equipment alarms
The Krake is intended to support interoperability with the HL7 medical standard and the open-source ADaM (Alarm Dialog Management) project.
The Krake may function as a dedicated annunciator for sophisticated medical equipment such as ventilators or patient monitoring systems.
Examples include:
- Ventilator hose disconnects
- Power failures
- Pressure abnormalities
- Mechanical faults
The Krake focuses on annunciation and communication, while upstream systems determine alarm conditions.
Potential applications include:
- Schools
- Factories
- Industrial process monitoring
- Smart buildings
- Emergency notification systems
- Accessibility alerting systems
The current Krake firmware includes:
- Wi-Fi station + captive portal support
- MQTT alarm communication
- GPAP message parsing
- Rotary encoder navigation
- LCD menu system
- Alarm acknowledgement workflow
- Alarm queue handling
- DFPlayer audio annunciation
- Persistent COM configuration
- Mute timeout handling
- OTA firmware updates
- LittleFS configuration storage
- Alarm state persistence
- RS-232 controller interface
- Hardware flow control support
- LED annunciation patterns
- SPI alarm input support
The Krake includes a 20x4 I²C LCD interface integrated with a rotary encoder and custom menu system.
- Real-time alarm display
- Alarm queue indication
- Wi-Fi status indication
- MQTT broker status indication
- Volume and mute display
- Alarm acknowledgement actions
- Rotary encoder navigation
- Settings configuration menu
Q:+ NEXT W B M ⚙
CRIT Pump Failure
ID:123 Temp High
Ack Dismiss Shelve
-
Rotate:
- Navigate alarms or menu entries
-
Short Press:
- Select item
-
Long Press:
- Open Settings Menu
When an alarm is active:
-
Rotate encoder to enter action selection
-
Available actions:
- Acknowledge
- Dismiss
- Shelve
The local settings menu includes:
- Volume Level
- Mute Duration
- COM Setup
- Device Reset
- Exit Menu
The Krake normally operates as a Wi-Fi station connected to a local network.
For setup and provisioning, the Krake can create a temporary Wi-Fi access point using WiFiManager and LittleFS credential storage.
- Captive portal setup
- Multiple stored Wi-Fi credentials
- Automatic reconnection
- OTA firmware updates
- MQTT connectivity monitoring
- LCD network status display
Credentials are stored locally using LittleFS.
The Krake communicates using MQTT for alarm distribution and acknowledgement.
- MQTT alarm subscriptions
- GPAP response publishing
- Alarm acknowledgements
- Alarm dismissal and shelving
- Device monitoring
- Configurable topic subscriptions
- MQTT status display on LCD
Each Krake subscribes to alarm topics and publishes alarm responses on dedicated ACK topics.
oa{1234} -> Acknowledge
od{1234} -> Dismiss
os{1234} -> Shelve
The Krake firmware supports GPAP alarm messaging and response handling.
Incoming alarm messages may contain:
- Alarm level
- Alarm ID
- Alarm type
- Alarm message text
Supported alarm actions:
| Action | MQTT Response |
|---|---|
| Acknowledge | oa{alarmId} |
| Dismiss | od{alarmId} |
| Shelve | os{alarmId} |
The Krake interfaces to external controllers through a DB9 Female RS-232 DCE connection.
- Configurable baud rate
- RTS/CTS hardware flow control
- Persistent configuration storage
- LCD-based configuration menu
- 1200
- 2400
- 4800
- 9600
- 19200
- 38400
- 57600
- 115200
- 8-N-1
- Optional RTS/CTS flow control
The Krake uses a DFPlayer Mini MP3 module connected through UART2 on the ESP32.
- WAV and MP3 playback
- Alarm-level-specific audio
- Adjustable volume
- SD-card-based multilingual audio
- Busy-line monitoring
- Runtime diagnostics
The SD card is removable so that alarm audio may be customized or localized for language and application.
Pressing the local mute button toggles silencing of audio alarms.
The firmware supports:
- Configurable mute timeout
- Automatic unmute
- Manual mute override
- LCD mute indication
The rotary encoder allows users to:
- Navigate menus
- Configure settings
- Control volume
- Respond to alarms
- Navigate queued alarms
The Krake may be powered using:
- 2.1 mm center-positive barrel connector
- USB-C
- RJ12 SPI interface power jumpers
| Module | Purpose |
|---|---|
alarm_api.* |
Abstract alarm state machine |
GPAD_HAL.* |
Hardware abstraction layer |
GPAD_menu.* |
Rotary encoder and LCD menu system |
mqtt_handler.* |
MQTT publishing and GPAP responses |
gpad_serial.* |
Serial protocol parser |
DFPlayer.* |
Audio playback subsystem |
WiFiManagerOTA.* |
Wi-Fi management and OTA |
InterruptRotator.* |
Rotary encoder interrupt handling |
Instructions for testing and assembly of Krake hardware:
Krake Test and Assembly Procedure Document
Database for Krake units and test registries.
Asset History Records Public Invention Krake Rev. 2
Global Open Source Quality Assuring System.
- Advanced alarm queue management
- Enhanced LCD UI animations and icons
- Bluetooth and BLE alarm forwarding
- Mesh networking support
- Remote firmware fleet management
- Local event history logging
- Expanded GPAP/HL7 interoperability
- Power optimization modes
- Alarm escalation workflows
During development, a breadboard prototype called the MockingKrake was used to validate:
- Alarm functionality
- DFPlayer interoperability
- Wi-Fi communication
- LCD functionality
- Rotary encoder navigation
- MQTT messaging
- ESP32 DevKit V1
- DFPlayer Mini
- SD card
- Speaker
- Alarm LEDs
- Rotary encoder
- LCD display
- Breadboard prototype system
| TEST NUMBER | Current | LCD Condition | DFPlayer Condition |
|---|---|---|---|
| 1 | 0.12–0.16 A | LCD ON | DFPlayer OFF |
| 2 | 0.08–0.11 A | LCD OFF | DFPlayer OFF |
| 3 | 0.23 A max | LCD OFF | DFPlayer ON |
| 4 | 0.24 A max | LCD ON | DFPlayer ON |
- HTTP server support
- Web monitoring interface
- Five-level LED annunciation
- WAV/MP3 alarm playback
- 20x4 LCD alarm display
- Configurable mute handling
- Wi-Fi captive portal setup
- MQTT alarm workflow support
- Rotary encoder menu navigation
Krake Workflow Contribution Procedure
Hollifield, Bill R., and Eddie Habibi. Alarm Management: A Comprehensive Guide. ISA, 2010.
https://learn.adafruit.com/multi-tasking-the-arduino-part-1
-
ESP32 Wi-Fi Manager https://randomnerdtutorials.com/esp32-wi-fi-manager-asyncwebserver/
-
ESP32 OTA Updates https://randomnerdtutorials.com/esp32-ota-elegantota-arduino/
-
ESP32 LittleFS Uploader https://randomnerdtutorials.com/esp32-littlefs-arduino-ide/
- Firmware: GNU Affero GPL 3.0
- Hardware: CERN Open Hardware Licence Version 2 - Strongly Reciprocal
- Krake™ is a trademark of Public Invention.
