homebridge-plc v2.1.0

homebridge-plc
Homebridge plugin for SIEMENS Step7 and compatible PLCs
- Now compatible with the beta version of Homebridge 2.0.0
- Now compatible with Node.js v22 and the latest Docker images of Homebridge
SIEMENS S7 PLC plugin for Homebridge
- This plugin uses snap7 via node-snap7, making it compatible with the following PLCs:
- S7 300
- S7 400
- S7 1200 (see Snap7 notes)
- S7 1500 (see Snap7 notes)
- Compatible PLCs such as YASKAWA / VIPA:
- SLIO e.g.
- 013-CCF0R00
- 014-CEF0R01
- 015-CEFNR00
- 015-CEFPR01
- 017-CEFPR00
- MICRO PLC
- 300S+
- SLIO e.g.
- The plugin uses PG-Communication (programming device communication) to connect to the PLC
- Optionally, OP-Communication (HMI or panel communication) can also be used to connect to the PLC
- NOTE: You may need to increase the connection resources for PG-Communication or OP-Communication within Siemens Simatic Manager or Siemens TIA Portal. The default value is 1, which may lead to connection problems when using the programming tool or panel and this plugin simultaneously.
- Tested with S7-300, S7-1200, and S7-300 compatible PLCs from YASKAWA and VIPA
- Implementation is based on the documentation of the Homebridge API
- Supports polling of the PLC from the homebridge-plc plugin with a per-accessory defined interval
- Supports push from the PLC to the homebridge-plc plugin via HTTP PUT/GET
- Supports control of PLC accessories via HTTP PUT/GET
- Supported Accessories:
- LightBulb as
PLC_LightBulb - Outlet as
PLC_Outlet - Switch as
PLC_Switch - Temperature Sensor as
PLC_TemperatureSensor - Humidity Sensor as
PLC_HumiditySensor - Thermostat as
PLC_Thermostat - Humidifier/Dehumidifier as
PLC_HumidifierDehumidifier - Shutter as
PLC_WindowCovering - Window as
PLC_Window - Door as
PLC_Door - Occupancy Sensor as
PLC_OccupancySensor - Motion Sensor as
PLC_MotionSensor - Contact Sensor as
PLC_ContactSensor - Leak Sensor as
PLC_LeakSensor - Faucet as
PLC_Faucet - Valve as
PLC_Valve - Security System as
PLC_SecuritySystem - Push button attached to PLC as
PLC_StatelessProgrammableSwitch - Doorbell push button attached to PLC as
PLC_Doorbell - Lock mechanism as
PLC_LockMechanism - Boolean lock mechanism as
PLC_LockMechanismBool - Garage door as
PLC_GarageDoorOpener - Smoke Sensor as
PLC_SmokeSensor - Fan as
PLC_Fan - Light Sensor as
PLC_LightSensor - Air Purifier as
PLC_AirPurifier - Filter Maintenance as
PLC_FilterMaintenance - CarbonDioxideSensor as
PLC_CarbonDioxideSensor - CarbonMonoxideSensor as
PLC_CarbonMonoxideSensor
- LightBulb as
Installation
Basic Installation
- Install this plugin using:
sudo npm install -g homebridge-plc - Edit
config.jsonto add the PLC platform and its accessories. - Run Homebridge
- Install this plugin using:
Install via Homebridge UI (recommended)
- Search for
plcon the plugin screen of Homebridge UI. - Find
homebridge-plc - Click install.
- Edit configuration
- Search for
Homebridge configuration
Platform
The plugin is configured as a single platform by defining a PLC platform.
Parameters:
ip: the IPv4 address of the PLCrack: the rack number of the PLC (typically0)slot: the slot number of the PLC (S7 300/400 typically2, S7 1200/1500 typically1)communicationOP: (optional) when set totrue, OP-Communication is used instead of PG-Communication. Default isfalseto use PG-Communication.enablePolling: (optional) when set totrue, a background task is executed every second to enable polling for the accessories. Default isfalse.defaultPollInterval: (optional) default polling interval for all accessories in seconds. Default value is10seconds.distributePolling: (optional) when set totrue, the polling of the accessories does not start at the same time to distribute the PLC load for the queries. Default isfalse.enablePush: (optional) when set totrue, the configuredportis opened to push updates of values from the PLC to the plugin. Default isfalse.enableControl: (optional) when set totrue, the configuredportis opened to control accessories by HTTP request. Default isfalse.port: (optional) port for HTTP server to handle incoming HTTP requests for push and control functionality. Default port is8888.- Experimental features
forward: (optional) there is a limit of a maximum of 149 supported accessories by Homebridge. To overcome this limit, you can create a second instance of Homebridge running homebridge-plc and forward all push and control with no matchingdbto the other instance. Set the destination address of the second instance e.g.http:\\127.0.0.1:8889.mirror: (optional) There are environments where it could make sense to share the same accessories on two Homebridge instances to allow pairing with another Home with Apple Home App or Home Assistant. This option mirrors all values read from the PLC by this instance to a second instance. It also forwards all push requests to the second instance. The optionenablePushhas to be enabled on the second instance. Set the destination address of the second instance e.g.http:\\192.168.1.11:8888.
Accessories
- In the platform, you can declare different types of accessories.
- The notation (push support) identifies that the parameter supports direct updates from the PLC.
- The notation (control support) identifies parameters that can be controlled by HTTP request.
LightBulb as PLC_LightBulb
Normal light. See also simple PLC example for single bit and separate bits.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.get_On: (push support) offset and bit to get the current status S7 typeBoole.g.55.0forDB4DBX55.0- Single Bit for on/off:
set_On: (control support) offset and bit to set on/off S7 typeBoole.g.55.0forDB4DBX55.0(could be the same as get_On)
- Separate Bits for on/off:
set_On: (control support) offset and bit to set on S7 typeBoolPLC has to set to 0 e.g.55.1forDB4DBX55.1set_Off: offset and bit to set off S7 typeBoolPLC has to set to 0 e.g.55.2forDB4DBX55.2
get_Brightness: (optional) (push support) get brightness value S7 typeBytee.g.56forDB4DBB56set_Brightness: (optional but required whenget_Brightnessis defined) (control support) set brightness value S7 typeBytee.g.57forDB4DBB57- Brightness range definitions (optional)
minBrightnessValuedefault value: 0maxBrightnessValuedefault value: 100minBrightnessStepdefault value: 1
Outlet as PLC_Outlet
Outlet, possible to show also as ventilator or light.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.get_On: (push support) offset and bit to get the current status S7 typeBoole.g.55.0forDB4DBX55.0- Single Bit for on/off:
set_On: (control support) offset and bit to set on/off S7 typeBoole.g.55.0forDB4DBX55.0(could be the same as get_On)
- Separate Bits for on/off:
set_On_Set: (control support) offset and bit to set on S7 typeBoolPLC has to set to 0 e.g.55.1forDB4DBX55.1set_On_Reset: offset and bit to set off S7 typeBoolPLC has to set to 0 e.g.55.2forDB4DBX55.2
Switch as PLC_Switch
Switch, possible to show also as ventilator or light.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.get_On: (push support) offset and bit to get the current status S7 typeBoole.g.55.0forDB4DBX55.0- Single Bit for on/off:
set_On: (control support) offset and bit to set on/off S7 typeBoole.g.55.0forDB4DBX55.0(could be the same as get_On)
- Separate Bits for on/off:
set_On: (control support) offset and bit to set on S7 typeBoolPLC has to set to 0 e.g.55.1forDB4DBX55.1set_Off: offset and bit to set off S7 typeBoolPLC has to set to 0 e.g.55.2forDB4DBX55.2
Temperature Sensor as PLC_TemperatureSensor
Normal temperature sensor.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.- Current Temperature:
get_CurrentTemperature: (push support) offset to get current temperature S7 typeReale.g.55forDB4DBD55- Temperature range (optional)
minTemperatureValuedefault value: -270maxTemperatureValuedefault value: 100minTemperatureStepdefault value: 0.1
get_StatusTampered: (optional) (push support) offset and bit for tamper detection S7 typeBool(e.g.,55.2forDB4DBX55.2) (Home app shows this only within the options)false: oktrue: tampered
get_StatusLowBattery: (optional) (push support) offset and bit for battery low detection S7 typeBool(e.g.,55.3forDB4DBX55.3) (Home app does not inform with push notification)false: oktrue: battery low
Humidity Sensor as PLC_HumiditySensor
Normal humidity sensor.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.- Current Humidity:
get_CurrentRelativeHumidity: (push support) offset to get current humidity S7 typeReale.g.55forDB4DBD55- Humidity range (optional)
minHumidityValuedefault value: 0maxHumidityValuedefault value: 100minHumidityStepdefault value: 1
get_StatusTampered: (optional) (push support) offset and bit for tamper detection S7 typeBool(e.g.,55.2forDB4DBX55.2) (Home app shows this only within the options)false: oktrue: tampered
get_StatusLowBattery: (optional) (push support) offset and bit for battery low detection S7 typeBool(e.g.,55.3forDB4DBX55.3) (Home app does not inform with push notification)false: oktrue: battery low
Thermostat as PLC_Thermostat
Temperature/humidity sensor with regulation.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.- Current Temperature:
get_CurrentTemperature: (push support) offset to get current temperature S7 typeReale.g.0forDB4DBD0- Temperature range (optional)
minTemperatureValuedefault value: -270maxTemperatureValuedefault value: 100minTemperatureStepdefault value: 0.1
- Target Temperature:
get_TargetTemperature: (push support) offset to get target temperature S7 typeReale.g.4forDB4DBD4set_TargetTemperature: (control support) offset to set target temperature S7 typeReale.g.4forDB4DBD4(can have the same value as get_TargetTemperature)- Target temperature range definitions (optional)
minTargetTemperatureValuedefault value: 10maxTargetTemperatureValuedefault value: 38minTargetTemperatureStepdefault value: 0.1 Note: lower values may not be supported by Homekit
- Current Humidity:
get_CurrentRelativeHumidity: (optional) (push support) offset to get current humidity S7 typeReale.g.0forDB4DBD0
- Humidity range (optional)
minHumidityValuedefault value: 0maxHumidityValuedefault value: 100minHumidityStepdefault value: 1
- Target Humidity:
get_TargetRelativeHumidity: (optional) (push support) offset to get target humidity S7 typeReale.g.4forDB4DBD4set_TargetRelativeHumidity: (optional) (control support) offset to set target humidity S7 typeReale.g.4forDB4DBD4(can have the same value as get_TargetRelativeHumidity)- Target relative humidity range definitions (optional)
minTargetHumidityValuedefault value: 0maxTargetHumidityValuedefault value: 100minTargetHumidityStepdefault value: 1
- Current State:
get_CurrentHeatingCoolingState: (optional) (push support) offset to get current heating/cooling state S7 typeBytee.g.8forDB4DBB8. When not defined, fixed1: heating is used.0: inactive (shown as green in home app)1: heating (shown as orange in home app)2: cooling (shown as blue in home app)
mapGetCurrentHeatingCoolingState: (optional) define mapping array forget_CurrentHeatingCoolingState. The PLC value is used as an index into the table. e.g.[0, 2]which maps the PLC value0->0 1->2when the PLC supports only two states with0:inactiveand1:cooling.
- Target State:
get_TargetHeatingCoolingState: (optional) (push support) offset to get target heating/cooling state. S7 typeBytee.g.9forDB4DBB9. When not defined, fixed3: automatic is used.0: off1: heat2: cool3: automatic
mapGetTargetHeatingCoolingState: (optional) define mapping array forget_TargetHeatingCoolingState. The PLC value is used as an index into the table. e.g.[0, 3]which maps the PLC value0->0 1->3when the PLC supports only two states with0:offand1:automatic.set_TargetHeatingCoolingState: (optional) (control support) offset to set target heating/cooling state. Can be identical withget_TargetHeatingCoolingState. Has to be defined whenget_TargetHeatingCoolingStateis defined. When not defined, writes changes are ignored. S7 typeBytee.g.9forDB4DBB9.0: off1: heat2: cool3: automatic
mapSetTargetHeatingCoolingState: (optional) define mapping array forset_TargetHeatingCoolingState. The home app value is used as an index into the table. e.g.[0, 1, 0, 3]which maps the PLC value0->0 1->1 2->0, 3->3when the PLC supports only two states with0:offand1:heatand3:automatic. The state cool is mapped to off.
get_StatusTampered: (optional) (push support) offset and bit for tamper detection S7 typeBool(e.g.,55.2forDB4DBX55.2) (Home app shows this only within the options)false: oktrue: tampered
get_StatusLowBattery: (optional) (push support) offset and bit for battery low detection S7 typeBool(e.g.,55.3forDB4DBX55.3) (Home app does not inform with push notification)false: oktrue: battery low
Humidifier/Dehumidifier as PLC_HumidifierDehumidifier
Humidifier and/or Dehumidifier.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.get_CurrentRelativeHumidity: (push support) offset to get current humidity S7 typeReale.g.55forDB4DBD55get_Active: (push support) offset and bit to get the current status S7 typeBoole.g.55.0forDB4DBX55.0- Single Bit for on/off:
set_Active: (control support) offset and bit to set on/off S7 typeBoole.g.55.0forDB4DBX55.0(could be the same as get_Active)
- Separate Bits for on/off:
set_Active_Set: (control support) offset and bit to set on S7 typeBoolPLC has to set to 0 e.g.55.1forDB4DBX55.1set_Active_Reset: offset and bit to set off S7 typeBoolPLC has to set to 0 e.g.55.2forDB4DBX55.2
- Current State:
get_CurrentHumidifierDehumidifierState: (optional) (push support) offset to get current state. Default value1:idle. S7 typeBytee.g.55forDB4DBD550: inactive1: idle2: humidifying3: dehumidifying
mapGetCurrentHumidifierDehumidifierState: (optional) define mapping array forget_CurrentHumidifierDehumidifierState. The PLC value is used as an index into the table. e.g.[1, 3]which maps the PLC value0->1 1->3when the PLC supports only two states with0:idleand1:dehumidifying.
- Target State:
default_TargetHumidifierDehumidifierState: (optional) defines an alternative value that's returned whenget_TargetHumidifierDehumidifierStateis not defined. Default value0:auto0: auto (humidifier or dehumidifier)1: humidifier2: dehumidifier
get_TargetHumidifierDehumidifierState: (optional) (push support) offset to get current target state S7 typeBytee.g.55forDB4DBD550: auto (humidifier or dehumidifier)1: humidifier2: dehumidifier
set_TargetHumidifierDehumidifierState: (optional) (control support) offset to set current target state. Needs to be defined whenget_TargetHumidifierDehumidifierStateis set. S7 typeBytee.g.55forDB4DBD550: auto (humidifier or dehumidifier)1: humidifier2: dehumidifier
mapGetTargetHumidifierDehumidifierState: (optional) define mapping array forget_TargetHumidifierDehumidifierState. The PLC value is used as an index into the table. e.g.[2,1]which maps the PLC value0->1 1->2when the PLC supports only one state with0:dehumidifier 1:humidifier.mapSetTargetHumidifierDehumidifierState: (optional) define mapping array forset_TargetHumidifierDehumidifierState. The home app value is used as an index into the table. e.g.[2, 2, 2]writes always the value 2 to the PLC regardless of what's set in the home app.
- Rotation Speed:
- Byte:
get_RotationSpeedByte: (optional) (push support) offset to get rotation speed state S7 typeBytee.g.8forDB4DBB8.set_RotationSpeedByte: (optional but required whenget_RotationSpeedByteis defined) (push support) offset to get set speed state. S7 typeBytee.g.9forDB4DBB9.
- Real:
get_RotationSpeed: (optional) (push support) offset to get rotation speed state S7 typeReale.g.8forDB4DBB8.set_RotationSpeed: (optional but required whenget_RotationSpeedis defined) (push support) offset to get set speed state. S7 typeReale.g.9forDB4DBB9.
- Byte:
- Swing Mode:
get_SwingMode: (optional) (push support) offset to get swing mode. S7 typeBytee.g.8forDB4DBB8.0: swing disabled1: swing enabled
set_SwingMode: (optional) (control support) offset to set swing mode. S7 typeBytee.g.9forDB4DBB9.0: swing disabled1: swing enabled
- Water Level:
get_WaterLevel: (optional) (push support) offset to water level S7 typeReale.g.8forDB4DBD8.
get_StatusTampered: (optional) (push support) offset and bit for tamper detection S7 typeBool(e.g.,55.2forDB4DBX55.2) (Home app shows this only within the options)false: oktrue: tampered
get_StatusLowBattery: (optional) (push support) offset and bit for battery low detection S7 typeBool(e.g.,55.3forDB4DBX55.3) (Home app does not inform with push notification)false: oktrue: battery low
Shutters as PLC_WindowCovering, windows as PLC_Window, and doors as PLC_Door
Motor-driven blinds, windows, and doors. Supports also manually driven blinds, windows, and doors to show just the current position in percent. Note: If your sensor shows only open/close, you may also have a look at PLC_ContactSensor.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4adaptivePolling: (optional) when set totrue, the current position will be polled until the target position is reached. Polling starts with the set target position from the home app. This allows showing the shutter as opening... or closing... in the home app during movement.adaptivePollingInterval: (optional) poll interval in seconds during high-frequency polling. Default value is1second.forceCurrentPosition: (optional) when set totrue, the position set byset_TargetPositionis directly used as the current position. By this, it seems in the home app as the target position was directly reached. This is recommended when not usingadaptivePollingor pushing the value from the PLC.enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.- Current position:
get_CurrentPosition: (push support) offset to get current position0:closed 100:openS7 typeBytee.g.0forDB4DBB00: closedin between: partly open100: open
invertPosition: (optional) set totrueto invert the values of current and target position from0:closed 100:opento100:closed 0:openmapGetCurrentPosition: (optional) define mapping array for get position. The PLC value is used as an index into the table. e.g.[0, 25, 100]which maps the PLC value0->0 1->25 2->100this is useful e.g. for window open state.
- Target position:
- If one of the (optional) target position settings is specified, all are needed. If not specified, it is not movable and sticks to the current position.
get_TargetPosition: (optional) (push support) offset to get target position S7 typeBytee.g.1forDB4DBB1(can have the same value as set_TargetPosition)0: closedin between: partly open100: open
set_TargetPosition: (optional) (control support) offset to set current position0:closed 100:openS7 typeBytee.g.2forDB4DBB2(can have the same value as get_TargetPosition)0: closedin between: partly open100: open
get_PositionState: (optional) (push support) offset to current movement state. If not defined, fixed2is returned. S7 typeBytee.g.3forDB4DBB30: down1: up2: stop
set_HoldPosition: (optional) (control support) offset and bit to set to 1 to stop movement. (Seems not to be used by HomeApp) When not defined, writes will be ignored. S7 typeBoolPLC has to set to 0 e.g.55.1forDB4DBX55.1
Occupancy Sensor as PLC_OccupancySensor
Presence detection sensor.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4invertOccupancy: (optional) set totrueto invert the bit tofalse:presenceandtrue:no-presence.enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.get_OccupancyDetected: (push support) offset and bit to get the current status S7 typeBoole.g.55.0forDB4DBX55.0false: no occupancytrue: occupancy detected
get_StatusTampered: (optional) (push support) offset and bit for tamper detection S7 typeBool(e.g.,55.2forDB4DBX55.2) (Home app shows this only within the options)false: oktrue: tampered
get_StatusLowBattery: (optional) (push support) offset and bit for battery low detection S7 typeBool(e.g.,55.3forDB4DBX55.3) (Home app does not inform with push notification)false: oktrue: battery low
Motion Sensor as PLC_MotionSensor
Movement detection sensor.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4invertMotionDetected: (optional) set totrueto invert the bit tofalse:motionandtrue:no-motion.enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.get_MotionDetected: (push support) offset and bit to get the current status S7 typeBoole.g.55.0forDB4DBX55.0false: no motiontrue: motion detected
get_StatusTampered: (optional) (push support) offset and bit for tamper detection S7 typeBool(e.g.,55.2forDB4DBX55.2) (Home app shows this only within the options)false: oktrue: tampered
get_StatusLowBattery: (optional) (push support) offset and bit for battery low detection S7 typeBool(e.g.,55.3forDB4DBX55.3) (Home app does not inform with push notification)false: oktrue: battery low
Contact Sensor as PLC_ContactSensor
Generic contact sensor. The home app allows displaying as window, door, blind/shutter, garage door, or contact sensor.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4invertContactSensorState: (optional) set totrueto invert the bit tofalse:closedandtrue:open.enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.get_ContactSensorState: (push support) offset and bit to get the current status S7 typeBoole.g.55.0forDB4DBX55.0false: closedtrue: open
get_StatusTampered: (optional) (push support) offset and bit for tamper detection S7 typeBool(e.g.,55.2forDB4DBX55.2) (Home app shows this only within the options)false: oktrue: tampered
get_StatusLowBattery: (optional) (push support) offset and bit for battery low detection S7 typeBool(e.g.,55.3forDB4DBX55.3) (Home app does not inform with push notification)false: oktrue: battery low
Leak Sensor as PLC_LeakSensor
Leak sensor.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4invertLeakDetected: (optional) set totrueto invert the bit tofalse:leak detectedandtrue:no leak detected.enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.get_LeakDetected: (push support) offset and bit to get the current status S7 typeBoole.g.55.0forDB4DBX55.0false: no leak detectedtrue: leak detected
get_StatusTampered: (optional) (push support) offset and bit for tamper detection S7 typeBool(e.g.,55.2forDB4DBX55.2) (Home app shows this only within the options)false: oktrue: tampered
get_StatusLowBattery: (optional) (push support) offset and bit for battery low detection S7 typeBool(e.g.,55.3forDB4DBX55.3) (Home app does not inform with push notification)false: oktrue: battery low
Faucet as PLC_Faucet
Watering for the garden.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.get_Active: (push support) offset and bit to get the current status S7 typeBoole.g.55.0forDB4DBX55.0- Single Bit for on/off:
set_Active: (control support) offset and bit to set on/off S7 typeBoole.g.55.0forDB4DBX55.0(could be the same as get_Active)
- Separate Bits for on/off:
set_Active: (control support) offset and bit to set on S7 typeBoolPLC has to set to 0 e.g.55.1forDB4DBX55.1set_Deactivate: offset and bit to set off S7 typeBoolPLC has to set to 0 e.g.55.2forDB4DBX55.2
Valve as PLC_Valve
Valve configurable as generic valve, irrigation, shower head, or water faucet.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.ValveType: configures the valve type that is returned0: generic valve1: irrigation2: shower head3: water faucet
get_Active: (push support) offset and bit to get the current status S7 typeBoole.g.55.0forDB4DBX55.0- Single Bit for on/off:
set_Active: (control support) offset and bit to set on/off S7 typeBoole.g.55.0forDB4DBX55.0(could be the same as get_Active)
- Separate Bits for on/off:
set_Active: (control support) offset and bit to set on S7 typeBoolPLC has to set to 0 e.g.55.1forDB4DBX55.1set_Deactivate: offset and bit to set off S7 typeBoolPLC has to set to 0 e.g.55.2forDB4DBX55.2
- If one of the (optional) duration settings is specified, all are needed:
get_SetDuration: (optional) (push support) offset to get duration 0..3600 sec S7 typeTimee.g.10forDB4DBD10set_SetDuration: (optional) (control support) offset to set duration 0..3600 sec S7 typeTimee.g.14forDB4DBD14get_RemainingDuration: (optional) (push support) offset to get remaining duration 0..3600 sec S7 typeTimee.g.18forDB4DBD18
Security System as PLC_SecuritySystem
Alarm system.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state of the security system will be polled.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.- Current State:
get_SecuritySystemCurrentState: (push support) offset to current security system state S7 typeBytee.g.3forDB4DBB30: armed stay at home1: armed away from home2: armed night3: disarmed4: alarm triggered
mapGetSecuritySystemCurrentState: (optional) define mapping array for get security system state. The PLC value is used as an index into the table. e.g.[3, 1]which maps the PLC value0->3 1->2when the PLC supports only two states with0:disarmedand1:armedand2:alarm.
- Target State:
set_SecuritySystemTargetState: (control support) offset to set target security system state S7 typeBytee.g.5forDB4DBB4get_SecuritySystemTargetState: (push support) offset to set target security system state S7 typeBytee.g.6forDB4DBB60: armed stay at home1: armed away from home2: armed night3: disarmed
mapSetSecuritySystemTargetState: (optional) define mapping array for set security system state. The home app value is used as an index into the table. e.g.[1, 1, 1, 0, 2]which maps the PLC value0->1 1->1 2->1, 3->0, 4->2when the PLC supports only two states with0:disarmedand1:armedand2:alarm.mapGetSecuritySystemTargetState: (optional) define mapping array for get security system state. The PLC value is used as an index into the table. e.g.[3, 1]which maps the PLC value0->3 1->2when the PLC supports only two states with0:disarmedand1:armedand2:alarm.
Button as PLC_StatelessProgrammableSwitch, Doorbell as PLC_Doorbell
Stateless switch from PLC to home app.
Trigger actions in the home app only works with control center e.g. AppleTV or HomePod. Polling or push from PLC required!\
Polling mode homebridge-plc polls isEvent. The PLC sets the bit to true. homebridge-plc reads get_ProgrammableSwitchEvent and sets the isEvent bit to false.\
Push mode PLC informs homebridge-plc by HTTP request with the value for get_ProgrammableSwitchEvent.\
Control External simulates event by HTTP request with the value for get_ProgrammableSwitchEvent.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.isEvent: offset and bit that is polled by homebridge-plc. PLC has to set totrue. Whentrue, the event is read fromget_ProgrammableSwitchEventand set tofalseby homebridge-plc to confirm that the event is handled. S7 typeBoole.g.55.1forDB4DBX55.1(polling only, not used for push)get_ProgrammableSwitchEvent: (push support) (control support) offset to read current event of the switch. This is reported towards the home app S7 typeBytee.g.3forDB4DBB30: single press1: double press2: long press
Lock mechanism as PLC_LockMechanism
Lock mechanism.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.forceCurrentLockState: (optional) when set totrue, the position set byset_LockTargetStateis directly used as the current state. By this, it seems in the home app as the target state was directly reached. This is recommended when not usingenablePollingor pushing the value from the PLC.get_LockCurrentState: (push support) offset to read current state S7 typeBytee.g.3forDB4DBB30: unsecured1: secured2: jammed3: unknown
get_LockTargetState: (push support) offset to read target state S7 typeBytee.g.3forDB4DBB30: unsecured1: secured
set_LockTargetState: (control support) offset to write target state S7 typeBytee.g.3forDB4DBB30: unsecured1: secured
Boolean lock mechanism as PLC_LockMechanismBool
Lock mechanism implemented as bool on the PLC.
NOTE: The convention 0=false: closed/secured 1=true: open/unsecured

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.forceCurrentLockState: (optional) when set totrue, the state set byset_LockTargetStateis directly used as the current state. By this, it seems in the home app as the target state was directly reached. This is recommended when not usingenablePollingor pushing the value from the PLC.invertLockState: (optional) when set totrue, all states are inverted (current and target state)false: unsecured andtrue: secured.get_LockCurrentStateBool: (push support) offset to read current state S7 typeBoole.g.3.1forDB4DBB3false: securedtrue: unsecured
get_LockTargetStateBool: (push support) offset to read target state S7 typeBoole.g.3.1forDB4DBB3false: securedtrue: unsecured
- Single Bit for secure/unsecured:
set_LockTargetStateBool: (control support) offset to write target state S7 typeBoole.g.3.1forDB4DBB3false: securedtrue: unsecured
- Separate Bits for secure/unsecured:
set_LockTargetStateBool_Secured: (control support) offset and bit to set totruewhen switching to target state secured S7 typeBoolPLC has to set tofalsee.g.3.3forDB4DBX55.1set_LockTargetStateBool_Unsecured: offset and bit to set totruewhen switching to target state unsecured S7 typeBoolPLC has to set tofalsee.g.3.4forDB4DBX55.2
Garage door as PLC_GarageDoorOpener
Garage door.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.forceCurrentDoorState: (optional) when set totrue, the position set byset_TargetDoorStateis directly used as the current state. By this, it seems in the home app as the target state was directly reached. This is recommended when not usingenablePollingor pushing the value from the PLC.get_ObstructionDetected: (optional) (push support) offset and bit for obstruction detection. True means that the door was blocked. S7 typeBoole.g.55.1forDB4DBX55.1get_CurrentDoorState: (push support) offset to read current state S7 typeBytee.g.3forDB4DBB30: open1: closed2: opening3: closing4: stopped
get_TargetDoorState: (push support) offset to read target state S7 typeBytee.g.3forDB4DBB30: open1: closed
set_TargetDoorState: (control support) offset to write target state S7 typeBytee.g.3forDB4DBB30: open1: closed
Smoke Sensor as PLC_SmokeSensor
Fire alarm.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.get_SmokeDetected: (push support) offset and bit for smoke detection. S7 typeBoole.g.55.1forDB4DBX55.1false: oktrue: smoke detected
get_StatusTampered: (optional) (push support) offset and bit for tamper detection S7 typeBool(e.g.,55.2forDB4DBX55.2) (Home app shows this only within the options)false: oktrue: tampered
get_StatusLowBattery: (optional) (push support) offset and bit for battery low detection S7 typeBool(e.g.,55.3forDB4DBX55.3) (Home app does not inform with push notification)false: oktrue: battery low
Fan as PLC_Fan
Ventilator.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.- Current State:
default_CurrentFanState: (optional) defines an alternative value that's returned whenget_CurrentFanStateis not defined. Default value0:inactiveget_CurrentFanState: (optional) (push support) offset to get current heating/cooling state S7 typeBytee.g.8forDB4DBB8.0: inactive1: idle2: blowing
mapCurrentFanStateGet: (optional) define mapping array forget_CurrentFanState. The PLC value is used as an index into the table. e.g.[0, 2]which maps the PLC value0->1 1->2when the PLC supports only two states with0:idleand1:blowing.
- Target State:
default_TargetFanState: (optional) defines an alternative value that's returned whenget_TargetFanStateis not defined. Default value0:manual0: manual1: automatic
get_TargetFanState: (optional) (push support) offset to get target heating/cooling state. S7 typeBytee.g.9forDB4DBB9. When not defined, fixed1: automatic is used.0: manual1: automatic
set_TargetFanState: (optional but required whenget_TargetFanStateis defined) (control support) offset to get target heating/cooling state. S7 typeBytee.g.9forDB4DBB9. When not defined, fixed1: automatic is used.0: manual1: automatic
mapTargetFanStateGet: (optional) define mapping array forget_TargetFanState. The PLC value is used as an index into the table. e.g.[1, 0]which maps the PLC value0->1 1->0when the PLC supports only two states with0:automaticand1:manual.mapTargetFanStateSet: (optional) define mapping array forset_TargetFanState. The home app value is used as an index into the table. e.g.[1, 0]which maps the PLC value0->1 1->0when the PLC supports only two states with0:automaticand1:manual.
- Rotation Direction:
get_RotationDirection: (optional) (push support) offset to get rotation direction state. S7 typeBytee.g.9forDB4DBB9. When not defined, fixed0: clockwise is used.0: clockwise1: counterclockwise
set_RotationDirection: (optional) (control support) offset to set rotation direction state. S7 typeBytee.g.9forDB4DBB9.0: clockwise1: counterclockwise
mapRotationDirectionGet: (optional) define mapping array forget_RotationDirection. The PLC value is used as an index into the table. e.g.[1, 0]inverts the direction.mapRotationDirectionSet: (optional) define mapping array forset_RotationDirection. The home app value is used as an index into the table. e.g.[1, 0]inverts the direction.
- Rotation Speed:
- Byte:
get_RotationSpeedByte: (optional) (push support) offset to get rotation speed state S7 typeBytee.g.8forDB4DBB8.set_RotationSpeedByte: (optional but required whenget_RotationSpeedByteis defined) (push support) offset to get set speed state. S7 typeBytee.g.9forDB4DBB9.
- Real:
get_RotationSpeed: (optional) (push support) offset to get rotation speed state S7 typeReale.g.8forDB4DBB8.set_RotationSpeed: (optional but required whenget_RotationSpeedis defined) (push support) offset to get set speed state. S7 typeReale.g.9forDB4DBB9.
- Byte:
get_Active: (push support) offset and bit to get the current status S7 typeBoole.g.55.0forDB4DBX55.0- Single Bit for on/off:
set_Active: (control support) offset and bit to set on/off S7 typeBoole.g.55.0forDB4DBX55.0(could be the same as get_Active)
- Separate Bits for on/off:
set_Active_Set: (control support) offset and bit to set on S7 typeBoolPLC has to set to 0 e.g.55.1forDB4DBX55.1set_Active_Reset: offset and bit to set off S7 typeBoolPLC has to set to 0 e.g.55.2forDB4DBX55.2
Light Sensor as PLC_LightSensor or PLC_LightSensor_DInt
Illuminance sensor.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.- AmbientLightLevel:
- DInt:
get_CurrentAmbientLightLevelDInt: (push support) offset to get current illumination in LUX S7 typeDIntvalue limited to 0.0001 ~ 100,000 e.g.55forDB4DBD55
- Real:
get_CurrentAmbientLightLevel: (push support) offset to get current illumination in LUX S7 typeRealvalue limited to 0.0001 ~ 100,000 e.g.55forDB4DBD55
- DInt:
get_StatusTampered: (optional) (push support) offset and bit for tamper detection S7 typeBool(e.g.,55.2forDB4DBX55.2) (Home app shows this only within the options)false: oktrue: tampered
get_StatusLowBattery: (optional) (push support) offset and bit for battery low detection S7 typeBool(e.g.,55.3forDB4DBX55.3) (Home app does not inform with push notification)false: oktrue: battery low
Air Purifier as PLC_AirPurifier
Air filter.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.- Current State:
default_CurrentAirPurifierState: (optional) defines an alternative value that's returned whenget_CurrentAirPurifierStateis not defined. Default value0:inactiveget_CurrentAirPurifierState: (optional) (push support) offset to get current heating/cooling state S7 typeBytee.g.8forDB4DBB8.0: inactive1: idle2: purifying air
mapCurrentAirPurifierState: (optional) define mapping array forget_CurrentAirPurifierState. The PLC value is used as an index into the table. e.g.[0, 2]which maps the PLC value0->1 1->2when the PLC supports only two states with0:inactiveand1:idle.
- Target State:
default_TargetAirPurifierState: (optional) defines an alternative value that's returned whenget_TargetAirPurifierStateis not defined. Default value0:manual0: manual1: automatic
get_TargetAirPurifierState: (optional) (push support) offset to get target heating/cooling state. S7 typeBytee.g.9forDB4DBB9. When not defined, fixed1: automatic is used.0: manual1: automatic
set_TargetAirPurifierState: (optional but required whenget_TargetAirPurifierStateis defined) (control support) offset to get target heating/cooling state. S7 typeBytee.g.9forDB4DBB9. When not defined, fixed1: automatic is used.0: manual1: automatic
mapTargetAirPurifierStateGet: (optional) define mapping array forget_TargetAirPurifierState. The PLC value is used as an index into the table. e.g.[1, 0]which maps the PLC value0->1 1->0when the PLC supports only two states with0:automaticand1:manual.mapTargetAirPurifierStateSet: (optional) define mapping array forset_TargetAirPurifierState. The home app value is used as an index into the table. e.g.[1, 0]which maps the PLC value0->1 1->0when the PLC supports only two states with0:automaticand1:manual.
- Swing Mode:
get_SwingMode: (optional) (push support) offset to get swing mode. S7 typeBytee.g.8forDB4DBB8.0: swing disabled1: swing enabled
set_SwingMode: (optional) (control support) offset to set swing mode. S7 typeBytee.g.9forDB4DBB9.0: swing disabled1: swing enabled
- Rotation Speed:
- Byte:
get_RotationSpeedByte: (optional) (push support) offset to get rotation speed state S7 typeBytee.g.8forDB4DBB8.set_RotationSpeedByte: (optional but required whenget_RotationSpeedByteis defined) (push support) offset to get set speed state. S7 typeBytee.g.9forDB4DBB9.
- Real:
get_RotationSpeed: (optional) (push support) offset to get rotation speed state S7 typeReale.g.8forDB4DBB8.set_RotationSpeed: (optional but required whenget_RotationSpeedis defined) (push support) offset to get set speed state. S7 typeReale.g.9forDB4DBB9.
- Byte:
get_Active: (push support) offset and bit to get the current status S7 typeBoole.g.55.0forDB4DBX55.0- Single Bit for on/off:
set_Active: (control support) offset and bit to set on/off S7 typeBoole.g.55.0forDB4DBX55.0(could be the same as get_Active)
- Separate Bits for on/off:
set_Active_Set: (control support) offset and bit to set on S7 typeBoolPLC has to set to 0 e.g.55.1forDB4DBX55.1set_Active_Reset: offset and bit to set off S7 typeBoolPLC has to set to 0 e.g.55.2forDB4DBX55.2
- Filter change:
get_FilterChangeIndication: (push support) offset and bit for filter change indication S7 typeBoole.g.55.3forDB4DBX55.30: filter oktrue: change filter
get_FilterLifeLevel: (optional) (push support) offset and bit for filter life level S7 typeBytee.g.56forDB4DBX560: change filter100: filter is new
set_ResetFilterIndication: (optional) (control support) offset and bit for filter change indication S7 typeBoolPLC has to set to 0 after detecting change to true via homebridge e.g.55.4forDB4DBX55.4NOTE: Currently not used by HomeApp
Filter Maintenance Indicator as PLC_FilterMaintenance
Filter change indication (Currently neither supported in HomeApp and HomeBridge).

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.- Filter change:
get_FilterChangeIndication: (push support) offset and bit for filter change indication S7 typeBoole.g.55.3forDB4DBX55.3false: filter oktrue: change filter
get_FilterLifeLevel: (optional) (push support) offset and bit for filter life level S7 typeBytee.g.56forDB4DBX560: change filter100: filter is new
set_ResetFilterIndication: (optional) (control support) offset and bit for filter change indication S7 typeBoolPLC has to set to 0 after detecting change to true via homebridge e.g.55.4forDB4DBX55.4NOTE: Currently not used by HomeApp
CO2 Sensor as PLC_CarbonDioxideSensor
Carbon Dioxide Sensor.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.- Detected:
get_CarbonDioxideDetected: (push support) offset and bit for CO2 detection S7 typeBoole.g.55.3forDB4DBX55.3false: normal CO2 leveltrue: abnormal CO2 level
get_StatusTampered: (optional) (push support) offset and bit for tamper detection S7 typeBool(e.g.,55.2forDB4DBX55.2) (Home app shows this only within the options)false: oktrue: tampered
get_StatusLowBattery: (optional) (push support) offset and bit for battery low detection S7 typeBool(e.g.,55.3forDB4DBX55.3) (Home app does not inform with push notification)false: oktrue: battery low
CO Sensor as PLC_CarbonMonoxideSensor
Carbon Monoxide Sensor.

name: unique name of the accessorymanufacturer: (optional) descriptiondb: S7 data base number e.g.4forDB4enablePolling: (optional) when set totrue, the current state will be polled. It is mandatory to enable polling mode on the platform level.pollInterval: (optional) poll interval in seconds. Default value is defined in the platform definition.- Detected:
get_CarbonMonoxideDetected: (push support) offset and bit for CO detection S7 typeBoole.g.55.3forDB4DBX55.3false: normal CO leveltrue: abnormal CO level
get_StatusTampered: (optional) (push support) offset and bit for tamper detection S7 typeBool(e.g.,55.2forDB4DBX55.2) (Home app shows this only within the options)false: oktrue: tampered
get_StatusLowBattery: (optional) (push support) offset and bit for battery low detection S7 typeBool(e.g.,55.3forDB4DBX55.3) (Home app does not inform with push notification)false: oktrue: battery low
config.json Example
Note: The example is just an example. It contains also some optional settings. For testing purposes, all accessories are set to one DB.
{
"bridge": {
"name": "Homebridge DEMO",
"username": "0E:54:47:36:82:26",
"port": 52609,
"pin": "031-55-155"
},
"accessories": [],
"platforms": [
{
"name": "Config",
"port": 8888,
"platform": "config"
},
{
"platform": "PLC",
"ip": "10.10.10.32",
"rack": 0,
"slot": 2,
"communicationOP": false,
"enablePolling": true,
"defaultPollInterval": 15,
"distributePolling": true,
"enablePush": true,
"enableControl": true,
"port": 8888,
"accessories": [
{
"accessory": "PLC_LightBulb",
"name": "LightBulb0",
"manufacturer": "normal light bulb",
"enablePolling": true,
"db": 12,
"get_On": 0.0,
"set_On": 0.1,
"set_Off": 0.2
},
{
"accessory": "PLC_LightBulb",
"name": "LightBulb1",
"manufacturer": "with dim function",
"enablePolling": true,
"db": 12,
"get_On": 2.0,
"set_On": 2.1,
"set_Off": 2.2,
"get_Brightness": 1,
"set_Brightness": 1
},
{
"accessory": "PLC_LightBulb",
"name": "LightBulb2",
"manufacturer": "single bit for on/off",
"enablePolling": true,
"db": 12,
"get_On": 2.3,
"set_On": 2.3
},
{
"accessory": "PLC_Outlet",
"name": "Outlet",
"enablePolling": true,
"db": 12,
"get_On": 2.4,
"set_On": 2.5
},
{
"accessory": "PLC_Switch",
"name": "Switch",
"enablePolling": true,
"db": 12,
"get_On": 2.6,
"set_On": 2.7,
"set_Off": 3.0
},
{
"accessory": "PLC_TemperatureSensor",
"name": "Temperature",
"db": 12,
"get_CurrentTemperature": 4,
"enablePolling": true,
"pollInterval": 60
},
{
"accessory": "PLC_HumiditySensor",
"name": "Humidity",
"db": 12,
"get_CurrentRelativeHumidity": 8,
"enablePolling": true,
"pollInterval": 120
},
{
"accessory": "PLC_Thermostat",
"name": "Thermostat",
"manufacturer": "ground floor",
"db": 12,
"enablePolling": true,
"get_CurrentTemperature": 12,
"get_TargetTemperature": 16,
"set_TargetTemperature": 16,
"get_CurrentHeatingCoolingState": 20,
"mapSetTargetHeatingCoolingState": [
0,
1,
0,
3
]
},
{
"accessory": "PLC_WindowCovering",
"name": "Blind",
"manufacturer": "ground floor",
"db": 12,
"invertPosition": false,
"adaptivePolling": true,
"adaptivePollingInterval": 1,
"enablePolling": true,
"pollInterval": 180,
"get_CurrentPosition": 21,
"get_TargetPosition": 22,
"set_TargetPosition": 1
},
{
"accessory": "PLC_Window",
"name": "Window",
"manufacturer": "ground floor",
"enablePolling": true,
"pollInterval": 60,
"db": 12,
"get_CurrentPosition": 23,
"mapGetCurrentPosition": [
0,
25,
100
]
},
{
"accessory": "PLC_Door",
"name": "Door",
"manufacturer": "ground floor",
"enablePolling": true,
"pollInterval": 10,
"db": 12,
"get_CurrentPosition": 24,
"mapGetCurrentPosition": [
0,
100
]
},
{
"accessory": "PLC_OccupancySensor",
"name": "Presence",
"enablePolling": true,
"db": 12,
"get_OccupancyDetected": 25.0
},
{
"accessory": "PLC_MotionSensor",
"name": "Motion",
"enablePolling": true,
"db": 12,
"get_MotionDetected": 25.1
},
{
"accessory": "PLC_ContactSensor",
"name": "ContactSensor",
"enablePolling": true,
"pollInterval": 5,
"db": 12,
"get_ContactSensorState": 25.2
},
{
"accessory": "PLC_LeakSensor",
"name": "LeakSensor",
"enablePolling": true,
"pollInterval": 5,
"db": 12,
"get_LeakDetected": 25.3
},
{
"accessory": "PLC_Faucet",
"name": "Faucet",
"enablePolling": true,
"db": 12,
"get_Active": 28.0,
"set_Active": 28.0
},
{
"accessory": "PLC_Valve",
"name": "Valve",
"db": 12,
"enablePolling": true,
"ValveType": 2,
"get_Active": 28.1,
"set_Active": 28.1,
"get_SetDuration": 30,
"set_SetDuration": 30,
"get_RemainingDuration": 34
},
{
"accessory": "PLC_SecuritySystem",
"name": "SecuritySystem",
"db": 12,
"enablePolling": true,
"pollInterval": 60,
"get_SecuritySystemCurrentState": 26,
"set_SecuritySystemTargetState": 27,
"get_SecuritySystemTargetState": 27,
11 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
10 months ago
10 months ago
10 months ago
10 months ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago