X-Git-Url: https://git.rvb.name/weathermon.git/blobdiff_plain/7edb3771717d15f7c36d8459fa12b3d6f76d7d9a..e32107a7fe79ce34f3bdf860410a6d5455efdca7:/weathermon_cron?ds=inline diff --git a/weathermon_cron b/weathermon_cron deleted file mode 100755 index bc4eb88..0000000 --- a/weathermon_cron +++ /dev/null @@ -1,209 +0,0 @@ -#!/usr/bin/python - -from pprint import pprint -from os import system; - -import pycurl -from urllib import urlencode -from StringIO import StringIO - -import MySQLdb -import ConfigParser - -import uuid - -debug = True - -def print_log(str): - global logging,debug - if debug>0: - print str - if logging == "on": - system("logger -t weathermon \""+str+"\"") - -def submit_narodmon(): - - global debug - - param = { 'ID':devid } - - c = database.cursor() - c.execute( - ''' -select nm_id,avg(value) from meteo.ext_sensors e,meteo.sensor_values v -where -e.sensor_id=v.sensor_id and e.param_id=v.parameter_id -and v.timestamp>DATE_SUB(CURRENT_TIMESTAMP(),INTERVAL 15 MINUTE) -and e.nm_id is not null -group by e.sensor_id,e.param_id,e.nm_id,e.owm_id - ''' - ) - - queue=c.fetchall() - - if debug>1: - pprint(queue) - - for (sensor,value) in queue: - param[sensor] = value - - if debug>1: - pprint (param) - - url = "http://narodmon.ru/post.php" - - try: - - response_buffer = StringIO() - curl = pycurl.Curl() - - curl.setopt(curl.URL, url) - curl.setopt(curl.WRITEFUNCTION, response_buffer.write) - curl.setopt(curl.POST, 1) - curl.setopt(curl.POSTFIELDS, urlencode(param)) - - curl.perform() - curl.close() - - response_value = response_buffer.getvalue() - - print_log('Narodmon response: '+response_value) - - return True - - except: - - exc_type, exc_value, exc_traceback = sys.exc_info() - traceback.print_tb(exc_traceback, limit=1, file=sys.stdout) - traceback.print_exception(exc_type, exc_value, exc_traceback, - limit=2, file=sys.stdout) - return False - -def submit_owm(): - - global debug - - url = "http://openweathermap.org/data/post" - params = {'name':owm_station, 'lat':owm_lat, 'long':owm_lon} - - c = database.cursor() - c.execute( - ''' - select owm_id,value from - ( - SELECT sensor_id,parameter_id,avg(timestamp) timestamp,round(avg(value),1) value FROM meteo.sensor_values - where - timestamp>=date_sub(current_timestamp(), INTERVAL 15 MINUTE) - group by sensor_id,parameter_id - ) v,meteo.ext_sensors e - where v.sensor_id=e.sensor_id and v.parameter_id=e.param_id - and owm_id is not null - ''' - ) - - queue=c.fetchall() - - if debug>1: - pprint(queue) - - for (sensor,value) in queue: - params[sensor]=value - if debug>1: - pprint (params) - - try: - - response_buffer = StringIO() - curl = pycurl.Curl() - - curl.setopt(curl.URL, url) - curl.setopt(curl.USERPWD, '%s:%s' % (owmuser, owmpasswd)) - curl.setopt(curl.WRITEFUNCTION, response_buffer.write) - curl.setopt(curl.POST, 1) - curl.setopt(curl.POSTFIELDS, urlencode(params)) - - curl.perform() - curl.close() - - response_value = response_buffer.getvalue() - - print_log('Openweathermap response: '+response_value) - - return True - - except: - - exc_type, exc_value, exc_traceback = sys.exc_info() - traceback.print_tb(exc_traceback, limit=1, file=sys.stdout) - traceback.print_exception(exc_type, exc_value, exc_traceback, - limit=2, file=sys.stdout) - return False - -def main(): - submit_narodmon() - submit_owm() - -def init(): - - global logging,debug; - global devid; - global dbhost,dbuser,dbpasswd; - global owmuser,owmpasswd,owm_temp,owm_pres,owm_humi,owm_lat,owm_lon,owm_station; - - try: - - cfg = ConfigParser.RawConfigParser(allow_no_value=True) - cfg.readfp(open('/etc/weathermon.conf')) - - try: - logging = cfg.get("logging","enabled") - except: - logging = None - try: - debug = int(cfg.get("logging","debug")) - except: - debug = 0 - - dbhost = cfg.get("mysql","host") - dbuser = cfg.get("mysql","user") - dbpasswd = cfg.get("mysql","passwd") - try: - narmon = cfg.get("narodmon","enable") - except: - narmon = 'off' - try: - devid = cfg.get("narodmon","devid") - except: - devid = "{:0>12X}".format(getnode()) - try: - owmuser = cfg.get("openweathermap","user") - owmpasswd = cfg.get("openweathermap",'passwd') - except: - owmuser = None - if owmuser: - try: - owm_station=cfg.get("openweathermap","station") - owm_lat=cfg.get("openweathermap","lat") - owm_lon=cfg.get("openweathermap","lon") - except: - None - - global database - database = MySQLdb.connect(host=dbhost,user=dbuser,passwd=dbpasswd,use_unicode=True,connect_timeout=10) - database.set_character_set('utf8') - c = database.cursor() - c.execute('SET NAMES utf8;') - print_log("Database connected...") - connected = True - - except: - - print_log("Cannot intialize system") - exit() - -if __name__ == "__main__": - import sys - reload(sys) - sys.setdefaultencoding('utf-8') - init() - main()