Tous les articles par gerardosamara

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

 

Autoconsommation photovoltaique

La production d’électricité par des panneaux solaires peut permettre de diminuer le cout de la consommation électrique meme en cas d’autoconsommation uniquement (sans revendre l’électricité au fournisseur) , que ce soit avec ou sans stockage de l’électricité non consommée dans des batteries en vue d’une ré-utilisation en période non ensoleillée. La mesure de la consommation électrique produite par le photovoltaique et consommée peut etre intégrée dans le système domotique installé.

maison_autoconso

 

1. La position du soleil tout au long de l’année peut etre visualisée à l’aide de cet outil  en ligne ( exemple dans les Cotes d’armor)

http://www.sunearthtools.com/dp/tools/pos_sun.php

Course soleil

solar-diagram-cartesian-1452555538000

 

2. Une estimation de la production photovoltaique peut etre faite à l’aide de cet outil en ligne  , avec les paramètres puissance 1KW , lieu géographique , orientation et inclinaison des panneaux  ( exemple dans les Cotes d’armor)

http://re.jrc.ec.europa.eu/pvgis/apps4/pvest.php?lang=fr&map=europe

PV radiationPV production

2) La solution retenue est à base de micro-onduleurs M250 ENPHASE

m250

Schéma de principe et de raccordement

Autoconso Diagram

Schema autoconsommation

Scénarios

Les « Modes Maisons » du Dashboard (Home , Night , Away , Vacation) permettent facilement et rapidement d’automatiser de multiples fonctions selon l’occupation du logement  ( voir l’article correspondant)  .

La fonction « Geofence » , utilisée pour la gestion de certains changements automatiques du Mode Maison , est assurée par l’application Vera Mobile installée sur le smartphone.

Toutefois , l’utilisation du plugin « house mode » pour faire des actions lors de changement de mode et l’ajout de scènes configurées au niveau de l’interface utilisateur Vera sont  nécessaires pour obtenir le fonctionnement voulu de l’automatisation .

Certaines limitations au niveau du controlleur Vera peuvent conduire à ajouter du code Lua à la logique des scènes créées afin obtenir le fonctionnement voulu.

La gestion du « House Mode » doit etre possible à parti de l’UI Vera , de l’app Imperihome  et automatiquement à partir de scènes :

  • Mode « Home »
    • UI Vera ou widget Imperihome « House Mode »
    • Fonction Vera Geofence sur retour mon smartphone dans le périmètre maison
  • Mode « Away »
    • UI Vera ou widget Imperihome « House Mode »
    • Fonction Vera Geofence sur départ de mon smartphone du périmètre maison
  • Mode « Night »
    • UI Vera ou widget Imperihome « House Mode »
    • Scène « House Mode Night » programmée à 22H si mode existant est Home ou Away
  • Mode « Vacation »
    • UI Vera ou widget Imperihome « House Mode »

Ci-dessous la liste des scènes créées , en complément du « house mode » :

  • Surveillance ON :  Au passage en mode  Away,Night ou Vacation , activer la fonction « motion detection » des caméras par requete http vers l’API caméra
  • Surveillance OFF :  Au passage en mode  Home , désactiver la fonction « motion detection » des caméras par requete http vers l’API caméra
  • Chauffeau heures creuses :  Démarrer le chauffeau électrique à 01h00 et l’arreter à 06h00 (sauf si house mode = Vacation)
  • Videosurveillance : Sur détection de mouvement prendre une photo puis envoyer 6 photos sur un compte Dropbox et allumer la lumière dans l’entrée pendant 5 mn.
  • Thingspeak : Envoi toutes les 5 mn des données température , humidité , consommation sur le portail Thingspeak (graphes)

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

Résistance à l’effraction

Les solutions de videsurveillance ou de détection d’intrusion mises en place contre les cambriolages n’ont pas une efficacité suffisante pour faire fuir des cambrioleurs déterminés et expérimentés car ils peuvent facilement se protéger le visage pour empècher leur identification afin de neutraliser le système de d’alarme et ensuite pénétrer à l’intérieur de la maison par effraction .

En conséquence il faut que le système de videosurveillance/alarme/détection d’intrusion installé à l’extérieur résiste suffisamment longtemps ainsi que les ouvertures de la maison pour faire fuir l’intrus .

Un système de caméras IP intérieures vient compléter la solution de vidéosurveillance en cas d’effraction .

Cela implique de définir  la solution appropriée et d’en examiner les points faibles et y remédier :

– Le système doit détecter la tentative d’intrusion à l’extérieur de la maison

– Le système doit signaler la tentative d’intrusion par une alarme et transmettre une alerte par mail ou SMS

– Le système doit résister à une attaque physique

 

Les ouvertures de la maison doivent résister un minimum de temps ; serrures , volets , portes , fenètres

 

1)  Système de détection à l’extérieur de la maison

–  Caméra IP avec vision nuit/jour installée à l’extérieur de la maison en hauteur sous le toit avec détecteur de présence avec protection anti-vandallisme , doublée d’une sirène extérieure.

– Envoi d’alertes par mail et/ou SMS lors de détection d’intrusion .

2) Sécurisation de la transmission

– Protéger l’arrivée de la ligne téléphonique entre la partie entérrée et l’entrée dans la maison

– Alimenter la Box ADSL par un onduleur+ batterie en cas de coupure d’électrécité

– Alimenter la caméra extérieure à partir de l’onduleur ( PoE )

– Masquer la diffusion du réseau Wi-FI au niveau de la Box ADSL (SSID)

– Avoir au moins 1 camera IP Wi-Fi à l’intérieur de la maison pour servir de détecteur de brouilleur WiFi , le logiciel de surveillance devant générer un évènement avec envoi email+photo sur la détection de perte de connextion entre la caméra qui a été brouillée et le logiciel de surveillance

 

3)  Sécurisation des ouvertures de la maison

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