MCPcopy Index your code
hub / github.com/SiddhantSilwal/RaspberryPi-GPIO-Web-Controller

github.com/SiddhantSilwal/RaspberryPi-GPIO-Web-Controller @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
97 symbols 244 edges 4 files 14 documented · 14%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Raspberry Pi Web GPIO Controller

A complete web-based remote GPIO controller for Raspberry Pi with real-time monitoring, PWM control, and a modern interface.

One-Step Installation

Run the following command in your Raspberry Pi terminal

curl -sL https://raw.githubusercontent.com/SiddhantSilwal/RaspberryPi-GPIO-Web-Controller/refs/heads/main/webinstaller.sh | bash

Alternative Installation Methods

For custom installation to review and change python scripts as per your setup, clone and install the git repo as follows

git clone https://github.com/SiddhantSilwal/RaspberryPi-GPIO-Web-Controller.git
cd RaspberryPi-GPIO-Web-Controller/
chmod +x ./install.sh
./install.sh

Requirements

  • Python 3.7 or higher
  • Curl
  • Packages listed in requirements.txt

Running the Application

Autostart:

For default installation the script will autostart on boot

Manual Start:

If autostart is disabled at installation type the following command to start the server

$ webgpio

Access the Interface:

  1. Open a web browser
  2. Navigate to http://localhost:5000 (local) or http://[PI_IP_ADDRESS]:5000 (network)

File Structure

/usr/share/RaspiWebGPIO/
├── app.py                      # Flask backend application
├── requirements.txt            # Python dependencies
├── templates/
│   └── index.html             # Main HTML template
└── static/
    ├── css/
    │   └── styles.css
    └── js/
        └── app.js

Features

  • Visual GPIO Grid: Real-time status display of all GPIO pins
  • Input Monitoring: Live monitoring with event logging for input pins with pull-resistor options
  • Output Control: Set Output signal to HIGH, LOW or send a pulse
  • PWM Control: Hardware and software PWM with frequency and duty cycle control
  • Real-time Updates: Server-Sent Events for live status updates
  • Activity Logging: Comprehensive logging of all user actions and system events
  • Modern Interface: User friendly design that works on desktop, tablet, and mobile devices

API Endpoints

  • GET /api/pins - Get status of all GPIO pins
  • POST /api/mode - Configure pin mode (input/output)
  • POST /api/write - Set output values or send pulses
  • POST /api/pwm - Control PWM (start/stop/configure)
  • POST /api/monitor - Toggle input pin monitoring
  • POST /api/reset - Reset all pins to safe defaults
  • GET /api/events - Server-Sent Events stream for real-time updates

Keyboard Shortcuts

  • Ctrl+D (or Cmd+D on Mac) - Toggle dark mode
  • Ctrl+R (or Cmd+R on Mac) - Reset all pins
  • Enter/Space on GPIO pins - Select for configuration
  • Tab - Navigate between controls

Core symbols most depended-on inside this repo

log_event
called by 35
AppData/app.py
showError
called by 16
AppData/static/js/app.js
logActivity
called by 12
AppData/static/js/app.js
refreshPinStatus
called by 8
AppData/static/js/app.js
consume
called by 7
AppData/static/js/graph.js
output
called by 6
AppData/app.py
setup
called by 5
AppData/app.py
cleanup_pin
called by 5
AppData/app.py

Shape

Method 50
Function 32
Route 10
Class 5

Languages

TypeScript64%
Python36%

Modules by API surface

AppData/static/js/app.js37 symbols
AppData/app.py35 symbols
AppData/static/js/graph.js25 symbols

For agents

$ claude mcp add RaspberryPi-GPIO-Web-Controller \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact