A private cloud for the Internet of Things inspired by Google Weave
Important Note: Weaviate is not fully testable / production ready yet. Follow this repo or sign up for the mailing list to stay informed about the progress.
Branch | Build status | Chat on Gitter |
---|---|---|
master | ||
develop |
- What is it?
- Installation
- App Engine
- Authentication
- DB support
- GCP Datastore
- FAQ
- Contributing
- About
- More info
Weaviate is an Internet of Things aggregator platform inspired by Google Weave.
It is ideal if you want to collect data about many different devices or things in a generic way. For example: smart buildings, cities, etc.
Google offers a great cloud service for Weave. There might be situations, though, where you prefer to store the data in your own solution. This is where Weaviate comes in. You can use Weaviate to create your own private Weave inspired cloud.
Weaviate comes with a set of adapters for databases, so you can use your DB of choice. Want to contribute an adapter? Feel free to contribute!
Important to know:
- Using Weaviate with Google Libiota and Android Things.
- Clients for: Python, NodeJS and Golang.
You can run: go run ./cmd/weaviate-server/main.go
of build Weaviate by running: go build ./cmd/weaviate-server/main.go
.
For testing you can run over http: go run ./cmd/weaviate-server/main.go --scheme=http
. Note: to run the service in production you always need https.
Application options:
Application Options:
--scheme= the listeners to enable, this can be repeated and defaults to the schemes in the swagger spec
--socket-path= the unix socket to listen on (default: /var/run/weaviate.sock)
--host= the IP to listen on (default: localhost) [$HOST]
--port= the port to listen on for insecure connections, defaults to a random value [$PORT]
--tls-host= the IP to listen on for tls, when not specified it's the same as --host [$TLS_HOST]
--tls-port= the port to listen on for secure connections, defaults to a random value [$TLS_PORT]
--tls-certificate= the certificate to use for secure connections [$TLS_CERTIFICATE]
--tls-key= the private key to use for secure conections [$TLS_PRIVATE_KEY]
The service will be available from this basepath: //domain/weaviate/v1-alpha/**
This repo has all the information to use Weaviate with Google App Engine.
- Weaviate uses API-key based authentication.
- A Weaviate key can has multiple childeren, every key can create a child.
- Every parent can access a childs' data all the way down the family tree.
- You can create keys for devices, organistations, etcetera. How you decide to organise is up to you. A single project can have different ways of key organisation.
To authenticate add: X-API-KEY: SOMEKEY
(replace SOMEKEY) as a header to the request.
When a server is started for the first time or when there is no root key, a new key will be created and show as ouput in the LOG files.
Weavaite aims to support many databases, the database currently supported is Google Datastore.
All available connectors can be found in the directory: ./connectors
Note: you can run a Datastore emulator.
There are 81 actions in the Weave implementation. These are the types stored as shown in the Struct below. A API POST or PUT is always added to the DB.
type DbObject struct {
Type string // Type; Device, Command, etcetera
Uuid string // The Id of the object as uuid
TimestampMs int // Timestamp in milliseconds
Deleted bool // If true, this item is deleted, default is false
Object string // The Weave object as a string
}
When running weaviate, add a file called config.json to the root directory. This file should contain:
{
"database": "datastore",
"config": {
"project": "projectName"
}
}
You can add other
- Why Weaviate? Why a private Weave cloud?
When we started discussing the potential of Google's Weave and Android Things with clients, most of them were very interested but many could not use the Google Cloud Service (note: this does not mean GCP) for a variety of reasons. For example, a hospital with custom-made connected devices can only store data in their own datacenters. Another example could be somebody who wants to manipulate the cloud response with machine learning software, or to analyze the raw data that is sent from and to the devices.
- Can I extend Weaviate and the Weave API for my project?
Yes! You can change the Weave protocol to suit your needs.
- Where can I get some background about Google Weave.
- https://cloud.google.com/solutions/iot-overview
- https://developers.google.com/weave
- https://weave.googlesource.com/
- Can I integrate Weaviate with my existing software?
Absolutely. If, let's say, you want to use Tensorflow to create predictions based on device statistics, you can easily integrate this with Weaviate.
- How does it work?
The Google API listens to three dozen commands. Weaviate mimics the most important methods, URIs and resources that the Google cloud listens to. Weaviate will respond and listen to your devices in the same way the Google cloud does.
- Do I need to download or clone Android Things or libiota from a different fork to use Weaviate?
No, you can use the official open source repos from Google. Here: https://weave.googlesource.com/weave/libiota/
- What are you planning on releasing?
We are working hard to get 0.1.x ready as soon as possible. We will let you know as soon as this version is ready if you follow us on Twitter or if you sign up for our newsletter .
Read more in the CONTRIBUTE.md file.
Weave is a high quality, open source end-to-end communications platform for IoT that allows you to connect and manage devices in a generic way. We understand that sometimes you need to be in control over your complete dataset. This may depend on the nature of your business, on analytics and predictions you want to do, or because you want to extend the protocol. Weaviate works as a replicate of the Google Weave cloud and runs on your own cloud or datacenter solution.
Please keep checking back this repo or the website, we will start publishing software soon.
- Website: http://www.weaviate.com
- Mailing: http://eepurl.com/bRsMir
- Twitter: http://twitter.com/weaviate_iot