Gobot - Golang framework for robotics, drones, and the Internet of Things (IoT)

Gobot

GoDoc CircleCI Build status Appveyor Build status codecov Go Report Card License

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

It provides a simple, yet powerful way to create solutions that incorporate multiple, different hardware devices at the same time.

Want to run Go directly on microcontrollers? Check out our sister project TinyGo (https://tinygo.org/)

Getting Started

Get the Gobot package by running this command: go get -d -u gobot.io/x/gobot

Examples

Gobot with Arduino

package main

import (
	"time"

	"gobot.io/x/gobot"
	"gobot.io/x/gobot/drivers/gpio"
	"gobot.io/x/gobot/platforms/firmata"
)

func main() {
	firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0")
	led := gpio.NewLedDriver(firmataAdaptor, "13")

	work := func() {
		gobot.Every(1*time.Second, func() {
			led.Toggle()
		})
	}

	robot := gobot.NewRobot("bot",
		[]gobot.Connection{firmataAdaptor},
		[]gobot.Device{led},
		work,
	)

	robot.Start()
}

Gobot with Sphero

package main

import (
	"fmt"
	"time"

	"gobot.io/x/gobot"
	"gobot.io/x/gobot/platforms/sphero"
)

func main() {
	adaptor := sphero.NewAdaptor("/dev/rfcomm0")
	driver := sphero.NewSpheroDriver(adaptor)

	work := func() {
		gobot.Every(3*time.Second, func() {
			driver.Roll(30, uint16(gobot.Rand(360)))
		})
	}

	robot := gobot.NewRobot("sphero",
		[]gobot.Connection{adaptor},
		[]gobot.Device{driver},
		work,
	)

	robot.Start()
}

"Metal" Gobot

You can use the entire Gobot framework as shown in the examples above ("Classic" Gobot), or you can pick and choose from the various Gobot packages to control hardware with nothing but pure idiomatic Golang code ("Metal" Gobot). For example:

package main

import (
	"gobot.io/x/gobot/drivers/gpio"
	"gobot.io/x/gobot/platforms/intel-iot/edison"
	"time"
)

func main() {
	e := edison.NewAdaptor()
	e.Connect()

	led := gpio.NewLedDriver(e, "13")
	led.Start()

	for {
		led.Toggle()
		time.Sleep(1000 * time.Millisecond)
	}
}

"Master" Gobot

You can also use the full capabilities of the framework aka "Master Gobot" to control swarms of robots or other features such as the built-in API server. For example:

package main

import (
	"fmt"
	"time"

	"gobot.io/x/gobot"
	"gobot.io/x/gobot/api"
	"gobot.io/x/gobot/platforms/sphero"
)

func NewSwarmBot(port string) *gobot.Robot {
	spheroAdaptor := sphero.NewAdaptor(port)
	spheroDriver := sphero.NewSpheroDriver(spheroAdaptor)
	spheroDriver.SetName("Sphero" + port)

	work := func() {
		spheroDriver.Stop()

		spheroDriver.On(sphero.Collision, func(data interface{}) {
			fmt.Println("Collision Detected!")
		})

		gobot.Every(1*time.Second, func() {
			spheroDriver.Roll(100, uint16(gobot.Rand(360)))
		})
		gobot.Every(3*time.Second, func() {
			spheroDriver.SetRGB(uint8(gobot.Rand(255)),
				uint8(gobot.Rand(255)),
				uint8(gobot.Rand(255)),
			)
		})
	}

	robot := gobot.NewRobot("sphero",
		[]gobot.Connection{spheroAdaptor},
		[]gobot.Device{spheroDriver},
		work,
	)

	return robot
}

func main() {
	master := gobot.NewMaster()
	api.NewAPI(master).Start()

	spheros := []string{
		"/dev/rfcomm0",
		"/dev/rfcomm1",
		"/dev/rfcomm2",
		"/dev/rfcomm3",
	}

	for _, port := range spheros {
		master.AddRobot(NewSwarmBot(port))
	}

	master.Start()
}

Hardware Support

Gobot has a extensible system for connecting to hardware devices. The following robotics and physical computing platforms are currently supported:

Support for many devices that use General Purpose Input/Output (GPIO) have a shared set of drivers provided using the gobot/drivers/gpio package:

  • GPIO <=> Drivers
    • AIP1640 LED
    • Button
    • Buzzer
    • Direct Pin
    • EasyDriver
    • Grove Button
    • Grove Buzzer
    • Grove LED
    • Grove Magnetic Switch
    • Grove Relay
    • Grove Touch Sensor
    • LED
    • Makey Button
    • Motor
    • Proximity Infra Red (PIR) Motion Sensor
    • Relay
    • RGB LED
    • Servo
    • Stepper Motor
    • TM1638 LED Controller

Support for many devices that use Analog Input/Output (AIO) have a shared set of drivers provided using the gobot/drivers/aio package:

  • AIO <=> Drivers
    • Analog Sensor
    • Grove Light Sensor
    • Grove Piezo Vibration Sensor
    • Grove Rotary Dial
    • Grove Sound Sensor
    • Grove Temperature Sensor

Support for devices that use Inter-Integrated Circuit (I2C) have a shared set of drivers provided using the gobot/drivers/i2c package:

  • I2C <=> Drivers
    • Adafruit Motor Hat
    • ADS1015 Analog to Digital Converter
    • ADS1115 Analog to Digital Converter
    • ADXL345 Digital Accelerometer
    • BH1750 Digital Luminosity/Lux/Light Sensor
    • BlinkM LED
    • BME280 Barometric Pressure/Temperature/Altitude/Humidity Sensor
    • BMP180 Barometric Pressure/Temperature/Altitude Sensor
    • BMP280 Barometric Pressure/Temperature/Altitude Sensor
    • BMP388 Barometric Pressure/Temperature/Altitude Sensor
    • DRV2605L Haptic Controller
    • Grove Digital Accelerometer
    • GrovePi Expansion Board
    • Grove RGB LCD
    • HMC6352 Compass
    • INA3221 Voltage Monitor
    • JHD1313M1 LCD Display w/RGB Backlight
    • L3GD20H 3-Axis Gyroscope
    • LIDAR-Lite
    • MCP23017 Port Expander
    • MMA7660 3-Axis Accelerometer
    • MPL115A2 Barometer
    • MPU6050 Accelerometer/Gyroscope
    • PCA9685 16-channel 12-bit PWM/Servo Driver
    • SHT2x Temperature/Humidity
    • SHT3x-D Temperature/Humidity
    • SSD1306 OLED Display Controller
    • TSL2561 Digital Luminosity/Lux/Light Sensor
    • Wii Nunchuck Controller

Support for devices that use Serial Peripheral Interface (SPI) have a shared set of drivers provided using the gobot/drivers/spi package:

  • SPI <=> Drivers
    • APA102 Programmable LEDs
    • MCP3002 Analog/Digital Converter
    • MCP3004 Analog/Digital Converter
    • MCP3008 Analog/Digital Converter
    • MCP3202 Analog/Digital Converter
    • MCP3204 Analog/Digital Converter
    • MCP3208 Analog/Digital Converter
    • MCP3304 Analog/Digital Converter
    • SSD1306 OLED Display Controller

More platforms and drivers are coming soon...

API:

Gobot includes a RESTful API to query the status of any robot running within a group, including the connection and device status, and execute device commands.

To activate the API, import the gobot.io/x/gobot/api package and instantiate the API like this:

  master := gobot.NewMaster()
  api.NewAPI(master).Start()

You can also specify the api host and port, and turn on authentication:

  master := gobot.NewMaster()
  server := api.NewAPI(master)
  server.Port = "4000"
  server.AddHandler(api.BasicAuth("gort", "klatuu"))
  server.Start()

You may access the robeaux React.js interface with Gobot by navigating to http://localhost:3000/index.html.

CLI

Gobot uses the Gort http://gort.io Command Line Interface (CLI) so you can access important features right from the command line. We call it "RobotOps", aka "DevOps For Robotics". You can scan, connect, update device firmware, and more!

Gobot also has its own CLI to generate new platforms, adaptors, and drivers. You can check it out in the /cli directory.

Documentation

We're always adding documentation to our web site at https://gobot.io/ please check there as we continue to work on Gobot

Thank you!

Need help?

Contributing

For our contribution guidelines, please go to https://github.com/hybridgroup/gobot/blob/master/CONTRIBUTING.md .

Gobot is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. You can read about it here.

License

Copyright (c) 2013-2020 The Hybrid Group. Licensed under the Apache 2.0 license.

The Contributor Covenant is released under the Creative Commons Attribution 4.0 International Public License, which requires that attribution be included.

Owner
The Hybrid Group
The software company that makes your hardware work.
The Hybrid Group
Comments
  • I2C WriteBlockData not working as expected

    I2C WriteBlockData not working as expected

    Hi,

    As discussed in this thread on the golang-nuts list.

    I am using GoBot v1.2 that has the rewritten i2c subsystem, to try to drive a PiGlow (based on a SN3218 IC) connected to a Raspberry Pi 1. The code is written using the "metal bot" style as I would like to reuse this as part of another project.

    My sample code is available on the Go playground as: https://play.golang.org/p/Xma_6zBtT2

    When I run this code it shows no output. None of the error values are non-nil and led zero does not light on the PiGlow.

    As far as I can tell I am communicating with the PiGlow over i2c correctly. My code is based on that of Toon Schoenmakers code. This code is not based on the GoBot 12c subsystem. However. Toon's test code works correctly and drives the PiGlow as expected.

    Can someone with more experience of GoBots i2c subsystem make a suggestion as to what I might be doing wrong, or if this is a new bug in the i2c subsystem on a RaspPi.

    Thanks

    Owen

  • Request: PIR Motion Sensor

    Request: PIR Motion Sensor

    I recently got a motion sensor for my Arduino Uno and I'm interested in programming it via Gobot, because I've done everything so far in Gobot. Are you able to dev something in the next 2-3 months? Because I would like to use this application I'm making in Golang+Gobot as my bachelor's degree project. :) The sensor is this one.

    Looking forward for an answer!

  • Firmata fails to start a connection with Arduino mega2560

    Firmata fails to start a connection with Arduino mega2560

    Hi! I'm trying to run the blinking example with an Arduino MEGA2560. These are the steps I followed:

    $ gort scan serial
    /dev/cu.Bluetooth-Incoming-Port		/dev/tty.Bluetooth-Incoming-Port
    /dev/cu.usbmodem1421			/dev/tty.usbmodem1421
    

    So I changed the NewAdaptor to firmata.NewAdaptor("/dev/tty.usbmodem1421"). Then gort arduino install and it installed avrdude-6.3 successfully. Now I run:

    $ gort arduino upload firmata /dev/tty.usbmodem1421 -b mega2560
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.01s
    
    avrdude: Device signature = 0x1e9801 (probably m2560)
    avrdude: reading input file "/var/folders/2l/2x1l6t5530s25fzgvyfzdp_r0000gn/T/816739554"
    avrdude: writing flash (12224 bytes):
    
    Writing | ################################################## | 100% 1.97s
    
    avrdude: 12224 bytes of flash written
    avrdude: verifying flash memory against /var/folders/2l/2x1l6t5530s25fzgvyfzdp_r0000gn/T/816739554:
    avrdude: load data flash data from input file /var/folders/2l/2x1l6t5530s25fzgvyfzdp_r0000gn/T/816739554:
    avrdude: input file /var/folders/2l/2x1l6t5530s25fzgvyfzdp_r0000gn/T/816739554 contains 12224 bytes
    avrdude: reading on-chip flash data:
    
    Reading | ################################################## | 100% 1.57s
    
    avrdude: verifying ...
    avrdude: 12224 bytes of flash verified
    
    avrdude done.  Thank you.
    

    According to the output of that command, the firmata software was successfully loaded. So the only thing left to do is run the program:

    $ go run main.go
    2017/02/20 20:10:49 Initializing connections...
    2017/02/20 20:10:49 Initializing connection Firmata-3BD25BC8D8022818 ...
    2017/02/20 20:10:49 Initializing devices...
    2017/02/20 20:10:49 Initializing device LED-4A0D0593775CB601 ...
    2017/02/20 20:10:49 Robot bot initialized.
    2017/02/20 20:10:49 Starting Robot bot ...
    2017/02/20 20:10:49 Starting connections...
    2017/02/20 20:10:49 Starting connection Firmata-3BD25BC8D8022818 on port /dev/tty.usbmodem1421...
    

    And it just hangs there.

    I tried debugging it, and I got here. For some reason, the program stays in that Read method forever.

    I'm running macOS Sierra 10.12.2 and go version 1.8

    PS: I tried the blinking example from the Arduino IDE and it worked fine

  • Refactor eventer to use event channels & handlers

    Refactor eventer to use event channels & handlers

    This PR changes how Gobot internally handles events. It rewrites the Eventer to include all of the relevant functionality, and uses channels & selects to manage the event handling. The On() and Once() functions have been moved into the Eventer interface, and use the event channels as their implementation.

    It is important to note that these functions are now called off of the driver/adaptor that implement them, no longer off of the global gobot package. This is a breaking change to the current interface.

    In this example, the On() functions are called off of button:

    ...
        button := gpio.NewButtonDriver(e, "myButton", "2")
        led := gpio.NewLedDriver(e, "myLed", "7")
    
        work := func() {
            button.On(gpio.ButtonPush, func(data interface{}) {
                led.On()
            })
            button.On(gpio.ButtonRelease, func(data interface{}) {
                led.Off()
            })
        }
    ...
    

    The above code is the same as doing the following code "metal" using Gobot as a library not a full framework, by writing code to use just the event channel along with a select():

    ...
        led := gpio.NewLedDriver(e, "led", "13")
        button := gpio.NewButtonDriver(e, "button", "5")
    
        led.Start()
        button.Start()
    
        buttonEventChannel := button.Subscribe()
        for {
            select {
            case event := <-buttonEventChannel:
                if event.Name == gpio.ButtonPush {
                    led.On()
                }
                if event.Name == gpio.ButtonRelease {
                    led.Off()
                }
            }
        }
    }
    

    If you use the new On() function, it automatically runs your handler inside a goroutine. The above code is just a simple example, but could very easily do the same thing.

  • Tello OpenCV with ffmpeg

    Tello OpenCV with ffmpeg

    I have an issue running the gobot/examples/tello_opencv.go example.

    I have ffmpeg and opencv installed, and have run the env.sh script before running the opencv file.

    When running the file, the output is flooded with "EOF", and the occasional "write |1: broken pipe".

    Here is the initial output of running env.sh and tello_opencv.go:

    Jakes-MacBook-Pro-5:~ jake$ source go/src/gocv.io/x/gocv/env.sh
    Brew install detected
    Environment variables configured for OSX
    Jakes-MacBook-Pro-5:~ jake$ go run /Users/jake/Desktop/cv.go 
    2018/05/04 12:02:02 Initializing connections...
    2018/05/04 12:02:02 Initializing devices...
    2018/05/04 12:02:02 Initializing device Tello-7270070BB4EEB5CD ...
    2018/05/04 12:02:02 Initializing device Window ...
    2018/05/04 12:02:02 Robot tello initialized.
    2018/05/04 12:02:02 Starting Robot tello ...
    2018/05/04 12:02:02 Starting connections...
    2018/05/04 12:02:02 Starting devices...
    2018/05/04 12:02:02 Starting device Tello-7270070BB4EEB5CD...
    2018/05/04 12:02:02 Starting device Window...
    2018/05/04 12:02:02 Starting work...
    EOF
    ...
    

    Furthermore, whenever attempting to edit files in VSCode which have opencv/gocv imported, linting stops working because of errors in imgproc.cpp: error: expected '(' for function-style cast or type construction VSCode version: Version 1.23.0 (1.23.0)

    OS Info:

    System Version:	macOS 10.13.4 (17E202)
    Kernel Version:	Darwin 17.5.0
    
    Jakes-MacBook-Pro-5:~ jake$ pkg-config opencv --cflags
    -I/usr/local/Cellar/opencv/3.4.1_4/include/opencv -I/usr/local/Cellar/opencv/3.4.1_4/include
    
    Jakes-MacBook-Pro-5:~ jake$ ffmpeg -version
    ffmpeg version 4.0 Copyright (c) 2000-2018 the FFmpeg developers
    built with Apple LLVM version 9.1.0 (clang-902.0.39.1)
    configuration: --prefix=/usr/local/Cellar/ffmpeg/4.0 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-ffplay --enable-frei0r --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librtmp --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags=-I/usr/local/Cellar/openjpeg/2.3.0/include/openjpeg-2.3 --enable-nonfree
    libavutil      56. 14.100 / 56. 14.100
    libavcodec     58. 18.100 / 58. 18.100
    libavformat    58. 12.100 / 58. 12.100
    libavdevice    58.  3.100 / 58.  3.100
    libavfilter     7. 16.100 /  7. 16.100
    libavresample   4.  0.  0 /  4.  0.  0
    libswscale      5.  1.100 /  5.  1.100
    libswresample   3.  1.100 /  3.  1.100
    libpostproc    55.  1.100 / 55.  1.100
    
  • GrovePi support

    GrovePi support

    Hello, I tried to make Gobot work with my GrovePi (https://www.dexterindustries.com/grovepi/) but no success. I can't actually understand whether this is supported at all. So, is it? Or should I add a new adapter to use this?

    This is how I currently interact with the GrovePi without Gobot: https://github.com/lucavallin/hytta-pi/blob/master/cmd/hytta/main.go

  • Stuck at starting connection (with Firmata)

    Stuck at starting connection (with Firmata)

    I'm trying to connect to an Arduino Uno with Standard Firmata running on it, tried 3 different USB-cables and two different USB ports. Debian Jesie and user is on dialout group if that helps.

    This issue happens most of the time, but not always. It just hangs at

    ➜  examples go run examplebot.go               
    2017/05/18 09:39:17 Initializing connections...
    2017/05/18 09:39:17 Initializing connection Firmata-5721E10BB1A30F02 ...
    2017/05/18 09:39:17 Initializing devices...
    2017/05/18 09:39:17 Initializing device LED-77F786BE130713F4 ...
    2017/05/18 09:39:17 Robot sensorBot initialized.
    2017/05/18 09:39:17 Starting Robot sensorBot ...
    2017/05/18 09:39:17 Starting connections...
    2017/05/18 09:39:17 Starting connection Firmata-5721E10BB1A30F02 on port /dev/ttyUSB0...
    

    And that's it, it stays there, nothing more.

    More information, I'm working on a driver for a sensor, maybe the code crash or exits without closing properly the connection to /dev/ttyUSB0 (as an idea). But If I disconnect/re-connect the arduino, the problem is still there. Arduino IDE is able to flash the board without any problem, it only happens with gobot's code. Also, once it start happening, no matter what I run (my code, or gobot's examples), it's stuck there.

    Probably it's a configuration issue of my setup, but not sure how to identify what is wrong

  • Raspberry Pi 3 Completely Unresponsive

    Raspberry Pi 3 Completely Unresponsive

    I'm sorry if there is something I am not seeing in here, I'm really trying to use this framework and any help would be appreciated:

    I have had issues with this for days using a RP3 and the newest version of Raspbian.

    I copy/pasted the program from the platform page at https://gobot.io/documentation/platforms/raspi/.

    I set up the circuit exactly as shown in the led light diagram.

    The program compiled without errors on MacOSX (cross-compiled with GOARM=7 GOARCH=arm GOOS=linux).

    When I run the program from the Pi (transferred with a USB drive), I get no response. I do have to use chmod to execute the program.

    I tested the circuit against one of the power pins, and the LED lights up.

    But, when used with the GPIO pins, I can't get so much as a flicker.

    Any suggestions or am I just going crazy?

  • Errors on Intel Edison, Sans-Arduino

    Errors on Intel Edison, Sans-Arduino

    I have an Intel Edison without the Arduino Development board, and the edison_adapter is looking for pins that don't exist.

    According to this Guide on Multiplexing with the Intel Edison, some of the pins with hard references in code won't exist if you're using the Intel Edison without the pin expanders.

    Removing any GPIO Pins larger than 200 should help show what would happen if those pins are missing, and any pins over 200 are added by the i2c port expander. (as I understand it).

    I'll be working to remove the pins that are causing issues right now, but is there any larger issues I'll run into with these pins being unavailable?

  • Restrictive I2c modelization

    Restrictive I2c modelization

    Hi there,

    I'm trying to implement the Edison miniboard and I see that the I2cStart, I2cRead and I2cWrite functions are all attached to the Adaptor. However, the Edison miniboard has 2 I2C controllers..

    The mraa exposes the different I2C controllers using an i2c_context.. and you can have many such contexts (or devices) for a given board.

    Also, it's not possible for a user to select a certain I2C device, the Adaptor has its default and that's it.

    Could you imagine reworking this design ? Would such a proposition be mergeable ?

  • Blinking led doesn't

    Blinking led doesn't

    Followed example code at http://gobot.io/documentation/platforms/beaglebone/.

    LED does not blink? I tried P9_12 and P9_14 (from the second led example).

    Is there any documentation that describes how P9_12 and P9_14 etc. are mapped to the user LED on the BBB as the BBB manual describes the LED pins as:

    USR0 GPIO1_21 V15 USR1 GPIO1_22 U15 USR2 GPIO1_23 T15 USR3 GPIO1_24 V16

    Which means P9_12 is not intuitively the USER LED outputs.

    I note that the user leds continue to reflect the Ethernet activity so it appears the Gobot code does not take command of LED.

    Cheers, B

  • SPI using GPIO's plus driver for MFRC522

    SPI using GPIO's plus driver for MFRC522

    In addition this features are introduced:

    • share code between i2c and SPI
    • provide options to adaptors

    In addition this was fixed:

    • connection can remain after cached buses (i2c, SPI) are cleaned

    Changed Interfaces:

    • i2c.I2cDevice --> gobot.I2cSystemDevicer, to have a better differentiation to i2c devices at driver level
    • digitalPinsOption --> digitalPinsOptioner, to be conform with golang style
  • syscall package is locked down - need switch to x/sys/unix

    syscall package is locked down - need switch to x/sys/unix

    This affects the i2c part of gobot and also indirect the gpio part, if using gpiod implementation. Currently appveyour build is not working. This should maybe resolved together.

    https://go.googlesource.com/proposal/+/refs/heads/master/design/freeze-syscall.md

    Unix: https://pkg.go.dev/golang.org/x/[email protected]/unix#section-readme

    In general: https://pkg.go.dev/golang.org/x/sys

  • Tests, which using sysfs mocks are/can conflicting each other

    Tests, which using sysfs mocks are/can conflicting each other

    While working on the driver for PCA9533 I have recognized, that there is a bug in i2c.WriteBlockData() for sysfs implementation. To show this in a unit test I tried to write one and recognized, that the tests in i2c_device_test.go are not independent (means can not be run in parallel or when running sequential are order dependant), because the usage of the same resource "sysfs.fs" and "sysfs.syscall", which is set to a mocked system. There are 2 problems with the current approach:

    • after setting the variable it is not reset after the test is finished (also affects tests when not running in parallel)
    • one test can set this variable(s) and another can use it (when running in parallel)

    The first step will be to cleanup after each test by using a defer function. This ensures independently running for sequential call and do not affect the implementation itself. I'm currently working on it.

    To ensure the tests can be running in parallel (without becomes flaky), some changes in implementation are needed.

  • Joystick:does not run properly on windows

    Joystick:does not run properly on windows

    Thanks a lot for providing the joystick library, it works fine on Mac, but there are exceptions on windows

    environment

    • I used the sample code from joystick's readme to run
    • gobot v1.16.0
    • go1.18

    compilation warning joystick relies on go-sdl2, and this warning occurs when it is compiled cross-platform from Mac to Windows and directly on Windows. image

    For this warning. I raised an issue with go-sdl2, and later I replaced it with 0.4.25 as suggested, and the warning disappeared. So maybe joystick should update the version of go-sdl2

    running exception I'm using Xbox Wireless Controller (xsx2020) and it only occasionally listens to the trigger button, but not to all other keys!

    I also tried to run scanner.go, but it quits immediately image

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

Feb 14, 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.

Jan 10, 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).

Jun 22, 2022
Secure and Interoperable Internet of Things

plgd Cloud Internet of Things (IoT) technologies have evolved rapidly in recent years and continue to change how we interact with our surroundings. Fo

Dec 26, 2022
An embeddable lightweight Go/Golang MQTT broker(server) for IoT.
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.

Sep 12, 2022
🐼 IoT worm written in pure golang.
🐼 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

Oct 17, 2022
Industrial IoT Messaging and Device Management Platform
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

Dec 31, 2022
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

Jan 2, 2022
An Open-Source Platform for Quantified Self & IoT
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

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

Go libraries/drivers for IoT devices This repo contains a suite of libraries for IoT devices/sensors/actuators. The suite is meant to be as dependency

Sep 26, 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

Nov 28, 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

Sep 26, 2022
Next-generation IoT open source platform.
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

Dec 28, 2022
Whichip: discover (IoT) device's IP in local network
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

Dec 8, 2021
Kubernetes Native Edge Computing Framework (project under CNCF)
Kubernetes Native Edge Computing Framework (project under CNCF)

KubeEdge KubeEdge is built upon Kubernetes and extends native containerized application orchestration and device management to hosts at the Edge. It c

Jan 1, 2023
🦖 Streaming-Serverless Framework for Low-latency Edge Computing applications, running atop QUIC protocol, engaging 5G technology.
🦖 Streaming-Serverless Framework for Low-latency Edge Computing applications, running atop QUIC protocol, engaging 5G technology.

YoMo YoMo is an open-source Streaming Serverless Framework for building Low-latency Edge Computing applications. Built atop QUIC Transport Protocol an

Dec 29, 2022
A realtime teenage driver behaviour monitoring system integrating OBII sensor, smart watch, smartphone, and Raspberry Pi, which examines over time novice teenage driving performance and risk

DriverMonitor A realtime teenage driver behaviour monitoring system integrating OBII sensor, smart watch, smartphone, and Raspberry Pi, which examines

Nov 27, 2021
Golang implementation of PyMISP-feedgenerator

Go-MispFeedGenerator Generate MISP feeds without a MISP Instance! Go-MispFeedGenerator aka Go-MFG1000, is a library providing all functions needed to

Nov 23, 2022
Golang DNSTAP sensor use to collect passive dns data from a recursive name server

dnstap-sensor DNSTAP-SENSOR is a Golang program that is used to collect passive dns data from a recursive name server and submit it to Deteque's DNSTA

Nov 21, 2022