Find my Sh*T!!! – The lost iphone saga

Ok, we have all done it.  Where the hell is my phone?  Where’s the ipad?   Home alone trying to find it and you have no way of calling it because, well, no land line.

 

A week or so ago I finally replaced my Jurassic period thermostat with something a little newer.  I know, weird right.  I do all this stuff and I had a thermostat that was 1 step above this

old_honeywell_t87

So I got a 2gig CT100 with z-wave.
61cUaIUZOLL._SL1024_

 

 

55553046So as any self respecting geek would do.  As soon as I got it hooked up, I tied it in to my home automation system.

 

So I have basic items configured, mainly so I can see the temps ect.  But there is another thing we can do with this.  Got the idea from the thread

https://community.openhab.org/t/find-my-iphone-from-my-nest/5663

If you look you will see I have contributed and written a simple php service for finding an iphone 🙂

Here is the github for that simple php service https://github.com/brunkj/FindMyIphonePHPService
So I have my PHP service setup.  I have my home automation system.  I have my z-wave thermostat.  I have rythm.  I have style..  $%^& what’s wrong with me…..

So I created a simple rule


rule "Find iPhone via thermostat"
  when
    Item HVAC_CoolSetPoint changed to 69
  then
    sendHttpGetRequest("http://xx.xx.xx.xx/findmyiphone/?phone=jason")
    sendCommand(HVAC_CoolSetPoint, 75)
  end

 

Simple description.  Set the thermostat to 69.. hehe hehe 69….  {giggle} 61832143

 

 

 

 

 

 

 

 

Ok, I’m better.  Set to 69.  Openhab sees it’s now set to 69, realizes that’s way out of character and runs the rule “Find iPhone via thermostat” which sends the call to my php service, then sets the temp back to our standard 75.

I am implementing 1 additional rule for 68 degrees for the wife’s phone.

OpenHab crashing with Z-Wave FIX IT FIX IT FIX IT FIX IT!!

So,  my openhab system periodically decides to leave the building.  Appears there is a problem from time to time when the z-wave binding loses communication to the z-wave stick it gets upset and tells openhab to take a hike.

This is bad.  Once because it exposed something I missed in my fault tolerance.   I had compensated for network issues and full machine failover.  But the actual process going belly up…. ooops.  My Bad.

Soooo I see it crash while at the gym today and the only thing in my head….

gSHIj

So I appear to have done that.

Let me bring you up to speed on the current state of my home automation.  After the great NAS failing of 2015 I was forced to reduce some of my virtual environment.   I have not brought my secondary HA controller back online yet.  However, it appears that still using keepalived I am able to help address this random problem.

I have added in a new option in my keepalived.conf

 


vrrp_script chk_hahealth {
    script "/usr/local/sbin/healthcheck.sh"
    interval 10 # check every 10 seconds
    fall 2 # require 2 failures for KO
    rise 2 # require 2 successes for OK
}

vrrp_instance VI_1 {
   state MASTER
   interface eth0
   virtual_router_id 220
   priority 150
   notify /usr/local/sbin/notify-keepalived.sh
   advert_int 1
   authentication {
        auth_type PASS
        auth_pass fakepass
   }

   virtual_ipaddress {
      192.168.2.90
   }
   track_script {
     chk_hahealth
   }
}

So what this does is add a keepalived health check.   Every 10 seconds keepalived runs the script /usr/local/sbin/healthcheck.sh and gets an exit code of 0 or 1.  0 if all is good.  1 if the world fell apart.

Environmental concept. Some images in montage provided by NASA (http://visibleearth.nasa.gov/)

The code for this script is


#!/bin/sh
SERVICE=openhab;

if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
 echo "$SERVICE service running, everything is fine"
 /usr/bin/logger "$SERVICE service running, everything is fine"
 exit 0
else
 echo "$SERVICE is not running"
 /usr/bin/logger "$SERVICE is not running"
 /etc/init.d/openhab restart
 exit 1
fi


Explanation:

So this script just checks to see if the openhab process is running.  If its good, exit 0.  If its not, exit 1 but go ahead and try to restart openhab.  When keepalived gets the exit 1 code it keeps track of it.  You will see in the config that there is a fall 2 line.  That means that if there are 2 exit 1 status’s keepalived will go into a failed state.  When the second HA box is back online this will force openhab to move over to the other one.  However, I have not seen this happen so far as openhab loads pretty quick so since there is 10 seconds between the checks the second check comes back with an exit 0 and resets the fall count.