Skip to main content

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

iot_message-1.2.1.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

iot_message-1.2.1-py2.py3-none-any.whl (8.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file iot_message-1.2.1.tar.gz.

File metadata

  • Download URL: iot_message-1.2.1.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.3

File hashes

Hashes for iot_message-1.2.1.tar.gz
Algorithm Hash digest
SHA256 058bd111a04cf54b746d2ed2b8a5226afa3fc1e983ccd9306b96de884ce27d9e
MD5 9a17a574e3028b48d645055074ddf603
BLAKE2b-256 d4375683e0c93244085658ce793f52efce37c05552466006f1254f8fa3c8a049

See more details on using hashes here.

File details

Details for the file iot_message-1.2.1-py2.py3-none-any.whl.

File metadata

  • Download URL: iot_message-1.2.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.3

File hashes

Hashes for iot_message-1.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e3bc7f206ac869789e27cfd49a9eeee8878109f4908c4c87a87194b4250b02aa
MD5 d622cba730d492ce70f29d139036ddf3
BLAKE2b-256 ee110a6cf368fca9f15fb76139d3c910fc1023e87c6d7e503be9d0a3b3cd16ea

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page