mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-13 10:56:22 +00:00
NIP-91 IoT skeleton.
This commit is contained in:
parent
09ffb951c6
commit
54dbeac2f2
48
91.md
Normal file
48
91.md
Normal file
@ -0,0 +1,48 @@
|
||||
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 |
|
@ -67,6 +67,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
|
||||
- [NIP-75: Zap Goals](75.md)
|
||||
- [NIP-78: Application-specific data](78.md)
|
||||
- [NIP-89: Recommended Application Handlers](89.md)
|
||||
- [NIP-91: IoT Sensors and Intents](91.md)
|
||||
- [NIP-94: File Metadata](94.md)
|
||||
- [NIP-98: HTTP Auth](98.md)
|
||||
- [NIP-99: Classified Listings](99.md)
|
||||
@ -95,6 +96,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos
|
||||
| `1040` | OpenTimestamps | [03](03.md) |
|
||||
| `1984` | Reporting | [56](56.md) |
|
||||
| `1985` | Label | [32](32.md) |
|
||||
| `8000-8999` | IoT Sensors and Intents | [91](91.md) |
|
||||
| `4550` | Community Post Approval | [72](72.md) |
|
||||
| `9041` | Zap Goal | [75](75.md) |
|
||||
| `9734` | Zap Request | [57](57.md) |
|
||||
|
Loading…
Reference in New Issue
Block a user