ESP8266 into existing alarm DSC System

The Alarm memory comes from the stored zone flags so if you have the AL:xx on, then the firmware thinks there is still a stored alarm zone.

Edit: Don’t worry about the logs. I have a suspicion as to whats going on so I’ve made a change and updated dev. Try it out and we’ll see. It’s related to how the panel sends out zone info and the associated partition.

When do the cleaning zone alarms exactly occur? Do I need to perform a complete arm/disarm cycle, or should it be sufficient to disarm during the exit delay?

Has to be a full arm after exit delay…
Edit: Actually, I’m changing that to just disarm during exit delay …

Alain, I just tested and clearing alarm memory occurs during full arming - thank you very much!

FYI, i’ve updated the code so it also clears during a partial arm/disarm (during exit delay)

…and it’s working perfectly! Thank you so much!

Quick question: Is clearing the alarm memory something that can be managed via the Keybus interface? I thought the “trigger” for clearing it was controlled exclusively by the DSC board and only occurred based on its internal logic. If that’s the case, would it be possible to implement a service call to clear the alarm memory directly, allowing it to be done from HA without needing to go through a full alarm cycle?

Another question: I noticed that when there’s an alarm in the alarm memory, pressing *3 on the virtual keyboard displays the alarm memory as expected. However, after pressing # to exit, a message briefly appears saying, “No alarms in alarm memory.” Can you reproduce this behavior on your end? It seems odd for that message to show up when there’s clearly something stored in the memory.

The esp keeps it’s own list of alarmed zones separate from the panel. There is no method to clear the panel’s alarm memory except for arming/disarming

…but if this is driven by the panel and happens when the real armed state kicks in, then how were you able to bring clearing earlier to ‘exit delay’? :confused:
(certainly not challenging you, just trying to understand what’s happening).

My description was not clear enough, apologies for that.
So when there is an alarm in the alarm memory, both in the panel and esp (so they are in sync), if you check the alarm memory by *3 on the virtual keyboard, then it displays correctly the memory, let’s say z01 (if that was alerting), however, if you press # to get out of the alarm memory menu on the virtual keyboard, then “No alarms in alarm memory.” gets displayed for a second only.

Ok, I brought clearing to exit delay to the esp code only. The panel does the same thing. I just duplicated what the panel does and did not change how the panel behaves.

As to the “no alarms” display, that’s just a timing thing in the code. I modified it as you are concerned about that message. I have not heard anyone else mentioning it.

Many thanks! …and just let me know if my OCD annoys you!

No worries, every suggestion makes for better code :slight_smile:

I truly appreciate all your help, support, and quick responses. Please enjoy some coffee on me! :slight_smile:

Thank you very much! Always glad to get new ideas and suggestions to improve it!

FYI, you can apply filters either in HA or in ESPHome to change the sensor values to whatever you want. For instance, if you don’t like getting the “not_ready” value when the system can’t be armed due to an open sensor, you can apply filters. For example, here is a filter added to the partition status in the esphome yaml config that forces the not_ready value to be disarmed when sent to HA. This is useful since the HA Alarm panel integration doesn’t support the “not_ready” flag as it only recognizes “unavailable”, armed, disarmed, etc. Some people find it confusing when they see “unavailable” and assume there is something wrong with the sensor. So with this filter, you can send it whatever it likes. FYI, the platform: dsc_alarm_panel is new (I integrated the sensor/template alarm logic into one component), but template_alarm or template should also work as usual.

  - platform: dsc_alarm_panel
    id: ps_1  
    name: "Partition 1 Status (ps_1)"
    icon: "mdi:shield"
    filters:
      - lambda: |-
          if (x == "not_ready") x="disarmed";
          return x;