YET another take on an alarm system

i managed to make the panel works with the custom component, but the moment i enable mqtt for the alarm panel node red stop working…

i reinstalled node-red and now all is working again.

Glad you got it sorted, sorry I’m late to the party. The help docs on github need a full overhaul to be honest.

@thanksmister the custom component works with either the HASS MQTT Broker or a custom defined one, no need for the manual MQTT control panel. This gives all the features of this component plus access to other MQTT apps such as yours.

@gazoscalvertos I think he wanted a solution that uses both the custom web alarm panel and the Android alarm panel, therefore he would need to use the manual MQTT alarm control panel component for HASS. I assume your custom control panel works with that as well.

i am using the embedded mqtt broker of hassio with @thanksmister panel is association with @gazoscalvertos custom components. all works except the “perimeter mode”.

1 Like

@nebbiadigiorno is right.

There is no need to use the manual MQTT alarm control panel with this custom component, it has the MQTT features/function built in.

All that is required is use of the embedded MQTT broker for hassio or an alternative like mosquitto.

The MQTT alarm panel does work with this custom alarm. I have it running for my Brother in law who lives with me on his tablet so he can arm and disarm the alarm. That made it easier for him so I can use the dashboard with it so he can see just what he needs to control. This is where I see that coming into play so if you do not want some one to be able to control all items in the house and only the ones you want them to control.

1 Like

I haven’t seen that alarm panel, but thanks for the explanation of its potential use case.

I am able to arm/disarm and control my alarm just fine but if I arm or disarm my alarm via the the actual alarm panel or the envisalink app the state change doesn’t show on this alarm system. Is there anyway for me to have this system reflect the actual state from envisalink?

Hi,

Has anyone been able to integrate this with the envisalink component https://home-assistant.io/components/envisalink/ with this great alarm panel ?

I was able to get this up and running with the default values, but obviously it doesn’t arm or disarm my alarm.
It does show the correct states of each sensor.

Is it just a matter of changing the service that it triggers on the automation.yaml ?

Thanks,
Claudio

I don’t remember how but I can arm or disarm my alarm with this and it will show accurately. It shows my sensors that I added to the alarm.yaml just fine. I just can’t get it to show the correct state if I arm/ disarm from my panel or smartthings or the envisalink app. I think I just have to have it get the correct state from envisalink somehow. That’s where I am stuck for now.

Edit: For now I have gotten around it by creating an automation that says something to the effect of if the envisalink control panel changes to pending to change this control panel to armed home. Seems to work just fine.

Hi @gazoscalvertos,

I am trying to install alarm addon and get below error. I am on docker + HA. I have copied all the files are per the instruction. Please help.

`2018-03-25 01:03:14 ERROR (MainThread) [frontend.js.latest.201802270] data:text/javascript;charset=utf-8,%0A%09function%20enableSidebar()%7B%7D%0A%09function%20disableSidebar()%7B%7D%0A%0A%09Polymer(%7B%0A%09%09is%3A%20’ha-panel-alarm’%2C%0A%09%09created()%20%7B%0A%09%09%7D%2C%0A%09%09attached()%20%7B%0A%09%09%09var%20script%20%3D%20document.createElement(‘script’)%3B%0A%09%09%09script.setAttribute(‘src’%2C%20’%2Flocal%2Falarm%2Falarm_scripts.js’)%3B%0A%09%09%09document.body.appendChild(script)%3B%0A%09%09%7D%2C%0A%09%09ready()%20%7B%0A%0A%09%09%09this.hideSensors%20%3D%20this.alarm.attributes.hide_sensor_groups%0A%09%09%09this.hideCustom%20%20%3D%20this.alarm.attributes.hide_custom_panel%0A%0A%09%09%09if%20(this.alarm.attributes.clock)%20%7B%0A%09%09%09%09this.updateTime()%3B%0A%09%09%09%7D%0A%09%09%09if%20(this.alarm.attributes.weather)%20%7B%0A%09%09%09%09this.getWeather()%3B%0A%09%09%09%7D%0A%09%09%09this.async(this.toggleSiderbar%2C100)%3B%0A%20%20%20%20%20%20%2F%2Fif%20(this.screensaver)%7B%0A%20%20%20%20%20%20%2F%2F%20%20%20%20%20%09%20this.setupEyeCandy()%3B%0A%20%20%20%20%20%20%2F%2F%20%20%20%20%20%7D%0A%20%20%7D%2C%0A%20%20properties%3A%20%7B%0A%20%20%20%20%20%20hass%3A%20%20%20%20%20%20%20%20%20%20%20%20%7B%20type%3A%20Object%20%7D%2C%0A%20%20%20%20%20%20panel%3A%20%20%20%20%20%20%20%20%20%20%20%7B%20type%3A%20Object%20%7D%2C%0A%20%20%20%20%20%20narrow%3A%20%20%20%20%20%20%20%20%20%20%7B%20type%3A%20Boolean%2C%20value%3A%20false%20%7D%2C%0A%20%20%20%20%20%20showMenu%3A%20%20%20%20%20%20%20%20%7B%20type%3A%20Boolean%2C%20value%3A%20false%20%7D%2C%0A%0A%20%20%20%20%20%20alarm%3A%20%20%20%20%20%20%20%20%20%20%20%7B%20type%3A%20Object%2C%20observer%3A%20’monitorAlarm’%20%7D%2C%0A%0A%20%20%20%20%20%20%2F%2F%20Sensor%20Groups%0A%20%20%20%20%20%20immediate%3A%20%20%20%20%20%20%20%7B%20type%3A%20Array%2C%20computed%3A%20’computeSensors(hass%2C%20alarm.attributes.immediate)’%20%7D%2C%0A%20%20%20%20%20%20delayed%3A%20%20%20%20%20%20%20%20%20%7B%20type%3A%20Array%2C%20computed%3A%20’computeSensors(hass%2C%20alarm.attributes.delayed)’%20%7D%2C%0A%20%20%20%20%20%20ignored%3A%20%20%20%20%20%20%20%20%20%7B%20type%3A%20Array%2C%20computed%3A%20’computeSensors(hass%2C%20alarm.attributes.ignored)’%20%7D%2C%0A%20%20%20%20%20%20perimeter%3A%20%20%20%20%20%20%20%7B%20type%3A%20Array%2C%20computed%3A%20’computeSensors(hass%2C%20alarm.attributes.perimeter)’%20%7D%2C%0A%20%20%20%20%20%20allsensors%3A%20%20%20%20%20%20%7B%20type%3A%20Array%2C%20computed%3A%20’computeSensors(hass%2C%20alarm.attributes.allsensors)’%7D%2C%0A%20%20%20%20%20%20overrideSensors%3A%20%7B%20type%3A%20Array%2C%20computed%3A%20’computeSensors(hass%2C%20alarm.attributes.override)’%20%7D%2C%0A%0A%20%20%20%20%20%20opencount%3A%20%20%20%20%20%20%20%7B%20type%3A%20Number%2C%20value%3A%200%20%7D%2C%0A%0A%20%20%20%20%20%20time%3A%20%20%20%20%20%20%20%20%20%20%20%20%7B%20type%3A%20Object%20%7D%2C%0A%20%20%20%20%20%20weather%3A%09%20%20%20%20%20%20%20%7B%20type%3A%20Object%20%7D%2C%0A%20%20%20%20%20%20temp%3A%09%20%20%20%20%20%20%20%20%20%20%20%7B%20type%3A%20String%20%7D%2C%0A%0A%20%20%20%20%20%20code%3A%20%20%20%20%20%20%20%20%20%20%20%20%7B%20type%3A%20String%2C%20value%3A%20’’%20%7D%2C%0A%20%20%20%20%20%20display_code%3A%20%20%20%20%7B%20type%3A%20String%2C%20value%3A%20’’%20%7D%2C%0A%0A%20%20%20%20%20%20timeoutID%3A%20%20%20%20%20%20%20%7B%20type%3A%20Number%20%7D%2C%0A%0A%20%20%20%20%20%20cleanup%3A%20%20%20%20%20%20%20%20%20%7B%20type%3A%20Array%2C%20value%3A%20%5B%5D%20%7D%2C%0A%20%20%20%20%20%20attemptedArm%3A%20%20%20%20%7B%20type%3A%20Boolean%2C%20value%3A%20false%20%7D%2C%20%0A%20%20%20%20%20%20screensaver%3A%20%20%20%20%20%7B%20type%3A%20Boolean%2C%20value%3A%20false%20%7D%2C%0A%20%20%20%20%20%20settings%3A%09%20%20%20%20%20%20%20%7B%20type%3A%20Boolean%2C%20value%3A%20false%20%7D%2C%0A%0A%20%20%20%20%20%20%2F%2FENUMS%20USED%20FOR%20CSS%20CLASS%20SELECTION%0A%20%20%20%20%20%20panel_locked%3A%20%20%20%20%7B%20type%3A%20Boolean%2C%20value%3A%20false%20%7D%2C%0A%0A%20%20%20%20%20%20hideSensors%3A%20%20%20%20%20%7B%20type%3A%20Boolean%2C%20value%3A%20true%20%7D%2C%0A%20%20%20%20%20%20hideCustom%3A%20%20%20%20%20%20%7B%20type%3A%20Boolean%2C%20value%3A%20true%20%7D%2C%0A%20%20%7D%2C%0A%0A%09computeValue%3A%20function(entity)%20%7B%0A%09%20%20%20%09if%20(entity%20%3D%3D%20undefined)%20%7B%0A%09%09%20%20%20%20return%20false%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20%20%20return%20entity%3B%0A%09%09%7D%0A%09%7D%2C%0A%0A%20%20toggleCSS%3A%20function(ev)%20%7B%0A%20%20%09ev.stopPropagation()%3B%0A%09var%20css%20%3D%20ev.target.getAttribute(‘data-css’)%3B%0A%20%20%09switch%20(css)%20%7B%0A%09%09case%20’sensors’%3A%20this.hideSensors%20%3D%20!this.hideSensors%3B%0A%09%09%09break%3B%0A%09%09case%20’custom’%3A%20this.hideCustom%20%3D%20!this.hideCustom%3B%0A%09%09%09break%3B%0A%09%7D%0A%20%20%7D%2C%0A%0A%20%20toggleSiderbar%3A%20function()%20%7B%0A%09if%20(this.alarm.attributes.hide_sidebar%20%3D%3D%20true)%20Polymer.dom(this.root).querySelector(’%23disableSidebar’).click()%3B%0A%09if%20(this.alarm.state%20%3D%3D%20’disarmed’)%20%7B%0A%20%20%09%09%2F%2F-----DISPLAY%20THE%20SIDE%20BAR%20ON%20THE%20SCREEN-------------%0A%20%20%09%09if%20(this.alarm.attributes.hide_sidebar%20%3D%3D%20true)%20Polymer.dom(this.root).querySelector(’%23enableSidebar’).click()%3B%0A%20%20%09%7D%0A%20%20%7D%2C%0A%0A%20%20monitorAlarm%3A%20function()%20%7B%0A%20%20%09%2F%2F-----HIDE%20THE%20SIDE%20BAR%20FROM%20THE%20SCREEN-------------%0A%20%20%09if%20(this.alarm.attributes.hide_sidebar%20%3D%3D%20true)%20Polymer.dom(this.root).querySelector(’%23disableSidebar’).click()%3B%0A%0A%20%20%09var%20countdownTimerDiv%20%3D%20Polymer.dom(this.root).querySelector(’%23countdown360_countdown’)%3B%0A%20%20%09if%20(countdownTimerDiv)%20countdownTimerDiv.remove()%3B%0A%0A%20%20%09this.updateStyles(%7B’–countdown-timer-display’%3A%20’none’%7D)%3B%0A%20%20%09this.updateStyles(%7B’–time-display’%3A%20’initial’%7D)%3B%0A%20%20%09if%20(this.alarm.state%20%3D%3D%20’disarmed’)%20%7B%0A%20%20%09%09if%20(this.attemptedArm%20%3D%3D%20true)%20%7B%20this.resetButtons()%3B%20%7D%0A%20%20%09%09%2F%2F-----DISPLAY%20THE%20SIDE%20BAR%20ON%20THE%20SCREEN-------------%0A%20%20%09%09if%20(this.alarm.attributes.hide_sidebar%20%3D%3D%20true)%20Polymer.dom(this.root).querySelector(’%23enableSidebar’).click()%3B%0A%20%20%09%09this.updateStyles(%7B’–primary-color’%3A%20this.alarm.attributes.disarmed_colour%7D)%3B%0A%20%20%09%7D%20else%20if%20(this.alarm.state%20%3D%3D%20’armed_away’)%20%7B%0A%20%20%09%09this.updateStyles(%7B’–primary-color’%3A%20this.alarm.attributes.armed_away_colour%7D)%3B%0A%20%20%09%7D%20else%20if%20(%20this.alarm.state%20%3D%3D%20’armed_home’)%20%7B%0A%20%20%09%09this.updateStyles(%7B’–primary-color’%3A%20this.alarm.attributes.armed_home_colour%7D)%3B%0A%20%20%09%7D%20else%20if%20(%20this.alarm.state%20%3D%3D%20’armed_perimeter’)%20%7B%0A%09%20%20%20%20this.updateStyles(%7B’–primary-color’%3A%20this.alarm.attributes.armed_home_colour%7D)%3B%20%2F%2FSORT%20THIS%20OUT%0A%09%7D%20else%20if%20(this.alarm.state%20%3D%3D%20’pending’)%20%7B%0A%09%09this.updateStyles(%7B’–primary-color’%3A%20this.alarm.attributes.pending_colour%7D)%3B%0A%09%09this.updateStyles(%7B’–countdown-timer-display’%3A%20’initial’%7D)%3B%0A%09%09this.updateStyles(%7B’–time-display’%3A%20’none’%7D)%3B%0A%09%09this.loadTimer(false%2C%20this.alarm.attributes.countdown_time)%3B%0A%09%7D%20else%20if%20(this.alarm.state%20%3D%3D%20’warning’)%20%7B%0A%09%09this.updateStyles(%7B’–primary-color’%3A%20this.alarm.attributes.warning_colour%7D)%3B%0A%09%09this.updateStyles(%7B’–countdown-timer-display’%3A%20’initial’%7D)%3B%0A%09%09this.updateStyles(%7B’–time-display’%3A%20’none’%7D)%3B%0A%09%09this.loadTimer(false%2C%20this.alarm.attributes.countdown_time)%3B%0A%09%7D%20else%20if%20(this.alarm.state%20%3D%3D%20’triggered’)%20%7B%0A%09%09this.updateStyles(%7B’–primary-color’%3A%20this.alarm.attributes.triggered_colour%7D)%3B%0A%09%7D%0A%09if%20(this.alarm.attributes.panel_locked%20%3D%3D%20true)%20%7B%0A%09%09console.log(%22Panel%20locked%22)%3B%0A%09%09this.updateStyles(%7B’–primary-color’%3A%20’grey’%7D)%3B%20%2F%2F%5BTODO%5D%20Implement%20panel%20locked%20colour%20-%20this.alarm.attributes.panel_locked_colour%7D)%3B%0A%09%09this.updateStyles(%7B’–countdown-timer-display’%3A%20’initial’%7D)%3B%0A%2F%2Fcheck%20to%20see%20how%20many%20open%20sensors%20there%20are%2F192.168.15.123%3A8123%2Ffrontend%2Fpanels%2Falarm-001f97509c39e788542bd2b51deb052d.html.js%0A:0:0 Script error

Hi Mate,

That error is linked to the sidebar hiding script which I have removed and replaced with something that should be both backwards compatible and support future HA releases.

I’ll try and get an update to the codebase tonight.

What version of HA are you running by the way?

I’m stuck on 0.64.3 and python 3.5.2 as zwave doesn’t seem to play nice with later python versions, I’m still trying to fix this.

Yes using automations to sync the alarm status’s will work just fine. Obviously this will only work with the envisalink supported states (home/away/disarm/trigger)

Did you get this sorted? theres an example html code in the thread for this. I will add a sample file to the repo when I get a chance

HI @gazoscalvertos,

Thanks for prompt response. I am on 0.64.2 and python 3.6 (I think). Please let me know when you have fixed the code. It’s an awesome tool and I would love to retain it.

Thanks

Ok folks,

Latest update has dropped see the notes below. As always fully test your setup including triggering the alarm. It’s 2.30am so there maybe a couple of bugs however I have tested this on both 0.65.5 and 0.64.3. I’ll also need to update docs here and there.

  • (24/03/18) A Massive Thanks to those that have donated!!! It is very much appreciated and helps to keep this project alive. Also keep the suggestions flowing and lets make this the best alarm system ever!!!

  • (24/03/18) MAJOR UPDATE! - State specific groups/times. Each state must! configure it’s own groups. Home and Away are mandatory with Perimeter mode optional. The top level groups have been dropped so you will need to remove these from your alarm.yaml. You will need to update your alarm.yaml!. The ignore/notathome groups have been dropped from the setup. Please see the default alarm.yaml to inform your own setup.

  • (24/03/18) FEATURE - Added an information button in the bottom right of the panel which shows any detected errors and version information for debugging, needs a little finesse

  • (24/03/18) UPDATE - Weather sensor nows supports generic sensors (sensor.weather_summary & sensor.weather_temperature) if these are not found then it will deault to the dark sky sensors (sensor.dark_sky_summary & sensor.dark_sky_temperature)

  • (24/03/18) UPDATE - Code cleanup in alarm.html

  • (24/03/18) BUG FIX - Removed the need for alarm_script.js (this may re-appear in a later release if we need extra js code) as the hide sidebar feature now natively supports HA close/open sidebar rather than a javascript hack.

  • (14/03/18) BUG FIX - UI fix on the sensor groups moving all active sensors into the immediate group when no pending time is set for that particular state.

  • (14/03/18) BUG FIX - Custom pending times now accurately set the countdown clock in the panel UI

  • (14/03/18) UPDATE - Perimeter Colours added to customisation

2 Likes

Is it possible to have the alarm panel pop up automatically when the alarm is set. For example to have it go from overview to the alarm panel.

Not out the box as HA itself would need to implement this… however if you are using Android based tablets/phones I believe its possible using Android Kiosk I have yet to check this out but apparently you can set scripts to change url based on statuses.

I’ll have a crack at it and post the results.

Ok. I’ll give that a shot. I am using a tablet anyway. I have a few kiosks I was using with Actiontiles.

I tried earlier with fully browser kiosk and I couldn’t get it to load.

I can’t find what you’re talking about. Can you link me to it?