Il y a quelque semaines, j'ai mis en service une surveillance pour des locaux très distants.
L'idée, c'était d'avoir une possibilité d'adapter facilement la plage de valeurs de température et d'humidité qui déclencherait une alarme optique et sonore sur place, ainsi que d'avoir l'information sur plusieurs “IPhone” des valeurs relevées au moment de l'alerte.
Ce petit article décrit pas-à-pas la mise en pratique de mesure de la température et de l'humidité à l'aide de 2 sondes Everspring ST814, avec enclenchement d'une alarme lumineuse et acoustique SE812-1.
Deux devices virtuels sont créés pour indiquer quelle sonde dépasse les valeurs.
Pour avoir un suivi des températures et d'humidité, nous allons créer des graphiques à l'aide de Pachube.
Et pour finir recevoir des messages Push à l'aide de Prowl.
I. Pré requis
Pour ce tutorial, nous utiliserons donc:
- 2 sondes Everspring ST814
- une alarme lumineuse et acoustique SE812-1
- une Vera
- un compte Prowl
- un compte Pachube
En premier lieu, les 2 sondes ST814 doivent être inclues dans la Vera ainsi que la sirène SE812-1.
Il faudra ensuite créer deux devices virtuels comme expliqué dans l'article de Cédric sur l'IPX.
Voici la liste des modules utilisés dans cet article (attention, les numéros devront être modifiés selon votre installation):
- Sonde 1: 36 (numéro du device général)
- Sonde 2: 32 (numéro du device général)
- Alarme: 45
- Virtuel 1: 46
- Virtuel 2: 47
II. La gestion des valeurs
Cette scène vérifiera périodiquement si les valeurs limites sont atteintes et enclenchera le device virtuel concerné.
Elle enclenchera également la sirène.
Note: Il semblerait que le ST814 envoie les valeurs quand elles se modifient, mais la Vera ne fait l'actualisation que toutes les 30 minutes.
Créez un timer de 5 minutes par exemple qui lancera cette scène périodiquement.
Dans l'onglet Luup entrez le code suivant:
(C'est dans cette scène que vous allez définir les valeurs limites)
— Valeurs limites à définir
— ==========================================================— Sonde 1
tmax1=23
tmin1=17
hmax1=80
hmin1=45— Sonde 2
tmax2=15
tmin2=5
hmax2=70
hmin2=50— ===========================================================
— NE PAS MODIFIER CE QUI SUIT
— (Définition des services)
temp1=luup.variable_get(“urn:upnp-org:serviceId:TemperatureSensor1″,”CurrentTemperature”,36)
temp2=luup.variable_get(“urn:upnp-org:serviceId:TemperatureSensor1″,”CurrentTemperature”,32)
humi1=luup.variable_get(“urn:micasaverde-com:serviceId:HumiditySensor1″,”CurrentLevel”,36)
humi2=luup.variable_get(“urn:micasaverde-com:serviceId:HumiditySensor1″,”CurrentLevel”,32)— (Déclenche l'alarme en cas de dépassement d'une valeur limite)
— Sonde 1
if ((tonumber(temp1)>=tmax1
or tonumber(temp1)< =tmin1)
or (tonumber(humi1)>=hmax1
or tonumber(humi1)< =hmin1)— Sonde 2
or (tonumber(temp2)>=tmax2
or tonumber(temp2)< =tmin2)
or (tonumber(humi2)>=hmax2
or tonumber(humi2)< =hmin2))then
luup.call_action(“urn:upnp-org:serviceId:SwitchPower1″,”SetTarget”,{ newTargetValue=”1″ },45)
else
luup.call_action(“urn:upnp-org:serviceId:SwitchPower1″,”SetTarget”,{ newTargetValue=”0″ },45)
end— (Activation de la signalisation)
if (tonumber(temp1)>=tmax1
or tonumber(temp1)< =tmin1)
or (tonumber(humi1)>=hmax1
or tonumber(humi1)< =hmin1)
then
luup.call_action(“urn:upnp-org:serviceId:SwitchPower1″,”SetTarget”,{ newTargetValue=”1″ },46)
else
luup.call_action(“urn:upnp-org:serviceId:SwitchPower1″,”SetTarget”,{ newTargetValue=”0″ },46)
endif (tonumber(temp2)>=tmax2
or tonumber(temp2)< =tmin2)
or (tonumber(humi2)>=hmax2
or tonumber(humi2)< =hmin2)
then
luup.call_action(“urn:upnp-org:serviceId:SwitchPower1″,”SetTarget”,{ newTargetValue=”1″ },47)
else
luup.call_action(“urn:upnp-org:serviceId:SwitchPower1″,”SetTarget”,{ newTargetValue=”0″ },47)
end
III. Envoi des notifications via Prowl
Cette scène enverra en cas d'alarme, un message Push sur Prowl avec information des valeurs actuelles des 2 sondes.
Elle sera déclenchée par le module sirène.
Créez un Event similaire à l'image suivante
Mettre dans l'onglet Luup le code suivant:
luup.inet.wget(“https://prowl.weks.net/publicapi/add?apikey=VOTRE_API_KEY&application=Vera&event=ALARM&description=Sonde+1+” .. temp1 ..”+°C+” .. humi1..”+%RH+__+Sonde+2+” .. temp2 ..”+°C+” .. humi2 .. “+%RH&priority=+2”)
return true
IV. Envoi des informations à Pachube
Si c'est la première fois que vous utilisez Pachube, je vous conseille de voir l'article de Cédric, où tout est bien expliqué.
Ensuite il faut définir 4 scènes afin d'envoyer les valeurs relevées des sondes vers le Feed de Pachube que vous aurez préalablement créé ainsi que les 4 Datastreams (temp1, humi1, temp2, humi2).
Scène Envoi temp1
Créez un timer de 15 minutes par exemple qui lancera cette scène périodiquement.
Dans l'onglet Luup entrer le code suivant:
my_send_pachube (“Numéro_de_votre_Feed”, “Datastream1”, temp1)
return true
Remplacez “Datastream1” par le nom que vous aurez créé sous Pachube pour la température de la sonde 1.
Les 3 autres scènes sont identiques , n'oubliez pas de remplacer temp1 par respectivement humi1, temp2, humi2 (variables globales définies dans la première scène).
Vous pouvez voir ci-dessus deux façons différentes d'afficher les graphes.
V. Conclusion
Au premier contact la Vera peut paraitre compliquée, mais plus on expérimente et plus on remarque une souplesse d'utilisation assez remarquable.
Alors, à vos claviers et ne manquez pas de nous faire part de vos découvertes !