pyhausbus 1.0.1__py2.py3-none-any.whl → 1.0.3__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. pyhausbus/ABusFeature.py +22 -22
  2. pyhausbus/BusDataMessage.py +23 -23
  3. pyhausbus/BusHandler.py +110 -110
  4. pyhausbus/HausBusCommand.py +83 -83
  5. pyhausbus/HausBusUtils.py +203 -203
  6. pyhausbus/HomeServer.py +86 -68
  7. pyhausbus/IBusDataListener.py +6 -6
  8. pyhausbus/Main.py +100 -100
  9. pyhausbus/ObjectId.py +22 -22
  10. pyhausbus/ResultWorker.py +53 -53
  11. pyhausbus/Templates.py +140 -0
  12. pyhausbus/UdpReceiveWorker.py +73 -73
  13. pyhausbus/WeekTime.py +55 -55
  14. pyhausbus/de/hausbus/homeassistant/proxy/AnalogEingang.py +139 -0
  15. pyhausbus/de/hausbus/homeassistant/proxy/Controller.py +357 -342
  16. pyhausbus/de/hausbus/homeassistant/proxy/Counter.py +65 -65
  17. pyhausbus/de/hausbus/homeassistant/proxy/CurrentReader.py +133 -121
  18. pyhausbus/de/hausbus/homeassistant/proxy/DaliLine.py +63 -63
  19. pyhausbus/de/hausbus/homeassistant/proxy/DigitalPort.py +40 -40
  20. pyhausbus/de/hausbus/homeassistant/proxy/Dimmer.py +91 -91
  21. pyhausbus/de/hausbus/homeassistant/proxy/Drucksensor.py +141 -0
  22. pyhausbus/de/hausbus/homeassistant/proxy/Ethernet.py +61 -61
  23. pyhausbus/de/hausbus/homeassistant/proxy/Feuchtesensor.py +77 -77
  24. pyhausbus/de/hausbus/homeassistant/proxy/Gateway.py +108 -97
  25. pyhausbus/de/hausbus/homeassistant/proxy/Helligkeitssensor.py +77 -77
  26. pyhausbus/de/hausbus/homeassistant/proxy/IRSensor.py +55 -55
  27. pyhausbus/de/hausbus/homeassistant/proxy/Led.py +117 -116
  28. pyhausbus/de/hausbus/homeassistant/proxy/LogicalButton.py +116 -116
  29. pyhausbus/de/hausbus/homeassistant/proxy/ModBusMaster.py +34 -34
  30. pyhausbus/de/hausbus/homeassistant/proxy/ModbusSlave.py +13 -13
  31. pyhausbus/de/hausbus/homeassistant/proxy/PCA9555.py +29 -0
  32. pyhausbus/de/hausbus/homeassistant/proxy/PCServer.py +67 -67
  33. pyhausbus/de/hausbus/homeassistant/proxy/PIDController.py +69 -64
  34. pyhausbus/de/hausbus/homeassistant/proxy/PT1000.py +153 -0
  35. pyhausbus/de/hausbus/homeassistant/proxy/PowerMeter.py +77 -77
  36. pyhausbus/de/hausbus/homeassistant/proxy/ProxyFactory.py +86 -12
  37. pyhausbus/de/hausbus/homeassistant/proxy/RFIDReader.py +78 -78
  38. pyhausbus/de/hausbus/homeassistant/proxy/RGBDimmer.py +63 -63
  39. pyhausbus/de/hausbus/homeassistant/proxy/Rollladen.py +110 -110
  40. pyhausbus/de/hausbus/homeassistant/proxy/Schalter.py +127 -104
  41. pyhausbus/de/hausbus/homeassistant/proxy/SnmpAgent.py +13 -13
  42. pyhausbus/de/hausbus/homeassistant/proxy/SystemTime.py +42 -42
  43. pyhausbus/de/hausbus/homeassistant/proxy/Taster.py +128 -118
  44. pyhausbus/de/hausbus/homeassistant/proxy/Taupunkt.py +77 -77
  45. pyhausbus/de/hausbus/homeassistant/proxy/TcpClient.py +38 -38
  46. pyhausbus/de/hausbus/homeassistant/proxy/Temperatursensor.py +78 -78
  47. pyhausbus/de/hausbus/homeassistant/proxy/Wetter.py +26 -26
  48. pyhausbus/de/hausbus/homeassistant/proxy/WiFi.py +60 -60
  49. pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/_init_.py +1 -0
  50. pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/commands/GetConfiguration.py +15 -0
  51. pyhausbus/de/hausbus/homeassistant/proxy/{gateway/commands/CheckBusTiming.py → analogEingang/commands/GetStatus.py} +8 -8
  52. pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/commands/SetConfiguration.py +74 -0
  53. pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/commands/_init_.py +1 -0
  54. pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/data/Configuration.py +74 -0
  55. pyhausbus/de/hausbus/homeassistant/proxy/{gateway/commands/ResetBusTiming.py → analogEingang/data/EvHigh.py} +8 -8
  56. pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/data/EvInRange.py +15 -0
  57. pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/data/EvLow.py +15 -0
  58. pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/data/EvStatus.py +33 -0
  59. pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/data/Status.py +25 -0
  60. pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/data/_init_.py +1 -0
  61. pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/params/ELastEvent.py +28 -0
  62. pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/params/_init_.py +1 -0
  63. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/EnableFeature.py +9 -9
  64. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GenerateRandomDeviceId.py +6 -6
  65. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetConfiguration.py +6 -6
  66. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetModuleId.py +9 -9
  67. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetRemoteObjects.py +6 -6
  68. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetRuleState.py +7 -7
  69. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetSystemVariable.py +9 -9
  70. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetTime.py +6 -6
  71. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetUnitGroupStatus.py +7 -7
  72. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetUnusedMemory.py +6 -6
  73. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/Ping.py +6 -6
  74. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/ReadMemory.py +7 -7
  75. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/ReadRules.py +7 -7
  76. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/Reset.py +6 -6
  77. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/ResetOneWireManager.py +25 -0
  78. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetConfiguration.py +10 -10
  79. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetDebugOptions.py +9 -9
  80. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetRuleState.py +7 -7
  81. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetSunTimes.py +9 -9
  82. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetSystemVariable.py +9 -9
  83. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetTime.py +9 -9
  84. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetUnitGroupState.py +7 -7
  85. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/TriggerRuleElement.py +7 -7
  86. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/WriteMemory.py +7 -7
  87. pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/WriteRules.py +7 -7
  88. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/Configuration.py +10 -10
  89. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvConsole.py +7 -7
  90. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvDay.py +6 -6
  91. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvError.py +9 -9
  92. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvGroupOff.py +7 -7
  93. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvGroupOn.py +7 -7
  94. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvGroupUndefined.py +7 -7
  95. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvNewDeviceId.py +7 -7
  96. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvNight.py +6 -6
  97. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvResetWifi.py +6 -6
  98. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvStarted.py +9 -9
  99. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvSystemVariableChanged.py +9 -9
  100. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvTime.py +9 -9
  101. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvZeroCrossData.py +23 -9
  102. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/MemoryData.py +7 -7
  103. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/MemoryStatus.py +9 -9
  104. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/ModuleId.py +9 -9
  105. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/Pong.py +6 -6
  106. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/RemoteObjects.py +7 -7
  107. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/RuleState.py +7 -7
  108. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/RulesData.py +7 -7
  109. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/SystemVariable.py +9 -9
  110. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/Time.py +9 -9
  111. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/TimeDifference.py +7 -7
  112. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/TriggeredRule.py +7 -7
  113. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/UnitGroupStatus.py +7 -7
  114. pyhausbus/de/hausbus/homeassistant/proxy/controller/data/UnusedMemory.py +7 -7
  115. pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EErrorCode.py +17 -4
  116. pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EFeatureId.py +13 -4
  117. pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EFirmwareId.py +15 -6
  118. pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EIndex.py +12 -4
  119. pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EReason.py +12 -4
  120. pyhausbus/de/hausbus/homeassistant/proxy/controller/params/ESlotType.py +12 -4
  121. pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EStatus.py +12 -4
  122. pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EType.py +12 -4
  123. pyhausbus/de/hausbus/homeassistant/proxy/controller/params/MLogicalButtonMask.py +61 -61
  124. pyhausbus/de/hausbus/homeassistant/proxy/controller/params/MOption.py +61 -61
  125. pyhausbus/de/hausbus/homeassistant/proxy/counter/commands/GetConfiguration.py +6 -6
  126. pyhausbus/de/hausbus/homeassistant/proxy/counter/commands/GetStatus.py +6 -6
  127. pyhausbus/de/hausbus/homeassistant/proxy/counter/commands/SetConfiguration.py +9 -9
  128. pyhausbus/de/hausbus/homeassistant/proxy/counter/commands/SetCount.py +7 -7
  129. pyhausbus/de/hausbus/homeassistant/proxy/counter/data/Configuration.py +9 -9
  130. pyhausbus/de/hausbus/homeassistant/proxy/counter/data/EvError.py +9 -9
  131. pyhausbus/de/hausbus/homeassistant/proxy/counter/data/EvStatus.py +7 -7
  132. pyhausbus/de/hausbus/homeassistant/proxy/counter/data/Status.py +7 -7
  133. pyhausbus/de/hausbus/homeassistant/proxy/counter/params/EErrorCode.py +13 -4
  134. pyhausbus/de/hausbus/homeassistant/proxy/counter/params/MMode.py +61 -61
  135. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/ClearSignalCount.py +6 -6
  136. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/DecSignalCount.py +6 -6
  137. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/GetConfiguration.py +6 -6
  138. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/GetCurrent.py +6 -6
  139. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/GetPower.py +6 -6
  140. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/GetSignalCount.py +6 -6
  141. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/IncSignalCount.py +6 -6
  142. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/SetConfiguration.py +9 -9
  143. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/SetSignalCount.py +7 -7
  144. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/Configuration.py +9 -9
  145. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/Current.py +7 -7
  146. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/EvCurrent.py +7 -7
  147. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/EvDebug.py +9 -9
  148. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/EvError.py +26 -0
  149. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/EvInterrupt.py +7 -7
  150. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/EvSignal.py +7 -7
  151. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/Power.py +7 -7
  152. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/SignalCount.py +7 -7
  153. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/params/EErrorCode.py +27 -0
  154. pyhausbus/de/hausbus/homeassistant/proxy/currentReader/params/MConfig.py +13 -13
  155. pyhausbus/de/hausbus/homeassistant/proxy/daliLine/commands/AllOff.py +6 -6
  156. pyhausbus/de/hausbus/homeassistant/proxy/daliLine/commands/AllOn.py +6 -6
  157. pyhausbus/de/hausbus/homeassistant/proxy/daliLine/commands/GetConfiguration.py +7 -7
  158. pyhausbus/de/hausbus/homeassistant/proxy/daliLine/commands/SendCommand.py +7 -7
  159. pyhausbus/de/hausbus/homeassistant/proxy/daliLine/commands/SetConfiguration.py +7 -7
  160. pyhausbus/de/hausbus/homeassistant/proxy/daliLine/data/Configuration.py +7 -7
  161. pyhausbus/de/hausbus/homeassistant/proxy/daliLine/data/EvError.py +9 -9
  162. pyhausbus/de/hausbus/homeassistant/proxy/daliLine/data/Status.py +7 -7
  163. pyhausbus/de/hausbus/homeassistant/proxy/daliLine/params/EErrorCode.py +12 -4
  164. pyhausbus/de/hausbus/homeassistant/proxy/digitalPort/commands/GetConfiguration.py +6 -6
  165. pyhausbus/de/hausbus/homeassistant/proxy/digitalPort/commands/SetConfiguration.py +11 -11
  166. pyhausbus/de/hausbus/homeassistant/proxy/digitalPort/data/Configuration.py +28 -28
  167. pyhausbus/de/hausbus/homeassistant/proxy/digitalPort/data/EvError.py +9 -9
  168. pyhausbus/de/hausbus/homeassistant/proxy/digitalPort/params/EErrorCode.py +13 -4
  169. pyhausbus/de/hausbus/homeassistant/proxy/digitalPort/params/EPin.py +13 -4
  170. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/commands/GetConfiguration.py +6 -6
  171. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/commands/GetStatus.py +6 -6
  172. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/commands/SetBrightness.py +7 -7
  173. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/commands/SetConfiguration.py +9 -9
  174. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/commands/Start.py +9 -9
  175. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/commands/Stop.py +6 -6
  176. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/data/Configuration.py +9 -9
  177. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/data/EvError.py +9 -9
  178. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/data/EvOff.py +6 -6
  179. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/data/EvOn.py +7 -7
  180. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/data/EvStart.py +9 -9
  181. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/data/Status.py +7 -7
  182. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/params/EDirection.py +12 -4
  183. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/params/EErrorCode.py +14 -4
  184. pyhausbus/de/hausbus/homeassistant/proxy/dimmer/params/EMode.py +12 -4
  185. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/_init_.py +1 -0
  186. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/commands/GetConfiguration.py +15 -0
  187. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/commands/GetStatus.py +15 -0
  188. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/commands/SetConfiguration.py +74 -0
  189. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/commands/_init_.py +1 -0
  190. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/Configuration.py +74 -0
  191. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/EvHigh.py +15 -0
  192. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/EvInRange.py +15 -0
  193. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/EvLow.py +15 -0
  194. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/EvStatus.py +33 -0
  195. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/Status.py +33 -0
  196. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/_init_.py +1 -0
  197. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/params/ELastEvent.py +28 -0
  198. pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/params/_init_.py +1 -0
  199. pyhausbus/de/hausbus/homeassistant/proxy/ethernet/commands/GetConfiguration.py +6 -6
  200. pyhausbus/de/hausbus/homeassistant/proxy/ethernet/commands/GetCurrentIp.py +6 -6
  201. pyhausbus/de/hausbus/homeassistant/proxy/ethernet/commands/SetConfiguration.py +10 -10
  202. pyhausbus/de/hausbus/homeassistant/proxy/ethernet/commands/WakeUpDevice.py +7 -7
  203. pyhausbus/de/hausbus/homeassistant/proxy/ethernet/data/Configuration.py +10 -10
  204. pyhausbus/de/hausbus/homeassistant/proxy/ethernet/data/CurrentIp.py +7 -7
  205. pyhausbus/de/hausbus/homeassistant/proxy/ethernet/data/EvError.py +9 -9
  206. pyhausbus/de/hausbus/homeassistant/proxy/ethernet/params/EErrorCode.py +13 -4
  207. pyhausbus/de/hausbus/homeassistant/proxy/ethernet/params/MOptions.py +61 -61
  208. pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/commands/GetConfiguration.py +6 -6
  209. pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/commands/GetStatus.py +6 -6
  210. pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/commands/SetConfiguration.py +7 -7
  211. pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/Configuration.py +7 -7
  212. pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/EvConfortable.py +6 -6
  213. pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/EvDry.py +6 -6
  214. pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/EvError.py +9 -9
  215. pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/EvStatus.py +9 -9
  216. pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/EvWet.py +6 -6
  217. pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/Status.py +9 -9
  218. pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/params/EErrorCode.py +14 -4
  219. pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/params/ELastEvent.py +12 -4
  220. pyhausbus/de/hausbus/homeassistant/proxy/gateway/commands/GetConfiguration.py +6 -6
  221. pyhausbus/de/hausbus/homeassistant/proxy/gateway/commands/GetConnectedDevices.py +6 -6
  222. pyhausbus/de/hausbus/homeassistant/proxy/gateway/commands/{GetBusTiming.py → GetMinIdleTime.py} +8 -8
  223. pyhausbus/de/hausbus/homeassistant/proxy/gateway/commands/SetConfiguration.py +10 -10
  224. pyhausbus/de/hausbus/homeassistant/proxy/gateway/commands/SetMinIdleTime.py +25 -0
  225. pyhausbus/de/hausbus/homeassistant/proxy/gateway/commands/SetPreferLoxone.py +26 -0
  226. pyhausbus/de/hausbus/homeassistant/proxy/gateway/data/Configuration.py +10 -10
  227. pyhausbus/de/hausbus/homeassistant/proxy/gateway/data/ConnectedDevices.py +7 -7
  228. pyhausbus/de/hausbus/homeassistant/proxy/gateway/data/EvError.py +9 -9
  229. pyhausbus/de/hausbus/homeassistant/proxy/gateway/data/EvGatewayLoad.py +38 -17
  230. pyhausbus/de/hausbus/homeassistant/proxy/gateway/data/MinIdleTime.py +25 -0
  231. pyhausbus/de/hausbus/homeassistant/proxy/gateway/params/EErrorCode.py +14 -4
  232. pyhausbus/de/hausbus/homeassistant/proxy/gateway/params/EValue.py +27 -0
  233. pyhausbus/de/hausbus/homeassistant/proxy/gateway/params/MOptions.py +65 -65
  234. pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/commands/GetConfiguration.py +6 -6
  235. pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/commands/GetStatus.py +6 -6
  236. pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/commands/SetConfiguration.py +7 -7
  237. pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/Configuration.py +7 -7
  238. pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/EvBright.py +6 -6
  239. pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/EvDark.py +6 -6
  240. pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/EvError.py +9 -9
  241. pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/EvLight.py +6 -6
  242. pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/EvStatus.py +9 -9
  243. pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/Status.py +9 -9
  244. pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/params/EErrorCode.py +14 -4
  245. pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/params/ELastEvent.py +12 -4
  246. pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/commands/Off.py +6 -6
  247. pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/commands/On.py +6 -6
  248. pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/data/EvClicked.py +7 -7
  249. pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/data/EvHoldEnd.py +7 -7
  250. pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/data/EvHoldStart.py +7 -7
  251. pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/data/EvOff.py +6 -6
  252. pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/data/EvOn.py +6 -6
  253. pyhausbus/de/hausbus/homeassistant/proxy/led/commands/Blink.py +7 -7
  254. pyhausbus/de/hausbus/homeassistant/proxy/led/commands/GetConfiguration.py +6 -6
  255. pyhausbus/de/hausbus/homeassistant/proxy/led/commands/GetMinBrightness.py +6 -6
  256. pyhausbus/de/hausbus/homeassistant/proxy/led/commands/GetStatus.py +6 -6
  257. pyhausbus/de/hausbus/homeassistant/proxy/led/commands/Off.py +7 -7
  258. pyhausbus/de/hausbus/homeassistant/proxy/led/commands/On.py +7 -7
  259. pyhausbus/de/hausbus/homeassistant/proxy/led/commands/SetConfiguration.py +9 -9
  260. pyhausbus/de/hausbus/homeassistant/proxy/led/commands/SetMinBrightness.py +7 -7
  261. pyhausbus/de/hausbus/homeassistant/proxy/led/data/Configuration.py +10 -10
  262. pyhausbus/de/hausbus/homeassistant/proxy/led/data/EvBlink.py +6 -6
  263. pyhausbus/de/hausbus/homeassistant/proxy/led/data/EvCmdDelay.py +7 -7
  264. pyhausbus/de/hausbus/homeassistant/proxy/led/data/EvError.py +10 -9
  265. pyhausbus/de/hausbus/homeassistant/proxy/led/data/EvOff.py +6 -6
  266. pyhausbus/de/hausbus/homeassistant/proxy/led/data/EvOn.py +7 -7
  267. pyhausbus/de/hausbus/homeassistant/proxy/led/data/MinBrightness.py +7 -7
  268. pyhausbus/de/hausbus/homeassistant/proxy/led/data/Status.py +7 -7
  269. pyhausbus/de/hausbus/homeassistant/proxy/led/params/EErrorCode.py +26 -0
  270. pyhausbus/de/hausbus/homeassistant/proxy/led/params/MOptions.py +61 -61
  271. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/Blink.py +7 -7
  272. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/GetConfiguration.py +6 -6
  273. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/GetMinBrightness.py +6 -6
  274. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/GetStatus.py +6 -6
  275. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/Off.py +7 -7
  276. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/On.py +7 -7
  277. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/SetButtonConfiguration.py +10 -10
  278. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/SetConfiguration.py +7 -7
  279. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/SetLedConfiguration.py +9 -9
  280. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/SetMinBrightness.py +7 -7
  281. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/data/Configuration.py +7 -7
  282. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/data/EvBlink.py +6 -6
  283. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/data/EvError.py +9 -9
  284. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/data/EvOff.py +6 -6
  285. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/data/EvOn.py +7 -7
  286. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/data/Status.py +9 -9
  287. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/params/EErrorCode.py +14 -4
  288. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/params/EStatus.py +12 -4
  289. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/params/MEventMask.py +65 -65
  290. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/params/MOptionMask.py +61 -61
  291. pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/params/MOptions.py +61 -61
  292. pyhausbus/de/hausbus/homeassistant/proxy/modBusMaster/commands/GetConfiguration.py +7 -7
  293. pyhausbus/de/hausbus/homeassistant/proxy/modBusMaster/commands/SetConfiguration.py +9 -9
  294. pyhausbus/de/hausbus/homeassistant/proxy/modBusMaster/data/Configuration.py +9 -9
  295. pyhausbus/de/hausbus/homeassistant/proxy/modBusMaster/params/ESensorType.py +12 -4
  296. pyhausbus/de/hausbus/homeassistant/proxy/pCA9555/_init_.py +1 -0
  297. pyhausbus/de/hausbus/homeassistant/proxy/pCA9555/data/EvError.py +26 -0
  298. pyhausbus/de/hausbus/homeassistant/proxy/pCA9555/data/_init_.py +1 -0
  299. pyhausbus/de/hausbus/homeassistant/proxy/pCA9555/params/EErrorCode.py +28 -0
  300. pyhausbus/de/hausbus/homeassistant/proxy/pCA9555/params/_init_.py +1 -0
  301. pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/Exec.py +7 -7
  302. pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/Quit.py +6 -6
  303. pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/ReloadUserPlugin.py +6 -6
  304. pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/Restart.py +6 -6
  305. pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/SetVariable.py +7 -7
  306. pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/Shutdown.py +6 -6
  307. pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/Standby.py +6 -6
  308. pyhausbus/de/hausbus/homeassistant/proxy/pCServer/data/EvOffline.py +6 -6
  309. pyhausbus/de/hausbus/homeassistant/proxy/pCServer/data/EvOnline.py +6 -6
  310. pyhausbus/de/hausbus/homeassistant/proxy/pIDController/commands/Enable.py +9 -9
  311. pyhausbus/de/hausbus/homeassistant/proxy/pIDController/commands/GetConfiguration.py +6 -6
  312. pyhausbus/de/hausbus/homeassistant/proxy/pIDController/commands/SetConfiguration.py +18 -10
  313. pyhausbus/de/hausbus/homeassistant/proxy/pIDController/commands/SetTargetValue.py +7 -7
  314. pyhausbus/de/hausbus/homeassistant/proxy/pIDController/data/Configuration.py +18 -10
  315. pyhausbus/de/hausbus/homeassistant/proxy/pIDController/data/EvError.py +9 -9
  316. pyhausbus/de/hausbus/homeassistant/proxy/pIDController/data/EvOff.py +6 -6
  317. pyhausbus/de/hausbus/homeassistant/proxy/pIDController/data/EvOn.py +6 -6
  318. pyhausbus/de/hausbus/homeassistant/proxy/pIDController/params/EEnable.py +12 -4
  319. pyhausbus/de/hausbus/homeassistant/proxy/pIDController/params/EErrorCode.py +15 -4
  320. pyhausbus/de/hausbus/homeassistant/proxy/pIDController/params/MOptions.py +96 -0
  321. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/_init_.py +1 -0
  322. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/commands/GetConfiguration.py +15 -0
  323. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/commands/GetStatus.py +15 -0
  324. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/commands/SetConfiguration.py +74 -0
  325. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/commands/_init_.py +1 -0
  326. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/Configuration.py +74 -0
  327. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/EvError.py +26 -0
  328. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/EvHigh.py +15 -0
  329. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/EvInRange.py +15 -0
  330. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/EvLow.py +15 -0
  331. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/EvStatus.py +33 -0
  332. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/Status.py +33 -0
  333. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/_init_.py +1 -0
  334. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/params/EErrorCode.py +40 -0
  335. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/params/ELastEvent.py +28 -0
  336. pyhausbus/de/hausbus/homeassistant/proxy/pT1000/params/_init_.py +1 -0
  337. pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/commands/GetConfiguration.py +6 -6
  338. pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/commands/GetStatus.py +6 -6
  339. pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/commands/SetConfiguration.py +7 -7
  340. pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/Configuration.py +7 -7
  341. pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/EvError.py +9 -9
  342. pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/EvHighPower.py +6 -6
  343. pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/EvLowPower.py +6 -6
  344. pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/EvMediumPower.py +6 -6
  345. pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/EvStatus.py +9 -9
  346. pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/Status.py +9 -9
  347. pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/params/EErrorCode.py +14 -4
  348. pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/params/ELastEvent.py +12 -4
  349. pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/commands/GetConfiguration.py +6 -6
  350. pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/commands/GetLastData.py +6 -6
  351. pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/commands/GetState.py +6 -6
  352. pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/commands/SetConfiguration.py +6 -6
  353. pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/data/Configuration.py +6 -6
  354. pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/data/EvConnected.py +6 -6
  355. pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/data/EvData.py +7 -7
  356. pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/data/EvError.py +9 -9
  357. pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/data/LastData.py +7 -7
  358. pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/data/State.py +9 -9
  359. pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/params/EErrorCode.py +13 -4
  360. pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/params/EState.py +12 -4
  361. pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/commands/GetConfiguration.py +6 -6
  362. pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/commands/GetStatus.py +6 -6
  363. pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/commands/SetColor.py +7 -7
  364. pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/commands/SetConfiguration.py +7 -7
  365. pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/data/Configuration.py +7 -7
  366. pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/data/EvOff.py +6 -6
  367. pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/data/EvOn.py +7 -7
  368. pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/data/Status.py +7 -7
  369. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/GetConfiguration.py +6 -6
  370. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/GetStatus.py +6 -6
  371. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/MoveToPosition.py +7 -7
  372. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/SetConfiguration.py +9 -9
  373. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/SetPosition.py +7 -7
  374. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/Start.py +9 -9
  375. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/Stop.py +6 -6
  376. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/Configuration.py +9 -9
  377. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/EvClosed.py +7 -7
  378. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/EvError.py +9 -9
  379. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/EvNewMainState.py +9 -9
  380. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/EvNewSubState.py +9 -9
  381. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/EvOpen.py +6 -6
  382. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/EvStart.py +9 -9
  383. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/Status.py +7 -7
  384. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/params/EDirection.py +12 -4
  385. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/params/EErrorCode.py +14 -4
  386. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/params/ENewState.py +12 -4
  387. pyhausbus/de/hausbus/homeassistant/proxy/rollladen/params/MOptions.py +65 -65
  388. pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/GetConfiguration.py +6 -6
  389. pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/GetStatus.py +6 -6
  390. pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/Off.py +7 -7
  391. pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/On.py +7 -7
  392. pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/SetConfiguration.py +9 -9
  393. pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/Toggle.py +7 -7
  394. pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/ToggleByDuty.py +32 -0
  395. pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/Configuration.py +9 -9
  396. pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/EvCmdDelay.py +7 -7
  397. pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/EvDisabled.py +6 -6
  398. pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/EvError.py +9 -9
  399. pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/EvOff.py +6 -6
  400. pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/EvOn.py +7 -7
  401. pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/EvToggle.py +31 -7
  402. pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/Status.py +26 -12
  403. pyhausbus/de/hausbus/homeassistant/proxy/schalter/params/EErrorCode.py +14 -4
  404. pyhausbus/de/hausbus/homeassistant/proxy/schalter/params/EState.py +12 -4
  405. pyhausbus/de/hausbus/homeassistant/proxy/schalter/params/MOptions.py +61 -61
  406. pyhausbus/de/hausbus/homeassistant/proxy/systemTime/commands/GetTime.py +6 -6
  407. pyhausbus/de/hausbus/homeassistant/proxy/systemTime/commands/SetTime.py +10 -10
  408. pyhausbus/de/hausbus/homeassistant/proxy/systemTime/data/EvError.py +9 -9
  409. pyhausbus/de/hausbus/homeassistant/proxy/systemTime/data/Time.py +7 -7
  410. pyhausbus/de/hausbus/homeassistant/proxy/systemTime/params/EDate.py +12 -4
  411. pyhausbus/de/hausbus/homeassistant/proxy/systemTime/params/EErrorCode.py +13 -4
  412. pyhausbus/de/hausbus/homeassistant/proxy/systemTime/params/EMonth.py +12 -4
  413. pyhausbus/de/hausbus/homeassistant/proxy/systemTime/params/EWeekDay.py +12 -4
  414. pyhausbus/de/hausbus/homeassistant/proxy/taster/commands/EnableEvents.py +9 -9
  415. pyhausbus/de/hausbus/homeassistant/proxy/taster/commands/GetConfiguration.py +6 -6
  416. pyhausbus/de/hausbus/homeassistant/proxy/taster/commands/GetEnabled.py +6 -6
  417. pyhausbus/de/hausbus/homeassistant/proxy/taster/commands/GetStatus.py +6 -6
  418. pyhausbus/de/hausbus/homeassistant/proxy/taster/commands/SetConfiguration.py +10 -10
  419. pyhausbus/de/hausbus/homeassistant/proxy/taster/commands/TriggerStatusEvent.py +15 -0
  420. pyhausbus/de/hausbus/homeassistant/proxy/taster/data/Configuration.py +10 -10
  421. pyhausbus/de/hausbus/homeassistant/proxy/taster/data/Enabled.py +7 -7
  422. pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvClicked.py +9 -9
  423. pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvCovered.py +9 -9
  424. pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvDoubleClick.py +9 -9
  425. pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvEnabled.py +7 -7
  426. pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvError.py +10 -9
  427. pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvFree.py +9 -9
  428. pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvHoldEnd.py +9 -9
  429. pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvHoldStart.py +9 -9
  430. pyhausbus/de/hausbus/homeassistant/proxy/taster/data/Status.py +9 -9
  431. pyhausbus/de/hausbus/homeassistant/proxy/taster/params/EEnable.py +12 -4
  432. pyhausbus/de/hausbus/homeassistant/proxy/taster/params/EErrorCode.py +27 -0
  433. pyhausbus/de/hausbus/homeassistant/proxy/taster/params/EState.py +12 -4
  434. pyhausbus/de/hausbus/homeassistant/proxy/taster/params/MEventMask.py +65 -65
  435. pyhausbus/de/hausbus/homeassistant/proxy/taster/params/MOptionMask.py +61 -61
  436. pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/commands/GetConfiguration.py +6 -6
  437. pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/commands/GetStatus.py +6 -6
  438. pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/commands/SetConfiguration.py +7 -7
  439. pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/Configuration.py +7 -7
  440. pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/EvAbove.py +6 -6
  441. pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/EvError.py +9 -9
  442. pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/EvInRange.py +6 -6
  443. pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/EvLow.py +6 -6
  444. pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/EvStatus.py +9 -9
  445. pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/Status.py +9 -9
  446. pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/params/EErrorCode.py +14 -4
  447. pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/params/ELastEvent.py +12 -4
  448. pyhausbus/de/hausbus/homeassistant/proxy/tcpClient/commands/AnnounceServer.py +7 -7
  449. pyhausbus/de/hausbus/homeassistant/proxy/tcpClient/commands/GetCurrentIp.py +6 -6
  450. pyhausbus/de/hausbus/homeassistant/proxy/tcpClient/data/CurrentIp.py +7 -7
  451. pyhausbus/de/hausbus/homeassistant/proxy/tcpClient/data/EvWhoIsServer.py +6 -6
  452. pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/commands/GetConfiguration.py +6 -6
  453. pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/commands/GetStatus.py +6 -6
  454. pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/commands/SetConfiguration.py +8 -8
  455. pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/Configuration.py +7 -7
  456. pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/EvCold.py +6 -6
  457. pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/EvError.py +9 -9
  458. pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/EvHot.py +6 -6
  459. pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/EvStatus.py +9 -9
  460. pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/EvWarm.py +6 -6
  461. pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/Status.py +9 -9
  462. pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/params/EErrorCode.py +14 -4
  463. pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/params/ELastEvent.py +12 -4
  464. pyhausbus/de/hausbus/homeassistant/proxy/wetter/commands/GetWeather.py +6 -6
  465. pyhausbus/de/hausbus/homeassistant/proxy/wetter/data/Weather.py +9 -9
  466. pyhausbus/de/hausbus/homeassistant/proxy/wiFi/commands/GetConfiguration.py +6 -6
  467. pyhausbus/de/hausbus/homeassistant/proxy/wiFi/commands/GetCurrentIp.py +6 -6
  468. pyhausbus/de/hausbus/homeassistant/proxy/wiFi/commands/SetConfiguration.py +8 -8
  469. pyhausbus/de/hausbus/homeassistant/proxy/wiFi/commands/WakeUpDevice.py +7 -7
  470. pyhausbus/de/hausbus/homeassistant/proxy/wiFi/data/Configuration.py +8 -8
  471. pyhausbus/de/hausbus/homeassistant/proxy/wiFi/data/CurrentIp.py +7 -7
  472. pyhausbus/de/hausbus/homeassistant/proxy/wiFi/data/EvError.py +9 -9
  473. pyhausbus/de/hausbus/homeassistant/proxy/wiFi/params/EErrorCode.py +14 -4
  474. pyhausbus/templates/AR8_30_8-fach-Relaismodul.tpl +18 -0
  475. pyhausbus/templates/ESP32C3_69_WLAN-Steckdose.tpl +5 -0
  476. pyhausbus/templates/ESP32_00_4-fach-0-10V-Dimmer.tpl +14 -0
  477. pyhausbus/templates/ESP32_01_4-fach-1-10V-Dimmer.tpl +10 -0
  478. pyhausbus/templates/ESP32_04_4-fach-Relaismodul.tpl +12 -0
  479. pyhausbus/templates/ESP32_08_8-fach-Relaismodul.tpl +18 -0
  480. pyhausbus/templates/ESP32_0A_12-fach-Relaismodul.tpl +22 -0
  481. pyhausbus/templates/ESP32_0C_16-fach-Relaismodul.tpl +26 -0
  482. pyhausbus/templates/ESP32_0D_8-fach-Motormodul.tpl +18 -0
  483. pyhausbus/templates/ESP32_10_22-fach-UP-IO.tpl +29 -0
  484. pyhausbus/templates/ESP32_18_6-fach-Taster.tpl +33 -0
  485. pyhausbus/templates/ESP32_19_4-fach-Taster.tpl +29 -0
  486. pyhausbus/templates/ESP32_1A_2-fach-Taster.tpl +25 -0
  487. pyhausbus/templates/ESP32_1B_1-fach-Taster.tpl +23 -0
  488. pyhausbus/templates/ESP32_1C_6-fach-Taster.tpl +29 -0
  489. pyhausbus/templates/ESP32_20_32-fach-IO.tpl +39 -0
  490. pyhausbus/templates/ESP32_28_8-fach-Dimmer.tpl +18 -0
  491. pyhausbus/templates/ESP32_30_2-fach-RGB-Dimmer.tpl +17 -0
  492. pyhausbus/templates/ESP32_31_2-fach-RGB-Dimmer.tpl +17 -0
  493. pyhausbus/templates/ESP32_65_LAN-RS485-Brueckenmodul.tpl +1 -0
  494. pyhausbus/templates/ESP32_99_LocalBroadcastDevice.tpl +1 -0
  495. pyhausbus/templates/FckmMapping.def +1 -0
  496. pyhausbus/templates/HBC_00_4-fach-0-10V-Dimmer.tpl +10 -0
  497. pyhausbus/templates/HBC_01_4-fach-1-10V-Dimmer.tpl +10 -0
  498. pyhausbus/templates/HBC_08_8-fach-Relaismodul.tpl +18 -0
  499. pyhausbus/templates/HBC_0C_16-fach-Relaismodul.tpl +26 -0
  500. pyhausbus/templates/HBC_10_24-fach-UP-IO.tpl +31 -0
  501. pyhausbus/templates/HBC_18_6-fach-Taster.tpl +34 -0
  502. pyhausbus/templates/HBC_19_4-fach-Taster.tpl +28 -0
  503. pyhausbus/templates/HBC_1A_2-fach-Taster.tpl +24 -0
  504. pyhausbus/templates/HBC_1B_1-fach-Taster.tpl +22 -0
  505. pyhausbus/templates/HBC_1C_6-fach-Taster.tpl +33 -0
  506. pyhausbus/templates/HBC_1D_4-fach-Taster.tpl +29 -0
  507. pyhausbus/templates/HBC_1E_2-fach-Taster.tpl +29 -0
  508. pyhausbus/templates/HBC_1F_1-fach-Taster.tpl +27 -0
  509. pyhausbus/templates/HBC_20_32-fach-IO.tpl +39 -0
  510. pyhausbus/templates/HBC_29_8-fach-Dimmer.tpl +18 -0
  511. pyhausbus/templates/HBC_30_2-fach-RGB-Dimmer.tpl +17 -0
  512. pyhausbus/templates/LoxoneHausBusMapping.txt +80 -0
  513. pyhausbus/templates/LoxoneModuleMapping.txt +11 -0
  514. pyhausbus/templates/SD485_1E_6-fach-Taster.tpl +30 -0
  515. pyhausbus/templates/SD485_28_24-fach-UP-IO.tpl +31 -0
  516. pyhausbus/templates/SD485_29_1-fach-Taster.tpl +24 -0
  517. pyhausbus/templates/SD485_2A_2-fach-Taster.tpl +26 -0
  518. pyhausbus/templates/SD485_2C_4-fach-Taster.tpl +26 -0
  519. pyhausbus/templates/SD485_2E_6-fach-Taster.tpl +30 -0
  520. pyhausbus/templates/SD485_2F_6-fach-Taster.tpl +30 -0
  521. pyhausbus/templates/SD6_14_Multitaster.tpl +26 -0
  522. pyhausbus/templates/SD6_1E_Multitaster.tpl +26 -0
  523. pyhausbus/templates/classMapping.def +9 -0
  524. pyhausbus/templates/deviceTypes.def +47 -0
  525. {pyhausbus-1.0.1.dist-info → pyhausbus-1.0.3.dist-info}/LICENSE +21 -21
  526. {pyhausbus-1.0.1.dist-info → pyhausbus-1.0.3.dist-info}/METADATA +2 -1
  527. pyhausbus-1.0.3.dist-info/RECORD +639 -0
  528. {pyhausbus-1.0.1.dist-info → pyhausbus-1.0.3.dist-info}/WHEEL +1 -1
  529. pyhausbus/HausBusDevice.py +0 -70
  530. pyhausbus/de/hausbus/homeassistant/proxy/gateway/data/BusTiming.py +0 -25
  531. pyhausbus-1.0.1.dist-info/RECORD +0 -526
pyhausbus/Main.py CHANGED
@@ -1,100 +1,100 @@
1
- from pyhausbus.HomeServer import HomeServer
2
- from pyhausbus.ResultWorker import ResultWorker
3
- from pyhausbus.IBusDataListener import IBusDataListener
4
- from pyhausbus.de.hausbus.homeassistant.proxy.Controller import Controller
5
- from pyhausbus.de.hausbus.homeassistant.proxy.Taster import Taster
6
- from pyhausbus.de.hausbus.homeassistant.proxy.Led import Led
7
- from pyhausbus.de.hausbus.homeassistant.proxy.Dimmer import Dimmer
8
- from pyhausbus.de.hausbus.homeassistant.proxy.Schalter import Schalter
9
- from pyhausbus.de.hausbus.homeassistant.proxy.controller.data.ModuleId import ModuleId
10
- from pyhausbus.de.hausbus.homeassistant.proxy.controller.data.RemoteObjects import RemoteObjects
11
- from pyhausbus.de.hausbus.homeassistant.proxy.LogicalButton import LogicalButton
12
- from pyhausbus.de.hausbus.homeassistant.proxy.controller.params import EIndex
13
- from pyhausbus.de.hausbus.homeassistant.proxy.taster.data.Configuration import Configuration
14
- from pyhausbus.de.hausbus.homeassistant.proxy.dimmer.params.EDirection import EDirection
15
- from pyhausbus.de.hausbus.homeassistant.proxy.dimmer.data.EvOn import EvOn
16
- from pyhausbus.de.hausbus.homeassistant.proxy.dimmer.data.EvOff import EvOff
17
- from pyhausbus.de.hausbus.homeassistant.proxy.Feuchtesensor import Feuchtesensor
18
- import pyhausbus.HausBusUtils
19
- from pyhausbus.ObjectId import ObjectId
20
- import time
21
-
22
- class Main(IBusDataListener):
23
-
24
- def __init__(self):
25
-
26
- '''
27
- Instantiate Homeserver, add as Lister and search Devices
28
- Afterwards all devices respond with their moduleId. See method busDataReceived
29
- '''
30
- self.server = HomeServer()
31
- self.server.addBusEventListener(self)
32
- '''self.server.searchDevices()'''
33
-
34
- ''' Example how to directly create a feature with given class and instance id'''
35
- Dimmer.create(22784, 5).setBrightness(100, 0)
36
-
37
- ''' Example how to directly create a feature with given ObjectId and wait for the result '''
38
- taster = Taster(1313542180)
39
- ''' Then we call the method'''
40
- taster.getConfiguration()
41
- ''' And then wait for the Result with a timeout of 2 seconds'''
42
- configuration = ResultWorker().waitForResult(2)
43
- print("configuration = "+str(configuration))
44
-
45
- self.doTests()
46
-
47
-
48
-
49
-
50
- def busDataReceived(self, busDataMessage):
51
- print("got: " + str(busDataMessage.getData()) + " from " + str(ObjectId(busDataMessage.getSenderObjectId())) + " to " + str(ObjectId(busDataMessage.getReceiverObjectId())))
52
-
53
- if (isinstance(busDataMessage.getData(), RemoteObjects)):
54
- instances = self.server.getDeviceInstances(busDataMessage.getSenderObjectId(), busDataMessage.getData())
55
- for actInstance in instances:
56
- print (actInstance)
57
-
58
-
59
- def doTests(self):
60
-
61
- controller = Controller.create(3359, 1)
62
- controller.getConfiguration()
63
- print("Controller.configuration = "+str(ResultWorker().waitForResult(2)))
64
- controller.getModuleId(EIndex.EIndex.RUNNING)
65
- print("Controller.moduleId = "+str(ResultWorker().waitForResult(2)))
66
- controller.ping()
67
- print("Controller.pong = "+str(ResultWorker().waitForResult(2)))
68
-
69
- dimmer = Dimmer.create(22784, 5)
70
- dimmer.getConfiguration()
71
- print("Dimmer.configuration = "+str(ResultWorker().waitForResult(2)))
72
- dimmer.getStatus()
73
- print("Dimmer.status = "+str(ResultWorker().waitForResult(2)))
74
- dimmer.start(EDirection.TO_LIGHT)
75
- print("Dimmer.evOn = "+str(ResultWorker().waitForEvent(EvOn, dimmer.getObjectId(), 5)))
76
- dimmer.start(EDirection.TO_DARK)
77
- print("Dimmer.evOff = "+str(ResultWorker().waitForEvent(EvOff, dimmer.getObjectId(), 5)))
78
-
79
- feuchtesensor = Feuchtesensor.create(25661 , 88)
80
- feuchtesensor.getConfiguration()
81
- print("Feuchtesensor.configuration = "+str(ResultWorker().waitForResult(2)))
82
- feuchtesensor.getStatus()
83
- print("Feuchtesensor.status = "+str(ResultWorker().waitForResult(2)))
84
-
85
- led = Led.create(20043,54)
86
- led.getConfiguration()
87
- print("Led.configuration = "+str(ResultWorker().waitForResult(2)))
88
- led.getStatus()
89
- print("Led.status = "+str(ResultWorker().waitForResult(2)))
90
- led.on(50, 5, 0)
91
- led.getStatus()
92
- print("Led.status = "+str(ResultWorker().waitForResult(2)))
93
- time.sleep(2)
94
- led.getStatus()
95
- print("Led.status = "+str(ResultWorker().waitForResult(2)))
96
- time.sleep(3)
97
- led.getStatus()
98
- print("Led.status = "+str(ResultWorker().waitForResult(2)))
99
-
100
- Main()
1
+ from pyhausbus.HomeServer import HomeServer
2
+ from pyhausbus.ResultWorker import ResultWorker
3
+ from pyhausbus.IBusDataListener import IBusDataListener
4
+ from pyhausbus.de.hausbus.homeassistant.proxy.Controller import Controller
5
+ from pyhausbus.de.hausbus.homeassistant.proxy.Taster import Taster
6
+ from pyhausbus.de.hausbus.homeassistant.proxy.Led import Led
7
+ from pyhausbus.de.hausbus.homeassistant.proxy.Dimmer import Dimmer
8
+ from pyhausbus.de.hausbus.homeassistant.proxy.Schalter import Schalter
9
+ from pyhausbus.de.hausbus.homeassistant.proxy.controller.data.ModuleId import ModuleId
10
+ from pyhausbus.de.hausbus.homeassistant.proxy.controller.data.RemoteObjects import RemoteObjects
11
+ from pyhausbus.de.hausbus.homeassistant.proxy.LogicalButton import LogicalButton
12
+ from pyhausbus.de.hausbus.homeassistant.proxy.controller.params import EIndex
13
+ from pyhausbus.de.hausbus.homeassistant.proxy.taster.data.Configuration import Configuration
14
+ from pyhausbus.de.hausbus.homeassistant.proxy.dimmer.params.EDirection import EDirection
15
+ from pyhausbus.de.hausbus.homeassistant.proxy.dimmer.data.EvOn import EvOn
16
+ from pyhausbus.de.hausbus.homeassistant.proxy.dimmer.data.EvOff import EvOff
17
+ from pyhausbus.de.hausbus.homeassistant.proxy.Feuchtesensor import Feuchtesensor
18
+ import pyhausbus.HausBusUtils
19
+ from pyhausbus.ObjectId import ObjectId
20
+ import time
21
+
22
+ class Main(IBusDataListener):
23
+
24
+ def __init__(self):
25
+
26
+ '''
27
+ Instantiate Homeserver, add as Lister and search Devices
28
+ Afterwards all devices respond with their moduleId. See method busDataReceived
29
+ '''
30
+ self.server = HomeServer()
31
+ self.server.addBusEventListener(self)
32
+ '''self.server.searchDevices()'''
33
+
34
+ ''' Example how to directly create a feature with given class and instance id'''
35
+ Dimmer.create(22784, 5).setBrightness(100, 0)
36
+
37
+ ''' Example how to directly create a feature with given ObjectId and wait for the result '''
38
+ taster = Taster(1313542180)
39
+ ''' Then we call the method'''
40
+ taster.getConfiguration()
41
+ ''' And then wait for the Result with a timeout of 2 seconds'''
42
+ configuration = ResultWorker().waitForResult(2)
43
+ print("configuration = "+str(configuration))
44
+
45
+ self.doTests()
46
+
47
+
48
+
49
+
50
+ def busDataReceived(self, busDataMessage):
51
+ print("got: " + str(busDataMessage.getData()) + " from " + str(ObjectId(busDataMessage.getSenderObjectId())) + " to " + str(ObjectId(busDataMessage.getReceiverObjectId())))
52
+
53
+ if (isinstance(busDataMessage.getData(), RemoteObjects)):
54
+ instances = self.server.getDeviceInstances(busDataMessage.getSenderObjectId(), busDataMessage.getData())
55
+ for actInstance in instances:
56
+ print (actInstance)
57
+
58
+
59
+ def doTests(self):
60
+
61
+ controller = Controller.create(3359, 1)
62
+ controller.getConfiguration()
63
+ print("Controller.configuration = "+str(ResultWorker().waitForResult(2)))
64
+ controller.getModuleId(EIndex.EIndex.RUNNING)
65
+ print("Controller.moduleId = "+str(ResultWorker().waitForResult(2)))
66
+ controller.ping()
67
+ print("Controller.pong = "+str(ResultWorker().waitForResult(2)))
68
+
69
+ dimmer = Dimmer.create(22784, 5)
70
+ dimmer.getConfiguration()
71
+ print("Dimmer.configuration = "+str(ResultWorker().waitForResult(2)))
72
+ dimmer.getStatus()
73
+ print("Dimmer.status = "+str(ResultWorker().waitForResult(2)))
74
+ dimmer.start(EDirection.TO_LIGHT)
75
+ print("Dimmer.evOn = "+str(ResultWorker().waitForEvent(EvOn, dimmer.getObjectId(), 5)))
76
+ dimmer.start(EDirection.TO_DARK)
77
+ print("Dimmer.evOff = "+str(ResultWorker().waitForEvent(EvOff, dimmer.getObjectId(), 5)))
78
+
79
+ feuchtesensor = Feuchtesensor.create(25661 , 88)
80
+ feuchtesensor.getConfiguration()
81
+ print("Feuchtesensor.configuration = "+str(ResultWorker().waitForResult(2)))
82
+ feuchtesensor.getStatus()
83
+ print("Feuchtesensor.status = "+str(ResultWorker().waitForResult(2)))
84
+
85
+ led = Led.create(20043,54)
86
+ led.getConfiguration()
87
+ print("Led.configuration = "+str(ResultWorker().waitForResult(2)))
88
+ led.getStatus()
89
+ print("Led.status = "+str(ResultWorker().waitForResult(2)))
90
+ led.on(50, 5, 0)
91
+ led.getStatus()
92
+ print("Led.status = "+str(ResultWorker().waitForResult(2)))
93
+ time.sleep(2)
94
+ led.getStatus()
95
+ print("Led.status = "+str(ResultWorker().waitForResult(2)))
96
+ time.sleep(3)
97
+ led.getStatus()
98
+ print("Led.status = "+str(ResultWorker().waitForResult(2)))
99
+
100
+ Main()
pyhausbus/ObjectId.py CHANGED
@@ -1,22 +1,22 @@
1
- import pyhausbus.HausBusUtils as HausBusUtils
2
-
3
- class ObjectId:
4
- objectId:int=0
5
-
6
- def __init__ (self, objectId:int):
7
- self.objectId = objectId
8
-
9
- def getValue(self) -> int:
10
- return self.objectId
11
-
12
- def getDeviceId(self) -> int:
13
- return HausBusUtils.getDeviceId(self.objectId)
14
-
15
- def getClassId(self) -> int:
16
- return HausBusUtils.getClassId(self.objectId)
17
-
18
- def getInstanceId(self) -> int:
19
- return HausBusUtils.getInstanceId(self.objectId)
20
-
21
- def __str__(self):
22
- return f"Object(DeviceId={self.getDeviceId()}, ClassId={self.getClassId()}, InstanceId={self.getInstanceId()} - {hex(self.objectId)} ({self.objectId}))"
1
+ import pyhausbus.HausBusUtils as HausBusUtils
2
+
3
+ class ObjectId:
4
+ objectId:int=0
5
+
6
+ def __init__ (self, objectId:int):
7
+ self.objectId = objectId
8
+
9
+ def getValue(self) -> int:
10
+ return self.objectId
11
+
12
+ def getDeviceId(self) -> int:
13
+ return HausBusUtils.getDeviceId(self.objectId)
14
+
15
+ def getClassId(self) -> int:
16
+ return HausBusUtils.getClassId(self.objectId)
17
+
18
+ def getInstanceId(self) -> int:
19
+ return HausBusUtils.getInstanceId(self.objectId)
20
+
21
+ def __str__(self):
22
+ return f"Object(DeviceId={self.getDeviceId()}, ClassId={self.getClassId()}, InstanceId={self.getInstanceId()} - {hex(self.objectId)} ({self.objectId}))"
pyhausbus/ResultWorker.py CHANGED
@@ -1,53 +1,53 @@
1
- from pyhausbus.HausBusUtils import LOGGER
2
- import time
3
- import threading
4
-
5
-
6
- class ResultWorker:
7
- _instance = None
8
- _resultClass = None
9
- _resultSenderObjectId = 0
10
- _resultObject = None
11
- _condition = threading.Condition()
12
-
13
- def __new__(cls, *args, **kwargs):
14
- if not cls._instance:
15
- cls._instance = super().__new__(cls, *args, **kwargs)
16
- return cls._instance
17
-
18
- def _setResultInfo(self, resultClass, resultSenderObjectId:int):
19
- '''print("resultInfo " + str(resultClass) + ", ID " + str(resultSenderObjectId))'''
20
- self._resultClass = resultClass
21
- self._resultSenderObjectId = resultSenderObjectId
22
- self._resultObject=None
23
-
24
- def waitForResult(self, timeoutInSeconds:int):
25
- start_time = time.time()
26
- end_time = start_time + timeoutInSeconds
27
-
28
- with self._condition:
29
- while self._resultObject == None and time.time() < end_time:
30
- self._condition.wait(1)
31
-
32
- return self._resultObject
33
-
34
- def waitForEvent(self, event, eventSenderObjectId, timeoutInSeconds:int):
35
- self._resultClass = event
36
- self._resultSenderObjectId = eventSenderObjectId
37
- self._resultObject=None
38
-
39
- start_time = time.time()
40
- end_time = start_time + timeoutInSeconds
41
-
42
- with self._condition:
43
- while self._resultObject == None and time.time() < end_time:
44
- self._condition.wait(1)
45
-
46
- return self._resultObject
47
-
48
- def busDataReceived(self, busDataMessage):
49
- '''print("got "+str(busDataMessage))'''
50
- if (self._resultClass != None and busDataMessage.getSenderObjectId()==self._resultSenderObjectId and isinstance(busDataMessage.getData(), self._resultClass)):
51
- with self._condition:
52
- self._resultObject = busDataMessage.getData()
53
- self._condition.notify()
1
+ from pyhausbus.HausBusUtils import LOGGER
2
+ import time
3
+ import threading
4
+
5
+
6
+ class ResultWorker:
7
+ _instance = None
8
+ _resultClass = None
9
+ _resultSenderObjectId = 0
10
+ _resultObject = None
11
+ _condition = threading.Condition()
12
+
13
+ def __new__(cls, *args, **kwargs):
14
+ if not cls._instance:
15
+ cls._instance = super().__new__(cls, *args, **kwargs)
16
+ return cls._instance
17
+
18
+ def _setResultInfo(self, resultClass, resultSenderObjectId:int):
19
+ '''print("resultInfo " + str(resultClass) + ", ID " + str(resultSenderObjectId))'''
20
+ self._resultClass = resultClass
21
+ self._resultSenderObjectId = resultSenderObjectId
22
+ self._resultObject=None
23
+
24
+ def waitForResult(self, timeoutInSeconds:int):
25
+ start_time = time.time()
26
+ end_time = start_time + timeoutInSeconds
27
+
28
+ with self._condition:
29
+ while self._resultObject == None and time.time() < end_time:
30
+ self._condition.wait(1)
31
+
32
+ return self._resultObject
33
+
34
+ def waitForEvent(self, event, eventSenderObjectId, timeoutInSeconds:int):
35
+ self._resultClass = event
36
+ self._resultSenderObjectId = eventSenderObjectId
37
+ self._resultObject=None
38
+
39
+ start_time = time.time()
40
+ end_time = start_time + timeoutInSeconds
41
+
42
+ with self._condition:
43
+ while self._resultObject == None and time.time() < end_time:
44
+ self._condition.wait(1)
45
+
46
+ return self._resultObject
47
+
48
+ def busDataReceived(self, busDataMessage):
49
+ '''print("got "+str(busDataMessage))'''
50
+ if (self._resultClass != None and busDataMessage.getSenderObjectId()==self._resultSenderObjectId and isinstance(busDataMessage.getData(), self._resultClass)):
51
+ with self._condition:
52
+ self._resultObject = busDataMessage.getData()
53
+ self._condition.notify()
pyhausbus/Templates.py ADDED
@@ -0,0 +1,140 @@
1
+ import os
2
+ from collections import defaultdict
3
+ from typing import List, Dict, Optional
4
+ from pyhausbus.de.hausbus.homeassistant.proxy.controller.params.EFirmwareId import EFirmwareId
5
+
6
+ def load_file(path: str) -> list[str]:
7
+ try:
8
+ with open(path, "r", encoding="latin1") as file:
9
+ return [line.strip() for line in file if line.strip()]
10
+ except FileNotFoundError:
11
+ print(f"Datei nicht gefunden: {path}")
12
+ return []
13
+ except Exception as e:
14
+ print(f"Fehler beim Laden der Datei {path}: {e}")
15
+ return []
16
+
17
+ class Templates:
18
+ template_root_dir = "pyhausbus/templates/"
19
+ filter_non_existing = True
20
+ _instance = None
21
+ class_mappings: Dict[str, str] = {}
22
+
23
+ def __init__(self):
24
+ self.module_types: Dict['ModuleType', str] = {}
25
+ self.feature_names: Dict['ModuleType', List['FeatureEntry']] = {}
26
+
27
+ try:
28
+ lines = load_file(self.template_root_dir + "deviceTypes.def")
29
+ for line in lines:
30
+ tokens = line.split(",")
31
+ firmware_id = EFirmwareId.value_of(tokens[0])
32
+ fcke = int(tokens[1].replace("0x", ""), 16)
33
+ name = tokens[2]
34
+ self.module_types[ModuleType(firmware_id, fcke)] = name
35
+
36
+
37
+ root_dir = self.template_root_dir
38
+ if not os.path.exists(root_dir):
39
+ root_dir = "../JavaLib/" + self.template_root_dir
40
+
41
+ for act_file in os.listdir(root_dir):
42
+ if act_file.endswith(".tpl"):
43
+ tokens = act_file.split("_")
44
+ firmware_id = EFirmwareId.value_of(tokens[0])
45
+ fcke = int(tokens[1], 16)
46
+ features = []
47
+ self.feature_names[ModuleType(firmware_id, fcke)] = features
48
+
49
+ lines = load_file(os.path.join(root_dir, act_file))
50
+ for line in lines:
51
+ if line.strip():
52
+ features.append(FeatureEntry(line))
53
+
54
+ '''for module_type, features in self.feature_names.items():
55
+ print(module_type)
56
+ for entry in features:
57
+ print(entry)
58
+
59
+ quit()'''
60
+
61
+ lines = load_file(self.template_root_dir + "classMapping.def")
62
+ if lines:
63
+ for line in lines:
64
+ tokens = line.split(",")
65
+ orig_name = tokens[0]
66
+ mapped_name = tokens[1]
67
+ Templates.class_mappings[orig_name] = mapped_name
68
+
69
+ except Exception as e:
70
+ print(f"Fehler beim Initialisieren der Templates: {e}")
71
+
72
+ @classmethod
73
+ def get_instance(cls):
74
+ if cls._instance is None:
75
+ cls._instance = Templates()
76
+ return cls._instance
77
+
78
+ def get_feature_name_from_template(self, firmware_id, fcke, class_id, instance_id) -> Optional[str]:
79
+ if fcke != -1:
80
+ ''' print("get_feature_name_from_template firmware_id = ",firmware_id," fcke = ",fcke," class_id = ",class_id," instance_id = ",instance_id)'''
81
+ features = self.get_features(firmware_id, fcke)
82
+
83
+ if features:
84
+ for entry in features:
85
+ if entry.suits(class_id, instance_id):
86
+ return entry.name
87
+ return None
88
+
89
+ def getModuleName(self, firmwareId: EFirmwareId, fcke: int):
90
+ for entry in self.module_types:
91
+ if entry.suits(firmwareId, fcke):
92
+ return entry.name
93
+ return None
94
+
95
+ def get_features(self, firmware_id, fcke) -> Optional[List['FeatureEntry']]:
96
+ for module_type, features in self.feature_names.items():
97
+ if module_type.suits(firmware_id, fcke):
98
+ return list(features)
99
+ return None
100
+
101
+
102
+ class FeatureEntry:
103
+ def __init__(self, line: str):
104
+ tokens = line.split(",")
105
+ self.class_id = int(tokens[0])
106
+ self.instance_id = int(tokens[1])
107
+ self.name = tokens[2]
108
+ self.loxone_aktor_type = tokens[3] if len(tokens) > 3 else ""
109
+
110
+ def suits(self, class_id: int, instance_id: int) -> bool:
111
+ return self.class_id == class_id and self.instance_id == instance_id
112
+
113
+ def __str__(self):
114
+ return f"FeatureEntry(classId={self.class_id}, instanceId={self.instance_id}, name='{self.name}', loxoneAktorType='{self.loxone_aktor_type}')"
115
+
116
+
117
+ class ModuleType:
118
+ def __init__(self, firmware_id, fcke):
119
+ self.firmware_id = firmware_id
120
+ self.fcke = fcke
121
+
122
+ def suits(self, check_firmware_id, check_fcke) -> bool:
123
+ if check_fcke != self.fcke:
124
+ return False
125
+ if check_firmware_id == self.firmware_id:
126
+ return True
127
+ if str(check_firmware_id).startswith("HB") and str(self.firmware_id).startswith("HB"):
128
+ return True
129
+ return False
130
+
131
+ def __eq__(self, other):
132
+ if not isinstance(other, ModuleType):
133
+ return False
134
+ return self.firmware_id == other.firmware_id and self.fcke == other.fcke
135
+
136
+ def __hash__(self):
137
+ return hash((self.firmware_id, self.fcke))
138
+
139
+ def __str__(self):
140
+ return f"ModuleType(firmwareId={self.firmware_id}, fcke={self.fcke})"
@@ -1,73 +1,73 @@
1
- import socket
2
- import threading
3
- import traceback
4
- from pyhausbus.HausBusUtils import *
5
- from pyhausbus.de.hausbus.homeassistant.proxy import *
6
- import time
7
-
8
- BROADCAST_SEND_IP = "192.255.255.255"
9
- BROADCAST_RECEIVE_IP = "0.0.0.0"
10
- BUFFER_SIZE = 10000
11
-
12
- class UdpReceiveWorker:
13
- UDP_GATEWAY = "#UDP#"
14
-
15
- def __init__(self, func):
16
- LOGGER.debug("init UdpReceiveWorker")
17
- self.func = func
18
-
19
- def startWorker(self):
20
- LOGGER.debug("starting udp receive worker")
21
- t = threading.Thread(target=self.runable)
22
- t.start()
23
-
24
- def runable(self):
25
- while(True):
26
- try:
27
- UDPServerSocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)
28
- UDPServerSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
29
- UDPServerSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
30
- UDPServerSocket.bind((BROADCAST_RECEIVE_IP, UDP_PORT))
31
- LOGGER.debug("UDP server up and listening")
32
-
33
- while(True):
34
- bytesAddressPair = UDPServerSocket.recvfrom(BUFFER_SIZE)
35
- message = bytesAddressPair[0]
36
- address = bytesAddressPair[1]
37
- LOGGER.debug("Message from Client "+format(address)+": "+bytesToDebugString(message))
38
-
39
-
40
- if (len(message) == 0):
41
- LOGGER.debug("got empty message")
42
- continue
43
-
44
- if (message[0] != 0xef | message[1] != 0xef):
45
- LOGGER.debug("invalid header")
46
- continue
47
-
48
- if (len(message) < 15):
49
- LOGGER.debug("message size " + len(message) + " is too short")
50
- continue
51
-
52
- # 2 = Kontrollbyte 3 = MessageCounter
53
- offset = [4]
54
- senderObjectId = bytesToDWord(message, offset)
55
- LOGGER.debug("senderObjectId = "+str(senderObjectId))
56
-
57
- receiverObjectId = bytesToDWord(message, offset)
58
- LOGGER.debug("receiverObjectId = "+str(receiverObjectId))
59
-
60
- dataLength = bytesToWord(message, offset)
61
- if (len(message) < 14 + dataLength):
62
- LOGGER.debug("message size " + str(len(message)) + " is too short for data length " + str(dataLength) + ": " + bytesToDebugString(message))
63
- dataLength = len(message) - 14
64
- # continue
65
- functionId = bytesToInt(message, offset)
66
- functionData = message[15:]
67
-
68
- LOGGER.debug("functionId " + str(functionId) + ", functionData " + bytesToDebugString(functionData))
69
-
70
- self.func(senderObjectId, receiverObjectId, functionId, functionData, self.UDP_GATEWAY, False)
71
- except (Exception) as err:
72
- LOGGER.error(err,exc_info=True,stack_info=True)
73
- time.sleep(5)
1
+ import socket
2
+ import threading
3
+ import traceback
4
+ from pyhausbus.HausBusUtils import *
5
+ from pyhausbus.de.hausbus.homeassistant.proxy import *
6
+ import time
7
+
8
+ BROADCAST_SEND_IP = "192.255.255.255"
9
+ BROADCAST_RECEIVE_IP = "0.0.0.0"
10
+ BUFFER_SIZE = 10000
11
+
12
+ class UdpReceiveWorker:
13
+ UDP_GATEWAY = "#UDP#"
14
+
15
+ def __init__(self, func):
16
+ LOGGER.debug("init UdpReceiveWorker")
17
+ self.func = func
18
+
19
+ def startWorker(self):
20
+ LOGGER.debug("starting udp receive worker")
21
+ t = threading.Thread(target=self.runable)
22
+ t.start()
23
+
24
+ def runable(self):
25
+ while(True):
26
+ try:
27
+ UDPServerSocket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)
28
+ UDPServerSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
29
+ UDPServerSocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
30
+ UDPServerSocket.bind((BROADCAST_RECEIVE_IP, UDP_PORT))
31
+ LOGGER.debug("UDP server up and listening")
32
+
33
+ while(True):
34
+ bytesAddressPair = UDPServerSocket.recvfrom(BUFFER_SIZE)
35
+ message = bytesAddressPair[0]
36
+ address = bytesAddressPair[1]
37
+ LOGGER.debug("Message from Client "+format(address)+": "+bytesToDebugString(message))
38
+
39
+
40
+ if (len(message) == 0):
41
+ LOGGER.debug("got empty message")
42
+ continue
43
+
44
+ if (message[0] != 0xef | message[1] != 0xef):
45
+ LOGGER.debug("invalid header")
46
+ continue
47
+
48
+ if (len(message) < 15):
49
+ LOGGER.debug("message size " + len(message) + " is too short")
50
+ continue
51
+
52
+ # 2 = Kontrollbyte 3 = MessageCounter
53
+ offset = [4]
54
+ senderObjectId = bytesToDWord(message, offset)
55
+ LOGGER.debug("senderObjectId = "+str(senderObjectId))
56
+
57
+ receiverObjectId = bytesToDWord(message, offset)
58
+ LOGGER.debug("receiverObjectId = "+str(receiverObjectId))
59
+
60
+ dataLength = bytesToWord(message, offset)
61
+ if (len(message) < 14 + dataLength):
62
+ LOGGER.debug("message size " + str(len(message)) + " is too short for data length " + str(dataLength) + ": " + bytesToDebugString(message))
63
+ dataLength = len(message) - 14
64
+ # continue
65
+ functionId = bytesToInt(message, offset)
66
+ functionData = message[15:]
67
+
68
+ LOGGER.debug("functionId " + str(functionId) + ", functionData " + bytesToDebugString(functionData))
69
+
70
+ self.func(senderObjectId, receiverObjectId, functionId, functionData, self.UDP_GATEWAY, False)
71
+ except (Exception) as err:
72
+ LOGGER.error(err,exc_info=True,stack_info=True)
73
+ time.sleep(5)