Un petit post pour rappeler l’existence du module FHEM EmonCMSlogger 1, qui permet de logger des indicateurs quelconques dans emoncms 2 que ce soit sur emoncms.org ou en auto-hébergement.
Installation
Le module ne fait pas partie du package FHEM standard (il n’est pas même dans les contribs), mais il y a un fil de discussion qui le concerne dans le forum FHEM 3. Il faut donc aller le chercher dans celui-ci (prendre la dernière version en fin du fil de discussion) ou sur mon github 4 et le copier dans /opt/fhem/FHEM .
Syntaxe
J’ai corrigé la syntaxe pour qu’elle supporte un auto-hébergement :
define <name> EmonCMSLog baseURL YOURAPIKEY regexp
L’expression régulière regexp doit correspondre à l’ensemble devicename:event
The regexp will be checked against the device name devicename:event or timestamp:devicename:event combination. The regexp must match the complete string, not just a part of it.
Exemple
Je fais remonter les indicateurs en provenance :
- de tous mes modules teleinfo : indicateurs BASE et P_avg_60s
- de toutes mes sondes Oregon : indicateurs temperature, humidity
Les événements comparés à l’expression régulière ont la forme timestamp nomDevice: typeIndicateur valeurIndicateur2013-11-28_20:17:05 teleinfo_maison BASE: 17574.725
2013-11-28_20:17:05 teleinfo_maison P_avg_60s: 885
On va donc définir la log emoncms de la manière suivante :
define EmonCMSLog_teleinfo EmonCMSLog http://mon-site-emoncms/directory/ ma-clef-en-ecriture .*:((.*BASE:)|(.*P_avg_60s:)|(.*temperature:)|(.*humidity:)).*
Debug
Il est possible de changer le niveau de debug pour identifier les problèmes potentiels dans la log globable
- niveau 1 : erreurs de type timeout, HTTP ou emoncms
- niveau 5 : donne le contenu des requêtes
attr EmonCMSLog_teleinfo verbose 1
La récompense
Références
- EmonCMS logger ↩
- emoncms, logiciel libre de visualisation des consommations d’énergie ↩
- topic du module dans le forum FHEM ↩
- Mes modules FHEM sur github ↩
Michael,
je n’utilise pas les jeenodes, mais mes propres modules maison avec une librairie modifiée donc je ne peux pas te dire pour tes jeenodes. En plus mes modules ne remontent pas vers EMONCMS via FHEM.
Dans l’exemple ci dessus, en fait c’est juste mes sondes Oregon qui remontent via RFXCOM+FHEM vers EMONCMS.
J’ai utilisé le NodeID de EMONCMS dans le script fhem afin que toutes mes temperature de pièces n’arrivent pas dans le même node (0 par défaut) et donc 1 numéro (nodeID)par sonde Oregon. Je ne sais pas si je suis très clair 😉
Pour cet usage, oui le script modifié node ID fonctionne.
Bonjour Charly86,
peux tu me dire quelle librairie tu utilise pour les nodes ?
je me traine un jeelink UNKNOWNCODE OK 48 254 6 6 39 87 11 158 3 qui contient id, temp, hum , bat et luminosité
as tu réussi pour la modif du nodeid ?
Merci
Olivier, si tu peux transmettre a Charly86, merci.
Merci Olivier pour 93_EmonCMSLog.pm, je n’ai pas encore essayé mais j’ai confiance 🙂
C’est transmis !
Pour 93_EmonCMSLog.pm je pensais le mettre sur github en intégrant les modifs de Charly86
Mais en l’état c’est utilisable (ça tourne chez moi sans problème depuis un an)
Bonjour,
çà marche nickel, merci pour la mise à disposition du fichier, j’ai fait quelques modifications pour ajouter aussi le nodeid de emoncms dans le define car je souhaitais publier dans différents node en fonction des data (et non pas le node 0 par defaut)
Cà fonctionne bien, mais en revanche j’ai un soucis avec la regexp sur plusieurs node car en fait je ne connais pas la chaine reçu par le module donc quoi chercher dans le regexp.
Exemple si je mets ceci (node 0) :
define EmonCMSLog_all EmonCMSLog http://emoncms/blah/ apikey 0 .*:((.*temperature:)|(.*humidity:)).*
dans emoncms apparait alors dans le node 0
salon.humidity 35
salon.temperature 21
cuisine.humidity 40
cuisine.temperature 20
Si j’essais ensuite avec 2 nodes différents et 2 regexp differentes pour tester
define EmonCMSLog_salon EmonCMSLog http://emoncms/blah/ apikey nodeidsalon .*:((.*salon\stemperature:)|(.*salon\shumidity:)).*
define EmonCMSLog_cuisine EmonCMSLog http://emoncms/blah/ apikey nodeidcuisine .*:((.*cuisine.temperature:)|(.*cuisine.humidity:)).*
je ne recois plus rien donc man regexp doit être mauvaise
y-a il un moyen de voir la chaine non modifiée envoyée au module emoncms.pm par fhem pour savoir quoi rechercher dans ma regexp ? j’ai bien regarder dans les log et le event monitor, mais rien n’y fait.
Pour voir les évènements qui matchent une regexp, le plus facile est de faire
telnet monServeur 7072
(va filtrer tous les évènements qui matchent maregexp)notice on maregexp
Par exemple dans ton cas :
notice on .*salon.*
pour voir la tête des évènementsPuis
notice on .*:((.*salon\stemperature:)|(.*salon\shumidity:)).*
pour voir si ça marche toujours !C’est le plus pénible avec fhem : trouver la bonne expression régulière …
Bonjour,
Article très interessant, j’aimerai bien essayer ce module mais je n’arrive pas à le telecharger sur le forum FHEM, y-aurait-il une autre source pour l’obtenir ?
Merci à vous.
Bonjour Charly, j’ai inséré un lien dans l’article. Merci de me tenir au courant!
Olivier