now supports powercycle to test for bugs like #719

This commit is contained in:
Edwin Eefting
2018-01-16 04:15:48 +01:00
parent 2aafbb57a8
commit 09e5d6abcd
4 changed files with 56 additions and 1 deletions
+3
View File
@@ -93,6 +93,9 @@ class EspEasy:
logging.getLogger("domoticz http").info("Waiting for request idx {idx} with sensortype {sensor_type}".format(sensor_type=sensor_type,idx=idx))
# read and parse http requests
while not http_requests.empty():
http_requests.get()
while time.time()-start_time<timeout:
request=http_requests.get(block=True, timeout=timeout)
if request.path == "/json.htm" and int(request.params.get('idx'))==idx:
+1 -1
View File
@@ -77,4 +77,4 @@ def run():
def test_in_range(value, min, max):
if value < min or value > max:
raise("Value {value} should be between {min} and {max}".format(value=value, min=min, max=max))
raise(Exception("Value {value} should be between {min} and {max}".format(value=value, min=min, max=max)))
+41
View File
@@ -54,11 +54,52 @@ class Node():
def reboot(self):
'''reboot the esp via the serial DTR line'''
self.log.debug("Rebooting")
self.serial_needed()
self._serial.setDTR(0)
time.sleep(0.1)
self._serial.setDTR(1)
def powercycle(self):
"""powercycle the device"""
self.poweroff()
self.poweron()
def poweroff(self):
"""power off device"""
#cant yet be done automaticly unfortunatly
self.log.info("Please power off node "+self._id)
done=False
while not done:
try:
self.serial_needed()
self._serial.readline()
except serial.SerialException:
done=True
if hasattr(self, '_serial'):
del self._serial
self.log.debug("Detected power off")
def poweron(self):
"""power on device"""
self.log.info("Please power on node "+self._id)
done=False
while not done:
try:
self.serial_needed()
self._serial.readline()
done=True
except serial.SerialException:
time.sleep(0.1)
self.log.debug("Detected power on")
def pingwifi(self, timeout=60):
"""waits until espeasy reponds via wifi"""
+11
View File
@@ -13,9 +13,12 @@ from esptest import *
# espeasy[0].controller_thingspeak(index=1, controllerip=config.http_server, controllerport=config.http_port)
@step
def prepare():
"""configure devices and controller"""
node[0].reboot()
node[0].pingserial()
espeasy[0].controller_domoticz_http(index=1, controllerip=config.http_server, controllerport=config.http_port)
espeasy[0].device_p004(index=1, taskdevicepin1=2, plugin_004_dev=0, plugin_004_res=9, TDID1=1417)
espeasy[0].device_p004(index=2, taskdevicepin1=2, plugin_004_dev=1, plugin_004_res=9, TDID1=1418)
@@ -29,6 +32,14 @@ def recv():
results=espeasy[0].recv_domoticz_http(SENSOR_TYPE_SINGLE,1418)
test_in_range(results[0], -5,40)
@step
def powercycle():
"""test result on poweron"""
node[0].powercycle()
results=espeasy[0].recv_domoticz_http(SENSOR_TYPE_SINGLE,1417)
test_in_range(results[0], -5,40)
results=espeasy[0].recv_domoticz_http(SENSOR_TYPE_SINGLE,1418)
test_in_range(results[0], -5,40)
# @step