Archives pour la catégorie Domotique

Portail PHP – Surveillance Controlleur Veras

La solution « Domotique/Videosurveillance »  ( 3 controlleurs domotique VERA ) s’appuie sur l’application Android  « Imperihome » installée sur un smartphone , pour la gestion à distance de ces systèmes VERA  .

Il y a un certain nombre de limitations du produit Vera qui peuvent etre résolues par l’installation de plugins Vera ou par la création de scène éxecutant du code Luup , mais  pouvoir centraliser certaines informations sur un site PHP  serait un plus comme :

  • Tableau de bord de l’utilisation des ressources système ( cahrge UC , occupation mémoire …)
  • Graphe température , humidité …
  • Etc

 

Etape 1 : Mise en place de l’infrastructure PHP et interface VERA

1) Un serveur local PHP est à installer sur un PC pour le développement et le test en local  avant d’installer le programme PHP sur un site WEb PHP :

  • Vampserver 2.5 avec Apache , PHP , MySQL
  • Serveur FTP Filezilla 0.9.54 et Client FTP Filezilla 3.14.1

La chaine (site web PHP <->API Vera) a été testée d’abord localement en envoyant un script simple par FTP dans un répertoire de test du serveur (Vamp/www/test/test.php) et en l’éxecutant à partir de l’interface Web du serveur ( http://localhost/test/test.php)

<?php
echo « Debut test 1 : dialogue site web -> controleur Vera » . »<br> »;
$url= « http://192.168.1.100:3480/data_request?id=invoke&output_format=xml &raquo;;
echo « List of devices  » . « <br> » . $url . »<br> »;
$xml=file_get_contents($url);
echo $xml;
echo « Fin test dialogue site web -> controleur Vera » . »<br> »;
?>

2) Pour éxécuter le script de test sur le site Web distant PHP , il faut d’abord ouvrir un compte et ensuite y transférer le script de test par FTP et l’éxecuter.

L’envoi des fichiers php vers le site web distant par FTP nécessite une configuration au niveau du serveur Filezilla et du routeur ADSL .

Le test de transfert FTP distant à partir du site https://ftptest.net échoue à cause d’un problème de connexion en mode passif ( imposé par le serveur de test) , le serveur Filezilla ne renvoyant pas une IP externe au serveur de test :

Reply: 227 Entering Passive Mode (192,168,1,4,55,69)

Error: Server returned unroutable private IP address in PASV reply

 

Test 2  Envoi de données de test à l’initiative du controleur Vera vers le site PHP

local c,s = luup.inet.wget("http://192.168.0.1/maison/N0/vera/vera-x10.php?cmu=e1%20off",5)
return true

<?php
echo ("Page web : http://192.168.0.1/maison/N0/vera/vera-x10.php");
$CMU = $_GET['cmu'];
echo "$CMU </br>";
$results = shell_exec('nc -c "echo pl '.$CMU.'" localhost 1099');
echo "$result </br>";
?>

 

 

ETAT au 31/12/2015 :

Point 1 = OK

Point 2 = en test , pb mode passif

Point 3 à venir

 

 

 

Multisensor DSB05

Le capteur Z-wave DSB05 d’Aotec est un capteur multi-fonctions ( appelé aussi 4 en 1 )  pouvant fonctionner sur piles ou en 220V avec un cable USB fourni.

Les fonctions de ce multisensor sont : Détection de mouvement , Température , Humidité et Luminosité.

aeon-labs-dsb05-multisensor

Création de la configuration

A l’insertion du DSB05 dans le réseau Zwave , 4 équipements sont créés automatiquement dans la VeraLite

Modules DSB05

Configuration du module « 4 en 1 »

La configuration des paramètres se fait sur le module maitre ( 4 en 1 ) .

Parametres dsb05

Imperihome – Synthèse vocale sur appareil mobile Android

Après avoir testé la version gratuite d’Imperihome comme application mobile de gestion de mes controleurs Vera , la version payante a été achetée (4.90 Euros) pour lever certaines limitations de la version gratuite :

  • Dashboard de 2 pages max
  • Sauvegarde configuration
  • Reconnaissance vocale et synthèse vocale (TTS ou Text To Speach) via plugin Vera Imperihome avec un périphérique Android

Installation du plugin Vera « Imperihome V1.1 »

Suite installation du plugin imperihome sur le controleur Vera à l’aide de la procédure accessible par le Help du plugin ( My Apps -> Bouton Details du plugin Imperihome -> Help) , un device imperihome android est créé.

device imperihomePour le test de la fonction TTS , Selectionner le Device Imperihome au niveau du controleur Vera pour ouvrir l’écran ci-dessous et taper un texte dans le champ « Say Text »  , enfin clicker sur le bouton « Say TTS » . La phrase de test est entendue sur le device imperihome android  ( en l’occurence « allo allo allo »).

test tts

La fonction TTS pourra étre utilisée en insérant dans une scène le code Luup  » luup.call_action(« urn:imperihome-com:serviceId:ImperiHomeDevice1 », « SayTTS », {Text = « text to say »}, DEVICEID); « .

Graphiques sur le portail SEG

La publication sous forme de graphiques de la consommation d’électricité , de la température et de l’humidité permets d’en suivre la tendance et d’en tirer des enseignements .

En absence de fonction de publication de graphiques au niveau du controleur Vera , la solution retenue est d’utiliser un des portails énergie gratuit comme SEG (Smart Energy Groups) , l’envoi des données venant de différents modules se fera par le controleur Vera vers le portail SEG.

1) Sur le site SEG .. http://www.smartenergygroups.com/

  • Ouvrir un compte gratuit sur SEG
  • Configurer en sélectionnant « My Things » -> My Things -> puis creer un nom de site
  •  Récupérer le « Site Token » en sélectionnant « My Things »  -> My site -> Sélectionner le site -> Edit . Le site token est dans le champ API Details.

2) Code Lua à mettre dans le fichier startup.lup pour envoyer les données vers le site SEG

Ci-dessous un exemple de code Lua ( source forum Micasaverde )  à adapter pour la variable SEGSiteId (Site token)  et la table SEG_DEVICE (Service Id)

—————————————————————-

local http = require(‘socket.http’)
http.TIMEOUT = 5

local SEG_SITE = « <yourSEGSiteIdHere> »
local SEG_URL = « http://api.smartenergygroups.com/api_sites/stream &raquo;
local segLog = function (text) luup.log(‘SEG Logger: ‘ .. (text or « empty »)) end

SEG_DEVICES = {
{node=’vera’, stream=’t_upstairs’,   deviceId=335, serviceId=’urn:upnp-org:serviceId:TemperatureSensor1′, serviceVar= »CurrentTemperature »},
}

local function findStream(deviceId, serviceId, serviceVar)
— TODO: Change from a simple scan to something that’ll support more entries efficiently.
for k, v in pairs(SEG_DEVICES) do
if (v.deviceId == deviceId and
v.serviceId == serviceId and
v.serviceVar == serviceVar) then
return v.node, v.stream
end
end

return nil, nil
end

local function initWatch()
for k, v in pairs(SEG_DEVICES) do
luup.variable_watch(‘segWatch’, v.serviceId, v.serviceVar, v.deviceId)
end
end

function segWatch(deviceId, serviceId, serviceVar, oldValue, newValue)
local nodeName, streamName = findStream(deviceId, serviceId, serviceVar)

if (nodeName == nil or streamName == nil) then
segLog(string.format(« Node not found for %s,%s,%s », deviceId, serviceId, serviceVar))
return
end

— TODO: Encoding
segData = string.format(« (site %s (node %s ? (%s %s))) », SEG_SITE, nodeName, streamName, newValue)
segLog(segData)

result, status = http.request(SEG_URL, segData)
end

initWatch()

———————————————————————–

3)  Test à partit du SEG avec fonction Discover

  • Lancer la fonction « Discover » pour creer les périphériques associés coté portail SEG , à partir de My Things »

My Things -> Tools -> Discovery and then press DISCOVER

La configuration d’un périphérique et d’un flux de données sera créée automatiquent par SEG  ( en l’occurence le flux Power en Watts ) si la règle de nommage du flux au niveau du site SEG est respectée coté controleur Vera ( e_xxx  pour Energy KWH ou p_xxx  pour Power Watts )

Note : La commande Discover doit etre lancé à partir d’une machine situé dans le meme réseau que le controleur Vera.

4) Ajouter les flux supplémentaires de données

  • Ajouter les flux supplémentaires , déclarés dans le fichier Startup.lua , sur le portail SEG ( le flux Energy dans l’exemple)

SEG configuration5) Exemple de Dashboard

Dashboard Energie donnant la consommation du wall plug

dashboard seg

 

Envoi de notifications

1) Envoi de notifications par mail

Le plugin eMailNotification ( ou Smtp notification ) permets d’envoyer un mail  relatif à un évenement décleché par une scène , en ajoutant un code Luup dans cette scène .

Les paramètres ci-dessous Recipient eMail et id_Module sont à remplacer par les valeurs de la configuration à utiliser soit l’adresse mail et le no de module du plugin Smtp

local params = {
Recipient_Name = "Notification Vera",
Recipient_eMail = "moi@gmail.com",
Subject = " sujet",
Message = "message"
}

lodal dID = 34 --No module Smtp notification
luup.call_action("urn:upnp-org:serviceId:SmtpNotification1", "SendEmail", params, dID)

luup.call_action(« urn:upnp-org:serviceId:SmtpNotification1 », « ResetCount »,{}, id_module)

2) Envoi de notification sur smatrphone android par pushingbox

  • Installer l’application NotifyMyAndroid sur le smartphone Android et creer un compte
  • Aller sur http://www.pushingbox.com et y creer un compte pour le service NotificationMyAndroid et y renseignet l’API key généré sur le smartphone
  • Executer le code ci-dessous par la scène créée pour ce scenario

-- Etat de la porte et du house mode

local status_porte = luup.variable_get(« urn:schemas-micasaverde-com:device:MotionSensor:1 », « Tripped »,35)

if ((status_porte == "1") and (house_mode == "home")) then
-- message si porte ouverte et house_mode == "home" et passage house_mode à "Night"
luup.inet.wget("http://api.pushingbox.com/pushingbox?devid=xxxxxxxxxxxxxxxxxxxx")


end

Serrure électronique

La serrure Vision Security ZM1702 est une serrure électonique Z-Wave pour le domicile ou le lieu de travail , qui  supporte jusqu’à 13 codes d’accès permanents et peut en prendre en compte d’autres de maniére temporaire pour des moments particuliers dans la journée ou periodiquement selon sa programmation.

La serrure de la porte peut être actionnée à l’aide du clavier ou à distance à partir d’un panneau d’alarme, PC, smartphone ou même via Internet.

 

La serrure ZM1702 s’adapte à toutes les portes conventionnelles, tant que l’épaisseur est supérieure à 38 mm , quelle que soit l’orientation de la porte. Les poignée sont réglables et s’y adaptent facilement.  La serrure fonctionne sur batterie et ne nécessite aucun câblage supplémentaire.

La serrure ZM1702 peut fonctionner de manière autonome ou s’intégrer à votre reseau Z-Wave.

 

 

Serrure-Vision-Security-ZM1702.png

Il existe aussi un modèle ZM1701 sans poignée 

 

 

Serrure-Vision-security-ZM1701.png

Pilote volant roulant BUBENDORFF

Mes volets roulants de marque Bubendorff sont intégrés dans les  fenètres  .  La référence de ce type de volet est « Bloc N » .

La commande de la motorisation du volet est de type filaire  comportant un double inverseur de marque Hager WS301 ( un pour monter , un pour descendre )

 

Le moteur est du type MG avec fin de course électronique intégré,et supporterait  en plus une fonction courant porteur Bubendorff pour la commande centralisée filaire ( c’est à dire par le réseau électrique et non radio) .

 

Tout cela doit etre clarifié avant toute tentative de domotisation .

Piloter un portail

Le module Z-wave Fibaro FGS221 dispose d’un relais à contact sec (libre de tout potentiel) qui permets de commuter une tension de 230V comme du 12 ou 24V mais pour piloter un automatisme de portail , un contact sec est requis mais sans aucune tension à commuter.


 1) Caractéristiques du module FIBARO FGS211

 Le module Zwave Fibaro FGS211 dispose d’un relais à contact sec (libre de tout potentiel) ce qui permets de fournir le contact sec requis par les automatismes d’ouverture de portail.

FGS-211ZOOM.jpg

 Le micro module FGD211 possède les connexions suivantes :

  • N : Neutre
  • L : Phase
  • IN : Borne d’entrée pour l’alimentation de charge
  • O1 : Borne de sortie du relais
  • S1 : Borne de l’interrupteur ou poussoir
  • B : Bouton de service (utilisé pour ajouter ou retirer un périphérique du système)

 

 2) Schémas électrique du montage à réaliser

 

Ce type de module peut etre utilisé pour des commandes d’automatismes bécessitant un contact sec , donc sans alimenter la borne IN pour que le relais n’ait aucun potentiel ( ne pas faire de pont de phase entre les bornes IN et L)

En général toutes las cartes de commandes des automatismes de portail comportent des entrées pour effectuer ce type de branchement.

La solution technique définitive viendra après la lecture de la notice de la motorisation de mon futur portail.

schema_commande_portail_module_fibaro_FGS221_1.png

Configuration des modes maisons

Les « Modes Maisons » du Dashboard permettent facilement et rapidement d’automatiser de multiples fonctions en un simple click sur un bouton .

Par exemple quand vous etes sorti ou en vacances , le controleur Vera automatiquement va fermer les lumières , ajuster les thermostats etc ..

Les 4 modes maisons disponibles sont paramétrés par defaut et  ils peuvent etre modifiés  en fonction de votre stratégie d’automatisation , en cliquant sur le bouton DEFAULT qui deviendra alors CUSTOM

house mode1

house mode2

Dans mon cas par exemple , le mode NUIT est paramétré comme suit :

  • Choisir les capteurs/détecteurs à armer :
    • Détecteur de présence DSB05
    • Détecteur ouverture fenetre
    • Détecteurs ouverture porte de garage
  • Actions en cas d’armement d’un détecteur
    • enregistrement video par la caméra Bluestork ( en fait une photo )
  •  Notification d’évènement par mail en cas d’activation des détecteurs
    • envoi de mail à moi-meme
  • Autres actions en cas d’armement d’un détecteur
    • Ne rien changer à la prise ON-OFF Wall plug
    • Ne rien changer aux commutateurs FGS211 de la porte de garage et du chauffeau

De temps à autre nous oublions de passer du mode JOUR au mode NUIT le soir et donc les capteurs indiqués ci-dessus restent à l’état « Désarmé » , ce qui rends inefficace la surveillance de la maison.

Pour pallier à ce problème , la solution est de créer une scène « House mode Night » pour forcer le mode NUIT le soir  (20H par ex) seulement si cela n’a pas été fait manuellement au niveau du Dashboard de lUI Vera ou de Imperihome sur le smartphone android ..

Scene House mode

Code Luup à executer par la scène

——————————————————————————————————————–

— Interrogation état house mode ( à priori pas possible avec un direct luup.variable_get(…)
local res,housemode = luup.inet.wget(« http://127.0.0.1:3480/data_request?id=variableget&Variable=Mode &raquo;,5)
luup.log(« get housemode ( Home = 1) :  « , housemode)

— Passage mode NIGHT si mode = HOME

if (housemode == « 1 ») then
luup.log(« set housemode to Night »)
luup.call_action(« urn:micasaverde-com:serviceId:HomeAutomationGateway1″, »SetHouseMode », {Mode = 3}, 0)
end

———————————————————————————————————————–

Prise électrique

La prise électrique murale « Wall Plug » de Fibaro  est un module Z-Wave enfichable dans une prise européenne avec prise de terre et qui peut s’utiliser partout où il y a un besoin de contrôler des appareils électriques, jusqu’à 2500 W tout en surveillant la consommation d’énergie . 

 Wall-Plug-Fibaro.jpg

1) Inclusion et configuration du module Z-Wave Wall Plug dans la Veralite

 Le module Wall plug se met en auto-inclusion à la mise sous tension .. Le controleur Z-Wave Veralite est à configurer en mode détection périphérique Z-Wave pour réaliser l’inclusion du Wall Plug.

 Une fenètre est créée dans l’onglet MODULES de la VeraLite  avec les boutons Marche/Arret de la prise ainsi que la consommation instantanée .

Pour le test le Wall Plug alimente 2 PC portable avec une consommation instantanée de 72W

 Veralite-wall-plug.png

 2) Configuration de la prise Wall Plug en mode « Heure creuses » dans la VeraLite

  Pour déclencher l’alimentation de  la prise Wall Plug seulement lors des heures creuses , une scène ( machine à laver dans notre exemple)  est à lancer sur un évènement « tous les jours à partir de 22H30 jusqu’à 06H30 » .

scene-wall-plug_2.jpg 

 Les actions à déclencher par la scène sur un évènement programmé peut se faire par l’onglet  MODULES en affectant une action à chaque bouton ON,OFF .

Pour allumer la prise lors de l’éxécution de la scène à 22H30 et l’éteindre à 06H30 soit 9H plus tard :

  •  Sélectionner « Pas de délai » et cliquer sur le bouton ON du wall plug
  • Créér un retard de 8H à l’aide du bouton « Gerer les délais »
  • Sélectionner la ligne « 8 Heures » créee et cliquer sur le bouton OFF du wall plug

scene-wall-plug1.jpg

 3) Intégration du module Wall plug dans la VeraLite

 La configuration (paramètres) installée par défaut lors de l’installation du module Wall Plug  peut etre visualisée par la commande

http://ip_vera:3480/data_request?id=user_data&output_format=xml

  • EnergyMetering1″ variable= »Watts » value= »0″ id= »15″/>
  • EnergyMetering1″ variable= »Log » value= »0,0,0,1374075000,1″ id= »16″/>
  • EnergyMetering1″ variable= »ActualUsage » value= »1″ id= »17″/>
  • EnergyMetering1″ variable= »KWH » value= »1.5900″ id= »18″/>
  • EnergyMetering1″ variable= »KWHReading » value= »1374076000″ id= »19″/>

Les paramètres suivants  ont été configurés manuellement pour :

  •  Consommation du module : EnergyMetering1  »  : 0,8 Watts
  • Restauration état précédent (ON ou OFF) d’avant la coupure au retour du secteur (paramètre 16)
  • Variation de puissance nécessaire à l’envoi immédiat de la valeur de consommation (Paramètre 40)
  • Variation de puissance nécessaire à l’envoi de la valeur de consommation , l’envoi standard se faisant à une cadence de 5 fois toutes les xx secondes selon paramère 43 (Paramètre 42)
  • Durée pendant laquelle la prise peut envoyer un maximum de 5 relevés de consommation , en fonction variation définie dans le paramètre 42 (paramètre 43).
  • Augmentation de consommation énergétique nécessaire à l’envoi de la valeur de consommation (Paramètre 45)
  • Délai entre deux envois cycliques des données de consommations (Paramètre 47)
  • Activation de l’ajout de conso du module lui-même (Paramètre 49)
  • Coupe la charge en cas de dépassement de la puissance paramétrée (paramètre 70)

Parametres-wall-plug.png

4)  Prise en compte du module Wall Plug par Imperihome

Pour le test  , un groupe « machine à Laver » a été créé  contenant le Wall Plug

imperihome-wallplug.jpg

5) Bilan du test  de la prise « heures Creuses »

Malheureusement comme tous les équipements électroménagers , ma machine à laver et mon lave-vaisselle étant électronique , lorsque le programme est sélectionné ,  le déclenchement se fait en appuyant sur un bouton poussoir (qui revient immédiatement dans son état initial, contact sec) donc impossible de la piloter avec cette prise « Heures creuses »