Monthly Archives: septembre 2014

Téléinfo et emoncms, rapide retour d’expérience

Un petit billet pour dire que j’ai commencer à superviser le compteur électrique EDF (téléinfo) avec emoncms.

J’ai suivi deux articles :

Deux petites difficultés:

  • Je n’avais pas désactivé la console série sur le Raspberry Pi, alors que c’est indiqué dans ici : Teleinfo – Préparation d’une Raspberry Pi.
  • Une fois mes données dans emoncms, je ne sais pas trop quoi en faire, sources, feeds, process, nodes, ça ne m’inspire pas trop pour l’instant, mais je me dépatouille.

Quelques photos de l’installation pour les essais :

Lorsque l’installation sera « validée », le téléinfo empruntera une paire en attente dans le boîtier DTI et le raspberry trouvera sa place dans la baie 19″, la partie photocoupleur sera dans un joli petit boitier.


Je ne connaissais pas du tout emoncms, je me suis laissé guider par les nombreux tuto qui existent.
Comme dit un peu plus haut, ma difficulté est de traiter les données reçues.

Emoncms sources

Sources sur Emoncms

 

Feeds emoncms

Feeds emoncms

 

Emoncms visu

La visu sur Emoncms

Si quelqu’un a des conseils à donner sur la façon de traiter les valeurs du téléinfo, je suis preneur…
Le script présenté par hallard.me a l’avantage de pouvoir alimenter emoncms et une table MySQL, ce qui va me permettre de tester d’autres solutions de graphs en parallèle d’emoncms.

Le script de hallard.me disponible sur github, permet en effet de remplir une table MySQL.
Pour ma part, ça représente une avantage important : ne maitrisant pas emoncms, une table MySQL me permet de maintenir une source brutte des données du téléinfo.

La table est constituée ainsi (CTRL+C / CTRL+V de hallard.de) :

CREATE TABLE IF NOT EXISTS `DbiTeleinfo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `DATE` datetime DEFAULT NULL,
  `ADCO` varchar(12) DEFAULT NULL,
  `OPTARIF` varchar(4) DEFAULT NULL,
  `ISOUSC` decimal(2,0) DEFAULT NULL,
  `BASE` decimal(9,0) DEFAULT NULL,
  `HCHC` decimal(9,0) DEFAULT NULL,
  `HCHP` decimal(9,0) DEFAULT NULL,
  `BBRHCJB` decimal(9,0) DEFAULT NULL,
  `BBRHPJB` decimal(9,0) DEFAULT NULL,
  `BBRHCJW` decimal(9,0) DEFAULT NULL,
  `BBRHPJW` decimal(9,0) DEFAULT NULL,
  `BBRHCJR` decimal(9,0) DEFAULT NULL,
  `BBRHPJR` decimal(9,0) DEFAULT NULL,
  `DEMAIN` varchar(4) DEFAULT NULL,
  `EJPHN` decimal(9,0) DEFAULT NULL,
  `EJPHPM` decimal(9,0) DEFAULT NULL,
  `PEJP` varchar(2) DEFAULT NULL,
  `PTEC` varchar(4) DEFAULT NULL,
  `IINST1` decimal(3,0) DEFAULT NULL,
  `IINST2` decimal(3,0) DEFAULT NULL,
  `IINST3` decimal(3,0) DEFAULT NULL,
  `IMAX1` decimal(3,0) DEFAULT NULL,
  `IMAX2` decimal(3,0) DEFAULT NULL,
  `IMAX3` decimal(3,0) DEFAULT NULL,
  `HHPHC` varchar(1) DEFAULT NULL,
  `PMAX` decimal(5,0) DEFAULT NULL,
  `PAPP` decimal(5,0) DEFAULT NULL,
  `ADPS` decimal(3,0) DEFAULT NULL,
  `MOTDETAT` varchar(6) DEFAULT NULL,
  `TENSION` decimal(3,0) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `SEARCH_INDEX` (`ADCO`,`DATE`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Idéale pour le script suivant :

https://github.com/BmdOnline/Teleinfo

Voici les données à modifier du fichier structure.date.php afin de correspond aux données soumises par le script de hallard.me :

    // Adapter les valeurs du tableau si le nom du champ est différent
    "table" => array (
        "DATE"     => "DATE",      // => généralement, vaut soit "DATE", soit "TIMESTAMP"
        "OPTARIF"  => "OPTARIF",   // option tarifaire souscrite
        "ISOUSC"   => "ISOUSC",    // intensité souscrite
        "BASE"     => "BASE",      // BASE
        "HP"       => "HCHP",      // HCHP
        "HC"       => "HCHC",      // HCHC
        "HPJB"     => "BBRHPJB",   // BBRHPJB
        "HPJW"     => "BBRHPJW",   // BBRHPJW
        "HPJR"     => "BBRHPJR",   // BBRHPJR
        "HCJB"     => "BBRHCJB",   // BBRHCJB
        "HCJW"     => "BBRHCJW",   // BBRHCJW
        "HCJR"     => "BBRHCJR",   // BBRHCJR
        "HN"       => "EJPHN",     // EJPN
        "HPM"      => "EJPHPM",    // EJPHPM
        "PTEC"     => "PTEC",      // période tarifaire en cours
        "DEMAIN"   => "DEMAIN",    // prévision du lendemain (formule Tempo)
        "IINST1"   => "IINST1",    // => généralement, vaut soit "IINST1" soit "INST1"
        "PAPP"     => "PAPP"       // puissance apparente
    )

Et voilà, j’ai certe deux outils pour presque la même chose :
EmonCMS, très complet et difficile à maitriser à mon gout, il me faudra du temps pour avoir un monitoring au top.
Teleinfo, simple, très facile à mettre en place, fait le boulot.

 

Teleinfo instantanne

Teleinfo instantanné

Teleinfo sur 24h

Teleinfo sur 24h

Teleinfo historique

Teleinfo historique


Coté tableau électrique, j’ai validé ma période de test et ai sorti le SFH620 de sa platine de tests :

Petite astuce, j’ai collé l’ensemble photocoupleur, bornier, résistance, au boitier du Raspberry en tailladant le plastique pour la colle prenne.

 

Posté dans emoncms, graphs, teleinfo, Web | 8 Commentaires

Virtualiser XPEnology avec Xen pour profiter de Surveillance Station

Dans le choix d’un serveur de vidéo-surveillance (NVR), j’ai longtemps cherché une solution opensource, le premier qui vient, serait ZoneMinder, mais mes tests m’ont permis de le trouver trop lourd, barbant, instable, pas user-friendly.
J’ai continué ma quête du NVR parfait, même dans les freeware et proprio pour un usage habitat. Rien à l’horizon…
Puis je suis tombé sur Surveillance Station disponible sur les NAS Synology, les vidéos Youtube m’ont vendu du rêve (1) (2)

Acheter un NAS Synology pour la vidéo-surveillance, si ça tourne bien, ok…
Mais les NAS « physique » ont des limites de caméras… C’est marqué en petit dans la caractéristique technique de chaque produit de Synology.
Le DS414j par exemple, supporte au maximum 8 caméras.

Documentation technique DS414j

Morceau choisi de la documentation technique DS414j

Je suppose que du nombre de baie découle la puissance de matériel et donc du nombre de caméras possible.
Je compte installer entre 5 et 8 caméras, donc il faut que je compte ~ 300 € TTC sans disque pour acheter le NAS suffisament performant.

XPEnology

Puis j’ai découvert XPEnology, Korben vous fait les présentations.

Etant donné que j’ai déjà un serveur debian pour usage multimédias et domotique, autant virtualiser XPenology sur ce même serveur !

Excusez le manque d’analyse et d’informations de XPenology, DSM, et autre outils relatfis au NAS. J’ai prodé ça le même jour où je l’ai découvert, on peut parler d’un coup de foudre.

Installer Xen sur Debian Wheezy

Les how-to sont nombreux sur la toile, parfois trop complet, alors je vais droit au but :

# apt-get install xen-tools xen-system-amd64 xen-hypervisor-4.1-amd64 bridge-utils

On déplace l’ordre de boot des kernel pour booter sur le kernet Xen.

# mv /etc/grub.d/10_linux /etc/grub.d/50_linux
# update-grub

Humm, avant tout, assurez vous d’avoir un processeur capable de virtualiser :

# egrep 'vmx|svn' /proc/cpuinfo

Si vous avez  au moins une ligne qui ressort avec les flags, c’est que votre CPU supporte la virtualisation.
Cependant, si vous avez pris de l’avance et exécutez cette commande en étant déjà sur un kernel Xen, le résultat attendu ne s’affichera pas.

Après un reboot, vous devriez vous retrouver sur un kernel Xen. Pour s’en assurer, faites appel à l’un de ses services 😉

# xm li
Name ID Mem VCPUs State Time(s)
Domain-0 0 2904 4 r----- 67.2

Point important, c’est bien beau d’avoir un processeur pouvant virtualiser, mais assurez vous que l’option est active dans le BIOS, pour cela executez cette commande :

# cat /sys/hypervisor/properties/capabilities
xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64

Si la ligne ne fait pas référence à du HVM malgré que vous possédiez un procésseur avec technologie VT-x/AMD-V (flag vmx ou svn), c’est que l’option VT-x/AMD-V est désactivée dans le BIOS (je me suis fait avoir…).
Nous allons faire du HVM (Hardware Virtual Machine), et non de la paravirtualisation, plus de détails sur wikipedia.

Faire de la virtualisation complète, ça permet de ne pas se préoccuper de l’OS sur lequelle XPenology est ‘tiré’, ça a  l’air d’être du FreeBSD, bref je m’en moque.

Xen est installé, un peu de paramétrage, je vous affiche brut ma config :

# egrep -v '^(#|$)' /etc/xen/xend-config.sxp
(network-script network-bridge)
(vif-script vif-bridge)
(dom0-min-mem 196)
(enable-dom0-ballooning yes)
(total_available_memory 0)
(dom0-cpus 0)
(vnc-listen '0.0.0.0')
(vncpasswd '')
(keymap 'fr')

Le fichier de configuration tel quel me permet de fonctionner en mode bridge, et de la possibilité de me connecter en VNC à la machine virtuelle.
De nombreuses possibilités avec Xen, j’adore cet outil, comme dit au début, je vais droit au but, mais sachez qu’il possible de faire énormement avec Xen.

Viritualisation de XPenology

Voila le vif du sujet !
Du peu que j’ai regardé au sujet de XPenology, c’est qu’il s’installe sur une petite partie d’un disque du NAS, pour ma part, pour plus de souplesse, je préfère dédié un disque au fonctionnement de XPenology. Je commence par lui créer un disque de 8Go, au format fichier:

# dd if=/dev/zero of=/srv/xpenology.img bs=1 count=1 seek=8G

Pourquoi 8Go ? Parce que j’ai lu sur xpenology.com/forum qu’il fallait au minium 5Go. Certains parlent de 100Go.
J’admet ne pas avoir tout suivi sur l’emplacement du system d’XPenoloy, où est-ce qu’il se loge, la place qu’il prend, comment il gère le changement de disque.

Autrement, je dédie un disque physique au XPenology.
Dans mon cas /dev/sdd, un disque de 2To.
Cependant, j’ai constaté que je devais partitionner mon disque pour que DSM puisse créer un volume.
J’ai donc crée une partition primaire de 2To -> /dev/sdd1, non formatée, DSM s’en chargera.

Donc 2 supports :
– 1 disque image pour le système.
– 1 disque (ou partition il faudrait dire) de données pour les enregistrements, etc…

Il faut télécharger et mettre sur le serveur, l’image de boot de XPenology, que l’on trouve ici:
http://www.xpenology.nl/boot-images/
→ Gnoboot-10.5 DSM 5.0-4458 X64
Ou bien :
→ Nanoboot-5.0.3.2 DSM 5.0-45XX X64

Gnoboot :
Il a la réputation d’être stable et performant surtout sous environnement virtualisé.
Aucune mise à jour n’a eu lieu depuis longtemps : Aïe !
Les mises à jour de synology se font avec des pincettes, tant que Gnoboot n’évolue pas, peu de possibilités d’upgrader la version 4558.

Nanoboot :
C’est suivi et recommandé par la communauté.
Normalement performant, mais peu s’améliorer ou se dégrader selon la release utilisée.
Les mises à jour de synology se font généralement sans soucis, attendre quelques jours après une nouvelle release pour voir si un fix/problème fait son apparition.

Je stock l’iso dans /root/

Pour créer une machine virtuelle Xen, il faut crée un fichier .cfg
Ma machine virtuelle s’appelle synocam, mon fichier est donc /etc/xen/synocam.cfg et il contient ceci :

Dans le cas d’utilisation de GnoBoot :

kernel = '/usr/lib/xen-4.1/boot/hvmloader'
builder = 'hvm'
memory = '1024'
device_model='/usr/lib/xen-4.1/bin/qemu-dm'
# Disks
disk = [ 'file:/srv/xpenology.img,hda,w','phy:/dev/sdd1,hdb,w','file:/root/gnoboot_105_xpenology_5.0-4458_bootloader_X64_by_Poechi.iso,hdc:cdrom,r' ]
# Hostname
name = 'synocam'
# Networking
vif = [ 'mac=00:11:11:76:75:74,bridge=eth0' ]
# Behaviour
boot='dc'
# VNC
vnc=1
vncviewer=1
vncpasswd=''
sdl=0
usbdevice='tablet'
# Misc
localtime=1
# On fail
on_poweroff='destroy'
on_reboot='restart'
on_crash='restart'

Dans le cas d’une utilisation de NanoBoot, la configuration du domU change un peu :

kernel = '/usr/lib/xen-4.1/boot/hvmloader'
builder = 'hvm'
memory = '1024'
device_model='/usr/lib/xen-4.1/bin/qemu-dm'
vcpu=2
# Disks
disk = [ 'file:/srv/xpenology.img,hda,w','phy:/dev/sdd1,hdb,w','file:/root/NB_x64_5032_DSM_50-4528_Xpenology_nl.iso,hdc:cdrom,r' ]
# Hostname
name = 'synocam'
# Networking
vif = [ 'model=e1000,bridge=xenbr0,mac=00:11:11:76:75:74']
# Behaviour
boot='dc'
# VNC
vnc=1
vncviewer=1
vncpasswd=''
sdl=0
usbdevice='tablet'
# Misc
acpi = '1'
apic = '1'
localtime=1
viridian=1
xen_platform_pci=1
# On fail
on_poweroff='destroy'
on_reboot='restart'
on_crash='restart'

La conf est sortie d’un tiroir, d’un serveur Xen en prod virtualisant du Windows 2008 R2.
L’adresse MAC est modifiée pour simuler un NAS Synology sur le réseau afin d’être détecté par l’assistant Synology.
Le driver virtuel e1000 est utilisé par nanoboot, car le driver par defaut realtek r8169 n’est pas compilé dans nanoboot.
Elle doit commencer par 00:11:11:    . Le reste est inventé.
file:/srv/xpenology.img,hda,w correspond à mon disque image de 8Go, en tant que disque primaire, accès en écriture.
phy:/dev/sdd1,hdb,w correspond à mon disque/partition de 2To, en tant que disque secondaire, accès en écriture.
file:/root/gnoboot_105_xpenology_5.0-4458_bootloader_X64_by_Poechi.iso,hdc:cdrom,r correspond au bootloader de Xpenology, simulé dans un lecteur CD, accès en lecteur seul.
boot=’dc’ permet à la machine virtuelle de booter sur le CD.
memory = ‘1024’ peut être augmenté.
Le nombre de CPU dédié à cette machine est de 1, le nombre peut être adapté avec l’option vcpus=2 pour 2 CPUs dédiés par exemple.
Pour le disque dédié également, vous aurez la possibilité de jongler entre disques physiques, raid soft, raid hard, LVM, laisser DSM gérer ou ajoutant simplement des disques, ou gérer vous en amont les disques que vous incluez dans la machine virtuelle. Voir même le tromper en montant un partage d’une autre machine. J’apprécie cette souplesse !

Voila pour l’essentiel de la config de la machine virtuelle.

Installation de XPenology

A  ce stade, la configuration de Xen et le fichier de configuration de la machine virtuelle devraient permettre de démarrer celle-ci sans erreur.
Si quelque chose manque, Xen vous le fera très vite savoir, c’est tout bon ou rien. Préparez votre client VNC, ça va aller très vite.

Pour démarrer la VM :

# xm create synocam.cfg

Puis ouvrez vite votre client VNC pour vous connecter au serveur, en indiquant le nom où l’ip du serveur Xen.
Vous devriez voir assez rapidement le menu de selection du bootloader GnoBoot.

Menu grub de Gnoboot

Menu grub de Gnoboot

Sélectionnez la seconde ligne Install/Upgrade.
Laissez booter, souriez, ça avance !

Boot de GnoBoot

Boot de GnoBoot

Lorsque le boot est installé, lancez sur votre PC l’utilitaire Synology Assistant.
Il devrait voir votre faux NAS, faite un clic droit > Installer.
Un wizzard vous guide dans l’installation et vous demande un fichier .pat.
Vous pourrez télécharger le  fichier .pat sur le support de Synology :
http://download.synology.com/download/DSM/5.0/4458/
URL et fichier PAT à adapter selon la version que vous cherchez à installer, en rapport avec GnoBoot.
Dans notre cas DSM 5 version 4458 pour le NAS DS3612xs.

Installation en cours par Synology Assistant

Installation en cours par Synology Assistant

♫ Et ça continue encore et encore, c’est que le début d’accord d’accord  ♫

Installation terminez ! Enjoy !

Installation terminez ! Enjoy !

Connectez-vous dés à présent en HTTP à votre nouveau NAS entièrement virtualisé sous XEN.
DSM vous aura crée un volume sur votre petit disque de 8Go, vous pourrez supprimer ce volume pour n’utiliser que le disque dédié.
Gérez vos volumes, changez votre mot de passe, le nom de machine, installez vos paquets : Surveillance Station.

Capture d'écran de DSM sous Xen

Capture d’écran de DSM sous Xen

Pour terminer

J’utilise le SNMP sur DSM pour les graphs munin, sur DSM : Panneau de configuration > Terminal & SNMP; SNMP v2 avec communauté « public« .
Un petit retour sur notre Debian.
Ajout d’un node munin :

# munin-node-configure --shell -snmp synocam

Executez ce que vous avez envie de grapher.
synocam étant le hostname de mon NAS Synology sur mon réseau, à adapter.

Vous pourrez voir l’utilisation des ressources de votre XEN grâce à la commande xm top.

xm top pour voir l'utilisation des ressources

« xm top » pour voir l’utilisation des ressources

Démarrage automatique de la VM avec le serveur Xen :

# mkdir /etc/xen/auto/
# cd /etc/xen/auto/
# ln -s /etc/xen/synocam.cfg .

Pour éteindre votre NAS :

# xm shutdown synocam

Et voila, une très bonne solution à bon gout pour profiter de Surveillance Station.
Je n’ai pas lancé de benchmark sur le bouzin, mon benchmark va surtout se faire au fur et à mesure des ajouts de caméras.

Posté dans NVR, Sysadmin, Web, Xen | 8 Commentaires