Alimentation d’emoncms par FHEM

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 valeurIndicateur
2013-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

 

  1. EmonCMS logger
  2. emoncms, logiciel libre de visualisation des consommations d’énergie
  3. topic du module dans le forum FHEM
  4. Mes modules FHEM sur github

7 commentaires sur “Alimentation d’emoncms par FHEM”

  1. 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.

  2. 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 🙂

  3. 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.

    1. Pour voir les évènements qui matchent une regexp, le plus facile est de faire
      telnet monServeur 7072
      notice on maregexp
      (va filtrer tous les évènements qui matchent maregexp)
      Par exemple dans ton cas :
      notice on .*salon.* pour voir la tête des évènements
      Puis 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 …

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.