All Projects → plan44 → vdcd

plan44 / vdcd

Licence: other
vdcd - virtual device controller daemon/framework for digitalSTROM

Programming Languages

M4
1887 projects
C++
36643 projects - #6 most used programming language
Makefile
30231 projects
shell
77523 projects
c
50402 projects - #5 most used programming language
PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to vdcd

Nf Interpreter
⚙️ nanoFramework Interpreter, CLR, HAL, PAL and reference target boards
Stars: ✭ 168 (+784.21%)
Mutual labels:  gpio, i2c
gpio
A RaspberryPi GPIO library written in PHP.
Stars: ✭ 16 (-15.79%)
Mutual labels:  rpi, gpio
Diozero
Java Device I/O library that is portable across Single Board Computers. Tested with Raspberry Pi, Odroid C2, BeagleBone Black, Next Thing CHIP, Asus Tinker Board and Arduinos. Supports GPIO, I2C, SPI as well as Serial communication. Also known to work with Udoo Quad.
Stars: ✭ 167 (+778.95%)
Mutual labels:  gpio, i2c
tinyfont
Text library for TinyGo displays
Stars: ✭ 37 (+94.74%)
Mutual labels:  gpio, i2c
go-hd44780
Golang library to interact with liquid-crystal display driven by Hitachi HD44780 IC via I2C-bus driver from Raspberry PI.
Stars: ✭ 31 (+63.16%)
Mutual labels:  gpio, i2c
Periph
Go·Hardware·Lean
Stars: ✭ 1,700 (+8847.37%)
Mutual labels:  gpio, i2c
Drivers
TinyGo drivers for sensors and other devices that use I2C, SPI, GPIO, ADC, and UART interfaces.
Stars: ✭ 250 (+1215.79%)
Mutual labels:  gpio, i2c
Swiftygpio
A Swift library for hardware projects on Linux/ARM boards with support for GPIOs/SPI/I2C/PWM/UART/1Wire.
Stars: ✭ 1,188 (+6152.63%)
Mutual labels:  gpio, i2c
Mqtt Io
Expose GPIO modules (Raspberry Pi, Beaglebone, PCF8754, PiFace2 etc.) and digital sensors (LM75 etc.) to an MQTT server for remote control and monitoring.
Stars: ✭ 234 (+1131.58%)
Mutual labels:  rpi, gpio
Rpi gpio
Ruby conversion of RPi.GPIO Python module
Stars: ✭ 185 (+873.68%)
Mutual labels:  rpi, gpio
Powershell Iot
Interact with I2C, SPI & GPIO devices using PowerShell Core!
Stars: ✭ 106 (+457.89%)
Mutual labels:  gpio, i2c
go-bsbmp
Golang library to interact with Bosch Sensortec BMP180/BMP280/BME280/BMP388 temperature, pressure and humidity sensors via I2C-bus from Raspberry PI.
Stars: ✭ 41 (+115.79%)
Mutual labels:  gpio, i2c
Gopi
Raspberry Pi Go Language Interface
Stars: ✭ 82 (+331.58%)
Mutual labels:  gpio, i2c
Ofxgpio
Library C++ for raspberrypi and orangepi, GPIO interfaces compatible with openframeworks.
Stars: ✭ 155 (+715.79%)
Mutual labels:  gpio, i2c
Mraa
Linux Library for low speed IO Communication in C with bindings for C++, Python, Node.js & Java. Supports generic io platforms, as well as Intel Edison, Intel Joule, Raspberry Pi and many more.
Stars: ✭ 1,220 (+6321.05%)
Mutual labels:  gpio, i2c
Johnny Five
JavaScript Robotics and IoT programming framework, developed at Bocoup.
Stars: ✭ 12,498 (+65678.95%)
Mutual labels:  gpio, i2c
Raspberrysharp
A .NET/Mono IO Library for Raspberry Pi This library is a complete refactoring of Raspberry-Sharp libraries, merged into one library and updated to RB3, CM3 and RB3+
Stars: ✭ 41 (+115.79%)
Mutual labels:  gpio, i2c
Tinygo
Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
Stars: ✭ 9,068 (+47626.32%)
Mutual labels:  gpio, i2c
Rpi Examples
Raspberry Pi examples
Stars: ✭ 107 (+463.16%)
Mutual labels:  rpi, i2c
awesome-embedded-swift
⚡️🛠🧰 A curated list for Embedded and Low-Level development in the Swift programming language.
Stars: ✭ 57 (+200%)
Mutual labels:  gpio, i2c

vdcd

[if you want to support vdcd development, please consider to sponsor plan44]

"vdcd" is a free (opensource, GPLv3) virtual device connector (vdc) implementation for digitalSTROM systems. A vdc integrates third-party automation hardware as virtual devices into a digitalSTROM system. Optionally, it can also run as a standalone home automation controller (see --localcontroller option).

This vdcd has ready-to-use implementation for various EnOcean devices, DALI lamps (single dimmers or RGB and RGBW multi-channel color lights including DT6 and DT8 support), Philips hue LED color lights, WS281x RGB LED chains (directly on RPi, via p44-ledchain driver on MT7688), simple contacts and on-off switches connected to Linux GPIO and I2C pins, PWM outputs via i2c, experimental DMX512 support via OLA and console based debugging devices.

When vdcd is built with p44script enabled, custom devices can be implemented as simple scripts. The p44script language has support for http and websocket APIs, and can make use of the p44lrgraphics subsystem to create complex LED matrix effects.

In addition to the built-in implementations, vdcd provides the plan44 vdcd external device API, a simple socket-based API that allows implementing custom devices as external scripts or programs in any language which can open socket connections (almost any, sample code for bash, C and nodeJS is included)

vdcd however is not limited to the set of features listed above - it is based on a generic C++ framework called p44vdc which is included as a submodule into this project.

p44vdc is designed for easily creating additional integrations for many other types of third-party hardware. The framework implements the entire complexity of the digitalSTROM vDC API and the standard behaviour expected from digitalSTROM buttons, inputs, (possibly dimming) outputs and various sensors.

For new hardware, only the actual access to the device's hardware needs to be implemented.

vdcd/p44vdc are based on a set of generic C++ utility classes called p44utils, which provides basic mechanisms for mainloop-based, nonblocking I/O driven automation daemons, as well as a script language, p44script. p44utils is also included as a submodule into this project.

If you like this project you might want to...

License

vdcd is licensed under the GPLv3 License (see COPYING).

If that's a problem for your particular application, I am open to provide a commercial license, please contact me at [email protected].

Features

  • Implements the complete digitalSTROM vDC API including behaviours for buttons, binary inputs, lights, color lights, sensors, heating valves and shadow blinds.
  • Provides the vDC API (which is based on protobuf) also in a JSON version, with additional features which allow building local web interfaces.
  • Provides the plan44 vdcd external device API for easily building custom devices as external scripts or programs.
  • Provides extended customisation features by using the p44script scripting language
  • Allows implementing fully dS compliant devices of all kinds completely in p44script without any external code needed.
  • Supports EnOcean TCM310 based gateway modules, connected via serial port or network
  • Supports Philips hue lights via the hue bridge and its JSON API
  • Supports building really fancy effect color LED lights out WS281x LED chip based LED chains/matrices, with moving segments, lightspots, gradients and even expressive pixels animations. Based on p44lrgraphics, a graphics library specifically written for lo-res LED matrix displays. On Raspberry Pi, just connect a WS2812's data-in to RPi P1 Pin 12, GPIO 18 (thanks to the rpi_ws281x library). On MT7688 systems under OpenWrt, use the p44-ledchain kernel driver.
  • Allows to use Linux GPIO pins (e.g. on RaspberryPi) as button inputs or on/off outputs
  • Allows to use Linux PWM output pins as dimmable outputs
  • Allows to use i2c and spi peripherals (supported chips e.g. TCA9555, PCF8574, PCA9685, MCP23017, MCP23S17, LM75, MCP3021, MAX1161x, MCP3008, MCP3002) for digital and analog I/O
  • Implements interface to Open Lighting Architecture - OLA to control DMX512 based lights (single channel, RGB, RGBW, RGBWA, moving head)

Getting Started

To try it out

  • plan44.ch provides a RaspberryPi image named P44-DSB-X which contains a complete OpenWrt ready to run first experiments with virtual devices (for example driving GPIO pins of the Raspberry). You can download it from https://plan44.ch/automation/p44-dsb-x.php, copy it to a SD Card and use it with a RPi B, B+, 2,3 and 4.

To build it or use the external devices API

  • Clone the github repository

    git clone https://github.com/plan44/vdcd

  • Choose suitable branch:

    • master: consistent state of current tested development version (builds, runs)
    • luz: sometimes contains interesting work in progress not yet in master...
    • testing: corresponds with testing version deployed to beta testers of P44-DSB-E/P44-DSB-DEH product users.
    • production: corresponds with version productively used in current plan44.ch products (P44-DSB-E/E2/DEH/DEH2, P44-LC-DE)
  • consult the /docs folder: For building the vdcd, see "How to build vdcd on Linux.md" and "How to build and run vdcd on Mac OS X.md". For documentation of the external device API, see the PDF document named "plan44 vdcd external device API.pdf"

Build and run it in a Container

  • Clone the github repository

    git clone https://github.com/plan44/vdcd

  • Set the vdcd branch you want to use (see above) (by changing the ENV BRANCH line in the Dockerfile; as-is, this is set to master)

  • Build container image

    cd vdcd docker build -t myimagename .

  • Run vdcd as container, for the autodiscovery to work you have to mount your dbus and avahi-daemon socket into the container

    docker run --network="host" -v /var/run/dbus:/var/run/dbus -v /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket myimagename vdcd [options]

Supporting vdcd

  1. use it!
  2. support development via github sponsors or flattr
  3. Discuss it in the plan44 community forum.
  4. contribute patches, report issues and suggest new functionality on github or in the forum.
  5. build cool new device integrations and contribute those
  6. Buy plan44.ch products - sales revenue is paying the time for contributing to opensource projects :-)

(c) 2013-2022 by Lukas Zeller / plan44.ch

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].