wsc_tools.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import pyautogui as ue
  2. class ParsingTools():
  3. def macToString(self, mac_bytes):
  4. ''' Convert uint8 byte string to "XX:XX:XX:XX:XX"
  5. '''
  6. mac_str = ""
  7. for byte in mac_bytes:
  8. mac_str = mac_str + format(byte, '02x') + ':'
  9. return mac_str[:-1].format('utf-8')
  10. def calculateVCell(self, raw_Vcell):
  11. raw_Vcell = int(raw_Vcell.decode('utf-8'))
  12. return raw_Vcell*1.25e-3
  13. def calculateSOC(self, raw_SOC):
  14. raw_SOC = int(raw_SOC.decode('utf-8'))
  15. return raw_SOC.to_bytes(2, 'big')[0]
  16. def getIDfromTopic(self, topic):
  17. return topic.split('/')[1]
  18. def getFieldfromTopic(self, topic):
  19. return topic.split('/')[3]
  20. def getStr(self, byteCode):
  21. return byteCode.decode('utf-8')
  22. class FieldGenerator():
  23. def generateMACID(self):
  24. import numpy as np
  25. macID = np.random.randint(255, size=5)
  26. macStr = ""
  27. for val in macID:
  28. macStr = macStr + format(val, 'x') + ":"
  29. return macStr[:-1]
  30. def generateRSSI(self):
  31. import numpy as np
  32. rssi = np.random.randint(80)
  33. rssiStr = "RSSI: -" + str(rssi) + "dBm"
  34. return rssiStr
  35. def generateSOC(self):
  36. import numpy as np
  37. soc = np.random.randint(100)
  38. socStr = "Battery: " + str(soc) + "%"
  39. return socStr
  40. def generateStatus(self):
  41. import numpy as np
  42. hr = np.random.randint(12) + 1
  43. min = np.random.randint(60)
  44. ampm = np.random.randint(1)
  45. statusStr = "Last Update: " + str(hr) + ":" + str(min)
  46. return statusStr
  47. class Switch():
  48. def __init__(self):
  49. self.__key = "1"
  50. self.__latch = False
  51. self.__latchState = 0
  52. self.__timer = 0
  53. self.__release = True
  54. self.__interval = 0.0 # milliseconds
  55. self.active = True
  56. def getKey(self):
  57. return self.__key
  58. def getActive(self):
  59. return self.active
  60. def setConfig(self, key, latch=False, interval=0.0, release=False, enable=True):
  61. # release old key if currently held down
  62. self.releaseKey()
  63. self.__latchState = 0
  64. self.active = enable
  65. self.__key = key
  66. self.__latch = latch
  67. self.__interval = interval
  68. self.__release = release
  69. def activate(self):
  70. self.active = True
  71. def deactivate(self):
  72. self.active = False
  73. def pressKey(self):
  74. if self.__release:
  75. ue.keyDown(self.__key)
  76. else:
  77. ue.typewrite(self.__key, interval=self.__interval)
  78. def releaseKey(self):
  79. if self.__release:
  80. ue.keyUp(self.__key)
  81. if __name__ == '__main__':
  82. print("I never developed self-test, but if I did they would go here.")
  83. pt = ParsingTools()
  84. print("Testing macToString")
  85. print(pt.macToString(b'023430'))
  86. print("Testing getModuleIDfromTopic")
  87. print(pt.getIDfromTopic("encoder/12:23:32:32:32/health/ota"))
  88. print("Testing getFieldfromTopic")
  89. print(pt.getFieldfromTopic("encoder/12:23:32:32:32/health/ota"))