Page 4 sur 5

Re: Google Agenda et Domoticz Version 2

Publié : 23 nov. 2015, 20:52
par Neutrino
Impressionnant, tout est géré en LUA de A à Z !
Par contre, il faut effectivement un peu de temps devant soit pour le mettre en place.
C'est surtout l'accès à l'api google qui semble velu :)

J'ai fait ça aussi (à mon niveau hein), mais je reste dépendant de gcalcli.
Je mets dans un calendrier "Maison" par exemple de 14:30 à 15:30 Aspirateur=On et mon aspirateur robot fonctionnera pendant 1 H.
Si je mets "Lampe = ON", le ON en majuscule signifie sans limite.
Et si je mets "Sortir les poubelles", alors l'écran de mon pi l'affiche en boucle le temps donnée.
Je suis en plein débug, je le posterai ici une fois stabilisé.

Re: Google Agenda et Domoticz Version 2

Publié : 23 nov. 2015, 21:04
par patrice
Bonsoir
Neutrino a écrit :I
Je mets dans un calendrier "Maison" par exemple de 14:30 à 15:30 Aspirateur=On et mon aspirateur robot fonctionnera pendant 1 H.
Comment tu déclenches l'aspi Robot ?
C'est quelle marque ?

Re: Google Agenda et Domoticz Version 2

Publié : 23 nov. 2015, 21:42
par Neutrino
Bonsoir Patrice,
C'est un LG Hom-Bot vr1027r.
Je l'ai depuis 3 ans et il se commande normalement avec une télécommande infrarouge.
J'ai installé sur mon pi un récepteur IR afin de copier mes télécommandes et 2 LED IR pour "arroser" la pièce de vie.
Ainsi, je peux contrôler ma TV, allumer mon MediaCenter et déclencher mon Aspirateur Robot avec un switch virtuel dans domoticz et LIRC.
Ces switchs lancent des scripts bash comme :

Code : Tout sélectionner

irsend SEND_ONCE hombot BTN_START

Et mes télécommandes sont reconnues par LIRC et peuvent ainsi lancer des requête JSON.
C'est comme ça que grâce au bouton Jaune de la telco de ma TV, j'allume la lumière du Salon
Telco->IR->LIRC->requête domoticz JSON -> RFLINK ->Module Dio->Et la lumière fut !
Je décrirai mon installation plus en détail dans un autre topic pour éviter de "polluer" celui-ci :)
Mais pour l'instant, ça donne ça ;) :
Image

Re: Google Agenda et Domoticz Version 2

Publié : 23 nov. 2015, 22:55
par deennoo
Et voilà, merci, je me demandait comme j'allais en piloter un.

Re: Google Agenda et Domoticz Version 2

Publié : 24 nov. 2015, 07:07
par patrice
Merci
Je ne sais pas si mon vieux Roomba supporterait cette greffe contre nature :lol:

Re: Google Agenda et Domoticz Version 2

Publié : 24 nov. 2015, 09:52
par deennoo
patrice a écrit :Merci
Je ne sais pas si mon vieux Roomba supporterait cette greffe contre nature :lol:
si tu le pilotes déja avec une telecommande IR...pas de soucis tu ne fais que la copier, cela ressemble a un RFLink mais en IR, c'est une bonne idée de complement, pour un shield.

Re: Google Agenda et Domoticz Version 2

Publié : 24 nov. 2015, 19:13
par heartblood
Perso, je contrôle mon aspirateur robot (télécommandé) avec un module kira 128 ^^ (http://www.maison-et-domotique.com/9991 ... en-reseau/)

Re: Google Agenda et Domoticz Version 2

Publié : 24 nov. 2015, 19:34
par Neutrino
J'ai fait un petit tuto ici viewtopic.php?f=15&t=1088 pour éviter de continuer à digresser sur ce topic ;)

Re: Google Agenda et Domoticz Version 2

Publié : 07 déc. 2015, 18:32
par Neutrino
Bon, après quelques jours de debug et de tests, voici mon script, garanti sans python :)
script_time_calendrier.lua

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
	options="--tsv --military"
	agenda_start="00:00"
	agenda_end="23:59"
 	
	lignecde="sudo gcalcli --cal="..domoticz_cal.." agenda ".."'"..agenda_start.."' '"..agenda_end.."' "..options
	lignecde=lignecde.." > "..repertoire..file.." &" 
	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(etat=='On' or etat=='Off' or etat=='ON' or etat=='OFF')and debutAction==maintenant)then
		--L'interrupteur existe, l'état souhaité est reconnu	
			if(etat=='On'or etat=='Off')then
				if(dateDebut~=dateFin)then
				--l'action finit demain
					finAction=finAction+(24*60)
				end
				print(interrupteur.." passe à "..etat.." pendant "..tostring(finAction-maintenant).." minutes")
				commandArray[interrupteur]=etat.." FOR "..tostring(finAction-maintenant)
				if(otherdevices_svalues[nomText]=='')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'
			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 commandArray
Pour le fonctionnement, c'est assez simple :
Pour la configuration, le côté Gmail est le même que l'étape 1 du blog.
Ensuite, il faut un capteur virtuel Text et des interrupteurs à actionner :mrgreen:
Le calendrier est interrogé toutes les heures.
L'agenda est rempli par exemple de 18:00 à 23:00 avec

Code : Tout sélectionner

Chauffage Salon=On

Le chauffage sera donc activé durant cette plage puis s'éteindra.
Remplacez On par ON et le chauffage restera allumé.
Si l'interrupteur ou la commande ne sont pas reconnus, le script l’interprète comme un texte libre et l'envoie dans le dummy text.
Libre à vous d'afficher ce texte sur la custom page ou sur un écran LCD !

Re: Google Agenda et Domoticz Version 2

Publié : 03 janv. 2016, 20:07
par seblang
Hello neutrino,

merci pour ce script.
bon je vais peut etre poser des questions con, je suis nouveau et pas pro en programmation.

si je comprends bien je crée un capteur text (idx 60 chez moi donc dans le script je mets 60 au lieu de 133)
Ensuite le créer le fichier dans domoticz/scripts/script_time_calendrier.lua et je colle dedans ton script sans rien change si ce n'est le idx.

ensuite il n'y a rien a mettre dans le crontab ou autres? il s’exécute tout seul?

et dans mon calendrier si je mets "nom de l'interrupteur "=On celui restera a on le temps du rdv planning
et si je mets "nom de l'interrupteur "=ON celui- reste allumer toute le temps jusqu'a une nouvelle commande pour le meme interrupteur.?

merci de ton retour et bonne&heureuse année a toi