From e3896d99a14bf95bd68b078da2bfb701af9580ba Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Wed, 3 Apr 2019 16:33:54 +0000 Subject: [PATCH] refined test git-svn-id: http://moon:8086/svn/projects/HendiControl@213 fda53097-d464-4ada-af97-ba876c37ca34 --- Control/brewpi/hendiCtrl.py | 96 ++++++++++++++++++++++++++++--------- 1 file changed, 73 insertions(+), 23 deletions(-) diff --git a/Control/brewpi/hendiCtrl.py b/Control/brewpi/hendiCtrl.py index c477d60..bad5e19 100644 --- a/Control/brewpi/hendiCtrl.py +++ b/Control/brewpi/hendiCtrl.py @@ -15,6 +15,14 @@ class HendiCtrl(): self.ser.timeout = 1.000 self.prompt = b':' + self.caps = { + "name" : self.getSoftwareIdentifier(), + "ver" : self.getSoftwareVersion(), + "pwr_watts_min" : 500, + "pwr_watts_max" : 3500, + "pwr_digits_min" : 4095, + "pwr_digits_max" : 0 + } def reset(self): self.ser.dtr = True @@ -85,19 +93,11 @@ class HendiCtrl(): return None def getCapabilties(self): - caps = { - "name" : self.getSoftwareIdentifier(), - "ver" : self.getSoftwareVersion(), - "pwr_watts_min" : 500, - "pwr_watts_max" : 3500, - "pwr_digits_min" : 4095, - "pwr_digits_max" : 0 - } - return caps + return self.caps def getInfo(self): result = { - 'caps' : self.getCapabilties(), + 'caps' : self.caps, 'state' : self.getState(), 'pwr_digits' : self.getPowerDigits(), 'Switch_state' : self.getSwitch() @@ -137,30 +137,80 @@ class HendiCtrl(): def getSwitch(self): return self.cmd("S?") + def setPowerWatts(self, power_watts): + pwr_watts_min = self.caps['pwr_watts_min'] + pwr_watts_max = self.caps['pwr_watts_max'] + pwr_digits_min = self.caps['pwr_digits_min'] + pwr_digits_max = self.caps['pwr_digits_max'] + + pwr_watts_range = pwr_watts_max - pwr_watts_min + pwr_digits_range = pwr_digits_max - pwr_digits_min + digits_per_watt = pwr_digits_range/pwr_watts_range + pwr_digits = pwr_digits_min + digits_per_watt * (power_watts - pwr_watts_min) + + max_digit = max(pwr_digits_max, pwr_digits_min) + min_digit = min(pwr_digits_max, pwr_digits_min) + pwr_digit = min(max_digit, max(min_digit, pwr_digits)) + 0.5 + + self.setPowerDigits(pwr_digits) + + def getPowerWatts(self): + pwr_watts_min = self.caps['pwr_watts_min'] + pwr_watts_max = self.caps['pwr_watts_max'] + pwr_digits_min = self.caps['pwr_digits_min'] + pwr_digits_max = self.caps['pwr_digits_max'] + + pwr_watts_range = pwr_watts_max - pwr_watts_min + pwr_digits_range = pwr_digits_max - pwr_digits_min + digits_per_watt = pwr_digits_range/pwr_watts_range + + max_digit = max(pwr_digits_max, pwr_digits_min) + min_digit = min(pwr_digits_max, pwr_digits_min) + pwr_digit = int(self.getPowerDigits()) + + pwr_watts = (pwr_digit - pwr_digits_min)/digits_per_watt + pwr_watts_min + + return int(pwr_watts) + if __name__ == '__main__': hendi = HendiCtrl('/dev/ttyUSB0', 115200) - hendi.firmware_update("HendiCtrl.srec") - hendi.reset() - time.sleep(0.5) +# hendi.firmware_update("HendiCtrl.srec") +# hendi.reset() + time.sleep(10) hendi.getState() hendi.getSoftwareIdentifier() hendi.getSoftwareVersion() - hendi.setPower(1234) - hendi.setSwitch(1) - hendi.remoteEnable(True) - if hendi.isRemoteEnable(): - switch_state = 1 - for p in range(0, 4000, 10): - hendi.setPowerDigits(p) - hendi.setSwitch(switch_state) - switch_state = not switch_state + try: + hendi.remoteEnable(True) + hendi.setSwitch(1) + for pwr in range(500, 3500, 100): + hendi.setPowerWatts(pwr) + time.sleep(0.1) + pw = hendi.getPowerWatts() + print("power_w", pw) + time.sleep(1.0) - hendi.remoteEnable(False) + except: + pass + + hendi.setSwitch(0) + hendi.remoteEnable(False) + + if 0: + hendi.remoteEnable(True) + if hendi.isRemoteEnable(): + hendi.setSwitch(True) + for p in range(0, 4096, 100): + hendi.setPowerDigits(p) + time.sleep(1) + + hendi.setSwitch(False) + hendi.remoteEnable(False) print ("End of program.")