Skip to main content

A package to integrate Shelly devices with MQTT Broker.

Project description

ShellyPool

A package to integrate Shelly Devices with MQTT Brokers. This package intends to integrate Shelly devices within the network and manage it as a pool of devices that can be accessible through the MQTT Broker.

Introduction

The package is intended to establish an MQTT interface with the Shelly device. The equipment attributes will be readable in the MQTT Broker through a topic in the form /<level0>/<level1>/attribute. The equipment will be located within a hierarchy of levels in the MQTT Broker, being the device located into 2 levels, typically location and equipment, and within the equipment all the attributes of this device.

The Shelly devices have the option to configure them to get MQTT topics. However these topics are limited to shellies/<shelly_device> only and any other form of topic is not configurable on the device. Unless the library is modified.

The special attribute /<level0>/<level1>/<command> is serving as a special attribute to send commands to the device. The commands are those available from the library pyShelly and the function behind this package simply wraps a json command with its arguments. This json content is simply passed onto the package pyShelly and executes the command onto the equipment. The json document including the execution of a command is in the form:

{
	"action": "name of the method",
	"args": "{
				"arg1": "value 1",
				"arg2": "value 2",
				"argN": "value N"
			}
}

The name of the the method is one of the pyShelly methods.

Workflow diagram

The device and the MQTT have the following communication diagram

sequenceDiagram
Device ->> ShellyPool: Device Status
ShellyPool -->> MQTT Broker: Publish Topics
MQTT Broker ->> User Program: Status attributes 
User Program ->> MQTT Broker: { command, args }
MQTT Broker -->> ShellyPool: Subscribe Topics<br/>(command)
ShellyPool ->> Device: Function call<br/> Execution command
Note right of User Program: Async calls to execute<br/>commands on device.

Configuration file

The package gives the possibility to configure parameters through a configuration file. This file can be, as an example, like this:

[shelly] logfile=shellypool.log topic=[ "shellies/shellyplug-s-ABC123", "shellies/shellyht-ABC456"] ] room=[ "Living Room", "Kids Room" ] device=[ "Home Cinema", "HT Device" ]

[broker] ip=127.0.0.1 port=1883

The configuration file will be splitted into two areas:

  • [shelly]: this area defines the devices as a serie of MQTT Topics from device. The room name for the device. And the device name. It also gives the chance to log data to a logfile.
  • [broker]: this is the broker ip:port to connect to. This broker is to be setup apart from this package.

How to install

To install the library just execute:

pip install ShellyPool

Example

import sys import ShellyPool

def main(): # Configuration of the Shelly device config = ShellyPool.ShellyConfig(sys.argv[1]) params_shelly = config.read(section="shelly") params_broker = config.read(section="broker")

print(f"Shelly Devices Pool Version {ShellyPool.version}") print(f"Creating Pool of Shelly Devices . . . ", end="") pool = ShellyPool.ShellyPool(params_broker['ip'], int(params_broker['port'])) print(f"[ OK ]")

print(f"Running the pool") pool.start( eval(params_shelly['topic']), eval(params_shelly['room']), eval(params_shelly['device']) )

print(f"Finalizing Shelly Pool . . . [ OK ]") > if name == "main": main()

Release Notes

0.1.1 - Initial release

Credits

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

shellypool-0.1.1.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shellypool-0.1.1-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file shellypool-0.1.1.tar.gz.

File metadata

  • Download URL: shellypool-0.1.1.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.3

File hashes

Hashes for shellypool-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c356c07ddde9e222b03f0d0720d3232e71717b198421075d928269470bea0d1a
MD5 3d47a32730862b76cc6cacfa8391f2e0
BLAKE2b-256 5cbb86b39bba91df7001649433272aae50731b77135141fabec199159b07753e

See more details on using hashes here.

File details

Details for the file shellypool-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: shellypool-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.3

File hashes

Hashes for shellypool-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d11cc66a084b639e8fe2fc9e3f72d02a6e33eedff0a9685c8d8237ee72dbbd34
MD5 6a71c423d7666474cd1e8396fe25ca47
BLAKE2b-256 9b2edd52be0007bd71ae94f7a8e3ef07ed45d63cfc2462c15ea7f3e9d4bf19cb

See more details on using hashes here.

Supported by

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