calendrier google
Re: calendrier google
Ca va mieux, en effet, j'ai plusieurs calendriers et mes infos était enregistrés dans un autre, maintenant j'arrive a les lire en faisant
gcalcli --cal=Domoticz --tsv --military
par contre mon fichier googlecal.txt ne se met pas a jour, alors j'ai suivi ce que tu avais dis dans le forum, je l'ai supprimé et fait
sudo gcalcli --cal=domoticz agenda '00:00' '23:59' --tsv --military > /home/pi/googlecal.txt
mon fichier googlecal.txt c'est bien créé avec les infos dedans, mais rien ne bouge coté domoticz (le device texte ne change jamais) de plus quand le script_time_calendrier se rééxécute, le fichier googlecal.txt se vide
gcalcli --cal=Domoticz --tsv --military
par contre mon fichier googlecal.txt ne se met pas a jour, alors j'ai suivi ce que tu avais dis dans le forum, je l'ai supprimé et fait
sudo gcalcli --cal=domoticz agenda '00:00' '23:59' --tsv --military > /home/pi/googlecal.txt
mon fichier googlecal.txt c'est bien créé avec les infos dedans, mais rien ne bouge coté domoticz (le device texte ne change jamais) de plus quand le script_time_calendrier se rééxécute, le fichier googlecal.txt se vide
Re: calendrier google
Le nom de l'agenda google est bien modifié dans le script ?
Pour info :
Les switchs ne sont modifiés qu'au moment précis de début de l'événement.
L'ordre est de type "Y pendant Y minutes".
Si un autre ordre intervient entre temps, l'heure de fin est "oubliée".
Pour info :
Les switchs ne sont modifiés qu'au moment précis de début de l'événement.
L'ordre est de type "Y pendant Y minutes".
Si un autre ordre intervient entre temps, l'heure de fin est "oubliée".
Re: calendrier google
Re-bonjour,
du coup j'ai fait des essais mon fichier Google.txt se vide depuis que j'ai mis la ligne de commande modifiée,
si je remet:
lignecde="sudo gcalcli --cal="..domoticz_cal.." agenda ".."'"..agenda_start.."' '"..agenda_end.."' "..options
le script fonctionne correctement, personne n'a eu ce problème??
du coup j'ai fait des essais mon fichier Google.txt se vide depuis que j'ai mis la ligne de commande modifiée,
si je remet:
lignecde="sudo gcalcli --cal="..domoticz_cal.." agenda ".."'"..agenda_start.."' '"..agenda_end.."' "..options
le script fonctionne correctement, personne n'a eu ce problème??
Re: calendrier google
La ligne
est toute sur la même ligne.
Au pire, t'as juste à faire gaffe à ne pas mettre d'accents.
Code : Tout sélectionner
lignecde="export LANG=\"fr_FR.UTF-8\" && sudo gcalcli --cal="..domoticz_cal.." agenda ".."'"..agenda_start.."' '"..agenda_end.."' "..optionsAu pire, t'as juste à faire gaffe à ne pas mettre d'accents.
Re: calendrier google
Bonjour chez cela ne fonctionne pas! je suis nouveau et je ne vois pas pourquoi!!!!!
Si je tape dans le navigateur :
http://192.168.1.2:8080/json.htm?type=c ... itchcmd=On
Le idx 26 passe sur on mais quand je passe par la programmation non!
Les commande futur ne saffiche pas comme dans l'exemple, j'ai tjr Rien a faire !
une idée?
cat /var/tmp/googlecal.txt
pi@raspberrypi:~/domoticz/scripts $ cat /var/tmp/googlecal.txt
2015-12-27 00:00 2015-12-28 00:00 maison
2015-12-27 00:40 2015-12-27 01:10 26=On
2015-12-27 01:00 2015-12-27 12:00 26=On
2015-12-27 12:00 2015-12-27 22:00 26=Off
./cal_action.py
pi@raspberrypi:~/domoticz/scripts $ ./cal_action.py
Rien a faire /nothing to do/wir haben nichts damit zu tun
###############################################################
("le fichier dit que l'action ", 'maison', 'debute a ', '00:00', 'le :', '2015-12-27')
('heure declenchement ', datetime.datetime(2015, 12, 27, 0, 0))
('il est ', datetime.datetime(2015, 12, 27, 10, 12, 59, 826275))
('difference en secondes', 49620)
Rien a faire /nothing to do/wir haben nichts damit zu tun
###############################################################
("le fichier dit que l'action ", '26=On', 'debute a ', '00:40', 'le :', '2015-12-27')
('heure declenchement ', datetime.datetime(2015, 12, 27, 0, 40))
('il est ', datetime.datetime(2015, 12, 27, 10, 12, 59, 827377))
('difference en secondes', 52020)
Rien a faire /nothing to do/wir haben nichts damit zu tun
###############################################################
("le fichier dit que l'action ", '26=On', 'debute a ', '01:00', 'le :', '2015-12-27')
('heure declenchement ', datetime.datetime(2015, 12, 27, 1, 0))
('il est ', datetime.datetime(2015, 12, 27, 10, 12, 59, 828190))
('difference en secondes', 53220)
Rien a faire /nothing to do/wir haben nichts damit zu tun
###############################################################
("le fichier dit que l'action ", '26=Off', 'debute a ', '12:00', 'le :', '2015-12-27')
('heure declenchement ', datetime.datetime(2015, 12, 27, 12, 0))
('il est ', datetime.datetime(2015, 12, 27, 10, 12, 59, 828943))
('difference en secondes', 6420)
Si je tape dans le navigateur :
http://192.168.1.2:8080/json.htm?type=c ... itchcmd=On
Le idx 26 passe sur on mais quand je passe par la programmation non!
Les commande futur ne saffiche pas comme dans l'exemple, j'ai tjr Rien a faire !
une idée?
cat /var/tmp/googlecal.txt
pi@raspberrypi:~/domoticz/scripts $ cat /var/tmp/googlecal.txt
2015-12-27 00:00 2015-12-28 00:00 maison
2015-12-27 00:40 2015-12-27 01:10 26=On
2015-12-27 01:00 2015-12-27 12:00 26=On
2015-12-27 12:00 2015-12-27 22:00 26=Off
./cal_action.py
pi@raspberrypi:~/domoticz/scripts $ ./cal_action.py
Rien a faire /nothing to do/wir haben nichts damit zu tun
###############################################################
("le fichier dit que l'action ", 'maison', 'debute a ', '00:00', 'le :', '2015-12-27')
('heure declenchement ', datetime.datetime(2015, 12, 27, 0, 0))
('il est ', datetime.datetime(2015, 12, 27, 10, 12, 59, 826275))
('difference en secondes', 49620)
Rien a faire /nothing to do/wir haben nichts damit zu tun
###############################################################
("le fichier dit que l'action ", '26=On', 'debute a ', '00:40', 'le :', '2015-12-27')
('heure declenchement ', datetime.datetime(2015, 12, 27, 0, 40))
('il est ', datetime.datetime(2015, 12, 27, 10, 12, 59, 827377))
('difference en secondes', 52020)
Rien a faire /nothing to do/wir haben nichts damit zu tun
###############################################################
("le fichier dit que l'action ", '26=On', 'debute a ', '01:00', 'le :', '2015-12-27')
('heure declenchement ', datetime.datetime(2015, 12, 27, 1, 0))
('il est ', datetime.datetime(2015, 12, 27, 10, 12, 59, 828190))
('difference en secondes', 53220)
Rien a faire /nothing to do/wir haben nichts damit zu tun
###############################################################
("le fichier dit que l'action ", '26=Off', 'debute a ', '12:00', 'le :', '2015-12-27')
('heure declenchement ', datetime.datetime(2015, 12, 27, 12, 0))
('il est ', datetime.datetime(2015, 12, 27, 10, 12, 59, 828943))
('difference en secondes', 6420)
Re: calendrier google
Bonjour,
que je fasse On ou ON, mes interrupteurs s'allument mais ne s'éteignent jamais, on est obligé de faire une commande Off pour pouvoir éteindre ou l'interrupteur peut s'arrêter tout seul a l'heure de fin du calendrier, de plus je ne comprend pas mon fichier texte ne se met jamais a jour.
si quelqu'un a une réponse a mon problème??
Merci
que je fasse On ou ON, mes interrupteurs s'allument mais ne s'éteignent jamais, on est obligé de faire une commande Off pour pouvoir éteindre ou l'interrupteur peut s'arrêter tout seul a l'heure de fin du calendrier, de plus je ne comprend pas mon fichier texte ne se met jamais a jour.
si quelqu'un a une réponse a mon problème??
Merci
Re: calendrier google
Bonsoir,
Je poste tout mon script qui fonctionne chez moi :
La mise à jour du fichier s'effectue par le scripts toutes les heures.
S'il n'y a pas de RDV dans le calendrier dédié, alors le fichier est vide.
Pour le fonctionnement, je vais donner un exemple. Ici, l'interrupteur "Test" passera à On pendant 1H, la durée du RDV sur google..
La syntaxe est importante : le script demande à Domoticz de mettre l'interrupteur à On pour 1H. Au bout d'une heure, il l'éteint.
Attention, si on agit sur l'interrupteur entre temps, la demande d'extinction est oubliée, l'interrupteur restera dans son dernier état.
Le 'ON' dit juste "Allume le !", pour l'éteindre, il faut un 'OFF'.
D'ailleurs, 'Off' éteint l'interrupteur pendant X minutes.
Je poste tout mon script qui fonctionne chez moi :
Code : Tout sélectionner
---------------------------------
-- Script de lecture de calendrier Google.
-- Actionne un interrupteur ou remplie un capteur virtuel Text
-- Auteur : Aurelien Neutrino
-- Date : 29 Novembre 2015
-- Nécessite un capteur virtuel de type Text
-- Il faut suivre la source suivante et s'arrêter à la fin de l'étape 1
-- source :
-- http://easydomoticz.com/agenda-google-et-domoticz-version-2-partie-1/
---------------------------------
commandArray = {}
--Récupère l'heure et la date actuelle
time = os.time()
minutes=tonumber(os.date('%M',time))
hours=tonumber(os.date('%H',time))
jour = os.date('%d',time)
--Nombre de minutes depuis 00:00
maintenant=tonumber(hours*60+minutes)
--idx et nom du capteur Text
idxText = '133'
nomText="Pense-bête"
--nom de l'agenda google
domoticz_cal="maison"
--fichier et chemin pour agenda
repertoire="/home/pi/"
file="googlecal.txt"
-- Toutes les heures, on récupère l'agenda de la journée
if(maintenant%60==0) then
--if(true)then
options="--tsv --military"
agenda_start="00:00"
agenda_end="23:59"
lignecde="export LANG=\"fr_FR.UTF-8\" && sudo gcalcli --cal="..domoticz_cal.." agenda "
.."'"..agenda_start.."' '"..agenda_end.."' "..options
lignecde=lignecde.." > "..repertoire..file
print("MAJ Calendrier "..domoticz_cal)
os.execute(lignecde)
end
local file = io.open(repertoire..file, "r") -- Ouvre le fichier en mode lecture
local ligne = {} -- Table pour les lignes du fichier
if(file~=nil)then
--le fichier n'est pas vide
for line in file:lines() do -- Pour chaque lignes
table.insert(ligne, line) -- On insère les lignes dans la table
end
end
for i, v in ipairs(ligne) do -- Lecture de la table des RDV
dateDebut,heureDebut,minutesDebut,dateFin,heureFin,minutesFin,action = v:match("([^;]+)\t([^;]+):([^;]+)\t([^;]+)\t([^;]+):([^;]+)\t([^;]+)")
action = action:gsub(" = ","=")
debutAction = heureDebut*60+minutesDebut
finAction = heureFin*60+minutesFin
anneeAction,moisAction,jourAction = dateDebut:match("([^;]+)-([^;]+)-([^;]+)")
if(action:find("=")~=nil and jourAction == jour)then
--L'action contient "=", c'est un interrupteur à actionner
print("Action : "..action)
print(maintenant.." : "..debutAction)
interrupteur,etat=action:match("([^;]+)=([^;]+)")
if(otherdevices[interrupteur]~=nil and debutAction==maintenant)then
--L'interrupteur existe, test des états possibles
if(etat=='On'or etat=='Off')then
if(dateDebut~=dateFin)then
--l'action finit demain
finAction=finAction+(24*60)
end
print(interrupteur.." passe à "..etat)
commandArray[interrupteur]=etat.." FOR "..tostring(finAction-maintenant)
if(otherdevices_svalues[nomText]=='' or otherdevices_svalues[nomText]:find("=")~=nil)then
--Aucun pense-bête actuellement renseigné, on affiche l'action en cours.
--L'affichage d'un pense-bête est prioritaire sur l'affichage d'un changement d'état
print("pense-bête : "..action)
commandArray['UpdateDevice']=idxText.."|0|"..action
end
elseif(etat=='ON')then
--ON (tout en majuscule) siginifie que l'action n'a pas de fin
print(interrupteur.." passe à On")
commandArray[interrupteur]='On'
elseif(etat=='OFF')then
--OFF (tout en majuscule) siginifie que l'action n'a pas de fin
print(interrupteur.." passe à Off")
commandArray[interrupteur]='Off'
elseif(tonumber(etat)~=nil)then
--Niveau du dimmer à actionner
print(interrupteur.." passe à "..etat)
commandArray[interrupteur]="Set Level "..etat
elseif(etat=="Confort")then
--Consigne de chauffage
print(interrupteur.." passe à "..etat)
commandArray[interrupteur]="Set Level 99"
elseif(etat=="Confort-1")then
--Consigne de chauffage
print(interrupteur.." passe à "..etat)
commandArray[interrupteur]="Set Level 50"
elseif(etat=="Confort-2")then
--Consigne de chauffage
print(interrupteur.." passe à "..etat)
commandArray[interrupteur]="Set Level 40"
elseif(etat=="Eco")then
--Consigne de chauffage
print(interrupteur.." passe à "..etat)
commandArray[interrupteur]="Set Level 30"
elseif(etat=="HorsGel")then
--Consigne de chauffage
print(interrupteur.." passe à "..etat)
commandArray[interrupteur]="Set Level 20"
elseif(etat=="Arrêt")then
--Consigne de chauffage
print(interrupteur.." passe à "..etat)
commandArray[interrupteur]="Set Level 0"
else
--Etat non reconnu, on force l'interrupteur
print(interrupteur.." passe à "..etat)
commandArray[interrupteur]=etat
end
elseif(otherdevices[interrupteur]==nil and debutAction==maintenant)then
--L'interrupteur n'existe pas, on affiche le pense-bête
commandArray['UpdateDevice']=idxText.."|0|"..action
elseif(finAction==maintenant and action == otherdevices_svalues[nomText])then
--L'action est terminée, on l'efface
commandArray['UpdateDevice']=idxText.."|0| "
end
elseif(debutAction==maintenant and jourAction == jour)then
--L'action ne correspond pas à un interrupteur à actionner, c'est donc un pense-bête, on l'affiche pendant la durée souhaitée
commandArray['UpdateDevice']=idxText.."|0|"..action
elseif(finAction==maintenant and action == otherdevices_svalues[nomText])then
--L'action est terminée, on l'efface
commandArray['UpdateDevice']=idxText.."|0| "
end
end
return commandArrayS'il n'y a pas de RDV dans le calendrier dédié, alors le fichier est vide.
Pour le fonctionnement, je vais donner un exemple. Ici, l'interrupteur "Test" passera à On pendant 1H, la durée du RDV sur google..
La syntaxe est importante : le script demande à Domoticz de mettre l'interrupteur à On pour 1H. Au bout d'une heure, il l'éteint.
Attention, si on agit sur l'interrupteur entre temps, la demande d'extinction est oubliée, l'interrupteur restera dans son dernier état.
Le 'ON' dit juste "Allume le !", pour l'éteindre, il faut un 'OFF'.
D'ailleurs, 'Off' éteint l'interrupteur pendant X minutes.
Re: calendrier google
Bonjour,
je me lance, je suis débutant en domotique et en script LUA.
Suite à ce thread https://www.domoticz.com/wiki/Interacti ... e_Calendar qui ne marchait plus je me suis lancé dans l'écriture de mon propre script il y a déjà quelques temps mais je n'avais jamais pris le temps de le mettre dans un github ni de le publier dans un forum.
Voici que pendant ces vacances de fin d'année je me dis que "ce n'est pas bien de ne pas partager" (cf. la pub) donc j'ai fait ma branche sur github et j'ai commité mon script pour le partager.
J'ai vu qu'ici vous vous partagiez déjà un script, le mien est un peu différent car il s'inspire du wiki cité plus haut.
La stratégie est différente par rapport au script de Neutrino, le script n'a pas d'intelligence dans le sens où il n'interprète pas les actions à faire.
Il ne fait que 3 choses, il lit le champs description de l'événement du calendar:
- s'il trouve ( ou [ il pense que c'est un script LUA donc il tente d’exécuter (ATTENTION pas encore testé)
- sinon:
* s'il y a = il regarde l'état actuel, si différent il fait le changement sinon il ne fait rien
* s'il y a == il applique le changement (il force l'état)
Donc si je prends par analogie le script de Neutrino pour mettre un radiateur "radiateur_salon" en mode "confort-1" il faudrait mettre un événement dans le calendrier de Domoticz:
Autre point de différence, les actions a mettre dans le calendrier: Si on met une action de type VMC=On pendant 3 heures par exemple, le script va vérifier toutes les minutes que cet état est bien celui attendu et si non il le change pour le mettre à On. A la fin des 3 heures il ne le passera pas à Off, il faut faire un événement dans le calendrier VMC=Off. Si on ne veut pas qu'il vérifie tout le temps dans ce cas il suffit de faire une action de 1 minutes 
Dans mon script, il faut ajuster les variables qui sont dans l'entête et si tout va bien ça devrait rouler !
Au fait j'allais oublier, il est ici: https://github.com/DavidTre07/Domoticz/ ... oauth2.lua
Soyez indulgent, je débute en programmation et encore plus en LUA. Habituellement je me limite à des scripts shell...
je me lance, je suis débutant en domotique et en script LUA.
Suite à ce thread https://www.domoticz.com/wiki/Interacti ... e_Calendar qui ne marchait plus je me suis lancé dans l'écriture de mon propre script il y a déjà quelques temps mais je n'avais jamais pris le temps de le mettre dans un github ni de le publier dans un forum.
Voici que pendant ces vacances de fin d'année je me dis que "ce n'est pas bien de ne pas partager" (cf. la pub) donc j'ai fait ma branche sur github et j'ai commité mon script pour le partager.
J'ai vu qu'ici vous vous partagiez déjà un script, le mien est un peu différent car il s'inspire du wiki cité plus haut.
La stratégie est différente par rapport au script de Neutrino, le script n'a pas d'intelligence dans le sens où il n'interprète pas les actions à faire.
Il ne fait que 3 choses, il lit le champs description de l'événement du calendar:
- s'il trouve ( ou [ il pense que c'est un script LUA donc il tente d’exécuter (ATTENTION pas encore testé)
- sinon:
* s'il y a = il regarde l'état actuel, si différent il fait le changement sinon il ne fait rien
* s'il y a == il applique le changement (il force l'état)
Donc si je prends par analogie le script de Neutrino pour mettre un radiateur "radiateur_salon" en mode "confort-1" il faudrait mettre un événement dans le calendrier de Domoticz:
Code : Tout sélectionner
radiateur_salon=Set Level 50Dans mon script, il faut ajuster les variables qui sont dans l'entête et si tout va bien ça devrait rouler !
Au fait j'allais oublier, il est ici: https://github.com/DavidTre07/Domoticz/ ... oauth2.lua
Soyez indulgent, je débute en programmation et encore plus en LUA. Habituellement je me limite à des scripts shell...
Re: calendrier google
Salut David07,
Merci pour ton script, j'apprends plein de trucs en LUA !
Vraiment sympa de pouvoir exécuter du LUA via le calendrier Google et bravo pour la gestion d'erreur, on reconnait une certaine expérience
Merci pour ton script, j'apprends plein de trucs en LUA !
Vraiment sympa de pouvoir exécuter du LUA via le calendrier Google et bravo pour la gestion d'erreur, on reconnait une certaine expérience
-
Chris54220
- Messages : 124
- Inscription : 20 mars 2016, 20:54
- Localisation : Nancy
Re: calendrier google
Bonjour je viens vers vous car j'ai un petit soucis j'ai essai d'Install avec la partie un mais sa me fait un erreur pouvais vous m'aidez SVP
quand je lance la commande
pi@raspberrypi:~/gcalcli$ sudo pip install oauth2client
voila ce qu'il ces passe est j'arrive pas a passe cette erreur
quand je lance la commande
pi@raspberrypi:~/gcalcli$ sudo pip install oauth2client
Code : Tout sélectionner
running install
running bdist_egg
running egg_info
writing requirements to gcalcli.egg-info/requires.txt
writing gcalcli.egg-info/PKG-INFO
writing top-level names to gcalcli.egg-info/top_level.txt
writing dependency_links to gcalcli.egg-info/dependency_links.txt
reading manifest file 'gcalcli.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'gcalcli.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-armv7l/egg
running install_lib
warning: install_lib: 'build/lib.linux-armv7l-2.7' does not exist -- no Python modules to install
creating build/bdist.linux-armv7l/egg
creating build/bdist.linux-armv7l/egg/EGG-INFO
installing scripts to build/bdist.linux-armv7l/egg/EGG-INFO/scripts
running install_scripts
running build_scripts
creating build/bdist.linux-armv7l/egg/EGG-INFO/scripts
copying build/scripts-2.7/gcalcli -> build/bdist.linux-armv7l/egg/EGG-INFO/scripts
changing mode of build/bdist.linux-armv7l/egg/EGG-INFO/scripts/gcalcli to 755
copying gcalcli.egg-info/PKG-INFO -> build/bdist.linux-armv7l/egg/EGG-INFO
copying gcalcli.egg-info/SOURCES.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying gcalcli.egg-info/dependency_links.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying gcalcli.egg-info/requires.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
copying gcalcli.egg-info/top_level.txt -> build/bdist.linux-armv7l/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist/gcalcli-3.3.2-py2.7.egg' and adding 'build/bdist.linux-armv7l/egg' to it
removing 'build/bdist.linux-armv7l/egg' (and everything under it)
Processing gcalcli-3.3.2-py2.7.egg
Removing /usr/local/lib/python2.7/dist-packages/gcalcli-3.3.2-py2.7.egg
Copying gcalcli-3.3.2-py2.7.egg to /usr/local/lib/python2.7/dist-packages
gcalcli 3.3.2 is already the active version in easy-install.pth
Installing gcalcli script to /usr/local/bin
Installed /usr/local/lib/python2.7/dist-packages/gcalcli-3.3.2-py2.7.egg
Processing dependencies for gcalcli==3.3.2
Searching for oauth2client<=1.4.12
Reading https://pypi.python.org/simple/oauth2client/
Best match: oauth2client 1.4.12
Downloading https://pypi.python.org/packages/4a/de/9cc7e74bc217b9f428945b3c85ad83f5ab21ec77718408cfe8ab36118938/oauth2client-1.4.12-py2.7.egg#md5=8265f6985905a5590c622741980a47e5
Processing oauth2client-1.4.12-py2.7.egg
Moving oauth2client-1.4.12-py2.7.egg to /usr/local/lib/python2.7/dist-packages
Adding oauth2client 1.4.12 to easy-install.pth file
Installed /usr/local/lib/python2.7/dist-packages/oauth2client-1.4.12-py2.7.egg
error: Installed distribution oauth2client 1.4.12 conflicts with requirement oauth2client>=2.0.0,<3