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 :
- Montage teleinfo pour Raspberry Pi / BeagleBone
Cet article m’a surtout aidé pour l’électronique, le raccordement au Raspberry. - Teleinfo Broadcast comptatible avec Emoncms
Chouette article, très complet ! Et j’aime quand je n’ai à faire que des copier/coller et que tout marche pareil.
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 :
- Baie 19″
- Compteur EDF et TGBT
- Raspberry et breadboard pour essai téléinfo
- Borne L1 et L2 du téléinfo
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.
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.
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.
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.
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 :
On déplace l’ordre de boot des kernel pour booter sur le kernet Xen.
# update-grub
Humm, avant tout, assurez vous d’avoir un processeur capable de virtualiser :
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 😉
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 :
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 :
(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:
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 :
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.
Sélectionnez la seconde ligne Install/Upgrade.
Laissez booter, souriez, ça avance !
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.
♫ Et ça continue encore et encore, c’est que le début d’accord d’accord ♫
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.
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 :
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.
Démarrage automatique de la VM avec le serveur Xen :
# cd /etc/xen/auto/
# ln -s /etc/xen/synocam.cfg .
Pour éteindre votre NAS :
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.