This worked Thanks!
Actually, looks like after putting this line in my configuration.yaml enabled logging of everything. My log was like 3.1GB in a span of 2 hours.
I checked the logs and now its logging, debug, info, everything not even related to keymaster.
Before it was only logging warnings, errors.
Do I need to add more parameters to this line not to enable logging of everything?
You can try this then:
logger:
default: error
logs:
custom_components.keymaster: critical
My experience is that the actual default should be warning
at least if you want to match the normal logging behavior. Though setting to error
definitely will reduce all loging
Hello, I just removed and reinstalled Keymaster and I dont see the errors anymore.
It was a pain to re-setup since I have to have a 60 footer Ethernet (making it a USB extension) to make the Zwave dongle closer to the lock (BE469).
I think I tinkered on it a lot when I was initially setting it up and I ended up messing up something. Started fresh again and its all good now.
Thanks for your help.
Hello, first off I like to say thanks for the great project! i have been wondering how to setup Garage Notifications? Does anyone have any insight into this?
I have just created a Node-RED flow to trigger notifications on lock events. Please noteā¦ it is truly awful. A complete mess. I know about as much about coding as I do about home decorating. And coincidentally, I have at least as many excess nodes in this flow as I do excess pillows in my living room (in my opinion, which according to my wife is worthless).
Hereās the flow. I built it iteratively using debug nodes. My message nomenclature is horrendous. But it works. The three key bits of info are lock state, lock (name), and slot (user). Someone way smarter than me could put most of this flow into a single function node. Ideally, Iād like to create a subflow that either allows for the number of slots, user names, and lock names to be addedā¦ or even better, pulls all of that information from the Keymaster config. I donāt know if the latter is possible.
Anywayā¦ behold my crappy flow:
[{"id":"df3870764c87ac9a","type":"group","z":"647eafda.c7cfa","name":"Door Lock Notifications","style":{"label":true},"nodes":["684ad4b5722e759d","f25ed3b4e6ce55f3","f9b8ec1c28b8fbd9","a670aaacfad6913a","3b7fc3cc7e27aa85","5166f974ca56568e","d07cca1e11406367","f0433b0a7edaef0b","e8c145174ce7d71b","53a48d3cc805b6aa","f7d97df523e35c6b","eab5077b8975a825","3aaaeaecbb837998","401e4a4c8d50fae7","675801b24024a5c6","5c767d42fb80c77e","8f2ed5388d0eaa36","00e9e9586ec47c3f","72edc5645ccce85a","074db3ee2a88f015","109edd8059f1029d","326e40d98777a356"],"x":34,"y":1824,"w":1992,"h":377},{"id":"684ad4b5722e759d","type":"server-events","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"Door Lock Event","server":"296c0678.b5f9ca","version":2,"eventType":"keymaster_lock_state_changed","exposeToHomeAssistant":false,"eventData":"","haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"waitForRunning":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"eventData"}],"event_type":"","x":140,"y":1980,"wires":[["f25ed3b4e6ce55f3"]]},{"id":"f25ed3b4e6ce55f3","type":"change","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"Change message","rules":[{"t":"set","p":"state","pt":"msg","to":"payload.event.state","tot":"msg"},{"t":"set","p":"slot","pt":"msg","to":"payload.event.code_slot","tot":"msg"},{"t":"set","p":"lock","pt":"msg","to":"msg.payload.event.lockname","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":1980,"wires":[["a670aaacfad6913a"]]},{"id":"f9b8ec1c28b8fbd9","type":"switch","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"Slot","property":"payload.event.code_slot","propertyType":"msg","rules":[{"t":"eq","v":"0","vt":"str"},{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"4","vt":"str"},{"t":"eq","v":"5","vt":"str"},{"t":"eq","v":"6","vt":"str"}],"checkall":"true","repair":false,"outputs":7,"x":890,"y":1980,"wires":[["00e9e9586ec47c3f"],["f0433b0a7edaef0b"],["d07cca1e11406367"],["e8c145174ce7d71b"],["53a48d3cc805b6aa"],["f7d97df523e35c6b"],[]]},{"id":"a670aaacfad6913a","type":"switch","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"Lock Name","property":"msg.payload.event.lockname","propertyType":"msg","rules":[{"t":"eq","v":"frontdoor","vt":"str"},{"t":"eq","v":"garagedoor","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":530,"y":1980,"wires":[["3b7fc3cc7e27aa85"],["5166f974ca56568e"]]},{"id":"3b7fc3cc7e27aa85","type":"change","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"Front Door","rules":[{"t":"set","p":"lock","pt":"msg","to":"front door","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":730,"y":1960,"wires":[["f9b8ec1c28b8fbd9","8f2ed5388d0eaa36"]]},{"id":"5166f974ca56568e","type":"change","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"Garage Door","rules":[{"t":"set","p":"lock","pt":"msg","to":"garage entry door","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":730,"y":2000,"wires":[["f9b8ec1c28b8fbd9"]]},{"id":"d07cca1e11406367","type":"change","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"user2","rules":[{"t":"set","p":"user","pt":"msg","to":"user2","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1080,"y":1980,"wires":[["eab5077b8975a825"]]},{"id":"f0433b0a7edaef0b","type":"change","z":"647eafda.c7cfa","d":true,"g":"df3870764c87ac9a","name":"user1","rules":[{"t":"set","p":"user","pt":"msg","to":"user1","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1070,"y":1940,"wires":[["eab5077b8975a825"]]},{"id":"e8c145174ce7d71b","type":"change","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"user3","rules":[{"t":"set","p":"user","pt":"msg","to":"user3","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1080,"y":2020,"wires":[["eab5077b8975a825"]]},{"id":"53a48d3cc805b6aa","type":"change","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"user4","rules":[{"t":"set","p":"user","pt":"msg","to":"user4","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1080,"y":2060,"wires":[["eab5077b8975a825"]]},{"id":"f7d97df523e35c6b","type":"change","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"user5","rules":[{"t":"set","p":"user","pt":"msg","to":"user5","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1070,"y":2100,"wires":[["eab5077b8975a825"]]},{"id":"eab5077b8975a825","type":"template","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"Set Message","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{{user}} has {{payload.event.state}} the {{lock}}.","output":"str","x":1310,"y":2020,"wires":[["675801b24024a5c6"]]},{"id":"3aaaeaecbb837998","type":"api-call-service","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"Notify user1's iPhone","server":"296c0678.b5f9ca","version":5,"debugenabled":false,"domain":"notify","service":"mobile_app_joshs_iphone","areaId":[],"deviceId":[],"entityId":[],"data":"{ \"title\": \"Home Assistant\",\t \"message\": \"{{payload}}\"\t}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1900,"y":1980,"wires":[[]]},{"id":"401e4a4c8d50fae7","type":"template","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"Set Message","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"The {{lock}} has been {{payload.event.state}} {{method}}.","output":"str","x":1470,"y":1900,"wires":[["675801b24024a5c6"]]},{"id":"675801b24024a5c6","type":"api-current-state","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"No One Home?","server":"296c0678.b5f9ca","version":3,"outputs":2,"halt_if":"true","halt_if_type":"bool","halt_if_compare":"is","entity_id":"binary_sensor.no_one_home","state_type":"habool","blockInputOverrides":false,"outputProperties":[],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":1680,"y":1960,"wires":[["5c767d42fb80c77e"],["3aaaeaecbb837998"]]},{"id":"5c767d42fb80c77e","type":"api-call-service","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"Notify user1's iPhone","server":"296c0678.b5f9ca","version":5,"debugenabled":false,"domain":"notify","service":"mobile_app_joshs_iphone","areaId":[],"deviceId":[],"entityId":[],"data":"{\"title\":\"Home Assistant\",\"message\":\"{{payload}}\",\"data\":{\"push\":{\"sound\":{\"critical\":1}}}}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1900,"y":1940,"wires":[[]]},{"id":"8f2ed5388d0eaa36","type":"debug","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"FRONT DOOR output","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1040,"y":2160,"wires":[]},{"id":"00e9e9586ec47c3f","type":"switch","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"Method","property":"payload.event.action_text","propertyType":"msg","rules":[{"t":"eq","v":"Manual unlock operation","vt":"str"},{"t":"eq","v":"Manual lock operation","vt":"str"},{"t":"eq","v":"RF unlock operation","vt":"str"},{"t":"eq","v":"RF lock operation","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":1080,"y":1880,"wires":[["074db3ee2a88f015","326e40d98777a356"],["074db3ee2a88f015"],["72edc5645ccce85a"],["72edc5645ccce85a"]]},{"id":"72edc5645ccce85a","type":"change","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"RF","rules":[{"t":"set","p":"method","pt":"msg","to":"by a Z-wave command","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1270,"y":1940,"wires":[["401e4a4c8d50fae7"]]},{"id":"074db3ee2a88f015","type":"change","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"Manually","rules":[{"t":"set","p":"method","pt":"msg","to":"manually","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1260,"y":1900,"wires":[["401e4a4c8d50fae7","109edd8059f1029d"]]},{"id":"109edd8059f1029d","type":"debug","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"MANUALLY output","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1550,"y":2080,"wires":[]},{"id":"326e40d98777a356","type":"debug","z":"647eafda.c7cfa","g":"df3870764c87ac9a","name":"METHOD output","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1320,"y":2140,"wires":[]},{"id":"296c0678.b5f9ca","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]
EDIT: I realized my function node wasnāt really adding anything to the flow, just changing the payload structure. Iāve updated the flowā¦ still stupid, but now less so. Also added differentiation between RF and manual operation.
I setup an automation to give me an entity that reflects the last lock action in an easy to read format. This isnāt required, as you could just parse the keymaster_lock_state_changed event every time in any automation you need, but I wanted something a little simpler to be able to trigger automation off of when āperson x unlocks the doorā, etc. Create an input_text helper and then this automation will update the status of that helper with the last lock action. For example, if you have a user code āJeffā and he unlocks the door via keypad, this input_text value will change to āUnlocked (Jeff)ā. Its helpful for me and it took a bit of struggling to get it working, so I thought I might pass it along.
alias: Status - Door Lock Status
description: ""
trigger:
- platform: event
event_type: keymaster_lock_state_changed
action:
- if:
- condition: template
value_template: "{{ trigger.event.data.entity_id == 'lock.front_door' }}"
then:
- service: input_text.set_value
data:
value: >
{% set user = trigger.event.data.code_slot_name %}
{% if trigger.event.data.code_slot_name == "" %}
{% set user = 'Keypad' %}
{% endif %}
{% if trigger.event.data.action_text == 'Manual unlock operation' %} Unlocked (Manual)
{% elif trigger.event.data.action_text == 'Manual lock operation' %} Locked (Manual)
{% elif trigger.event.data.action_text == 'Keypad unlock operation' %} Unlocked ({{ user }})
{% elif trigger.event.data.action_text == 'Keypad lock operation' %} Locked ({{ user }})
{% endif %}
target:
entity_id: input_text.front_door_lock_status
Any idea why I canāt program a specific pin code into a specific lock slot? When I specify slot 2 with 3039
as the 4 digit code and enable the lock, it gets stuck in āAddingā mode, but the door is never configured. If I change the code to any other 4 digit PIN, it Adds and Connects just fine. However, I can set slot 5 of that lock to 3039
.
Iāve tried forcing the specific PIN into the lock using Developer Tools ā States, but it wonāt stay programmed. I filter the list of entities so I can see sensor.opal_lock_code_slot_2
in the list, select that entity, enter the pin 3039
, and click Set State. The pin updates in the filtered list below to 3039
, but a few seconds later it reverts to blank.
Note that Iāve had everything configured and operating well for over a year now. The only changes Iāve made are applying updates, but the last time was 3 months ago. I have 7 Yale z-wave locks in the house configured with keymaster. Only this one lock and slot is having a problem. None of the other slots are programmed with this pin code.
Clueless what might be wrong. Ideas?
The newer zwavejs2mqtt versions has a very usable UI for managing user codes, and I find it much more reliable than keymaster. Better yet, getting rid of keymaster entities and automations has made HA so much easier to use and configure.
My Zooz Zwave stick died and had to be replaced, so I am rebuilding my entire Zwave network. Iāve named all my devices as they were before and the network is up and running, except for my six Kwikset locks.
Iāve excluded/included the first lock, but in Keymaster Iām getting an error, āThis entity does not have a unique ID.ā
Am I approaching this the right way or am I missing a step somewhere?
Thanks much.
EDIT: I did miss a step. I forgot about the edit button on the dashboard. From there I can re-enter āfront_doorā and that removes the error.
I have 4 zwave locks that I want to sync codes to and using Keymaster was unmanageable.
I created a trimmed down version, that does not support scheduling and just focused on updating codes and notifications. Its a simple package install and copy some YAML for a dashboard. You can create automations if you want to do scheduling.
Keymaster is awesome, and if I had 2 locks and needed scheduling I would absolutely use it.
I am getting keymaster_front Lock Notifications uses an unknown service even though I created the scripts for both front and read door. Rear door is working is working great, but itās like it cannot find my front script. I assumed a simple misspelling but that doesnāt appear to be the case.
The automation ākeymaster_front Lock Notificationsā (
automation.keymaster_front_lock_notifications
) has an action that calls an unknown service:script.keymaster_front_manual_notify
.
This works (keymaster_rear_manual_notify):
alias: keymaster_rear_manual_notify
sequence:
- service: notify.telegram
data:
title: "{{ title }}"
message: "{{ message }}"
mode: parallel
max: 10
This is not working (keymaster_front_manual_notify). I checked and it is enabled. Not showing as having been triggered by the automation like rear has:
alias: keymaster_front_manual_notify
sequence:
- service: notify.telegram
data:
title: "{{ title }}"
message: "{{ message }}"
mode: parallel
max: 10
Automation front (keymaster_front Lock Notifications):
alias: keymaster_front Lock Notifications
trigger:
- platform: event
event_type: keymaster_lock_state_changed
event_data:
lockname: front
condition:
- condition: state
entity_id: input_boolean.front_lock_notifications
state: "on"
action:
- service: script.keymaster_front_manual_notify
data_template:
title: front
message: >-
{{ trigger.event.data.action_text }} {% if trigger.event.data.code_slot
> 0 %}({{ trigger.event.data.code_slot_name }}){% endif %}
Any thoughts as to why it canāt trigger the script?
Does the script show up in your services list under the Dev tools?
Brilliant. It DOES show up but there it is listed as:
Script: keymaster_front_manual_notify
script.keymaster_front_manual_notify_duplicate
I had to nuke everything and start over at some point. I went through and manually deleted all of the entities and automations and everythingā¦but apparently the service was left over and caused this one to be renamed duplicate.
I renamed it in Entities to remove ā_duplicateā but after restarting it still shows up in Services as notated above.
Is there a way to correct this on the backend somehow or do I need to just change the automation to point to āā¦_duplicateā? Iād prefer the former but I if itās going to be a major PITA I can just change the automation.
not sure whatās going on there, something funky with your HA
EDIT:
check under Settings ā Automations might be one you made via the UI previously
Yeah, itās really bizarre. Nothing in automations. I searched for ā_duplicateā everywhere I can.
Here are the screenshots for Settings > Entities and Dev Tools > Services.
I got it working. When I got home I opened up the app on my phone and went to scripts and both scripts (two versions of the front_door_manual_notify) were present (one with _duplicate). I was not able to delete or edit the _duplicate one because it ādid not exist in scriptsā but I was able to delete the other one.
Then I restarted scripts and both were gone! I duplicated my rear door lock manual notify (now I remember how the _duplicate was made) and edited it and now it works.
Hello, KeyMaster is awesome and many thanks to the creator(s). Install went well and my Kwikset lock has been working perfectly for a few months. But Iāve got only one issue, I have 6 codes setup and 1 of those is configured for M-F & 8am-8pm. This Custom Workdays works well and I get a persistent notification everytime the āSingle User Code Deletedā fires. Question: I would like to get a notification when that User Code is re-enabled. Is this missing or just not working in my setup?
Where does one find this in the new zwavejs2mqtt module?