Decentralized LED (Raspberry Pi)
April 16, 2026 ยท View on GitHub
This example shows how to turn a Raspberry Pi into a decentralized IoT LED device connected to the Ixian Platform via QuIXI.
The device securely integrates into Ixian, automatically accepts new users, and reacts to chat commands or MQTT messages in real time.
๐ Requirements
- Raspberry Pi 2+ with Raspberry Pi OS Lite
- Internet connection
- LED connected to GPIO pin 4
- .NET 10
- Mosquitto MQTT
โก Installation
Run the following commands on your Pi:
# Update and install dependencies
sudo apt update
sudo apt install -y curl git jq mosquitto mosquitto-clients
# Install .NET 10
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 10.0 --version latest --verbose
echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc
source ~/.bashrc
# Clone and build QuIXI + Ixian Core
git clone https://github.com/ixian-platform/Ixian-Core.git
git clone https://github.com/ixian-platform/QuIXI.git
dotnet build -c Release
๐ Project Structure
/LED
โโโ start.sh # Launches QuIXI and helper scripts
โโโ ixiAutoAccept.sh # Automatically accepts incoming contacts
โโโ ixiMessageHandler.sh # Handles chat commands (on/off/temp/help/wifi/contacts)
โโโ helpers.sh # Helper functions for messaging & system control
โโโ ixian.cfg # Example QuIXI configuration file
โโโ quixi.service # systemd service file for auto-start
Note:
quixi.serviceassumesstart.shand all helper scripts reside in/root/. Adjust paths if you move them elsewhere.
โถ๏ธ Running the Example
Copy example ixian.cfg file to Release directory and edit if required
cp ixian.cfg QuIXI/QuIXI/bin/Release/net10.0/
Manual start
chmod +x start.sh ixiAutoAccept.sh ixiMessageHandler.sh helpers.sh
./start.sh
Auto-start on boot (systemd)
Copy the provided service file:
sudo cp quixi.service /etc/systemd/system/
sudo systemctl enable quixi
sudo systemctl start quixi
Check status:
systemctl status quixi
๐ Add Your Device as a Contact
Before you can send commands, add your Ixian address as a contact to QuIXI. Replace DEVICE_ADDRESS with the
address of your Spixi client:
curl --get \
--data-urlencode "address=DEVICE_ADDRESS" \
"http://localhost:8001/addContact"
๐ก Supported Commands
Send commands via Ixian chat or through MQTT messages (Chat/# topic).
| Command | Action |
|---|---|
on | Turns the LED on |
off | Turns the LED off |
temp | Replies with Raspberry Pi CPU temperature |
wifi | Manage Wi-Fi connections (add/remove/list) |
contacts | Manage Ixian contacts (accept/add/remove/list) |
help | Show available commands |
Example message flow:
- Send "on" โ LED turns on
- Send "temp" โ Device replies with CPU temperature
๐ How It Works
-
start.shlaunches QuIXI and the message handler. -
ixiAutoAccept.shlistens onRequestAdd2/#and ensures the device accepts any new contact requests. -
ixiMessageHandler.shlistens onChat/#, parses incoming commands, and:- Controls GPIO pin 4 (LED on/off)
- Executes helper functions (
temp,wifi,contacts) - Replies via Ixian chat
This demonstrates how any IoT device can securely integrate into Ixian's decentralized, encrypted network.
๐ License
This example is part of QuIXI and licensed under the MIT License.