Introduction: IOT123 - ASSIMILATE IOT NETWORK

About: The tension between novelty and familiarity...

The ASSIMILATE IOT NETWORK is a set of protocols that allow easy integration of sensors, actors, thing nodes and local brokers with the outside world.

This Instructable is instructions for the instructions; it indexes all the different projects and points to where the articles and resources are for each project.


FEATURES AND VISION
Currently the Slaves (sensors and actors) are self contained and rely on convention based I2C messages to read properties or act on commands. The Master picks up the metadata and properties from slaves and sends it to a MQTT broker. It also starts a webserver and serves JSON files that can be edited to configure the master and customize the metadata/properties that eventually is consumed by Crouton. The individual sensors/actors are read/commanded via Crouton without the master having any prior knowledge of what the slaves do.

One of the goals of the ASSIMILATE IOT NETWORK is to customize AssimilateCrouton so that mashup editors served from the IOT NODE webservers (see following hubs), are added as webcomponents that will give complete control of what the thing does i.e. the master is not programmed, the slaves have basic feature sets but the Crouton dashboard embeds all the business rules needed to run the thing!

The Crouton fork is seen as an option for decentralized control/configuration of things. In essence any MQTT client/GUI combination can administer your things, as every function (sensors and actors) are exposed as MQTT endpoints.


CROUTON

Crouton. http://crouton.mybluemix.net/ Crouton is a dashboard that lets you visualize and control your IOT devices with minimal setup. Essentially, it is the easiest dashboard to setup for any IOT hardware enthusiast using only MQTT and JSON.

The ASSIMILATE SLAVES (sensors and actors) have embedded metadata and properties that the master uses to build up the deviceInfo json packet that Crouton uses to build the dashboard. The intermediary between ASSIMILATE NODES and Crouton is a MQTT broker that is websockets friendly: Mosquito is used for the demo.

As the ASSIMILATE MASTER (see following hubs) requests properties, it formats the response values in the required format for Crouton updates.

Step 1: ASSIMILATE SENSOR HUB: ICOS10 CORS WEBCOMPONENTS

On the device, all of the webserver features with Authentication and Hosting in SPIFFS are still supported, but special focus has been made for CORS (Cross Origin Resource Sharing) support for Polymer WebComponents (Crouton uses Polymer 1.4.0).


RESOURCES
Instructable, Repository

Step 2: ASSIMILATE SENSOR HUB: ICOS10 CUSTOMIZATION WEBSEREVER

The ASSIMILATE SENSOR/ACTOR Slaves embed metadata that is used for the defining visualizations in Crouton. This build adds a webserver to the ESP8266 Master, serves some config files that can be modified by the user, then uses those files to redefine the visualizations. So the names of the dashboard cards and most of the configurable properties can be changed. This was necessary e.g. the DHT11 publishes Temperature and Humidity properties: if a site has several nodes with separate DHT11 sensors they all can't be called Temperature (Garage Temp., Yard Temp...). The metadata length restriction set by the I2C Bus (16 chars) does not exist and richer values can be applied (up to 64 chars).

Optional Basic Authentication is cofigurable for the edit webpage, as well as an exclusion list from Authentication for other resources. A low-side switch that powers down the slaves when necessary, has also been developed on an existing daughter-board. As a technical note, before starting this build the memory footprint was 70% because of a global metadata object graph. The latest AssimilateBus library has had breaking changes that decouple the global variable into smaller JSON files saved to SPIFFS. This has brought the footprint back to ~50%, which is safer for all of the JSON parsing/building. The AssimilateBusSlave library remains the same (ASSIM_VERSION 2) throughout these changes.


RESOURCES

Instructable, Repository

Step 3: ASSIMILATE SENSOR HUB: ICOS10 CROUTON RESET NODE

This is the predecessor of the Customization Webserver build. It still has Crouton integration.

This build sends the deviceInfo required by Crouton to the MQTT broker, to bootstrap automatic dashboards. The ASSIM_VERSION needs to be 2 for the AssimilateBusSlaves (actors and sensors).
The previous HOUSING HEADERS have been modified slightly, with the D0 rail replacing the unused D6 rail. A new daughter-board has been added that allows for hardware resets, waking under certain conditions and in future will be used for the low-side power switch (for power control of the slaves).


RESOURCES

Instructable, Repository

Step 4: ASSIMILATE SENSOR HUB: ICOS10 3V3 MQTT NODE

This is the first in a variety of MCU/Feature combinations in the ASSIMILATE SENSOR HUBS: the masters that collect the data dumps from the I2C ASSIMILATE SENSORS slaves.

This build uses a Wemos D1 Mini, to publish any data dumped from the ASSIMILATE SENSORS to a MQTT server. It supplies a 3V3 I2C bus to the sensors. A 5V rail is still supplied but there is not a logic level converter for the 5V I2C and it may not function as desired. This will be delivered in a future feature-set daughter-board replacement for the one presented here.


RESOURCES
Instructable, Repository

Step 5: ASSIMILATE SENSOR HUB: ICOS10 GENERIC SHELL (IDC) ASSEMBLY

This is an improved (circuit robustness) version of the ASSIMILATE SENSOR HUB: ICOS10 GENERIC SHELL (HOOKUP WIRE) Assembly. It assembles quicker and has a higher quality circuit, but costs more (~$10 extra if supporting 10 sensors). The main feature is it is very modular now: panels and cables can the replaced/customized without the need for de-soldering/soldering.


RESOURCES
Instructable, 3D Parts

Step 6: IOT123 - ASSIMILATE SENSOR HUB: ICOS10 GENERIC SHELL (HOOKUP WIRE) ASSEMBLY

This is the original Shell assembly. Use the IDC one above.


RESOURCES
Instructable, 3D Parts

Step 7: I2C MAX9812 BRICK

This is the circuit that is used by the following ASSIMILATE SERSOR.

This I2C MAX9812 BRICK dumps 3 sound sensing properties:

  • audMin (0-1023) - lowest value inside the 50ms (20Hz) sample window
  • audMax (0-1023) - highest value inside the 50ms (20Hz) sample window
  • audDiff (0-50) - a value derived from the difference of aMin and aMax


RESOURCES

Instructable, Repository

Step 8: ASSIMILATE SENSOR: MAX9812

This build is based on the I2C MAX9812 BRICK.

If you need adjustable gain, I recommend swapping this sensor out for the MAX4466.

This ASSIMILATE SENSOR dumps 3 properties:

  1. audMin (0-1023) - lowest value inside the 50ms (20Hz) sample window
  2. audMax (0-1023) - highest value inside the 50ms (20Hz) sample window
  3. audDiff (0-50) - a value derived from the difference of aMin and aMax


RESOURCES

Instructable, Repository, 3D Parts

Step 9: I2C HEARTBEAT BRICK

This is the circuit that is used by the following ASSIMILATE SERSOR.

This I2C HEARTBEAT BRICK indicates whether the ATTINY slave is alive, also the I2C traffic, and has one property:

  • STATUS ("ALIVE")


RESOURCES

Instructable, Repository

Step 10: ASSIMILATE ACTOR: HEARTBEAT

This build is based on the I2C HEARTBEAT BRICK.

This ASSIMILATE ACTOR has one property:

  • STATUS ("ALIVE")

PB1 (white wire, blue LED) indicates ATTINY health.

PB3 (yellow wire, green LED) toggles with I2C requests from the master.

PB4 (orange wire, red LED) toggles with I2C receiving from the master.


RESOURCES

Instructable, Repository, 3D Parts

Step 11: I2C 2CH RELAY BRICK

This is the circuit is not suitable as a standard ASSIMILATE ACTOR. It may be better suited on the I2C PCB Rails.

This I2C 2CH RELAY BRICK extends the functionality of the I2C KY019 BRICK, and has two read/write properties:

  • 2CH RELAYS[0] (true/false).
  • 2CH RELAYS[1] (true/false).


RESOURCES

Instructable, Repository

Step 12: I2C KY019 BRICK

This is the circuit that is used by the following ASSIMILATE ACTOR.

This I2C KY019 BRICK is the first of the ACTORS, and has one read/write property:

  • Switch (true/false).


RESOURCES

Instructable, Repository

Step 13: ASSIMILATE ACTOR: KY019

This build is based on the I2C KY019 BRICK.

If you need 2 channels, I recommend swapping this actor out for the 2CH RELAY BRICK.

This ASSIMILATE ACTORS, and has one read/write property:

  • Switch (true/false)

RESOURCES

Instructable, Repository, 3D Parts

Step 14: I2C TEMT6000 BRICK

This is the circuit that is used by the following ASSIMILATE ACTOR.

This I2C TEMT6000 BRICK dumps 3 properties:

  • Ambient Illumination (Lux)
  • Ambient Illumination (Foot Candel units)
  • Ambient Irradiation (Watt per Square Metre).


RESOURCES

Instructable, Repository

Step 15: ASSIMILATE SENSOR: TEMT6000

This build is based on the I2C TEMT6000 BRICK.

This ASSIMILATE SENSOR dumps 3 properties:

  • Ambient Illumination (Lux)
  • Ambient Illumination (Foot Candel units)
  • Ambient Irradiation (Watt per Square Metre).


RESOURCES

Instructable, Repository, 3D Parts

Step 16: I2C MQ2 BRICK

This is the circuit that is used by the following ASSIMILATE ACTOR.

This I2C MQ2 BRICK dumps 3 properties:

  • LPG (Parts Per Million)
  • CO (PPM)
  • SMOKE (PPM).


RESOURCES

Instructable, Repository

Step 17: ASSIMILATE SENSOR: MQ2

This build is based on the I2C MQ2 BRICK.

This ASSIMILATE SENSOR dumps 3 properties:

  • LPG (Parts Per Million)
  • CO (PPM)
  • SMOKE (PPM).


RESOURCES

Instructable, Repository, 3D Parts

Step 18: I2C DHT11 BRICK

This is the circuit that is used by the following ASSIMILATE ACTOR.

This I2C DHT11 BRICK dumps 5 properties:

  • Humidity (%)
  • Temperature (C)
  • Temperature (F)
  • Temperature (K)
  • Dew Point (C).


RESOURCES

Instructable, Repository

Step 19: ASSIMILATE SENSOR: DHT11

This build is based on the I2C MQ2 BRICK.

This ASSIMILATE SENSOR dumps 5 properties:

  • Humidity (%)
  • Temperature (C)
  • Temperature (F)
  • Temperature (K)
  • Dew Point (C).


RESOURCES

Instructable, Repository, 3D Parts

Step 20: I2C PCB RAILS

Where durable casings are not needed, the ASSIMILATE IOT NETWORK SENSORS and ACTORS can stack more efficiently and with less resources and effort, straight onto minimalist rails. The encasing cylinders can be used (as shown in this build) or the underlying bricks can be plugged in directly.


RESOURCES
Instructable

Step 21: I2C BRICK PROTOTYPING SLAVE

While developing the latest ASSIMILATE ACTOR (KY-019 RELAY), a generic dev board was thrown together to save me some extra work at my desk.

It has the standard pinouts of the I2C IOT123 BRICK, but allows custom connections to the sensor from the ATTINY85.

The ATTINY85 is removable via the DIL Socket. The I2C lines are hardwired. Everything else is breakout connectable. It works very well with the I2C BRICK MASTER JIG.


RESOURCES
Instructable

Step 22: I2C BRICK MASTER JIG

While developing the ASSIMILATE SENSORS and ACTORS, I keep a UNO handy for sending adhoc I2C commands to the prototypes being developed.

One of the benefits of the I2C BRICKS is the standardized pinouts. Rather than using breadboard wires each time (see the Fritzings), a sturdy lo-tech shield is used.


RESOURCES
Instructable

Step 23: IDC CABLE TESTER (6 WIRE)

In developing the ICOS10 ASSIMILATE SENSOR HUB, I needed to verify the cables I was creating. The verification was to check continuity between the sockets and isolation between the wires. The design I came up with used DIP switches to change between continuity and isolation tests. As I expect to have a different board for each tests (the DIP Switches aren't built for constant use), the two circuits can be hard-wired without the need for DIP Switches,


RESOURCES
Instructable

Step 24: ICOS PANEL CIRCUIT TESTER

In developing the ICOS10 ASSIMILATE SENSOR HUB, I needed to verify the panel circuits as they were made. Also as the pins were being soldered on the 3P headers, I wanted a 3P male pins inserted in them to stop any deformation during soldering. Also key to this design: I had already developed a circuit tester for the 6 wire IDC cables.


RESOURCES
Instructable

Step 25: ATTINY85 ONBOARD PROGRAMMING JIG

On the BRICK designs, I have mentioned the through-holes adjacent to the ATTINY85 have been left unused, to enable a pogo pin programmer while the DIP8 is soldered to the PCB. This is that pogo pin programmer. This really is just an adapter lead from an existing programmer's DIP8 DIL socket to the 6 x 4 hole spacing pogo jig to use on the PCB.


RESOURCES
Instructable

Step 26: VIDEOS