Widget: Alarm Dashboard

Alarm Dashboard Widget:

Alarm_Dashboard_LuckyMallari.widget.json (8.1 KB)

Configuration (in widget itself):
Unfortunately, you cannot pass an object literal in settings, so configuration will happen inside an ng-init. You will have to modify the code to edit configuration:

Pre-Configuration:
You must have a group of items tied to your sensors (switch, string, date, etc)…
The widget goes through that group to display the state of the items in that group.


Here’s a sample of my items :
Note: RFX:YOURSENSORID… you need your action SENSOR ID here. Check AlarmDecoder Binding info for this.
If you want to use LRR for AlarmDecoder, make sure you use latest version as this has my code changes merged to main.

Group:DateTime gAlarmAllSensorsTimeStamps "Alarm Sensors Timestamps" (All)
DateTime alarmTimeStampsZone13MotionFamilyRoom "Motion Family Room" (gAlarmAllSensorsTimeStamps)
DateTime alarmTimeStampsZone24MotionDetectorOffice "Motion Detector Office" (gAlarmAllSensorsTimeStamps)
DateTime alarmTimeStampsZone37UpstairsMotion "Motion Upstairs" (gAlarmAllSensorsTimeStamps)
DateTime alarmTimeStampsLastKnownPresence "Last Known Motion"
DateTime alarmLastKnownDoorWindowOpenedTimeStamp "Last Door/Window Opened TimeStamp"
String alarmLastKnownDoorWindowOpenedContact "Last Door/Window Opened Contact"
Group:Contact:OR(OPEN,CLOSED) gAlarmAllSensors "Alarm Sensors" (All)
Group:Contact:OR(OPEN,CLOSED) gAlarmContacts "Alarm Contacts" (All)
Group:Contact:OR(OPEN,CLOSED) gAlarmNumbers "Alarm Data" (All)
Group:Contact:OR(OPEN,CLOSED) gAlarmAllSensorsUpstairs "Upstairs Alarm Sensors" (All)
Group:Contact:OR(OPEN,CLOSED) gAlarmAllSensorsDownstairs "Downstairs Alarm Sensors" (All)
Group:Contact:OR(OPEN,CLOSED) gAlarmAllDoors "All Doors" (All)
Group:Contact:OR(OPEN,CLOSED) gAlarmAllMotion "All Motion" (All)
Group:Contact:OR(OPEN,CLOSED) gAlarmAllWindows "All Windows" (All)
Group:Contact:OR(OPEN,CLOSED) gAlarmAllDoorsAndWindows "All Doors and Windows" (All) 
 
Contact alarmContactZone10FrontDoor "Front Door" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllDoors,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone11GarageDoorInside "Garage Door Inside" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllDoors,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone12SideGarageDoor "Side Garage Door" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllDoors,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone13MotionFamilyRoom "Motion Family Room" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllMotion) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x80"}
Contact alarmContactZone14LivingWindow1 "Living Window 1" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone15LivingWindow2 "Living Window 2" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone16DiningRoomWindow "Dining Room Window" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone17KitchenWindow "Kitchen Window" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone18KitchenSlidingDoor "Kitchen Sliding Door" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllDoors,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone19FamilyRoomWindowOne "Family Room Window One" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone20FamilyRoomWindowTwo "Family Room Window Two" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone21OfficeWindow "Office Window" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone22BathroomWindow "Bathroom Window" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone23GarageDoorDriveway "Garage Door Driveway" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllDoors,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x10"}
Contact alarmContactZone24MotionDetectorOffice "Motion Detector Office" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsDownstairs,gAlarmAllMotion) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x80"}

Contact alarmContactZone25LoftWindow "Loft Window" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsUpstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone26MasterBedroomWindow1 "Master Bedroom Window 1" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsUpstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone27MasterBedroomWindow2 "Master Bedroom Window 2" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsUpstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone28MasterBathroomWindow1 "Master Bathroom Window 1" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsUpstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone29MasterBathroomWindow2 "Master Bathroom Window 2" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsUpstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone30KyleRoomWindow "Kyle Room Window" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsUpstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone31GuestWindow1 "Guest Window 1" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsUpstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone32GuestWindow2 "Guest Window 2" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsUpstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone33GuestWindow3 "Guest Window 3" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsUpstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone34KoyoRoomWindow "Koyo Room Window " (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsUpstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone35MasterBathroomWindow3 "Master Bathroom Window 3" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsUpstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone36UpstairsBathroomWindow "Upstairs Bathroom Window" (gAlarmContacts,gAlarmAllSensors,gAlarmAllSensorsUpstairs,gAlarmAllWindows,gAlarmAllDoorsAndWindows) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x20"}
Contact alarmContactZone37UpstairsMotion "Upstairs Motion" (gAlarmContacts,gAlarmAllSensors,gAlarmAllMotion,gAlarmAllSensorsUpstairs) {alarmdecoder="RFX:YOURSENSORID#contact,bitmask=0x80"}
data-ng-init="alarmGroups=ArrayOfAlarmGroup">

AlarmGroup schema:

{
  name: string, <mandatory>
  sensorGroupName: string, <mandatory>
  headerBg: string [optional]
}

No background color example init:

data-ng-init="alarmGroups=[
  {name:'Downstairs', sensorGroupName: 'gAlarmAllSensorsDownstairs'},
  {name:'Upstairs', sensorGroupName: 'gAlarmAllSensorsUpstairs'},
]"

With background color example init:

data-ng-init="alarmGroups=[
  {name:'Downstairs', sensorGroupName: 'gAlarmAllSensorsDownstairs', headerBg: 'green'},
  {name:'Upstairs', sensorGroupName: 'gAlarmAllSensorsUpstairs', headerBg: 'blue'},
]"

headerBg must be a valid CSS color.

isDynamicAlign:
If this is checked/true, then the columns for each group will be aligned. RIght for odd, left for even.

Demos:

No background color, with NO dynamic header align:

Bbackground color, with dyamic header align:

!

Config:

!

No color:

Requested from Added support for AlarmDecoder LRR Protocol

5 Likes

This looks amazing. Now I just need a keypad to compliment this to be cable to arm/disarm from HABpanel. I’m setting up an AD2PI soon so thank you for sharing this.

Keypad is here:

1 Like

Hi Lucky

would you mind uploading a single version of these, that is blank and can monitor single items not groups i have exported your widget and looked at changing the code to fit what i wanted but that’s beyond me at the moment.

i have a few more items i would like to have a dispay when they last run like bed routine morning routing ect

also is there a way to split your 3 pannels so they can be placed in different places and resized individually

I’ll make that for you as a separate widget. The config will be a list of items separated by a comma… I’ll make the icon configurable too. I’ll start maybe after Easter Sunday :slight_smile:

1 Like

Thanks m8 I appreciate that don’t rush have a good easter thanks lucky

Item Dashboard (new) can be found here:

Thanks lucky I will have a look at setting this over the next few days will get back too you