nips/91.md
2023-10-11 10:50:18 -03:00

3.0 KiB

NIP-91

IoT sensors and intents

draft optional author:BlackCoffee author:arcbtc author:fiatjaf

This NIP standardizes communication of public sensor and intent events in order to create an open, pluggable and interoperable standard for "Internet of Things" devices to communicate.

The standard event format follows the following template:

{
  "kind": <a number from the table below>,
  "tags": [
    ["device", <optional device id>],
    ["alt", <optional human-readable translation of the event>],
  ],
  "content": "<data according to the format in the table below>"
  ...
}

Ideally each device would have its own public key, which allows for easy command-and-control and comes with built-in trus guarantees (i.e. you know you're getting the data from the correct device if you know its key and can check the signature), but the device tag exists for when that is too cumbersome and more than one device is using the same key.

The alt tag follows NIP-31 and can accomodate all human-readable needs, like the device name or the human-readable name of the place it is in.

Other generic tags, like g for geolocation, may be included.

Event Kinds

Kinds between 8000-8999 (inclusive) are reserved for this NIP, to be filled in the table below.

kind name type unit example description
8000 intent someone wants to trigger an action on a device?
8001 on empty device was turned on
8002 off empty device will turn off
8003 temperature number celsius 20.9
8004 pressure number pascals 1013
8005 location array decimal degrees [51.5053, -0.08737]
8006 light
8007 humidity
8008 rain
8009 moisture
8010 unary switch empty a sensor that detects if a thing happened or not
8011 binary switch boolean true / false a switch that can be turned on or off