Example: Send E-Mail alerts when some device's battery is low
Posted: 27 Mar 2012 17:04
To have E-Mail alerts on low battery use this battery pollin script:# Battery Polling and Alert Version 28.03.2012
gmailUser = "XXXXX"
gmailPwd = "XXXXXX"
subject = "Z-Wave Home Network Battery Alert"
import smtplib, logging
devices = ZWaveAPI.devices
msg = ""
skipNodes = []
for nodeId in filter(lambda (x): x not in skipNodes, devices.keys()):
if devices[nodeId].instances[0].commandClasses.has_key(0x80):
devices[nodeId].instances[0].commandClasses[0x80].Get()
if devices[nodeId].instances[0].commandClasses[0x80].data.last.value < 30 :
msg += "Battery of Node %s (%d) has battery level of %d %%
" % (ZWaveAPI.GetDeviceNameById(nodeId), nodeId, devices[nodeId].instances[0].commandClasses[0x80].data.last.value)
if devices[nodeId].instances[0].commandClasses[0x80].data.last.value == 255:
msg += "Battery of Node %s (%d) is empty!
" % (ZWaveAPI.GetDeviceNameById(nodeId),nodeId)
if len(msg):
try:
smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.login(gmailUser, gmailPwd)
smtpserver.sendmail(gmailUser, gmailUser, "From: %s
To: %s
Subject: %s
%s
" % (gmailUser, gmailUser, subject, msg))
except:
logging.zw.info("SMTP failed")
Run this script as action from your schedule as often as you wish.
gmailUser = "XXXXX"
gmailPwd = "XXXXXX"
subject = "Z-Wave Home Network Battery Alert"
import smtplib, logging
devices = ZWaveAPI.devices
msg = ""
skipNodes = []
for nodeId in filter(lambda (x): x not in skipNodes, devices.keys()):
if devices[nodeId].instances[0].commandClasses.has_key(0x80):
devices[nodeId].instances[0].commandClasses[0x80].Get()
if devices[nodeId].instances[0].commandClasses[0x80].data.last.value < 30 :
msg += "Battery of Node %s (%d) has battery level of %d %%
" % (ZWaveAPI.GetDeviceNameById(nodeId), nodeId, devices[nodeId].instances[0].commandClasses[0x80].data.last.value)
if devices[nodeId].instances[0].commandClasses[0x80].data.last.value == 255:
msg += "Battery of Node %s (%d) is empty!
" % (ZWaveAPI.GetDeviceNameById(nodeId),nodeId)
if len(msg):
try:
smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.login(gmailUser, gmailPwd)
smtpserver.sendmail(gmailUser, gmailUser, "From: %s
To: %s
Subject: %s
%s
" % (gmailUser, gmailUser, subject, msg))
except:
logging.zw.info("SMTP failed")
Run this script as action from your schedule as often as you wish.