[Release] Nyckelharpa, an HSM Extension

To kind of solved the auto force rearming, when using Dash Board, here is what I did, it maight help you and give you some ideas for future version. thanks

I have created Virula sw to retray arming, and nemade it Virtual sw - Try again to Arm.
Then in HSM falure to arm, i selected thes virtual switch tu be turned ON.

Then I created a Rule to be trigered by this Virtual switch. It will arme, away if nobody home, ese It will arme Night if some REAL contacts are closed, or Home if many are open.

here it is teh rule

Name this Rule:
AUTO ARM: Try to arm again (Nyckelharpa app Version will arm AN/H with doors opened)

Select Trigger Events: Virtual sw - Try again to Arm (off) turns on
Select Actions to Run:
Wait for condition: Gate, Doorbell/ Street Door, Entrance Door, Pa tioDoor, Terrace door all closed FALSE --> timeout: 0:00:10
IF ( Luis XXX App, Luis, Mb all not present(F) [FALSE]) THEN
IF (HSM status is Disarmed(F) [FALSE]) THEN
Hubitat® Safety Monitor: Arm Away
END-IF
ELSE
Wait for events: HSM status is changed --> timeout: 0:00:10
IF (NOT HSM status is Delayed Arming Home(T) OR
NOT HSM status is Delayed Arming Night(T) OR
OR
NOT HSM status is Delayed Arming Away(T) [TRUE]) THEN
IF (HSM status is Disarmed(F) [FALSE]) THEN
IF (Gate, Street Door, Entrance Door, PatioDoor, Terrace door all closed [FALSE]) THEN
Hubitat® Safety Monitor: Arm Night
ELSE
Hubitat® Safety Monitor: Arm Home
Speak on Echo - Bedroom: 'You are, in danger. Some doors are open'
END-IF
END-IF
END-IF
END-IF

[Update] Aug 16, 2020 13:45EDT

What Changed

  • The forced arming window is now a user adjustable input field from 10 to 40 seconds. Default: 15

How to install
There is 1 module associated with this update. Manually update, or use the Hubitat Package Manager. Perform post installation instructions.

App Code

  1. Nyckelharpa (V1.2.0)

Post installation instructions

  1. Set Forced Arming seconds. If not set, it defaults to 15

Source Code and Documentation

1 Like

:+1: :grinning: :+1:
Can I change range to 120 sec.?
Line 262
input "globalForceSeconds", "number", required: false, range:"10..120", defaultValue: 15,

Will it work?

A sugestion for line 263
Line 263
title: "Number of seconds allowed for Forced Arming window between 10 to 120. Default: 15"

Yes, I don't recommend going that high, but it will work

Thanks. You are right I don't recommend ether.

I just need this 120s, only becuase I have a ruel runing for AUTO re-ARMIN activeated 24/7. So it give time for my rule to check evething an chose what to use for the earmin, Away (if nobody home), Home (some REAL contacts opened) or Night ( if all REAL contacts colsed).

Thanks again

I just have a sugestion for line 263 at your Gitub file add this between 10 to 40, so everybody will have

your app running nice and smod.
Line 263
title: "Number of seconds allowed for Forced Arming window between 10 to 40 . Default: 15"

Is it possible with the driver to "test" which keypad code is entered by name? I am trying to write a webcore piston to perform actions based on whose code was entered? I have a Centralite V2 keypad. I have deleted the lock manager codes on the keypad and removed lock manager from my HE configuration. I have my users defined in Nyckelharpa and arming/disarming of HSM works group via the keypad.

I want to be able to know whose code was entered and I would like to create a another code that will open a garage door but not arm or disarm HSM. Any ideas?

Here's the some information you need. Sorry I don't remember how to do it with WebCore. Additional info is found in the nyckelharpa keypadCodeHandler routine. However, pin user name is not used except with notification and logging messages

Using the Nyckelharpa pins you may restrict a pin to a particular device.

There's logic in the code I moved over from ST that executes a Webcore Piston, but never implemented or tested it in HE

No but you can do it by pin number.

subscribe(globalKeypadDevices, 'codeEntered', keypadCodeHandler) //issued by Centralitex Keypad driver
def keypad = evt.getDevice();
// log.debug "keypadCodeHandler called: $evt by device : ${keypad.displayName} ${keypad.getId('motionTime')}"
def codeEntered = evt.value as String //the entered pin

Subscribe to location, hsmSetArm It's issued only for valid pins

> sendLocationEvent(name: "hsmSetArm", value: HSMarmModes[modeEntered], descriptionText: "Nyckelharpa ${keypad.displayName}")

Hi Arnb, Thanks for all your work on this app. Just wanted to ask, is there a reason that only open/close contacts (not motion & smoke detectors) are only included. From my experience motion & smoke detectors are also likely to play up & stop arming. Could they be added in?
Smewhere through the discussion above you advised that a virtual switch should be added as the app needs to advise not being allowed to arm due to a contact being open. I already have notifications via speakers & push to my phone, would this negate the need for the virtual switch??

The app's main purpose is to allow for a contact sensor to be open while arming the HSM system and using arming failure warnings. Other sensors may be monitored by HSM. Motion sensors may and generally are active when arming especially in Home or Night mode, hopefully a smoke detector is not.

HSM has two rather obtuse arming settings:

  • When no arming warnings (notification, device, etc) are set, HSM silently arms when any sensor is open or active.

  • When any arming warnings (notification, device, etc) are set, HSM will not arm. Hence the suggestion to set a virtual device when no other warning is set.

Nyckelharpa attempts to set a middle ground with a third setting: Warn the user, then allow the next attempt within a specified time period in seconds to arm the system.

1 Like

Thanks for getting back to me so quickly. My suggestion would only apply if the alarm was activated while you weren't present. And then couldn't be re-armed due to a faulty motion or smoke detector. However if it can't be it can't be. Thanks

I understand your concern.

I feel motion sensors can be eliminated as a concern, HSM arms when motion sensors are active. The real issue may occur when a motion sensor produces false triggers while you are away. I had this occur, a fresh battery cured the problem.

Smoke detectors are a whole other issue, but I don't believe it impacts HSM status arming.

Being able to get into the hub with a VPN is a wise choice.

I didn't realise it arms when they're active? I don't need to worry as mine is armed and disarmed by presence. Thanks for getting back to me.

What it is attempting to say for paragraph 2 is

  • standard HSM does not respond to panic requests when the HSM system is disarmed.
  • With Nyckelharpa and a properly configured HSM panic rule, panic is honored when the HSM status is disarmed.

[Update] Dec 15, 2020 13:29EST

What Changed

  • Keypad device attribute lastCodeName contains the name of last accepted pin code. Lock Code Manager and Nyckelharpa pins supported.

  • Added support for proprietary, EU only, Centralite 3400-D keypad with 6 digit pins

  • Centralite-Keypad driver: Minor code change reducing trace and event logging overhead

How to install
There are 2 modules associated with this update. Manually update, or use the Hubitat Package Manager. No post installation update required.

Posting Update: Had a report HPM would not update this package and encountered same. Should HPM not update this package, use the Repair option for this package.

App Code

  1. Nyckelharpa (V1.2.1)

Driver Module

  1. Centralite-Keypad (V1.0.5)

Post installation instructions

  1. None

Source Code and Documentation

Thanks

I'm new to Hubitat, I might have missed something. I put both the App Code Nyckelharpa (V1.2.1) and the Driver Module (Centralite-Keypad (V1.0.5) into Hubitat and neither gives me the "panic" button feature optionI'm looking for. Acutally it renders my Iris V2 3405-L useless. Suggestions?

Did you follow all the directions in the documentation paragraph 13, create a HSM custom panic rule?

Is there a way to prevent talker from saying "you have 30 seconds to exit the facility" when selecting Armed - Home and only say it for Armed - Away?

Unfortunately not. However you can change the message to something like "system arming in %nn seconds"