- Compatible with homebridge 2.0.0-beta.0
- Compatible with Node.js 22
- Updated README.md and added logo
- Updated comments in config.schema.json
- Runtime error if no accessory name is defined
- Added missing execution time for setBit
- In debug mode, also log the time for the PLC access
- Added warning related to Node.js 22.12.0 that comes with homebridge apt pkg version 1.4.0 and is used in Homebridge Docker from 2024-12-12
PLC_StatelessProgrammableSwitch
andPLC_Doorbell
corrected config schema for get_ProgrammableSwitchEvent and fixed poll issue
PLC_ContactSensor
corrected name of invert option invertContactSensorState
PLC_CarbonDioxideSensor
PLC_CarbonMonoxideSensor
- Configuration via GUI
In order to support configuration by GUI, some configuration options need to be renamed.
PLC_LightBulb
:- Renamed option
minValue
->minBrightnessValue
and changed default value from20
to0
- Renamed option
maxValue
->maxBrightnessValue
- Renamed option
minStep
->minBrightnessStep
- Renamed option
PLC_LightBulb
,PLC_Outlet
, andPLC_Switch
- Renamed options for separate set and reset bits. (Single bit option
set_On
is still functional) - Renamed option
set_Off
->set_On_Reset
andset_On
->set_On_Set
- Renamed options for separate set and reset bits. (Single bit option
PLC_Fan
,PLC_HumidifierDehumidifier
,PLC_Faucet
,PLC_Valve
- Renamed options for separate set and reset bits. (Single bit option
set_Active
is still functional) - Renamed option
set_Deactivate
->set_Active_Reset
andset_Active
->set_Active_Set
- Renamed options for separate set and reset bits. (Single bit option
PLC_TemperatureSensor
- Renamed option
minValue
->minTemperatureValue
and changed default value from-50
to-270
- Renamed option
maxValue
->maxTemperatureValue
and changed default value from110
to100
- Renamed option
minStep
->minTemperatureStep
and changed default value from0.5
to0.1
- Renamed option
PLC_HumiditySensor
- Renamed option
minValue
->minHumidityValue
- Renamed option
maxValue
->maxHumidityValue
- Renamed option
minStep
->minHumidityStep
- Renamed option
PLC_Thermostat
- Renamed option
minValue
->minTargetTemperatureValue
and changed default value from15
to10
- Renamed option
maxValue
->maxTargetTemperatureValue
and changed default value from27
to38
- Renamed option
minStep
->minTargetTemperatureStep
and changed default value from0.5
to0.1
- Renamed option
minHumidityValue
->minTargetHumidityValue
- Renamed option
maxHumidityValue
->maxTargetHumidityValue
- Renamed option
minHumidityStep
->minTargetHumidityStep
- Renamed option
mapGetCurrent
->mapGetCurrentHeatingCoolingState
- Renamed option
mapGetTarget
->mapGetTargetHeatingCoolingState
- Renamed option
mapSetTarget
->mapSetTargetHeatingCoolingState
- Renamed option
PLC_SecuritySystem
- Renamed option
mapGetCurrent
->mapGetSecuritySystemCurrentState
- Renamed option
mapGetTarget
->mapGetSecuritySystemTargetState
- Renamed option
mapSetTarget
->mapSetSecuritySystemTargetState
- The obsolete options
mapGet
andmapSet
are no longer supported. Use the above map functions.
- Renamed option
PLC_HumidifierDehumidifier
- Renamed option
mapGetCurrent
->mapGetCurrentHumidifierDehumidifierState
- Renamed option
mapGetTarget
->mapGetTargetHumidifierDehumidifierState
- Renamed option
mapSetTarget
->mapSetTargetHumidifierDehumidifierState
- Renamed option
PLC_Window
,PLC_WindowCovering
,PLC_Door
- Removed option
mapGet
- Added option
mapGetCurrentPosition
- Added option
mapGetTargetPosition
- Added option
mapSetTargetPosition
- Renamed option
invert
->invertPosition
- Removed option
PLC_LockMechanismBool
- Renamed option
invert
->invertLockState
- Renamed option
get_LockCurrentState
->get_LockCurrentStateBool
- Renamed option
get_LockTargetState
->get_LockTargetStateBool
- Renamed option
set_LockTargetState
->set_LockTargetStateBool
- Renamed option
set_Secured
->set_LockTargetStateBool_Secured
- Renamed option
set_Unsecured
->set_LockTargetStateBool_Unsecured
- Renamed option
forceCurrentState
->forceCurrentLockState
- Renamed option
PLC_LockMechanism
- Renamed option
forceCurrentState
->forceCurrentLockState
- Renamed option
PLC_GarageDoorOpener
- Renamed option
forceCurrentState
->forceCurrentGarageDoorState
- Renamed option
PLC_LockMechanismBool
- Renamed option
invert
->invertLockState
- Renamed option
PLC_OccupancySensor
- Renamed option
invert
->invertOccupancy
- Renamed option
PLC_MotionSensor
- Renamed option
invert
->invertMotionDetected
- Renamed option
PLC_LeakSensor
- Renamed option
invert
->invertLeakDetected
- Renamed option
PLC_ContactSensor
- Renamed option
invert
->invertContactSensorState
- Renamed option
PLC_Fan
- Renamed option
mapGetCurrent
->mapCurrentFanStateGet
- Renamed option
mapGetTarget
->mapTargetFanStateGet
- Renamed option
mapSetTarget
->mapTargetFanStateSet
- Renamed option
mapDirectionGet
->mapRotationDirectionGet
- Renamed option
mapDirectionSet
->mapRotationDirectionSet
- Renamed option
PLC_Thermostat
- Option
minTemperatureValue
- Option
maxTemperatureValue
- Option
minTemperatureStep
- Option
minHumidityValue
- Option
maxHumidityValue
- Option
minHumidityStep
- Option
PLC_AirPurifier
PLC_FilterMaintenance
- Data corruption during multiple SET operations e.g. close all blinds
- Synchronous execution of SET operations
- Data corruption during multiple SET operations e.g. close all blinds
- Synchronous execution of SET operations
- Possible buffer overwrite by using a separate buffer for each set operation
- Updated documentation
- Fixed http control
- Option
forward
to forward push and control http requests to another instance of homebridge-plc, useful to overcome the 150 devices limit of homebridge or if you like to mirror to another instance. - Option
mirror
to mirror all readings from PLC and push requests by an http push operation to another homebridge instance where homebridge-plc is installed. (experimental) - Optimized log output for http control and push requests
- Added range limit 0.0001~100000 for
PLC_LightSensor
to avoid warning when value 0 is used.
- Added
PLC_LightSensor
- Added DB number to manufacture field when other value is given
- Updated documentation
- Added
PLC_LeakSensor
- Added
PLC_Fan
(beta)
PLC_HumidifierDehumidifier
added separate bit on/off support by addingset_Deactivate
PLC_HumidifierDehumidifier
added byte support for rotation speed by addingset_RotationSpeedByte
andget_RotationSpeedByte
With the latest update of the Homebridge UI Docker container, the plugin does not start!
Error: The module ... node_snap7.node was compiled against a different Node.js version ... Please try re-compiling or re-installing ...
During installation of this module, snap7 is downloaded and compiled against the installed version of Node.js. Therefore, the issue is fixed for sure by uninstalling and installing the homebridge_plc plugin.
- Updated dependent version of node-snap7 in hope that it triggers a reinstall of node-snap7.
- Option
minValue
andmaxValue
to also work with value 0
- Option
communicationOP
to use OP-Communication instead of PG-Communication for communication with the PLC
PLC_HumidifierDehumidifier
correct optionmapSetTarget
,mapGetTarget
andmapGetCurrent
PLC_Thermostat
correct optionmapSetTarget
,mapGetTarget
andmapGetCurrent
PLC_SecuritySystem
introducedmapSetTarget
,mapGetTarget
andmapGetCurrent
. This replacesmapSet
andmapGet
. (For backwards compatibility, old options are still supported)
- Updated documentation
- Polling for
PLC_HumidifierDehumidifier
- Added
PLC_HumidifierDehumidifier
PLC_Thermostat
: added optionmapGetCurrent
PLC_TemperatureSensor
: default maxValue increased from 50 to 110PLC_Thermostat
removed warning when usingget_StatusTampered
orget_StatusLowBattery
was no success, removed useless code.
PLC_Thermostat
: added push support forget_CurrentHeatingCoolingState
PLC_Thermostat
: added support forget_TargetHeatingCoolingState
andset_TargetHeatingCoolingState
includingmapGetTarget
andmapSetTarget
PLC_Thermostat
fixed documentation ofget_CurrentHeatingCoolingState
PLC_Thermostat
removed warning when usingget_StatusTampered
orget_StatusLowBattery
see homebridge/homebridge#2768
- Added option
invert
forPLC_LockMechanismBool
- Added option
mapGet
andmapSet
forPLC_LockMechanism
- Added option
get_CurrentRelativeHumidity
,set_TargetRelativeHumidity
andget_TargetRelativeHumidity
forPLC_Thermostat
- Added option
get_StatusTampered
andget_StatusLowBattery
forPLC_Thermostat
- Added option
get_StatusTampered
andget_StatusLowBattery
forPLC_TemperatureSensor
- Added option
get_StatusTampered
andget_StatusLowBattery
forPLC_HumiditySensor
- Added option
get_StatusTampered
andget_StatusLowBattery
forPLC_OccupancySensor
- Added option
get_StatusTampered
andget_StatusLowBattery
forPLC_MotionSensor
- Added option
get_StatusTampered
andget_StatusLowBattery
forPLC_ContactSensor
- Added option
invert
forPLC_OccupancySensor
,PLC_MotionSensor
andPLC_ContactSensor
- Changed default value for parameter
port
from8080
to8888
. This was done to avoid conflicts with Homebridge UI which has 8080 as default port. The port is used when usingenablePush
orenableControl
is set. (check your config)
- Added option
defaultPollInterval
on platform level - Added option
distributePolling
on platform level
- Control support for
PLC_Thermostat
- Control handling for
PLC_Windows
,PLC_WindowCovering
andPLC_Door
- Control handling for
PLC_Faucet
andPLC_Valve
- Reordered code to have the same order for init, poll, and control part
- Added section comments to the code
- Added recommendations from validator
- Added
PLC_SmokeSensor
- New accessory
PLC_Doorbell
PLC_Thermostat
name of parameter corrected toget_CurrentHeatingCoolingState
, previous incorrect nameget_CurrentHeaterCoolerState
check your configPLC_Thermostat
did not poll CurrentHeatingCoolingState when polling was enabledPLC_StatelessProgrammableSwitch
simulating switch event by control interface (http request) did not work
- Added option
forceDoorState
forPLC_GarageDoorOpener
- Home app does not seem to use the lock for
PLC_GarageDoorOpener
. Removedget_LockCurrentState
,get_LockTargetState
andset_LockTargetState
- More detailed error log for http requests
- Fixed
PLC_LightBulb
brightness to beByte
value as documented. In fact, it was aReal
. Please change in PLC if you already use it.
- Only disconnect from PLC on TCP errors, mask 0x000fffff of snap7 error codes. Client errors of PLC no longer trigger reconnect
- Snap7 error codes are printed in hex values
- Documentation extended
- Fixed poll issue for
PLC_TemperatureSensor
,PLC_HumiditySensor
andPLC_Thermostat
- Fixed double definition for
PLC_GarageDoorOpener
- Fixed
PLC_LightBulb
brightness to beByte
value as documented. In fact, it was aReal
. Please change in PLC if you already use it.
- Documentation updated and added PLC examples
- Config issue with Push from PLC
- Documentation
- Possibility to control PLC devices via http request (experimental)
- Push notifications from PLC were not correctly handled when the bit address is not *.0
- Accessory
PLC_LockMechanismBool
- Accessory
PLC_LockMechanism
got new optionforceCurrentState
- Accessory
PLC_WindowCovering
,PLC_Window
andPLC_Door
caused a reboot during poll mode
- Push support from the PLC to the homebridge-plc plugin by an http request
- Poll support for all supported accessories. (Please inform me if one is not working as expected)
- Accessory
PLC_WindowCovering
,PLC_Window
andPLC_Door
need to define new optionforceCurrentPosition
to maintain current behavior!
- Accessory
PLC_GarageDoorOpener
added missingget_LockCurrentState
- Accessory:
PLC_OccupancySensor
: Add polling to detect changes. New configurationenablePolling
andpollInterval
- Accessory:
PLC_MotionSensor
: Add polling to detect changes. New configurationenablePolling
andpollInterval
- Accessory:
PLC_ContactSensor
added. - Accessory:
PLC_TemperatureSensor
: Add optionminValue
,maxValue
minStep
- Accessory:
PLC_HumiditySensor
: Add optionminValue
,maxValue
minStep
- Accessory:
PLC_LightBulb
: Add optionminValue
,maxValue
minStep
- Accessory:
PLC_Thermostat
: Add optionminValue
,maxValue
minStep
and changed default setting
- Accessory
PLC_SecuritySystem
: A set of target state will do a single get of target and current state
PLC_MotionSensor
was not functional
PLC_WindowCovering
,PLC_Window
andPLC_Door
got, in addition to theadaptivePolling
which polls the current state during movement, a possibility to enable withenablePolling
polling at a lower frequency the current state. Thus, the optionpollInterval
changed its meaning. It now defines the frequency for theenablePolling
whileadaptivePollingInterval
defines the frequency for theadaptivePolling
.
- Accessory
PLC_StatelessProgrammableSwitch
is now functional - Accessory
PLC_Door
added - Accessory
PLC_GarageDoorOpener
added (experimental state) - Accessory
PLC_LockMechanism
added (experimental state) - New configuration option
mapGet
forPLC_WindowCovering
,PLC_Window
andPLC_Door
to map custom values
PLC_WindowCovering
,PLC_Window
andPLC_Door
: When target settings are not defined (not electric movable), writes are ignored. Instead, the current value is pushed as the target value as get after a set operation
- Platform
PLC
: Polling mode that enables background task poll accessories. New configurationenablePolling
- Accessory:
PLC_WindowCovering
: Adaptive polling when moving blinds. New configurationadaptivePolling
andpollInterval
- Accessory:
PLC_SecuritySystem
: Polling to detect changes. New configurationenablePolling
andpollInterval
- Rename failed for LightBulb
- ACTION Necessary!!!
- Change name of plugin from
S7
toPLC
. Please rename your configuration. - Remove prefix
S7_
from all accessories. Remove it e.g. by STRG-H replaceS7_
byPLC_
- Fix spelling in parameter from
set_Deactive
toset_Deactivate
- Accessory Window and WindowCovering will shown as moving permanent (target position is now pushed immediately as current position)
- Accessory StatelessProgrammableSwitch
- Accessory SecuritySystem
- Single bit on/off for S7_LightBulb S7_Outlet and S7_Faucet
- Finalize name change
- Change name of plugin from homebridge-S7_PLC to homebridge-plc homebridge denied to install
- Initial Version
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.