Custom iot:1 protocol
Project description
#IOT:1
My custom protocol for communication between devices at home. It uses UPD and broadcast. Messages are json strings.
## Message body:
{
"protocol": "iot:1",
"node": "Rpi-lcd-1",
"chip_id": "RpiB",
"event": "lcd.content",
"parameters: [
"content": "-(=^.^)"
],
"response": '',
"targets": [
"nodemcu-lcd-40x4"
]
}
protocol: defines name, currently iot:1
node: friendly node name like light-room-big or screen-one-kitchen
chip_id: a unique device id
event: event name like light.on or display
parameters: array of parameters. like rows to display
response: used when responding to request, ie returning toilet state
targets: message targets node with this names. special keyword ALL for all nodes in network
## set node name or/and chip_id
Message.chip_id = 'miau'
Message.node_name = 'miau_too'
### Message()
Create new instance. It is automatically filled with chip_id and node_name if not set
### Message(string_message)
Creates message and fills with received data
input = """{"protocol": "iot:1", "node": "node_name", "chip_id": "aaa", "event": "channel.on", "parameters": {"channel": 0}, "response": "", "targets": ["node-north"]}"""
msg = factory.MessageFactory.create(input)
## functions
### set(dictionary)
msg = message.Message()
msg.set({
'event': 'event.test',
'parameters': {
'is_x': '1'
}
})
Fills message with params.
### send message
s.sendto(bytes(msg), address)
### get value
msg = message.Message()
msg.set({
'event': 'event.test',
'parameters': {
'is_x': '1'
}
})
print(msg['event'])
### AES encryptor
Uses AES-CBC with hmac signing. require: pip install pycryptodome
Cryptor takes four parameters:
def __init__(self, staticiv, ivkey, datakey, passphrase):
self.staticiv = staticiv
self.ivkey = ivkey
self.datakey = datakey
self.passphrase = passphrase
Usage:
from iot_message.cryptor.aes_sha1 import Cryptor as AES
Message.add_decoder(AES(
'abcdef2345678901', '2345678901abcdef', '0123456789abcdef', 'mypassphrase'
))
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for iot_message-1.2.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e3bc7f206ac869789e27cfd49a9eeee8878109f4908c4c87a87194b4250b02aa |
|
MD5 | d622cba730d492ce70f29d139036ddf3 |
|
BLAKE2b-256 | ee110a6cf368fca9f15fb76139d3c910fc1023e87c6d7e503be9d0a3b3cd16ea |