Suite of libraries for IoT devices (written in Go), experimental for x/exp/io

Overview

Go libraries/drivers for IoT devices

GoDoc Build Status

This repo contains a suite of libraries for IoT devices/sensors/actuators. The suite is meant to be as dependency free and as idiomatic as possible.

If you are interested in helping, feel free to look at the open issues mentioning help needed. If you have questions on how you implement some of the features, don't hesitate to ask. If you are trying to integrate these libraries in your projects and have questions, please open an issue.

Note that there are a LOT of IoT devices and while we would love to have libs for all of them, we will need your help.

Supported devices

Grove

Adafruit

Pimoroni

Generic

The following libraries can be used on multiple devices that use the same underlying component. Often various manufacturers create their own version of a device using the same component. If you have device that doesn't have a driver listed above, look at the main component used and see it it matches one of the ones mentioned below.

Repo organization

Device libraries are organized by manufacturers and should use names that easy to google or identify. Each device package contains a README file with references and details about the device (and usually a picture and links to datasheets). You will also find an examples folder with basic examples on how to use the library.

Test setup

Testing IoT devices is quite complicated, most of us use a Raspberry Pi, connect the devices directly or via shield and run the examples to test. Yes, it's far from perfect :(

More information / Advanced topics

Checkout the wiki for more info.

Issues
  • reorganize the device packages by manufacturers

    reorganize the device packages by manufacturers

    As we are adding more devices, it's getting hard to find them. For instance I organized the seedstudio devices under grove which was probably a mistake.

    My suggestion is to use the manufacturer name such as seeedstudio, adafruit, pimorini etc..

    Thoughts?

    opened by mattetti 14
  • Travis-CI: make sure we always use the latest version of exp/io

    Travis-CI: make sure we always use the latest version of exp/io

    @rakyll I believe that if we don't setup travis to update the exp/io packages, we won't get the latest versions and therefore won't notice when upstream changes break our device builds. I might be wrong tho.

    opened by mattetti 6
  • dotstar: nothing works

    dotstar: nothing works

    The examples are not working. We are not setting the bits per word, SPI mode or the max speed. I don't know what else is missing but was not able to light up my dotstar strip.

    opened by rakyll 2
  • Fix misleading message

    Fix misleading message

    README mentions the following:

    These libraries rely on Go's new exp/io interfaces and are designed so they can be used as is or via existing Go IoT libraries/frameworks such as GoBot, Embed and hwio.

    Even though this is practically possible, this is not the goal of exp/io packages. Trying to achieve it by writing drivers that work against Gobot, Embed, etc also will create confusing and more layers of unnecessary implementation. The more optimal strategy is to rewrite, eg. rewriting Gobot's SPI adaptor layer as an spi.driver and contribute it to golang.org/x/exp/spi.

    /cc @mattetti

    opened by rakyll 2
  • Grove LCD RGB Backlight device support

    Grove LCD RGB Backlight device support

    This is a pretty complete implementation of the Grove LCD device, some of the code could be cleaned up, and the allocation could be reduced. That said I think it's good to merge as is.

    Something interesting to notice is that we have to pass 2 devices (one for each address) when this is really a device concern and not a user's.

    /cc @rakyll

    opened by mattetti 2
  • simplify example

    simplify example

    As per our discussion, I simplified the example I previously wrote that was using signal handling. I did start a new wiki entry explaining how to use signals.

    opened by mattetti 1
  • s/New/Open/ as the entry point into devices

    s/New/Open/ as the entry point into devices

    As discussed in the accel3xdigital device PR, it is semantically more correct to use Open vs New and it is also a more symmetrical API since one needs to Close after being done with the device.

    help wanted 
    opened by mattetti 1
  • Rename repo to devices?

    Rename repo to devices?

    "drivers" is a terminology preserved for the protocol drivers. To help with the ambiguity, should we rename the repo to "devices"?

    /cc @mattetti

    opened by rakyll 1
  • grove/accel3xdigital: remove signal handling from example

    grove/accel3xdigital: remove signal handling from example

    https://github.com/goiot/devices/blob/master/grove/accel3xdigital/examples/monitor/main.go contains an infinite loop and uses signal handling to properly clean things up. While the example is valid to show how to handle a clean shut down, the purpose of the example should be to highlight the usage of the library.

    It's therefore better to switch to a for loop that exists after X readings. Cleaning should be done in a defer statement.

    help wanted 
    opened by mattetti 0
  • Add bme280 sensor

    Add bme280 sensor

    Working on a side project to monitor environment data using this particular sensor and I have put together some golang code to interrogate it over i2c.

    Not sure if your interested in external contributions at this stage, but may be handy for others.

    opened by wolfeidau 0
  • Gophercon hacking!

    Gophercon hacking!

    I'm hoping on hacking on:

    • finishing the OLED 96x96 implementation
    • analog sensor now that the exp/io GPIO package should be stable
    • planning of a generic solution for the GrovePi
    • Maybe an oscilloscope if someone is interested in pairing with me on that

    Anyone going to the conf and interested in some GoIoT hacking? /cc @rakyll @zankich @deadprogram

    opened by mattetti 2
  • grove/accel3xdigital support for interrupts

    grove/accel3xdigital support for interrupts

    The sensor can trigger interrupts based on analyzed events. The type of events and the pin used to trigger these events can be defined as explained in the datasheet: http://www.farnell.com/datasheets/1670762.pdf

    Unfortunately, the current state of exp/io/gpio doesn't allow us to add this feature. That said, we expect the gpio pkg to be soon ready. If you are interested in this issue, look at the gpio pkg, if he does support interrupt pins, then you can work on it.

    help wanted 
    opened by mattetti 0
  • grove/oled96x96: add support for bitmap drawing

    grove/oled96x96: add support for bitmap drawing

    func (o *OLED96x96) DrawBitmap(bitmap []byte) error { return nil } is not yet implemented. We might also want to add a DrawImg method that takes an image.Image argument

    help wanted 
    opened by mattetti 0
Owner
Go IoT
Go IoT
A opinionated multi-tenant hyperscale Internet of Things platform to connect IoT devices fast and securely with minimal TCO

infinimesh IoT Platform infinimesh is a opinionated multi-tenant hyperscale Internet of Things platform to connect IoT devices fast and securely with

Mik 1 Feb 14, 2022
🐼 IoT worm written in pure golang.

GoriaNet Most powerfull cross compiler (27arch). Kill process by port and check for duplicate instance. Killing process by port. Cross compiler. Infor

Ѵιcнч 66 Aug 7, 2022
An Open-Source Platform for Quantified Self & IoT

Heedy Note: Heedy is currently in alpha. You can try it out by downloading it from the releases page, but there is no guarantee that future versions w

Heedy 343 Aug 12, 2022
Make IoT a lot more fun with data.

Eywa What is Eywa? "Eywa is the guiding force and deity of Pandora and the Na'vi. All living things on Pandora connect to Eywa." -- Avatar Wiki Projec

Alex 55 Jul 19, 2022
Golang framework for robotics, drones, and the Internet of Things (IoT)

Gobot (https://gobot.io/) is a framework using the Go programming language (https://golang.org/) for robotics, physical computing, and the Internet of

The Hybrid Group 7.9k Aug 9, 2022
A Go client for Google IoT Core

IoT A simple framework for implementing a Google IoT device. This package makes use of the context package to handle request cancelation, timeouts, an

Andrew Young 59 Jul 11, 2022
Industrial IoT Messaging and Device Management Platform

Mainflux Mainflux is modern, scalable, secure, open-source, and patent-free IoT cloud platform written in Go. It accepts user and thing (sensor, actua

Mainflux 1.9k Aug 17, 2022
Gobot - Golang framework for robotics, drones, and the Internet of Things (IoT)

Gobot (https://gobot.io/) is a framework using the Go programming language (https://golang.org/) for robotics, physical computing, and the Internet of Things.

The Hybrid Group 7.9k Aug 15, 2022
An embeddable lightweight Go/Golang MQTT broker(server) for IoT.

Snple MQTT 简体中文 Note: The API of this library is still unstable and has not been sufficiently tested, please do not use it in production environments.

null 8 Jun 1, 2022
Next-generation IoT open source platform.

tKeel Next-generation IoT open source platform High performance, High security and easy to use tKeel is a strong and reusable IoT platform that helps

null 85 Jun 28, 2022
Whichip: discover (IoT) device's IP in local network

whichip: discover (IoT) device's IP in local network Install On (IoT) Device wget -O install.sh

Jingchao Hu 1 Dec 8, 2021
Exploring and comparing different IOT messaging protocols / transports.

IOT Messaging Protocols Blynk https://blynk.io/ A fully integrated suite of IoT software Device provisioning Sensor data visualization Remote control

Alexander Ustyugov 0 Jan 2, 2022
IoT platform with things/user management and visualization, in Go with Docker using microservices

BARIOT IoT platform to Manage Users and their Things and visualize their data. Microservices services architecture build with Go and docker (compose).

Maxime CLEMENT 5 Jun 22, 2022
Securely access remote devices and servers

Deviceplane is an open source device management tool for embedded systems and edge computing. It solves various infrastructure problems related to rem

Deviceplane 207 May 6, 2022
Automatically updates the firmware of all your Shelly devices at once.

shelly-bulk-update Automatically updates the firmware of all your Shelly devices at once. Installation Download the binary for your platform: macOS cu

Fernando Mayo 13 Jul 17, 2022
Hermes is a tiny MQTT compatible broker written in Go.

Hermes Hermes is a tiny MQTT compatible broker written in Go. The goals of the project are as below Easy to compile, and run Tiny footprint Extensible

Chaitanya Munukutla 54 Feb 24, 2022
siusiu (suite-suite harmonics) a suite used to manage the suite, designed to free penetration testing engineers from learning and using various security tools, reducing the time and effort spent by penetration testing engineers on installing tools, remembering how to use tools.

siusiu (suite-suite harmonics) a suite used to manage the suite, designed to free penetration testing engineers from learning and using various security tools, reducing the time and effort spent by penetration testing engineers on installing tools, remembering how to use tools.

Re 264 Aug 9, 2022
IoT Manager: use IoT platforms with Mender

Mender: Azure IoT Manager: use Azure IoT with Mender General Mender is an open source over-the-air (OTA) software updater for embedded Linux devices.

Mender 0 Jan 10, 2022
Fast specialized time-series database for IoT, real-time internet connected devices and AI analytics.

unitdb Unitdb is blazing fast specialized time-series database for microservices, IoT, and realtime internet connected devices. As Unitdb satisfy the

Saffat Technologies 94 Aug 2, 2022
A opinionated multi-tenant hyperscale Internet of Things platform to connect IoT devices fast and securely with minimal TCO

infinimesh IoT Platform infinimesh is a opinionated multi-tenant hyperscale Internet of Things platform to connect IoT devices fast and securely with

Mik 1 Feb 14, 2022
scrapligo -- is a Go library focused on connecting to devices, specifically network devices (routers/switches/firewalls/etc.) via SSH and NETCONF.

scrapligo -- scrap(e c)li (but in go!) -- is a Go library focused on connecting to devices, specifically network devices (routers/switches/firewalls/etc.) via SSH and NETCONF.

null 142 Aug 16, 2022
Agent-less vulnerability scanner for Linux, FreeBSD, Container, WordPress, Programming language libraries, Network devices

Vuls: VULnerability Scanner Vulnerability scanner for Linux/FreeBSD, agent-less, written in Go. We have a slack team. Join slack team Twitter: @vuls_e

Future Corp 9.4k Aug 16, 2022
Experimental email attachment downloader for Kobo devices (gmail only ATM)

KoboMail Experimental email attachment downloader for Kobo devices (gmail only ATM) What is KoboMail? It is a software that will read emails sent to u

Carlos Lisboa 15 Aug 3, 2022
Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more

Gonum Installation The core packages of the Gonum suite are written in pure Go with some assembly. Installation is done using go get. go get -u gonum.

null 6k Aug 12, 2022
Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more

Gonum Installation The core packages of the Gonum suite are written in pure Go with some assembly. Installation is done using go get. go get -u gonum.

null 6k Aug 9, 2022
Microsoft ActiveX Object DataBase driver for go that using exp/sql

go-adodb Microsoft ADODB driver conforming to the built-in database/sql interface Installation This package can be installed with the go get command:

mattn 127 Jun 28, 2022
CVE-2021-21978 exp

CVE-2021-21978 CVE-2021-21978 RCE exp 影响版本 VMware View Planner Harness 4.X 与 CVE-2021-21978 类似,该漏洞可以在未授权访问的情况下,上传任意文件,并通过修改自带 py 脚本实现远程代码执行。

null 22 Jul 22, 2022
CVE-2021-26855 exp

CVE-2021-26855 CVE-2021-26855 ssrf 简单利用 golang 练习 影响版本 Exchange Server 2013 小于 CU23 Exchange Server 2016 小于 CU18 Exchange Server 2019 小于 CU7 利用条件 该漏洞不

Justin Ryan 110 Jul 5, 2022
CVE-2021-26855 exp

CVE-2021-26855 CVE-2021-26855 ssrf 简单利用 golang 练习 影响版本 Exchange Server 2013 小于 CU23 Exchange Server 2016 小于 CU18 Exchange Server 2019 小于 CU7 利用条件 该漏洞不

Charlotte Zhang 110 Jul 5, 2022