aboutsummaryrefslogtreecommitdiff

Diller Arduino Library

Diller is an IoT environment for makers that want an fast and easy way of connecting their projects to the internet. Everything is open source but everything is also hosted so you can either install everything yourself or just ust the instance running at https://trygvis.io/diller.

A setup consists of a device with a Diller client, a gateway and a web frontend.

Features

Diller MQTT

Diller uses MQTT to communicate between the client and the gateway.

Device / Property hierarchy

All messages are published under the /diller path.

/<device id>
  /property
    /<property id>
      /value
      /type             (retained)
      /name             (retained)
      /description      (retained)

The device id is a globally unique id of the device. The MAC address of devices is a useful identifier. The property id is an device-specific identifier chosen by the device.

Diller serial API

Network settings

Request:

Update or query network settings. If no paramters are given, no changes are done. If ip is set to a blank string, it will use DHCP.

network [ip=..] [gateway=..] [netmask=..]

Response:

The command will always return the current values.

ok ip=.. gateway=.. netmask=.. netmask=..

Wlan settings

Request:

Update or query wlan settings. If no paramters are given, no changes are done.

wlan [ssid=..] [password=..]

Response:

The command will always return the current values.

ok ssid=..

Properties introspection

Request:

properties

Response:

ok count=<n>
property key=.. [name=..] [description=..]

Change property

TODO: Implement description? A longer string describing the property.

Request:

property id=.. [value=..] [name=..]

Type examples:

  • temperature
  • switch - boolean switches
  • humidity
  • rtc

Response:

ok

The value might not be updated directly, but may be buffered on the device if it is not yet connected.

Reset the device

Request:

reset

Response

ok

Example session

Get the current network configuration to update the Arduino's LCD display

> network
< ok ip=1.3.3.7 netmask=255.255.255.0 gateway=1.3.3.1 ssid=awesome

Register the properties. This is done on every boot to keep the server in sync with the firmware's features. Old properties will not be removed.

> set-property id=temp-0 value=12.3 type=temperature name=Water
< ok