Raspberry Pi GPIO Web Control #piday #raspberrypi @Raspberry_Pi

Inspired by “Reading Analogue Sensors with One GPIO Pin“, Sebastian Bub rolled this approach into a project of his own, “Raspberry Pi GPIO Web Control,” a lightweight Java-based web application to control the GPIO ports.

From his BitBucket.org project description:

A Java webapp to control your GPIO ports of the Raspberry Pi using http.

What is raspberry-pi-gpio-web-control?

raspberry-pi-gpio-web-control is a lightweight java based web application to control your GPIO ports of your Raspberry Pi over http. It is based on documentation at elinux.org: RPi Low-level peripherals
It is tested with Winstone Servlet Container, but any other servlet engine will probably do, too.


  • Every port can be set as input, output or analog input (requires a simple circuit based on raspberrypi-spy.co.uk: Reading Analogue Sensors).
  • Output ports can be set conditionally on values of input ports (i.e. darknessSensor1in==1&lamp1out=1, see cron.conf).
  • You can give each port a custom name to make your client look better.
  • You can define a default state on output ports.
  • You can define a blocking time for an output port (so it is not switched to fast in case the user makes a request twice).
  • You can define a toggle time for an output port (i.e. if you want to turn a port on for a defined period of time, it can be done with a single request).
  • You can set a simulation mode for testing your client.
  • Setting multiple ports in one requests are set one after another, but the code is optimized and nothing unnecessary is done in between (it takes about 2-5ms on an idle Raspberry Pi to set all 17 ports, some artificial load (e.g.’find /’ in the background) will slow it down to 10-15ms).
  • Cronjobs (exact to the second) for output ports are based on quartz-scheduler.org. Output ports can be set conditionally and you have a simple but powerful semaphore mechanism.
  • You may define your own variables with a prefix VIRTUAL which are persisted in memory (unknown virtual variables default to “0”).

Planned Features

  • If GPIO ports are used to represent binary output values, blocking single ports is dangerous: Delayed/Queue requests
  • Automated tests
  • Custom hooks (pre/post), e.g. for notifications
  • More status and configuration information requestable via json (disengageable)

Possible Unplaned Features

  • Bit sequences (especially with AUTO.TOGGLE.TIME) for serial output or to control a servo (probably an SPI interface)
  • Some kind of PLC (Programmable Logic Controller)
  • Suggestions are welcome

Project Status

The project has started and I use it by myself mainly for simple output (manually and with cronjobs). If I had to give it a release number, I would say it is a 0.85 release. Bug reports and feature requests are welcome.

Read more.

998Each Friday is PiDay here at Adafruit, be sure to check out our posts, tutorials and new Raspberry Pi related products. Have you tried the new “Adafruit Raspberry Pi Educational Linux Distro” ? It’s our tweaked distribution for teaching electronics using the Raspberry Pi. But wait, there’s more! Try our new Raspberry Pi WebIDE! The easiest way to learn programming on a Raspberry Pi.

Want a FREE RASPBERRY PI? All orders over $350 get a FREE Raspberry Pi Model B with 512MB RAM!

Adafruit publishes a wide range of writing and video content, including interviews and reporting on the maker market and the wider technology world. Our standards page is intended as a guide to best practices that Adafruit uses, as well as an outline of the ethical standards Adafruit aspires to. While Adafruit is not an independent journalistic institution, Adafruit strives to be a fair, informative, and positive voice within the community – check it out here: adafruit.com/editorialstandards

Join Adafruit on Mastodon

Adafruit is on Mastodon, join in! adafruit.com/mastodon

Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on code.org, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7pm ET! To join, head over to YouTube and check out the show’s live chat – we’ll post the link there.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 36,000+ makers on Adafruit’s Discord channels and be part of the community! http://adafru.it/discord

CircuitPython – The easiest way to program microcontrollers – CircuitPython.org

Maker Business — “Packaging” chips in the US

Wearables — Enclosures help fight body humidity in costumes

Electronics — Transformers: More than meets the eye!

Python for Microcontrollers — Python on Microcontrollers Newsletter: Silicon Labs introduces CircuitPython support, and more! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

Adafruit IoT Monthly — Guardian Robot, Weather-wise Umbrella Stand, and more!

Microsoft MakeCode — MakeCode Thank You!

EYE on NPI — Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — #NewProds 7/19/23 Feat. Adafruit Matrix Portal S3 CircuitPython Powered Internet Display!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !

No Comments

No comments yet.

Sorry, the comment form is closed at this time.