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.
- pyhausbus/ABusFeature.py +22 -22
- pyhausbus/BusDataMessage.py +23 -23
- pyhausbus/BusHandler.py +110 -110
- pyhausbus/HausBusCommand.py +83 -83
- pyhausbus/HausBusUtils.py +203 -203
- pyhausbus/HomeServer.py +86 -68
- pyhausbus/IBusDataListener.py +6 -6
- pyhausbus/Main.py +100 -100
- pyhausbus/ObjectId.py +22 -22
- pyhausbus/ResultWorker.py +53 -53
- pyhausbus/Templates.py +140 -0
- pyhausbus/UdpReceiveWorker.py +73 -73
- pyhausbus/WeekTime.py +55 -55
- pyhausbus/de/hausbus/homeassistant/proxy/AnalogEingang.py +139 -0
- pyhausbus/de/hausbus/homeassistant/proxy/Controller.py +357 -342
- pyhausbus/de/hausbus/homeassistant/proxy/Counter.py +65 -65
- pyhausbus/de/hausbus/homeassistant/proxy/CurrentReader.py +133 -121
- pyhausbus/de/hausbus/homeassistant/proxy/DaliLine.py +63 -63
- pyhausbus/de/hausbus/homeassistant/proxy/DigitalPort.py +40 -40
- pyhausbus/de/hausbus/homeassistant/proxy/Dimmer.py +91 -91
- pyhausbus/de/hausbus/homeassistant/proxy/Drucksensor.py +141 -0
- pyhausbus/de/hausbus/homeassistant/proxy/Ethernet.py +61 -61
- pyhausbus/de/hausbus/homeassistant/proxy/Feuchtesensor.py +77 -77
- pyhausbus/de/hausbus/homeassistant/proxy/Gateway.py +108 -97
- pyhausbus/de/hausbus/homeassistant/proxy/Helligkeitssensor.py +77 -77
- pyhausbus/de/hausbus/homeassistant/proxy/IRSensor.py +55 -55
- pyhausbus/de/hausbus/homeassistant/proxy/Led.py +117 -116
- pyhausbus/de/hausbus/homeassistant/proxy/LogicalButton.py +116 -116
- pyhausbus/de/hausbus/homeassistant/proxy/ModBusMaster.py +34 -34
- pyhausbus/de/hausbus/homeassistant/proxy/ModbusSlave.py +13 -13
- pyhausbus/de/hausbus/homeassistant/proxy/PCA9555.py +29 -0
- pyhausbus/de/hausbus/homeassistant/proxy/PCServer.py +67 -67
- pyhausbus/de/hausbus/homeassistant/proxy/PIDController.py +69 -64
- pyhausbus/de/hausbus/homeassistant/proxy/PT1000.py +153 -0
- pyhausbus/de/hausbus/homeassistant/proxy/PowerMeter.py +77 -77
- pyhausbus/de/hausbus/homeassistant/proxy/ProxyFactory.py +86 -12
- pyhausbus/de/hausbus/homeassistant/proxy/RFIDReader.py +78 -78
- pyhausbus/de/hausbus/homeassistant/proxy/RGBDimmer.py +63 -63
- pyhausbus/de/hausbus/homeassistant/proxy/Rollladen.py +110 -110
- pyhausbus/de/hausbus/homeassistant/proxy/Schalter.py +127 -104
- pyhausbus/de/hausbus/homeassistant/proxy/SnmpAgent.py +13 -13
- pyhausbus/de/hausbus/homeassistant/proxy/SystemTime.py +42 -42
- pyhausbus/de/hausbus/homeassistant/proxy/Taster.py +128 -118
- pyhausbus/de/hausbus/homeassistant/proxy/Taupunkt.py +77 -77
- pyhausbus/de/hausbus/homeassistant/proxy/TcpClient.py +38 -38
- pyhausbus/de/hausbus/homeassistant/proxy/Temperatursensor.py +78 -78
- pyhausbus/de/hausbus/homeassistant/proxy/Wetter.py +26 -26
- pyhausbus/de/hausbus/homeassistant/proxy/WiFi.py +60 -60
- pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/commands/GetConfiguration.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/{gateway/commands/CheckBusTiming.py → analogEingang/commands/GetStatus.py} +8 -8
- pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/commands/SetConfiguration.py +74 -0
- pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/commands/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/data/Configuration.py +74 -0
- pyhausbus/de/hausbus/homeassistant/proxy/{gateway/commands/ResetBusTiming.py → analogEingang/data/EvHigh.py} +8 -8
- pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/data/EvInRange.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/data/EvLow.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/data/EvStatus.py +33 -0
- pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/data/Status.py +25 -0
- pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/data/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/params/ELastEvent.py +28 -0
- pyhausbus/de/hausbus/homeassistant/proxy/analogEingang/params/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/EnableFeature.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GenerateRandomDeviceId.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetModuleId.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetRemoteObjects.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetRuleState.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetSystemVariable.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetTime.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetUnitGroupStatus.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/GetUnusedMemory.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/Ping.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/ReadMemory.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/ReadRules.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/Reset.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/ResetOneWireManager.py +25 -0
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetConfiguration.py +10 -10
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetDebugOptions.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetRuleState.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetSunTimes.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetSystemVariable.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetTime.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/SetUnitGroupState.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/TriggerRuleElement.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/WriteMemory.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/commands/WriteRules.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/Configuration.py +10 -10
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvConsole.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvDay.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvGroupOff.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvGroupOn.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvGroupUndefined.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvNewDeviceId.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvNight.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvResetWifi.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvStarted.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvSystemVariableChanged.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvTime.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/EvZeroCrossData.py +23 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/MemoryData.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/MemoryStatus.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/ModuleId.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/Pong.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/RemoteObjects.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/RuleState.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/RulesData.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/SystemVariable.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/Time.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/TimeDifference.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/TriggeredRule.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/UnitGroupStatus.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/data/UnusedMemory.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EErrorCode.py +17 -4
- pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EFeatureId.py +13 -4
- pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EFirmwareId.py +15 -6
- pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EIndex.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EReason.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/controller/params/ESlotType.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EStatus.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/controller/params/EType.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/controller/params/MLogicalButtonMask.py +61 -61
- pyhausbus/de/hausbus/homeassistant/proxy/controller/params/MOption.py +61 -61
- pyhausbus/de/hausbus/homeassistant/proxy/counter/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/counter/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/counter/commands/SetConfiguration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/counter/commands/SetCount.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/counter/data/Configuration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/counter/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/counter/data/EvStatus.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/counter/data/Status.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/counter/params/EErrorCode.py +13 -4
- pyhausbus/de/hausbus/homeassistant/proxy/counter/params/MMode.py +61 -61
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/ClearSignalCount.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/DecSignalCount.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/GetCurrent.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/GetPower.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/GetSignalCount.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/IncSignalCount.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/SetConfiguration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/commands/SetSignalCount.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/Configuration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/Current.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/EvCurrent.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/EvDebug.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/EvError.py +26 -0
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/EvInterrupt.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/EvSignal.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/Power.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/data/SignalCount.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/params/EErrorCode.py +27 -0
- pyhausbus/de/hausbus/homeassistant/proxy/currentReader/params/MConfig.py +13 -13
- pyhausbus/de/hausbus/homeassistant/proxy/daliLine/commands/AllOff.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/daliLine/commands/AllOn.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/daliLine/commands/GetConfiguration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/daliLine/commands/SendCommand.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/daliLine/commands/SetConfiguration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/daliLine/data/Configuration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/daliLine/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/daliLine/data/Status.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/daliLine/params/EErrorCode.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/digitalPort/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/digitalPort/commands/SetConfiguration.py +11 -11
- pyhausbus/de/hausbus/homeassistant/proxy/digitalPort/data/Configuration.py +28 -28
- pyhausbus/de/hausbus/homeassistant/proxy/digitalPort/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/digitalPort/params/EErrorCode.py +13 -4
- pyhausbus/de/hausbus/homeassistant/proxy/digitalPort/params/EPin.py +13 -4
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/commands/SetBrightness.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/commands/SetConfiguration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/commands/Start.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/commands/Stop.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/data/Configuration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/data/EvOff.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/data/EvOn.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/data/EvStart.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/data/Status.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/params/EDirection.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/params/EErrorCode.py +14 -4
- pyhausbus/de/hausbus/homeassistant/proxy/dimmer/params/EMode.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/commands/GetConfiguration.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/commands/GetStatus.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/commands/SetConfiguration.py +74 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/commands/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/Configuration.py +74 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/EvHigh.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/EvInRange.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/EvLow.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/EvStatus.py +33 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/Status.py +33 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/data/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/params/ELastEvent.py +28 -0
- pyhausbus/de/hausbus/homeassistant/proxy/drucksensor/params/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/ethernet/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/ethernet/commands/GetCurrentIp.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/ethernet/commands/SetConfiguration.py +10 -10
- pyhausbus/de/hausbus/homeassistant/proxy/ethernet/commands/WakeUpDevice.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/ethernet/data/Configuration.py +10 -10
- pyhausbus/de/hausbus/homeassistant/proxy/ethernet/data/CurrentIp.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/ethernet/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/ethernet/params/EErrorCode.py +13 -4
- pyhausbus/de/hausbus/homeassistant/proxy/ethernet/params/MOptions.py +61 -61
- pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/commands/SetConfiguration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/Configuration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/EvConfortable.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/EvDry.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/EvStatus.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/EvWet.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/data/Status.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/params/EErrorCode.py +14 -4
- pyhausbus/de/hausbus/homeassistant/proxy/feuchtesensor/params/ELastEvent.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/commands/GetConnectedDevices.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/commands/{GetBusTiming.py → GetMinIdleTime.py} +8 -8
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/commands/SetConfiguration.py +10 -10
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/commands/SetMinIdleTime.py +25 -0
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/commands/SetPreferLoxone.py +26 -0
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/data/Configuration.py +10 -10
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/data/ConnectedDevices.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/data/EvGatewayLoad.py +38 -17
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/data/MinIdleTime.py +25 -0
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/params/EErrorCode.py +14 -4
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/params/EValue.py +27 -0
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/params/MOptions.py +65 -65
- pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/commands/SetConfiguration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/Configuration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/EvBright.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/EvDark.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/EvLight.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/EvStatus.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/data/Status.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/params/EErrorCode.py +14 -4
- pyhausbus/de/hausbus/homeassistant/proxy/helligkeitssensor/params/ELastEvent.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/commands/Off.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/commands/On.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/data/EvClicked.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/data/EvHoldEnd.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/data/EvHoldStart.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/data/EvOff.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/iRSensor/data/EvOn.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/led/commands/Blink.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/led/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/led/commands/GetMinBrightness.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/led/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/led/commands/Off.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/led/commands/On.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/led/commands/SetConfiguration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/led/commands/SetMinBrightness.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/led/data/Configuration.py +10 -10
- pyhausbus/de/hausbus/homeassistant/proxy/led/data/EvBlink.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/led/data/EvCmdDelay.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/led/data/EvError.py +10 -9
- pyhausbus/de/hausbus/homeassistant/proxy/led/data/EvOff.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/led/data/EvOn.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/led/data/MinBrightness.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/led/data/Status.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/led/params/EErrorCode.py +26 -0
- pyhausbus/de/hausbus/homeassistant/proxy/led/params/MOptions.py +61 -61
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/Blink.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/GetMinBrightness.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/Off.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/On.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/SetButtonConfiguration.py +10 -10
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/SetConfiguration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/SetLedConfiguration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/commands/SetMinBrightness.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/data/Configuration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/data/EvBlink.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/data/EvOff.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/data/EvOn.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/data/Status.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/params/EErrorCode.py +14 -4
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/params/EStatus.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/params/MEventMask.py +65 -65
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/params/MOptionMask.py +61 -61
- pyhausbus/de/hausbus/homeassistant/proxy/logicalButton/params/MOptions.py +61 -61
- pyhausbus/de/hausbus/homeassistant/proxy/modBusMaster/commands/GetConfiguration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/modBusMaster/commands/SetConfiguration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/modBusMaster/data/Configuration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/modBusMaster/params/ESensorType.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/pCA9555/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pCA9555/data/EvError.py +26 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pCA9555/data/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pCA9555/params/EErrorCode.py +28 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pCA9555/params/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/Exec.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/Quit.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/ReloadUserPlugin.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/Restart.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/SetVariable.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/Shutdown.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/pCServer/commands/Standby.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/pCServer/data/EvOffline.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/pCServer/data/EvOnline.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/pIDController/commands/Enable.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/pIDController/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/pIDController/commands/SetConfiguration.py +18 -10
- pyhausbus/de/hausbus/homeassistant/proxy/pIDController/commands/SetTargetValue.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/pIDController/data/Configuration.py +18 -10
- pyhausbus/de/hausbus/homeassistant/proxy/pIDController/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/pIDController/data/EvOff.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/pIDController/data/EvOn.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/pIDController/params/EEnable.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/pIDController/params/EErrorCode.py +15 -4
- pyhausbus/de/hausbus/homeassistant/proxy/pIDController/params/MOptions.py +96 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/commands/GetConfiguration.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/commands/GetStatus.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/commands/SetConfiguration.py +74 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/commands/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/Configuration.py +74 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/EvError.py +26 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/EvHigh.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/EvInRange.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/EvLow.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/EvStatus.py +33 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/Status.py +33 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/data/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/params/EErrorCode.py +40 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/params/ELastEvent.py +28 -0
- pyhausbus/de/hausbus/homeassistant/proxy/pT1000/params/_init_.py +1 -0
- pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/commands/SetConfiguration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/Configuration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/EvHighPower.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/EvLowPower.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/EvMediumPower.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/EvStatus.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/data/Status.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/params/EErrorCode.py +14 -4
- pyhausbus/de/hausbus/homeassistant/proxy/powerMeter/params/ELastEvent.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/commands/GetLastData.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/commands/GetState.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/commands/SetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/data/Configuration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/data/EvConnected.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/data/EvData.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/data/LastData.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/data/State.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/params/EErrorCode.py +13 -4
- pyhausbus/de/hausbus/homeassistant/proxy/rFIDReader/params/EState.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/commands/SetColor.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/commands/SetConfiguration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/data/Configuration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/data/EvOff.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/data/EvOn.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/rGBDimmer/data/Status.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/MoveToPosition.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/SetConfiguration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/SetPosition.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/Start.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/commands/Stop.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/Configuration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/EvClosed.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/EvNewMainState.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/EvNewSubState.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/EvOpen.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/EvStart.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/data/Status.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/params/EDirection.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/params/EErrorCode.py +14 -4
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/params/ENewState.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/rollladen/params/MOptions.py +65 -65
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/Off.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/On.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/SetConfiguration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/Toggle.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/commands/ToggleByDuty.py +32 -0
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/Configuration.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/EvCmdDelay.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/EvDisabled.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/EvOff.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/EvOn.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/EvToggle.py +31 -7
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/data/Status.py +26 -12
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/params/EErrorCode.py +14 -4
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/params/EState.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/schalter/params/MOptions.py +61 -61
- pyhausbus/de/hausbus/homeassistant/proxy/systemTime/commands/GetTime.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/systemTime/commands/SetTime.py +10 -10
- pyhausbus/de/hausbus/homeassistant/proxy/systemTime/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/systemTime/data/Time.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/systemTime/params/EDate.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/systemTime/params/EErrorCode.py +13 -4
- pyhausbus/de/hausbus/homeassistant/proxy/systemTime/params/EMonth.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/systemTime/params/EWeekDay.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/taster/commands/EnableEvents.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/taster/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/taster/commands/GetEnabled.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/taster/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/taster/commands/SetConfiguration.py +10 -10
- pyhausbus/de/hausbus/homeassistant/proxy/taster/commands/TriggerStatusEvent.py +15 -0
- pyhausbus/de/hausbus/homeassistant/proxy/taster/data/Configuration.py +10 -10
- pyhausbus/de/hausbus/homeassistant/proxy/taster/data/Enabled.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvClicked.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvCovered.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvDoubleClick.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvEnabled.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvError.py +10 -9
- pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvFree.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvHoldEnd.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/taster/data/EvHoldStart.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/taster/data/Status.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/taster/params/EEnable.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/taster/params/EErrorCode.py +27 -0
- pyhausbus/de/hausbus/homeassistant/proxy/taster/params/EState.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/taster/params/MEventMask.py +65 -65
- pyhausbus/de/hausbus/homeassistant/proxy/taster/params/MOptionMask.py +61 -61
- pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/commands/SetConfiguration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/Configuration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/EvAbove.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/EvInRange.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/EvLow.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/EvStatus.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/data/Status.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/params/EErrorCode.py +14 -4
- pyhausbus/de/hausbus/homeassistant/proxy/taupunkt/params/ELastEvent.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/tcpClient/commands/AnnounceServer.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/tcpClient/commands/GetCurrentIp.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/tcpClient/data/CurrentIp.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/tcpClient/data/EvWhoIsServer.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/commands/GetStatus.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/commands/SetConfiguration.py +8 -8
- pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/Configuration.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/EvCold.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/EvHot.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/EvStatus.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/EvWarm.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/data/Status.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/params/EErrorCode.py +14 -4
- pyhausbus/de/hausbus/homeassistant/proxy/temperatursensor/params/ELastEvent.py +12 -4
- pyhausbus/de/hausbus/homeassistant/proxy/wetter/commands/GetWeather.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/wetter/data/Weather.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/wiFi/commands/GetConfiguration.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/wiFi/commands/GetCurrentIp.py +6 -6
- pyhausbus/de/hausbus/homeassistant/proxy/wiFi/commands/SetConfiguration.py +8 -8
- pyhausbus/de/hausbus/homeassistant/proxy/wiFi/commands/WakeUpDevice.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/wiFi/data/Configuration.py +8 -8
- pyhausbus/de/hausbus/homeassistant/proxy/wiFi/data/CurrentIp.py +7 -7
- pyhausbus/de/hausbus/homeassistant/proxy/wiFi/data/EvError.py +9 -9
- pyhausbus/de/hausbus/homeassistant/proxy/wiFi/params/EErrorCode.py +14 -4
- pyhausbus/templates/AR8_30_8-fach-Relaismodul.tpl +18 -0
- pyhausbus/templates/ESP32C3_69_WLAN-Steckdose.tpl +5 -0
- pyhausbus/templates/ESP32_00_4-fach-0-10V-Dimmer.tpl +14 -0
- pyhausbus/templates/ESP32_01_4-fach-1-10V-Dimmer.tpl +10 -0
- pyhausbus/templates/ESP32_04_4-fach-Relaismodul.tpl +12 -0
- pyhausbus/templates/ESP32_08_8-fach-Relaismodul.tpl +18 -0
- pyhausbus/templates/ESP32_0A_12-fach-Relaismodul.tpl +22 -0
- pyhausbus/templates/ESP32_0C_16-fach-Relaismodul.tpl +26 -0
- pyhausbus/templates/ESP32_0D_8-fach-Motormodul.tpl +18 -0
- pyhausbus/templates/ESP32_10_22-fach-UP-IO.tpl +29 -0
- pyhausbus/templates/ESP32_18_6-fach-Taster.tpl +33 -0
- pyhausbus/templates/ESP32_19_4-fach-Taster.tpl +29 -0
- pyhausbus/templates/ESP32_1A_2-fach-Taster.tpl +25 -0
- pyhausbus/templates/ESP32_1B_1-fach-Taster.tpl +23 -0
- pyhausbus/templates/ESP32_1C_6-fach-Taster.tpl +29 -0
- pyhausbus/templates/ESP32_20_32-fach-IO.tpl +39 -0
- pyhausbus/templates/ESP32_28_8-fach-Dimmer.tpl +18 -0
- pyhausbus/templates/ESP32_30_2-fach-RGB-Dimmer.tpl +17 -0
- pyhausbus/templates/ESP32_31_2-fach-RGB-Dimmer.tpl +17 -0
- pyhausbus/templates/ESP32_65_LAN-RS485-Brueckenmodul.tpl +1 -0
- pyhausbus/templates/ESP32_99_LocalBroadcastDevice.tpl +1 -0
- pyhausbus/templates/FckmMapping.def +1 -0
- pyhausbus/templates/HBC_00_4-fach-0-10V-Dimmer.tpl +10 -0
- pyhausbus/templates/HBC_01_4-fach-1-10V-Dimmer.tpl +10 -0
- pyhausbus/templates/HBC_08_8-fach-Relaismodul.tpl +18 -0
- pyhausbus/templates/HBC_0C_16-fach-Relaismodul.tpl +26 -0
- pyhausbus/templates/HBC_10_24-fach-UP-IO.tpl +31 -0
- pyhausbus/templates/HBC_18_6-fach-Taster.tpl +34 -0
- pyhausbus/templates/HBC_19_4-fach-Taster.tpl +28 -0
- pyhausbus/templates/HBC_1A_2-fach-Taster.tpl +24 -0
- pyhausbus/templates/HBC_1B_1-fach-Taster.tpl +22 -0
- pyhausbus/templates/HBC_1C_6-fach-Taster.tpl +33 -0
- pyhausbus/templates/HBC_1D_4-fach-Taster.tpl +29 -0
- pyhausbus/templates/HBC_1E_2-fach-Taster.tpl +29 -0
- pyhausbus/templates/HBC_1F_1-fach-Taster.tpl +27 -0
- pyhausbus/templates/HBC_20_32-fach-IO.tpl +39 -0
- pyhausbus/templates/HBC_29_8-fach-Dimmer.tpl +18 -0
- pyhausbus/templates/HBC_30_2-fach-RGB-Dimmer.tpl +17 -0
- pyhausbus/templates/LoxoneHausBusMapping.txt +80 -0
- pyhausbus/templates/LoxoneModuleMapping.txt +11 -0
- pyhausbus/templates/SD485_1E_6-fach-Taster.tpl +30 -0
- pyhausbus/templates/SD485_28_24-fach-UP-IO.tpl +31 -0
- pyhausbus/templates/SD485_29_1-fach-Taster.tpl +24 -0
- pyhausbus/templates/SD485_2A_2-fach-Taster.tpl +26 -0
- pyhausbus/templates/SD485_2C_4-fach-Taster.tpl +26 -0
- pyhausbus/templates/SD485_2E_6-fach-Taster.tpl +30 -0
- pyhausbus/templates/SD485_2F_6-fach-Taster.tpl +30 -0
- pyhausbus/templates/SD6_14_Multitaster.tpl +26 -0
- pyhausbus/templates/SD6_1E_Multitaster.tpl +26 -0
- pyhausbus/templates/classMapping.def +9 -0
- pyhausbus/templates/deviceTypes.def +47 -0
- {pyhausbus-1.0.1.dist-info → pyhausbus-1.0.3.dist-info}/LICENSE +21 -21
- {pyhausbus-1.0.1.dist-info → pyhausbus-1.0.3.dist-info}/METADATA +2 -1
- pyhausbus-1.0.3.dist-info/RECORD +639 -0
- {pyhausbus-1.0.1.dist-info → pyhausbus-1.0.3.dist-info}/WHEEL +1 -1
- pyhausbus/HausBusDevice.py +0 -70
- pyhausbus/de/hausbus/homeassistant/proxy/gateway/data/BusTiming.py +0 -25
- 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})"
|
pyhausbus/UdpReceiveWorker.py
CHANGED
@@ -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)
|