Popularity
3.5
Growing
Activity
0.0
Stable
53
5
7

Programming language: Go
License: MIT License
Latest version: v1.0

iot alternatives and similar packages

Based on the "IoT (Internet of Things)" category.
Alternatively, view iot alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of iot or a related project?

Add another 'IoT (Internet of Things)' Package

README

IoT

A simple framework for implementing a Google IoT device.

This package makes use of the context package to handle request cancelation, timeouts, and deadlines.

gocover.io Go Report Card Go Docs Mentioned in Awesome Go

Copyright 2018, Andrew C. Young <[email protected]>

License: [MIT]

Here is an example showing how to use this library:

package main

import (
    "context"
    "log"
    "github.com/vaelen/iot"
    // Your client must include the paho package
    // to use the default Eclipse Paho MQTT client.
    _ "github.com/vaelen/iot/paho"
)

func main() {
    ctx := context.Background()

    id := &iot.ID{
        DeviceID:  "deviceName",
        Registry:  "my-registry",
        Location:  "asia-east1",
        ProjectID: "my-project",
    }

    credentials, err := iot.LoadRSACredentials("rsa_cert.pem", "rsa_private.pem")
    if err != nil {
        panic("Couldn't load credentials")
    }

    options := iot.DefaultOptions(id, credentials)
    options.DebugLogger = log.Println
    options.InfoLogger = log.Println
    options.ErrorLogger = log.Println
    options.ConfigHandler = func(thing iot.Thing, config []byte) {
        // Do something here to process the updated config and create an updated state string
        state := []byte("ok")
        thing.PublishState(ctx, state)
    }

    thing := iot.New(options)

    err = thing.Connect(ctx, "ssl://mqtt.googleapis.com:443")
    if err != nil {
        panic("Couldn't connect to server")
    }
    defer thing.Disconnect(ctx)

    // This publishes to /events
    thing.PublishEvent(ctx, []byte("Top level telemetry event"))
    // This publishes to /events/a
    thing.PublishEvent(ctx, []byte("Sub folder telemetry event"), "a")
    // This publishes to /events/a/b
    thing.PublishEvent(ctx, []byte("Sub folder telemetry event"), "a", "b")
}

Thanks to Infostellar for supporting my development of this project.


*Note that all licence references and agreements mentioned in the iot README section above are relevant to that project's source code only.