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

49 lines
3.0 KiB
Markdown

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:
```js
{
"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 |