Page 2 sur 2

Re: Export données vers emoncms.org

Publié : 07 juin 2017, 22:43
par papoo
bizarre
la ligne 91 de ton script c'est

Code : Tout sélectionner

if time.min % 2 == 0 then  -- export des données toutes les 2 minutes
rien à voir avec la fonction split pour moi
dans tes logs d'erreur on dirait qu'il ne supporte pas les commentaires entre --[[ ]]--
pourrais tu commenter chaque ligne (les 6 premieres) avec -- et supprimer --[[ et ]]-- ?

Re: Export données vers emoncms.org

Publié : 07 juin 2017, 22:57
par astrometeo974
papoo a écrit :bizarre
la ligne 91 de ton script c'est

Code : Tout sélectionner

if time.min % 2 == 0 then  -- export des données toutes les 2 minutes
rien à voir avec la fonction split pour moi
dans tes logs d'erreur on dirait qu'il ne supporte pas les commentaires entre --[[ ]]--
pourrais tu commenter chaque ligne (les 6 premieres) avec -- et supprimer --[[ et ]]-- ?

J'ai fais les modifs et je te renvoie le log d'erreur

Code : Tout sélectionner

 2017-06-07 22:54:00.243 LUA: 26.86
2017-06-07 22:54:00.244 EventSystem: Script event triggered: CompteurBruleur
2017-06-07 22:54:00.252 EventSystem: Script event triggered: Essai Fioul
2017-06-07 22:54:00.259 LUA: =========== export emoncms (v2.01) ===========
2017-06-07 22:54:00.259 LUA: --- --- --- Export vers emoncms : 22:54
2017-06-07 22:54:00.259 LUA: --- --- --- Temp WS2300 = 17.7
2017-06-07 22:54:00.259 LUA: --- --- --- canal = nil
2017-06-07 22:54:00.259 LUA: --- --- --- Sonde Solaire = 0
2017-06-07 22:54:00.259 LUA: --- --- --- canal = nil
2017-06-07 22:54:00.260 LUA: --- --- --- LaCrosseV2 = 17.7;60;1
2017-06-07 22:54:00.260 LUA: --- --- --- canal = 2
2017-06-07 22:54:00.260 LUA: --- --- --- valeurs multiples dans LaCrosseV2 = 17.7;60;1
2017-06-07 22:54:00.260 LUA: --- --- --- Nb de point virgule = 2
2017-06-07 22:54:00.260 LUA: --- --- --- Otherdevices = 17.7;60;1
2017-06-07 22:54:00.260 Error: EventSystem: in Export_Graphiques_2: [string "--script_time_export_emoncms.lua..."]:105: attempt to call global 'split' (a nil value) 
Pour aujourd’hui c'est bon demain sera un autre jour.

Grand merci. !!!!!!

Re: Export données vers emoncms.org

Publié : 07 juin 2017, 23:08
par papoo
méa culpa j'avais oublié une fonction désolé
tu avais pourtant tenté de me mettre sur la voie

Re: Export données vers emoncms.org

Publié : 08 juin 2017, 11:16
par astrometeo974
papoo a écrit :méa culpa j'avais oublié une fonction désolé
tu avais pourtant tenté de me mettre sur la voie

Code : Tout sélectionner

--[[script_time_export_emoncms.lua
auteur : papoo
 
maj : 23/04/2017
date : 18/05/2016
Principe : 
exporter les données de compteurs, Températures, etc.. sur le site https://emoncms.org/
Le script est lu toutes les minutes mais n'exporte les données que toutes les 2 minutes
http://easydomoticz.com/forum/viewtopic.php?f=17&t=2017
]]--
 
--------------------------------------------
------------ Variables à éditer ------------
-------------------------------------------- 
local nom_script = "export emoncms"
local version = "2.01"
local debugging = true     -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local url_emoncms = 'http://emoncms.org/api/' 
local api_emoncms = 'api_emoncms' -- créer une variable de type chaîne contenant votre code API Write KEY emoncms de 32 caractères
 
local les_devices = {}; -- pas plus de 11 devices
-- si vous souhaitez remonter les valeurs d'un device qui en comporte plusieurs (ex: température et hygrometrie extérieure) 
--renseigner le nom de la valeur à remonter (à partir de la deuxieme valeur) ainsi que le numero d'ordre dans canal (voir exemples ci dessous les_devices[9] et les_devices[17] )
les_devices[1] = {device="Temp WS2300", nom="", canal=""} -- 1er compteur 
les_devices[2] = {device="Sonde Solaire", nom="", canal=""} -- 2eme compteur 
les_devices[3] = {device="LaCrosseV2", nom="Humidity", canal="2"}-- 3eme compteur
les_devices[4] = {device="OWL CM180", nom="", canal=""}-- 4eme compteur
--les_devices[5] = {device="Compteur Lumières", nom="", canal=""}
--les_devices[6] = {device="Compteur Technique", nom="", canal=""}
--les_devices[7] = {device="DJU", nom="", canal=""}
--les_devices[8] = {device="Temperature exterieure", nom="", canal=""}
--les_devices[8] = {device="Temperature exterieure", nom="Humidité", canal=2}
--les_devices[9] = {device="Temperature Salon", nom="", canal=""}
--les_devices[10] = {device="Couloir 1er étage", nom="", canal=""}
--les_devices[11] = {device="Point de givrage", nom="", canal=""}
--les_devices[12] = {device="Point de rosée", nom="", canal=""}
--les_devices[13] = {device="Temp départ chauffage", nom="", canal=""}
--les_devices[14] = {device="Temp retour chauffage", nom="", canal=""}
--les_devices[16] = {device="Temp Parents", nom="", canal=""}
--les_devices[17] = {device="anémometre", nom="direction", canal=2}
local fields =""
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
 
--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------
commandArray = {}
function voir_les_logs (s)
    if (debugging) then 
        print ("<font color='#f3031d'>".. s .."</font>");
    end
end   
function sans_accent(str)
    if (str) then
   str = string.gsub (str,"Ç", "C")
   str = string.gsub (str,"ç", "c")
    str = string.gsub (str,"[-èéêë']+", "e")
   str = string.gsub (str,"[-ÈÉÊË']+", "E")
    str = string.gsub (str,"[-àáâãäå']+", "a")
    str = string.gsub (str,"[-@ÀÁÂÃÄÅ']+", "A")
    str = string.gsub (str,"[-ìíîï']+", "i")
    str = string.gsub (str,"[-ÌÍÎÏ']+", "I")
    str = string.gsub (str,"[-ðòóôõö']+", "o")
    str = string.gsub (str,"[-ÒÓÔÕÖ']+", "O")
    str = string.gsub (str,"[-ùúûü']+", "u")
    str = string.gsub (str,"[-ÙÚÛÜ']+", "U")
    str = string.gsub (str,"[-ýÿ']+", "y")
    str = string.gsub (str,"Ý", "Y")
     end
    return (str)
end
 
 function split(inputstr, sep)
        if sep == nil then
                sep = "%s"
        end
        local t={} ; i=1
        for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
                t[i] = str
                i = i + 1
        end
        return t
end -- usage : valeurs = split(variable,";")
 
 
function urlencode(str)
   if (str) then
   str = string.gsub (str, "\n", "\r\n")
   str = string.gsub (str, "([^%w ])",
   function (c) return string.format ("%%%02X", string.byte(c)) end)
   str = string.gsub (str, " ", "+")
   end
   return str
end 
 
--------------------------------------------
-------------- Fin Fonctions ---------------
--------------------------------------------
 
commandArray = {}
time=os.date("*t")
if time.min % 2 == 0 then  -- export des données toutes les 2 minutes
voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
voir_les_logs("--- --- --- Export vers emoncms  : "..time.hour.. ":" ..time.min,debugging)
local API_key = uservariables[api_emoncms] 
    for i,d in ipairs(les_devices) do
    v=otherdevices[d.device]
   c=tonumber(d.canal)
         voir_les_logs("--- --- --- ".. sans_accent(d.device) .." = "..(v or "nil"),debugging)
         voir_les_logs("--- --- --- canal = "..(c or "nil"),debugging)
         if v~= nil then v,nbCommas=string.gsub(v,";",";") end-- verification de la presence d'un ou plusieurs point virgule => valeurs multiples
      if nbCommas > 1 and c ~= nil then
         voir_les_logs("--- --- --- valeurs multiples dans ".. sans_accent(d.device) .." = ".. v,debugging)
         voir_les_logs("--- --- ---  Nb de point virgule = "..(nbCommas or "nil"),debugging) 
         local valeurs = split(v,";")
         voir_les_logs("--- --- ---  valeur 1 = "..(valeurs[1] or "nil"),debugging)
         voir_les_logs("--- --- ---  valeur 2 = "..(valeurs[2] or "nil"),debugging)
         voir_les_logs("--- --- ---  valeur 3 = "..(valeurs[3] or "nil"),debugging)
         voir_les_logs("--- --- ---  valeur 4 = "..(valeurs[4] or "nil"),debugging)
         
      fields = fields .. '{'.. d.nom .. ':' .. valeurs[c] .. '},'
      else 
      fields = fields .. '{'.. d.device .. ':' .. v .. '},'
      end
   end
      fields = string.gsub (fields, ",$", "") -- suppression de la derniere virgule
      fields = urlencode(sans_accent(fields)) -- suppression des caractères accentués
      voir_les_logs("--- --- --- ".. url_emoncms ..'post?apikey=' .. API_key .. '&json=' .. fields ,debugging)
   commandArray[1]={['OpenURL']=url_emoncms ..'post?apikey=' .. API_key .. '&json=' .. fields }
   os.execute('curl -m5 "'..url_emoncms ..'post?apikey=' .. API_key .. '&json=' .. fields)
      voir_les_logs("========= Fin ".. nom_script .." (v".. version ..") =========",debugging)
end -- if time
-- ============================================================================
return commandArray 

Ok ça roule impec je vais pouvoir basculer toutes mes acquisitions.

Code : Tout sélectionner

 2017-06-08 11:10:00.211 LUA: =========== export emoncms (v2.01) ===========
2017-06-08 11:10:00.211 LUA: --- --- --- Export vers emoncms : 11:10
2017-06-08 11:10:00.211 LUA: --- --- --- Temp WS2300 = 24.4
2017-06-08 11:10:00.211 LUA: --- --- --- canal = nil
2017-06-08 11:10:00.211 LUA: --- --- --- Sonde Solaire = 781
2017-06-08 11:10:00.211 LUA: --- --- --- canal = nil
2017-06-08 11:10:00.211 LUA: --- --- --- LaCrosseV2 = 24.4;51;1
2017-06-08 11:10:00.211 LUA: --- --- --- canal = 2
2017-06-08 11:10:00.212 LUA: --- --- --- valeurs multiples dans LaCrosseV2 = 24.4;51;1
2017-06-08 11:10:00.212 LUA: --- --- --- Nb de point virgule = 2
2017-06-08 11:10:00.212 LUA: --- --- --- valeur 1 = 24.4
2017-06-08 11:10:00.212 LUA: --- --- --- valeur 2 = 51
2017-06-08 11:10:00.212 LUA: --- --- --- valeur 3 = 1
2017-06-08 11:10:00.212 LUA: --- --- --- valeur 4 = nil
2017-06-08 11:10:00.212 LUA: --- --- --- OWL CM180 = 1577.000;2929829.000
2017-06-08 11:10:00.212 LUA: --- --- --- canal = nil
2017-06-08 11:10:00.213 LUA: --- --- --- http://emoncms.org/api/post?apikey=xxxxxxxxxxxxxxxxxxxxxx&json=%7BTemp+WS2300%3A24%2E4%7D%2C%7BSonde+Solaire%3A781%7D%2C%7BHumidity%3A51%7D%2C%7BOWL+CM180%3A1577%2E000%3B2929829%2E000%7D
2017-06-08 11:10:00.221 LUA: ========= Fin export emoncms (v2.01) ========= 
Et Merci bien !!!!!!

astrometeo974

Export données vers emoncms.org valeurs négatives

Publié : 01 mars 2018, 21:28
par astrometeo974
Bonjour à nouveau.

Voilà 9 mois que j'exporte vers EMONCMS sans aucun problème, mais
la vague de froid a fait passer ma sonde de température à des valeurs négatives,
et là problème, le graphique de celle-ci bloque à 0. Je pense que l'export ne
prend pas en compte le signe - .

Mes bases en lua étant "basiques" je suis preneur de toute aide.

Cordialement

Re: Export données vers emoncms.org

Publié : 06 mars 2018, 21:50
par papoo
je n'ai pas eu le temps de tester avec des températures négatives, mais dès que j'aurai l’opportunité d'enregistrer ce type de valeur, je m'y mets

Re: Export données vers emoncms.org

Publié : 11 mars 2018, 22:50
par papoo
Le script prend maintenant en compte les températures négatives
https://github.com/papo-o/domoticz_scri ... moncms.lua