Skip to content

Latest commit

 

History

115 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebPi Logo

The Hardware and Software Logic Framework



🚀 The bridge between modern Linux and your hardware projects.

WebPi is a lightweight C++ web interface framework for the Raspberry Pi. It was designed to make sensors, actuators, and device states controllable via a simple HTTP API and your own web interface without the overhead of heavy external frameworks.

"Open, honest, and transparent."

WebPi aims to bring the world of C++ and hardware level programming closer to everyone while making the entry point as easy as possible.


⚛️ The Philosophy

WebPi was born from the experience that developing on the Raspberry Pi is becoming increasingly complex. That classic "GPIO feeling" just quickly making an LED blink has somewhat been lost.

WebPi brings that feeling back. It wraps complex mechanisms into clear, readable, and memorable functions, making C++ accessible to everyone.


✨ Highlights

  • 🌐 Self-contained Ecosystem:

    • Integrated HTTP server and modular core system. No external web server like Apache or Nginx required.
  • 💽 WebPiMemory:

    • Real RAM? No, but a perfect mirror image. A memory module for every purpose, combined with efficient functions in a lightweight design. With WebPiEasy, hardware control becomes pure high-level programming.
    • Integrated bitmasks for getting started right away.
    • Bit manipulation made easy. Switch bits or store entire sensor values ​​for 8-bit or 16-bit.
    • WebPiMemory is consolidated into a single central 64-bit register. This high-speed design is specifically optimized for resource-efficient operation on embedded systems such as the Raspberry Pi.
  • 🛠 Modular Design:

    • Use only what you need. Header-only classes ready for any use case, whether within WebPi or for standalone projects modular and customizable.
    • The user friendly WebPiEasy featuring many simplified wrapper functions similar to an Arduino sketch.
    • From hardware modules (expanders, radio modules, rangefinders) to easy to understand board drivers like SPI, I2C, and UART.
  • 🔌 GPIO Control:

    • Use WebPiGPIOV2, the libgpiod WebPiGPIOD-Wrapper, or other GPIO libs you decide what fits your needs.
    • Configure via configPin(), read/write via setPin() / getPin(). Control GPIOs with short and concise syntax.
  • 📖 Your Progress:

    • Many WebPi functions serve you with default parameters but can be fully customized with your own values.
  • 🛟 WebPi-Start:

    • A Bash based, menu driven startup tool that manages dependencies and builds at the touch of a button.
    • Create custom project structures at the push of a button, using templates for C++, HTML, CSS, JavaScript, and CMakeLists.
    • Build the future ones WebPi Apps and Examples, compare code with the visual web interface see what works, how, and why.
    • Central control start/stop, or let the binaries continue running in the background.
  • ⚠️ WebPi-Apps:

    • Ready to use apps. Adapt the applications to your needs and turn them into your own project.
    • Everything C++, system headers and WebPi have to offer finds its place here for immediate use or as inspiration for your visions.

🧱 Architecture Overview

WebPi is modular and clearly structured. The extensions are not hardlinked, meaning they can also be used for your own independent purposes. You simply need to include the available libraries in your project and add them to the CMakeLists—only the ones you actually need.


webpi
├── CMakeLists.txt
├── core
│   ├── CMakeLists.txt
│   ├── include
│   │   ├── webpi.hpp
│   │   └── webpi_server.hpp
│   └── src
│       ├── webpi.cpp
│       └── webpi_server.cpp
├── docs
│   └── README.md
├── examples
│   ├── actuators
│   ├── buzzer
│   ├── CMakeLists.txt
│   ├── gethost
│   ├── gpio
│   ├── hellowebpi
│   ├── radioswitch
│   ├── shutter
│   ├── tempsensor
│   └── webpieasy
├── lib
│   ├── CMakeLists.txt
│   ├── extensions
│   │   ├── CMakeLists.txt
│   │   ├── components
│   │   │   ├── CMakeLists.txt
│   │   │   ├── inputs
│   │   │   └── outputs
│   │   ├── devices
│   │   │   ├── CMakeLists.txt
│   │   │   ├── wp_cc1101.hpp
│   │   │   ├── wp_mcp23017_8.hpp
│   │   │   └── wp_vl53l0x.hpp
│   │   ├── driver
│   │   │   ├── CMakeLists.txt
│   │   │   ├── wp_i2c.hpp
│   │   │   ├── wp_spi.hpp
│   │   │   ├── wp_tcp_client.hpp
│   │   │   └── wp_uart.hpp
│   │   ├── gpio
│   │   │   ├── CMakeLists.txt
│   │   │   ├── wp_gpiod_wrap.hpp
│   │   │   └── wp_gpio_v2.hpp
│   │   ├── module
│   │   │   ├── CMakeLists.txt
│   │   │   ├── wp_counter.hpp
│   │   │   ├── wp_filetools.hpp
│   │   │   ├── wp_logbook.hpp
│   │   │   ├── wp_minimodbus.hpp
│   │   │   └── wp_mqtt.hpp
│   │   └── README.md
│   └── wpeasy
│       ├── CMakeLists.txt
│       ├── README_DE.md
│       ├── README.md
│       ├── wp_easy.hpp
│       ├── wp_json.hpp
│       ├── wp_math.hpp
│       ├── wp_out.hpp
│       ├── wp_parse.hpp
│       ├── wp_string.hpp
│       ├── wp_system.hpp
│       └── wp_time.hpp
├── projects
│   └── README.md
├── resources
│   ├── benchmark
│   ├── images
│   ├── tools
│   ├── webpistart
│   ├── webpicode
│   └── README
├── source.list
├── templates
│   ├── cmake
│   ├── libs
│   ├── README.md
│   ├── web
│   └── webpi
└── webpistart
     ├── bash
     │   ├── apps.bash
     │   ├── build.bash
     │   ├── conf.bash
     │   ├── dependencies.bash
     │   ├── examples.bash
     │   ├── main.bash
     │   ├── msg.bash
     │   ├── projects.bash
     │   ├── sources.bash
     │   └── status.bash
     ├── CHANGELOG.md
     ├── data
     │   └── remote_source.list
     ├── README.md
     ├── templates
     │   ├── base.cpp
     │   ├── cmakelists.txt
     │   └── web
     │       ├── app.js
     │       ├── images
     │       ├── index.html
     │       └── style.css
     └── webpistart.sh



🔢 The Bitmask Concept WebPi makes binary logic visible. Examples like actuators or shutter demonstrate directly how the internal 8-bit mask interacts with the webinterface.

WebPi Actuators

Clarity through visualization Bitmask states in real-time.


📈 Ready for Data Whether it's temperature logs or system monitoring, WebPi helps you realize your ideas.

WebPi Temperature Graphs

Example of sensor integration with SVG charts and logging functionality.


🛠️ WebPi Status WebPi is in an advanced stage, nearing release. You can follow the development via the source list and the regular news.

Stay tuned!


📖 Legal disclaimer and licenses

Logo & Branding:

The WebPi logo is an independent design and not an official graphic of the Raspberry Pi Foundation.

Legal Disclaimer:

Raspberry Pi is a trademark of the Raspberry Pi Foundation. This project is not affiliated with, endorsed by, or associated with the Raspberry Pi Foundation.

License:

This project is under the MIT License.

About

WebPi is a lightweight C++ web interface framework for the Raspberry Pi. It was designed to make sensors, actuators, and device states controllable via a simple HTTP API and your own web interface without the overhead of heavy external frameworks.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors