Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates made to the Hubitat-ElkM1 code #1

Open
wants to merge 69 commits into
base: master
Choose a base branch
from

Conversation

thecaptncode
Copy link

Hi,

I have made several changes to the this repository. If any of these are too difficult for you to compare or you do not agree with, please let me know and I will look back at my changes to see if I can reconcile it.

Some of the biggest changes are:
I changed the method of creating, naming and using Zone type devices. Instead of a device ID identifier of M for motion and C for contact, they are now both Z for zone. (old devices created with M or C still work) To handle this, the driver now examines the device capabilities to see if the device is motion, contact, switch, smoke detector, etc. I list the full set of devices capabilities it can handle at the bottom of this message. The driver now creates all zone devices as contact unless "Motion" (case insensitive) is in the zone description within the panel. Manually changing a device to/from Contact and Motion works fine since the driver will detect the device's capabilities.

Normally open and normally closed devices should all work fine as long as they are set up correctly, and not be inverted, in the panel.

I added a full sync of panel arm modes with the hub's location modes as well as the hsmSetArm modes.

I also added code to allow task changes on the panel to be reflected on the Hubitat device.

Please pull these changes into your repository if you are okay with them. If not, please let me know. I'd be happy to work with you.

Thanks so much for the incredible work you've done with this Hubitat/Elk integration. I'm quite impressed. This is something I have been wanting to set up or write for some time now.

Best Regards,
Greg
[email protected]

Full changes below:
Added sync of Elk M1 modes to Location Modes: Disarmed, Armed Away, Night, Stay, Vacation synced to modes Home, Away, Night,
Stay (if available and Home if not), Vacation (if available and Away if not), respectively.
Added sync of hsmSetArm modes of disarm, armAway, armNight, ArmHome
Retooled zone-device creation to always create a device of type Virtual Contact unless "motion" is in the description.
Fixed issue that would create a lot of bogus devices when you connect to the panel with the M1 Touch Pro app
Added auto zone-device capability detection to support virtual devices with the following capabilities:
ContactSensor, MotionSensor, SmokeDetector, CarbonMonoxideDetector, WaterSensor, TamperAlert, AccelerationSensor,
Beacon, PresenceSensor, RelaySwitch, ShockSensor, SleepSensor, SoundSensor, Switch, TouchSensor and Valve
Changed registration of arm mode event to happen upon entry/exit timer expiration
Fixed issue of extra arm mode events firing when the panel is armed
Fixed status of EOL terminated zones
Added ability to read task status from the panel and set Contact device to open temporarily.
Tested use of the Elk C1M1 dual path communicator over local ethernet instead of using the M1XEP
Gave Momentary device capability to tasks and outputs

thecaptncode and others added 30 commits September 5, 2019 20:39
…on panel events and tasks

Added sync of Elk M1 modes to Location Modes: Disarmed, Armed Away, Night, Stay, Vacation synced to modes Home, Away, Night,
   Stay (if available and Home if not), Vacation (if available and Away if not), respectively.
Added sync of hsmSetArm modes of disarm, armAway, armNight, ArmHome
Retooled zone-device creation to always create a device of type Virtual Contact unless "motion" is in the description.
Fixed issue that would create a lot of bogus devices when you connect to the panel with the M1 Touch Pro app
Added auto zone-device capability detection to support virtual devices with the following capabilities:
    ContactSensor, MotionSensor, SmokeDetector, CarbonMonoxideDetector, WaterSensor, TamperAlert, AccelerationSensor,
    Beacon, PresenceSensor, RelaySwitch, ShockSensor, SleepSensor, SoundSensor, Switch, TouchSensor and Valve
Changed registration of arm mode event to happen upon entry/exit timer expiration
Fixed issue of extra arm mode events firing when the panel is armed
Fixed status of EOL terminated zones
Added ability to read task status from the panel and set Contact device to open temporarily.
Tested use of the Elk C1M1 dual path communicator over local ethernet instead of using the M1XEP
Gave Momentary device capability to tasks and outputs
…performance

Added info logging when output or task status changes or Arm Mode changes
Added switch capability to main Elk M1 driver
Improved ArmStatus and AlarmState events to fire only when changed
Adding missing AlarmStates
Small tweaks to improve performance
Updated to version 0.1.26
You can now change the port on the main device page.  You must click "Initialize" after you save preferences to take effect
Changed info logging to only happen if Enable descriptionText logging is turned on the device
Reenabled Request Zone Definition and Request Zone Status
Added Request Output Status
…d bug fixes

Added ability to handle a zone with a Temperature Probe attached to the main board. Automatically assigned when
  the zone's description has the word "Temperature" in it or zone device can be manually changed.
Added the device type Keypad for temperature readings.
Both devices are assigned the Virtual Temperature Sensor driver.  This is an experimental feature.  Since the panel
  does not volunteer temperature data, it must be requested either manually for all devices using the Request Temperature
  Data button on the main driver or by setting up a rule to periodically execute the RequestTemperatureData command.
Added "ContactSensor" as a capability for HSM monitoring.  The contact will open if a Burglar Alarm or Police Alarm is triggered.
Changed the method of importing devices to greatly improve performance and reduce panel communication.
Fixed an issue not deleting child devices when the main driver is uninstalled.
Fixed an issue with the name when importing a device with the "Show On Keypad" flag set.
Added polling of device status once connected or reconnected to the panel.
Added Enable debug logging and Enable descriptionText logging to the main device.  Debug is no longer set for the
  driver from within the application.  Info logging can now be turned on or off for the main device.
Added zone, output and task reporting so child devices can register to be updated via the report command when another
  device status has changed.
  I am using this for a door control driver assigned to an output that needs to be aware of the state of the contact
  attached to the door.
…ne Definitions

Added handling of Temperature Data automatically sent starting with M1 Ver. 4.2.8
Added info logging only of Zone Definitions
Simplified thermostat code
Simplified Output and Task logging and events
Removed unneeded thermostat capability from this driver since the child thermostat driver has it
Also added humidity and hold and changed logging and events to only occur when state changes.
…Pro. Other small changes.

Added import of lighting devices for use with new drivers.  If lighting text has "dim" in it, it will be assigned the dimmer driver.  Otherwise, it will be assigned the switch driver.
Fixed issue with M1 Touch Pro App sync conflict that caused this driver to crash
Fixed issue with thermostats not working
Removed redundant output and task command buttons.  The individual devices now have them.
Renamed the Request xxx Status command buttons to Refresh xxx Status for accuracy
Stopped zone statuses from writing info log when the status didn't change
Added retrieval of Elk M1 Version after initialization
…sing Log Data.

Added a telnet timeout feature to re-initialize device if the panel's IP Test message is not received when expected
Added ArmMode attribute
Rename ArmHome command to ArmStay
Removed processing of any Log Data Update report due to not being reliable for real time results
thecaptncode and others added 30 commits December 31, 2019 07:36
Added setThermostatTemperature to thermostat
Fixed bug with trouble code
Changed thermostatHoldMode from true and false to yes and no
Added Counter and Custom value device types.
Fixed long standing issue with checksums on Elk commands.  1% of the checksums were generating wrong causing those commands to quietly fail.
Fixed incorrectly named command refreshSystemTroubleStatus.  Renamed it to refreshTroubleStatus.
Fixed errors with a keypad device that is a Virtual Temperature Probe.
…ting.

Fixed an issue log data and troubles not always showing.
Changed trouble attribute from true/false to on/off.
Changed invalidUser attribute to show 6 digit user code or 12 digit access credentials for prox cards/iButton.
Removed limits with zone, output and task reporting only able to report to one child device.
…Elk M1 Driver

Changed alarm attribute from on/off to detected/clear.
Changed alarm, armState, armStatus, beep, chime, chimeMode and the Function key LED attributes to ENUM so the values can be selected in the rules engine.
Changed Switch Capability to Lock Capability for Dashboard arming/disarming and for the Amazon Alexa skill.
Renamed Stay mode to Home mode to align with Hubitat terminology.
Added securityKeypad attribute for SecurityKeypad Capability of parent driver.
Added armingIn attribute to show exit delay.
Added missing invalidUser attribute.
Added showTextOnKeypads command.
Added zoneBypass command.
Removed armMode attribute.  Between securityKeypad and armStatus, it should be unnecessary.
 Fixed a bug not properly managing integrated device subscriptions.
 Fixed long standing issue that caused the start of importing devices when you used the back button.
 Renamed Stay mode to Home mode to align with Hubitat terminology.
 Added Hub Location Mode integration.
 Added integration of main Elk device, no longer just child devices, to physical devices.
 Added Smart Refresh to refresh integrated devices before refreshing Elk child devices.
…tes, improved refresh and multiple fixes.

Fixed issue with Zone Bypass not working.
Fixed issue with arming while armed caused panel to disarm.
Fixed issue with armState briefly showing "Armed Fully" during an exit delay.  It comes from the Elk M1 this way so a work-around was put in place.
Fixed issue with descriptionText not always having the device name in it.
Fixed issue with the alarm attribute not always getting set.
Fixed issue with showTextOnKeypad not showing a line of text if it was exactly 16 characters long.
Changed alarm and trouble attributes from on/off to detected/clear.
Changed alarm, armState, armStatus, beep, chime, chimeMode, trouble and the Function key LED attributes to ENUM so the values can be selected in the rules engine.
Changed invalidUser event to show on parent Elk device regardless of keypad it was entered on just like lastUser.
Changed Switch Capability to Lock Capability for Dashboard arming/disarming and for the Amazon Alexa skill.
Improved armStatus, lastUser, lock and securityKeypad events descriptionText to contain user name.
Renamed Stay mode to Home mode to align with Hubitat terminology.
Moved Set Location Mode to Elk Application for full user control.
Added SecurityKeypad Capability.
Added getCodes, setCode and deleteCode commands for compatibility with Lock Code Manager.
Added armingIn attribute to show exit delay.
Added missing invalidUser attribute.
Added ability to shut down connection to the Elk M1 by setting the keypad number to 0.
Added smart refresh feature controlled from the application to refresh child devices in a more controlled way to address issues when reconnecting to the panel especially after the panel has been powered down and back up.
Removed thermostat commands and moved them to the thermostat driver.
Removed armMode attribute.  Between securityKeypad and armStatus, it should be unnecessary.
Removed TemperatureMeasurement capability.  It was conflicting with the Amazon Echo skill.
Now retrieves Fahrenheit or Celsius from the Elk instead of a user preference setting.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant