Skip to content

Commit

Permalink
Add Shelly 1 example node
Browse files Browse the repository at this point in the history
  • Loading branch information
rroemhild committed Aug 18, 2019
1 parent d3c7ab8 commit 2113827
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 0 deletions.
7 changes: 7 additions & 0 deletions examples/shelly1/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
=========================
Example Code for Shelly 1
==========================

This example code can switch the relay on and off via MQTT.

https://shelly.cloud/shelly1-open-source/
70 changes: 70 additions & 0 deletions examples/shelly1/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import settings

from machine import Pin
from aswitch import Switch

from homie.node import HomieNode
from homie.device import HomieDevice
from homie.property import HomieNodeProperty
from homie.constants import TRUE, FALSE


def reset(led):
import machine
wdt = machine.WDT()
wdt.feed()
led(0)
machine.reset()


class SmartSocket(HomieNode):
def __init__(self):
super().__init__(id="relay", name="Power Socket", type="Relay")
self.relay = Pin(4, Pin.OUT, value=0)
self.switch = Pin(5, Pin.IN)

self.relay_property = HomieNodeProperty(
id="power",
name="Relay",
settable=True,
retained=True,
datatype="boolean",
default=FALSE,
restore=True,
)
self.add_property(self.relay_property)

self.button = Switch(self.switch)
self.button.open_func(self.toggle, ())
self.button.close_func(self.toggle, ())

def off(self):
self.relay(0)
self.relay_property.data = FALSE

def on(self):
self.relay(1)
self.relay_property.data = TRUE

def callback(self, topic, payload, retained):
if b"power" in topic:
if payload == FALSE:
self.off()
elif payload == TRUE:
self.on()

def toggle(self):
if self.relay_property.data == TRUE:
self.off()
else:
self.on()


def main():
homie = HomieDevice(settings)
homie.add_node(SmartSocket())
homie.start()


if __name__ == "__main__":
main()

0 comments on commit 2113827

Please sign in to comment.