[Tuto] Domoticz et Android (Réveil)

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
newgin
Messages : 22
Inscription : 04 avr. 2015, 14:45

[Tuto] Domoticz et Android (Réveil)

Message par newgin »

Bonjour,

Je souhaite faire partager de mes expériences dans l'interaction entre domoticz et android.

J'ai réussi à bricoler un scénario réveil et de l'activer grâce à notre client android.
J'utilise :
- un serveur mpd pour que le raspberry pi puisse jouer des morceaux.
- Tasker pour lancer le scénario (avec le plugin imperihome pour me faciliter la tâche)
- AlarmPad pour créer un évenement d'activation dans Tasker

Mon scénario réveil:
Image
1) Allume la sono
2) Lance le script réveil après 30 sec
3) Allume la lumière du plafond après 10 min

Pour les scripts qui contrôlent le serveur MPD.

Script Augmentation du volume :
sudo nano /home/pi/domoticz/scripts/mpd_volup

coller :
mpc volume +7

Rendre le fichier exécutable :
sudo chmod +x /home/pi/domoticz/scripts/mpd_volup

Créer un interrupteur virtuel:
Image

Script Diminution du volume :
sudo nano /home/pi/domoticz/scripts/mpd_voldown

coller :
mpc volume -7

Rendre le fichier exécutable :
sudo chmod +x /home/pi/domoticz/scripts/mpd_voldown

Idem:
Image


Script réveil :
sudo nano /home/pi/domoticz/scripts/mpd_wakeup

coller :
mpc volume 0
mpc stop
mpc clear
mpc load wakeup
mpc play

Rendre le fichier exécutable :
sudo chmod +x /home/pi/domoticz/scripts/mpd_wakeup

Script stop :
sudo nano /home/pi/domoticz/scripts/mpd_stop

coller :
mpc stop

Rendre le fichier exécutable :
sudo chmod +x /home/pi/domoticz/scripts/mpd_stop

Interrupteur virtuel :
Image

utilisez un client mpd afin de créer une playlist wakeup avec les musiques qui vous réveilleront.

Maintenant un petit bricolage pour l'augmentation du volume progressif (si on propose mieux je suis preneur):
Image


Activer le scénario grâce au client android. De cette manière, on peut facilement changer l'heure du réveil sans devoir passer par la planification disponible dans domoticz.

Créer un profil dans tasker
Image
Choisir AlarmPad

Créer une tâche :
Image
Ici il faut lancer le scénario réveil et mettre l'interrupteur mpd_voldown sur ON
J'ai utilisé le plugin Imperihome une autre possibilité est d'envoyer une requête http précise vers le serveur domoticz.
voir le tuto : https://www.domoticz.com/wiki/Domoticz_API/JSON_URL's


Choisir l'heure dans AlarmPad :
Image

Voilà :D
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Domoticz et Android (Réveil)

Message par vil1driver »

Salut,

Merci pour le partage.

Ici c'est mon tel qui me sert de réveil (application alarme native à android).

j'utilise autoAlarm avec tasker pour envoyer l'heure de réveil programmée, vers une variable utilisateur de domoticz.

En suite toute l'automatisation est laissée à domoticz.
Via un petit script lua, domoticz me prépare le café avant que je me lève, gère une simulation du lever de soleil via un dimmer, et l'hivers me remonte la température...
Dernière modification par vil1driver le 03 juil. 2015, 17:48, modifié 1 fois.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
newgin
Messages : 22
Inscription : 04 avr. 2015, 14:45

Re: Domoticz et Android (Réveil)

Message par newgin »

Bon entre AlarmPad et AutoAlarm ça ne change pas grand chose. Après c'est sûr que mon scénario peut être améliorer avec un dimmer, un interrupteur pour la lumière de la cuisine et un interrupteur pour la machine à café ou l'eau bouillante.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Domoticz et Android (Réveil)

Message par vil1driver »

La différence c'est que c'est ton tel qui pilote
Ou je n'ai pas bien compris, ce qui est possible ;)
alors qu'ici, mon tel peu planter dans la nuit, domoticz lancera tout de même le scénario...

Mais ta méthode n'est pas mauvaise, c'est juste que je préfère laisser domoticz autonome.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
newgin
Messages : 22
Inscription : 04 avr. 2015, 14:45

Re: Domoticz et Android (Réveil)

Message par newgin »

Ah ! J'avais clairement mal compris oui dans mon bricolage le client Android doit être allumé lors de l'heure du réveil. Chez moi c'est une tablette dédié qui se recharge automatiquement grâce à domoticz et tasker mais ta solution m'intéresse si une fois tu as assez de temps pour me l'expliquer je suis preneur.
:)
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Domoticz et Android (Réveil)

Message par vil1driver »

au niveau de Tasker, j'ai créé 2 profils

un nommé 'send' qui va lancer AutoAlarm quand je quitte l'application 'réveil' (Tâche 'DemandeReveil')
un autre nommé 'AutoAlarmLaunch' qui va détecter le lancement d'autoAlarm et utiliser les variables générées pour renseigner domoticz (Tâche 'EnvoiReveil')

Image
Image
Image

16 :

Code : Tout sélectionner

192.168.22.100:8080/json.htm?type=command&param=updateuservariable&idx=2&vname=reveilmatin&vtype=2&vvalue=%heurereveil:%minutereveil-%dayweek-%jourreveil/%moisreveil/%anneereveil
19 :

Code : Tout sélectionner

192.168.22.100:8080/json.htm?type=command&param=updateuservariable&idx=2&vname=reveilmatin&vtype=2&vvalue=00:00-1-01/01/2000
au niveau de domoticz

j'ai créé une variable utilisateur de type chaîne nommée 'reveilmatin' elle porte l'idx 2 (bien le spécifier dans les liens ci dessus)

pour la partie scénario voici le script lua que j'utilise

Code : Tout sélectionner

-- script_time_reveil.lua

--

time = os.date("*t")

h = uservariables["reveilmatin"]	-- nom de la variable utilisateur contenant la date et l'heure du réveil (format 15:00-1-10/02/2015)
heures = string.sub(h, 1, 2)
minutes = string.sub(h, 4, 5)
jour = string.sub(h, 9, 10)
mois = string.sub(h, 12, 13)
annee = string.sub(h, 15, 18)
t1 = os.time{year=annee, month=mois, day=jour, hour=heures, min=minutes, sec=00}
-- temps restant avant réveil (en seconde)
restant = os.difftime(t1, os.time())
--print(restant)

s = otherdevices_lastupdate["la veilleuse"]	
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
-- temps depuis dernière commande de la veilleuse (en seconde)
veilleuse = os.difftime(os.time(), t1)
--print(veilleuse)

--
-- affectation des modes..
--
-- mode 0 = chauffage + café
-- mode 1 = chauffage
-- mode 2 = café
-- mode 3 = lever de soleil 
-- mode 4 = ...
--
local mode = tonumber(string.sub(h, 5, 5))


commandArray = {}

--
-- avant d'aller se coucher
--
-- dire d'aller se coucher :p si présence, 8 heures avant réveil
if ( (otherdevices['ampli'] == 'On' or otherdevices['room'] == 'On') and (restant >= 28750 and restant <= 28800 )) then	
	commandArray['OpenURL']='pi/tts.php?text=va%20te%20coucher,%20tu%20te%20leve%20dans%208%20heures' 
end	
-- re dire d'aller se coucher :p si présence, 7 heures avant réveil 
if ( (otherdevices['ampli'] == 'On' or otherdevices['room'] == 'On') and (restant >= 25150 and restant <= 25200 )) then	
	commandArray['OpenURL']='pi/tts.php?text=va%20te%20coucher,%20tu%20te%20leve%20dans%207%20heures' 	
end



--
-- avant de se lever
--
-- mise en route du chauffage 45 minutes avant réveil
if ( (mode == 0 or mode == 1) and restant >= 2640 and restant <= 2700 ) then
	commandArray['mv salon']='Off'	
end	
-- faire du café 10 minutes avant réveil
if ( (mode == 0 or mode == 2) and restant >= 540 and restant <= 600 ) then
	commandArray['la cafetiere']='On'
end	
-- simulation du lever du soleil durant les 15 minutes avant réveil, gràce au module variateur +7%/min
-- prise en compte de l'extinction manuelle, le cycle ne s'exécute que si la lampe n'a pas été éteinte dans les 20 dernières minutes
if ( mode == 3  and restant >= 0 and restant <= 900 and (veilleuse >= 1800 or otherdevices['la veilleuse'] ~= 'Off')) then	
	local level = math.ceil((16 - (restant / 60)) * 100 / 16)
	print('veilleuse à ' .. level .. ' %')
	commandArray['la veilleuse']='Set Level ' .. level
end




return commandArray 

la partie mode me permet de changer de scénario simplement
le mode corresponds au chiffre des unités des minutes de l'heure de réveil.
par exemple, si je règle mon réveil sur 07h00 on sera en mode 0 ce qui va lancer le chauffage plus le café
si je règle l'heure de réveil sur 07h02 on sera en mode 2 et domoticz ne fera que le café

--

je voulais également pouvoir vérifier que domoticz ai bien reçu l'heure,
je voulais donc l'afficher sur ma tablette (frontpage)
mais une variable n'est pas affichable, par contre on peut afficher un capteur texte,
j'ai donc écris un script qui va renseigner mon cpateur text (idx=150) dès que la variable 'reveilmatin' est mise à jour.

Code : Tout sélectionner

-- script_variable_reveil.lua

commandArray = {}


if(uservariablechanged['reveilmatin']) then
print('réception nouvelle heure de réveil: ' .. uservariables['reveilmatin'])
commandArray['OpenURL']='192.168.22.100:8080/json.htm?type=command&param=udevice&idx=150&nvalue=0&svalue=' .. uservariables['reveilmatin']

end

return commandArray 
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
newgin
Messages : 22
Inscription : 04 avr. 2015, 14:45

Re: Domoticz et Android (Réveil)

Message par newgin »

Pour envoieréveil, c'est quelle catégorie d'action ? je fais "+" ensuite plugin autoalarm ?

Image
staber
Messages : 79
Inscription : 21 mars 2016, 02:54

Re: Domoticz et Android (Réveil)

Message par staber »

Merci pour ce post.

Je m'en suis inspiré pour planifier mon réveil!

Il est également possible d'ajouter une action pour lancer de la musique sur le chromecast :D
Pyrrhus
Messages : 130
Inscription : 11 juin 2015, 14:57

Re: Domoticz et Android (Réveil)

Message par Pyrrhus »

Salut, comment fais tu pour lancer une musique sur chromecast ?? ça m'intéresse beaucoup et ça m'éviterait de lancer kodi juste pour le réveil :?
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Domoticz et Android (Réveil)

Message par vil1driver »

Castnow par exemple ;)
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
Répondre