Un système domotique sans remontée graphique perd de son attrait. Il existe pléthore de tuto sur ce sujet. Je m'en suis inspiré et ai décidé de partir de zéro et d'aller jusqu'à l'affichage de mon premier graphique.
Normalement il y a tout ce qu'il faut : infos et liens, sinon n'oubliez pas, il y a les commentaires :)

On y va ...

 

 

I - Les pré-requis :

° Une Vera sous UI7 fonctionnelle (oui oui y'en a) avec une petite expérience sur son utilisation.
° Un NAS Synology sous DSM 6 (Avec DSM 5 cela fonctionne mais les copies d'écran de cet article seront à adapter).
° Si ce n'est pas déjà fait : Installer PhpMyadmin sur le syno, cela va automatiquement installer "MariaDB" et "PHP"

phpmyadmin° Sans "Web Station " point de salut.

webstation° Voir ici si besoin de plus d'infos (Merci à Julien Nicole). Un dossier partagé au doux nom de web sera créé à cette occasion.
Petit aparté, comme je ne vais pas me contenter d'une base de données, je vais me simplifier la vie en connectant un lecteur réseau afin d'accéder plus facilement à mon synology. (Cette étape n'est pas obligatoire).

A ces fins il faut faire rejoindre le synology au Workgroup Windows, c'est dans le "Panneau de configuration" onglet "Services de fichiers"

winmac

Puis connecter un lecteur réseau me voilà en possession d'un lecteur "W" comme Web (pas con hein ...):

w
° Télécharger le fichier "graphs_vera.zip" disponible ici et le descendre à la racine d'un disque. Là c'est plutôt sbdomo qu'il faut remercier ici . J'ai choisi de ne garder que hightstock1.37 plus à mon goût (Mais bon l'égout et les couleurs comme disait Coluche). L'arborescence à avoir sur le synology ressemble alors à cela :

fsAssurez-vous que le dossier elec contient bien deux scripts php :
° graph.php
° loggermulti.php

Dans le fichier ghaph.php il vous faudra remplacer au minimum une ligne le password si vous avez tout laissé par défaut.
$hostname = "127.0.0.1";
$database = "graphs";
$username = "****";
$password = "****";

idem pour loggermulti.php
$db_name  = "graphs";
$db_table = "graph_elec_tbl";
$db_login = "****";
$db_passw = "****";

° Enfin il faut quatre œufs, 250 grammes de farine, une gousse de vanille ... Mais là je m'égare ;)

II - Création de la base de données :

Première chose à faire : Créer un mot de passe pour l'utilisateur "root". Pour cela depuis la page d'accueil, cliquez sur "Comptes d'utilisateurs" puis cliquez sur "changer les privilèges"

mdpmyadminCliquez sur "Modifier le mot de passe" et choisissez un mot de passe maousse costaud à ne pas oublier bien sûr.

mdpphpmy

Cliquez maintenant sur l'onglet "SQL" et copiez-collez la requête suivante puis cliquez sur exécuter :

CREATE DATABASE `graphs` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE `graphs`;
CREATE TABLE IF NOT EXISTS `graph_elec_tbl` (
`ffeed` text COLLATE utf8_unicode_ci NOT NULL,
`ftimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`fvalue` double NOT NULL)
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Une base de données au nom de graphs ainsi qu'une table au nom de graph_elec_tbl seront créées.

III - Côté Vera :

J'avoue ne plus utiliser l'interface officielle au profit d'AltUI d'amg0 mais bon je vais faire l'effort :(
Il faut aller dans "Apps" --> "Developp apps" --> "Edit Startup Lua" et ajouter le code suivant :

-------------------------------------------------------------------------
--        Envoyer les valeurs dans la base de données                  --
-------------------------------------------------------------------------
function my_graph_sensor_multi(feeds)
    local url = "http://<IP_DU_SYNO>/graphs/elec/loggermulti.php?"
    local result = luup.inet.wget(url..feeds)
    return result
end
-------------------------------------------------------------------------

!<IP_DU_SYNO> est à remplacer par l'adresse IP de votre synology!

Maintenant il va falloir remonter vos données vers la base de données. Pour cela créez une scène avec un échéancier de 15 minutes. Dans le code lua ajoutez :

local id_frigo  = 86
local id_tele   = 23

local Cid       = {id_frigo, id_tele} 
local CName     = {"w_frigo", "w_tele"}

local feeds     = ""
local nbfeeds   = 0
local value     = ""

for i,id in ipairs(Cid) do
  value         = luup.variable_get("urn:micasaverde-com:serviceId:EnergyMetering1", "Watts", id)
  value         = tonumber(value)
  nbfeeds       = nbfeeds+1
  feeds         = feeds .."&f" .. nbfeeds .. "=" ..CName[i] .. "&v" .. nbfeeds .. "=" .. value
end
local result    = my_graph_sensor_multi("feeds=" .. nbfeeds .. feeds)
return true

Argh! Pas de panique, dans cet exemple j'envoie dans la base de données la consommation de mon frigo et celle de mon téléviseur.
° Mon frigo a pour id 86 ma télé 23 --> A remplacer par vos valeurs
° w_frigo et w_tele sont les noms des champs qui seront enregistrés dans la base de données.
Le reste n'est que concaténation et envoi vers la base via la fonction my_graph_sensor_multi créée précédemment.

IV - Après l'effort le réconfort :

http://<IP_DU_SYNO>/graphs/elec/graph.php?title=Consommations&suffix=W&feeds[w_frigo]=Frigo&feeds[w_tele]=Télé

!<IP_DU_SYNO> est à remplacer par l'adresse IP de votre synology!

Donnera :

graph