Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import voluptuous as vol
- from homeassistant.components.switch import (SwitchDevice, PLATFORM_SCHEMA)
- from homeassistant.const import (
- STATE_ON, STATE_OFF, STATE_UNKNOWN, CONF_NAME, CONF_FILENAME)
- import homeassistant.helpers.config_validation as cv
- import struct
- import socket
- DOMAIN = 'esp8266_curtains'
- DEFAULT_NAME = 'Curtains'
- ICON = 'mdi:switch'
- PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
- vol.Required('ip'): cv.string,
- vol.Optional('port', default=7788): cv.positive_int
- })
- def setup_platform(hass, config, add_devices, discovery_info=None):
- add_devices([Esp8266Curtain(config.get('ip'), config.get('port'))])
- class Esp8266Curtain(SwitchDevice):
- def __init__(self, ip, port):
- self.ip = ip
- self.port = port
- self._state = False
- @property
- def available(self):
- return True
- @property
- def name(self):
- return "ESP8266 Curtains"
- @property
- def is_on(self):
- return self._state
- @property
- def state_attributes(self):
- return False
- def _send(self, command):
- s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- s.settimeout(5)
- s.connect((self.ip, self.port))
- s.send(command.encode())
- s.close()
- def update(self):
- pass
- def turn_on(self):
- if self._state == False:
- self._send("open")
- self._state = True
- def turn_off(self):
- if self._state == True:
- self._send("close")
- self._state = False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement