Files
ESPEasy/test/espeasy.py
T

266 lines
7.3 KiB
Python

### High level ESPEasy config.
### Things like configging a controller or device via http
### I've created it in way that you can just copy/past form parameters from Chromium's header view
from espcore import *
class EspEasy:
def __init__(self, node):
self._node=node
def control(self, **kwargs):
self._node.log.info("Control "+str(kwargs))
self._node.http_post(
page="control",
params="""
cmd:{cmd}
""".format(**kwargs),
)
def controller_domoticz_mqtt(self, controllerip=config.mqtt_broker, **kwargs):
"""config controller to use domoticz via mqtt"""
self._node.log.info("Configuring controller domoticz mqtt "+str(kwargs))
self._node.http_post(
twice=True, # needed for controllers and devices because of the way its implemented
page="controllers",
params="""
index:{index}
""".format(**kwargs),
data="""
protocol:2
usedns:0
controllerip:{controllerip}
controllerport:1883
controlleruser:
controllerpassword:
controllersubscribe:domoticz/out
controllerpublish:domoticz/in
controllerenabled:on
""".format(controllerip=controllerip,**kwargs)
)
def controller_domoticz_http(self, **kwargs):
"""config controller to use domoticz via http"""
self._node.log.info("Configuring controller domoticz http "+str(kwargs))
self._node.http_post(
twice=True, # needed for controllers and devices because of the way its implemented
page="controllers",
params="""
index:{index}
""".format(**kwargs),
data="""
protocol:1
usedns:0
controllerip:{controllerip}
controllerport:{controllerport}
controlleruser:
controllerpassword:
controllerenabled:on
""".format(**kwargs)
)
def controller_thingspeak(self, **kwargs):
self._node.log.info("Configuring controller thingspeak "+str(kwargs))
self._node.http_post(
twice=True, # needed for controllers and devices because of the way its implemented
page="controllers",
params="""
index:{index}
""".format(**kwargs),
data="""
protocol:4
usedns:0
controllerip:{controllerip}
controllerport:{controllerport}
controlleruser:
controllerpassword:thingspeakkey1234
controllerenabled:on
""".format(**kwargs)
)
def device_p001(self, **kwargs):
self._node.log.info("Config device plugin p001 "+str(kwargs))
self._node.http_post(
twice=True, # needed for controllers and devices because of the way its implemented
page="devices",
params="""
index:{index}
""".format(**kwargs),
data="""
TDNUM:1
TDN:
TDE:on
taskdevicepin1:{taskdevicepin1}
plugin_001_type:{plugin_001_type}
plugin_001_button:{plugin_001_button}
TDSD1:on
TDID1:{TDID1}
TDT:0
TDVN1:Switch
edit:1
""".format(**kwargs)
)
def device_p004(self, **kwargs):
self._node.log.info("Config ds18b20 with "+str(kwargs))
self._node.http_post(
twice=True, # needed for controllers and devices because of the way its implemented
page="devices",
params="""
index:{index}
""".format(**kwargs),
data="""
TDNUM:4
TDN:temp
TDE:on
taskdevicepin1:{taskdevicepin1}
plugin_004_dev:{plugin_004_dev}
plugin_004_res:{plugin_004_res}
TDT:5
TDVN1:Temperature
TDF1:
TDVD1:2
TDSD1:on
TDID1:{TDID1}
edit:1
page:1
""".format(**kwargs)
)
def device_p005(self, **kwargs):
self._node.log.info("Config DHT22 on D3 with "+str(kwargs))
self._node.http_post(
twice=True, # needed for controllers and devices because of the way its implemented
page="devices",
params="""
index:{index}
""".format(**kwargs),
data="""
TDNUM:5
TDN:
TDE:on
taskdevicepin1:0
plugin_005_dhttype:22
TDSD1:on
TDID1:{TDID1}
TDT:5
TDVN1:Temperature
TDF1:
TDVD1:2
TDVN2:Humidity
TDF2:
TDVD2:2
edit:1
page:1
""".format(**kwargs)
)
def device_p033(self, **kwargs):
self._node.log.info("Config dummy device "+str(kwargs))
self._node.http_post(
twice=True, # needed for controllers and devices because of the way its implemented
page="devices",
params="""
index:{index}
""".format(**kwargs),
data="""
TDNUM:33
TDN:
TDE:on
plugin_033_sensortype:{plugin_033_sensortype}
TDSD1:on
TDID1:{TDID1}
TDT:1
TDVN1:first
TDVD1:2
TDVN2:second
TDVD2:2
TDVN3:third
TDVD3:2
TDVN4:fourth
TDVD4:2
edit:1
page:1
""".format(**kwargs)
)
def device_p036(self, **kwargs):
self._node.log.info("Config framed oled p036 with "+str(kwargs))
self._node.http_post(
twice=True, # needed for controllers and devices because of the way its implemented
page="devices",
params="""
index:{index}
""".format(**kwargs),
data="""
TDNUM:36
TDN:
TDE:on
plugin_036_adr:60
plugin_036_rotate:1
plugin_036_nlines:1
plugin_036_scroll:1
Plugin_036_template1:espeasy
Plugin_036_template2:test
Plugin_036_template3:suite
Plugin_036_template4:test1
Plugin_036_template5:test2
Plugin_036_template6:test3
Plugin_036_template7:test4
Plugin_036_template8:test5
Plugin_036_template9:test6
Plugin_036_template10:test7
Plugin_036_template11:test8
Plugin_036_template12:test9
taskdevicepin3:-1
plugin_036_timer:0
TDT:1
edit:1
page:1
""".format(**kwargs)
)