#!/usr/bin/python # -*- coding: utf-8 -*- # il faut le module requests # sudo pip install requests # on lit le fichier genere par getgoovlecal.py # dans le calendrier google on fait soit # idx=etat (14=On ou 44=Off) # # ou idx1;idx2;idx3=etat # 25/01/15 correction pour mode debug qui lance la cde alors que le mode ss debug non # 25/01/15 mode auth pour identification Domoticz import time import os import requests from requests.auth import HTTPBasicAuth import csv from collections import namedtuple from datetime import datetime ############# Parametres ################################# # fichier et chemin pour agenda rep="/var/tmp/" file="googlecal.txt" # seuil pour declemecnhemnt des actions # c'est la tolerance autour de l'heure prevue par rapport a l'heure exacte # cest a dire que X secondes AVANT l heure prevue on declenche seuil=10 #a cause du declenchelent de crontab qui a lieu entre 0 et 5sec apres l'heure prevue # un crontab programme toutes les minutes peut se declencher a 1min0sec, 1min1sec ,1min2sec ... 1min5sec # donc on gere un seuil de X secondes APRES l'heure prevue # si declenchement tt les minutes dans crontab # si le seuil est a 10 sec # l'action pourra se declencher 1O secondes avant # et si c'est croontab qui declcenche on laisse 10 secondes APRES #debug = 1 on affiche les chaines de caracteres recues debug=1 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # les parametres de Domoticz #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ domoticz_ip='localhost' domoticz_port='81' user='souti' password='setaou' # l URL Domoticz est construite dans maj_switch pour allumer/eteidndre # avec les bouts ci dessous json_url1='/json.htm?type=command¶m=switchlight&idx=' json_url2='&switchcmd=' json_url3='&level=0' # fin du parametrage # ############### fin des parametres ############################# def maj_switch(idx,etat): #/json.htm?type=command¶m=switchlight&idx=&switchcmd=&level=0 requete='http://'+domoticz_ip+':'+domoticz_port+json_url1+idx+json_url2+etat+json_url3 r=requests.get (requete,auth=HTTPBasicAuth(user,password)) if debug!=0: print "______________________________________________________________" print "" print ("URL= :",requete) print (" le serveur Domoticz dit : ",r) print "" print "###############################################################" def debugmode(): print "" print "###############################################################" print "" print ("le fichier dit que l'action ",r.action,"debute a ",r.heuredeb,"le :",r.datedeb) print ("heure declenchement ",heure_action) print ("il est ",present) print ("difference en secondes",diffsecondes) print "" print "" # main # reader = csv.reader(open(rep+file),delimiter='\t') rec=namedtuple('rec','datedeb heuredeb datefin heurefin action') for r in map(rec._make,reader): date_action=r.datedeb+" "+r.heuredeb heure_action= datetime.strptime(date_action,"%Y-%m-%d %H:%M") present=datetime.now() diffsecondes=(heure_action-present).seconds # diffsecondes=4 if (diffsecondes < seuil or (diffsecondes> 86400-seuil and diffsecondes <86400)): if debug!=0: debugmode() todo=r.action.split("=") idx=todo[0] etat=todo[1].capitalize() if ";" in idx: #print "multiples idx" midx=idx.split(";") for each_idx in midx: print (" IDX : ",each_idx) if (etat=="On" or etat=="Off"): if debug!=0: print "" print "ok actions a faire" print ("idx=",each_idx) print ("etat=",etat) print "" maj_switch(each_idx,etat) else: if (etat=="On" or etat=="Off"): if debug!=0: print "" print "ok actions a faire" print ("idx=",idx) print ("etat=",etat) print "" maj_switch(idx,etat) else: if debug!=0: print "Rien a faire /nothing to do/wir haben nichts damit zu tun" debugmode()