Community Forum
    • Blog
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. seb82
    S
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 4
    • Groups 0

    seb82

    @seb82

    281
    Profile views
    4
    Posts
    0
    Followers
    0
    Following
    Joined
    Last Online

    seb82 Unfollow Follow

    Latest posts made by seb82

    • RE: Problème Teleinfo sur Jeedom avec montage "classique

      Piste 1, la config n'est pas bonne. Comme indiqué ici, le plugin n'accepte plus les requêtes en GET. Il faut utiliser le script GWTeleinfo.php comme intermédiaire. Et du coup dans URL il faudra mettre /GWTeleinfo.php

      Piste 2, oui ça paraît très long. Pas moyen de tester plus proche ? Et puis ça paraît très bizarre de mettre du 1.5mm² pour de la téléinformation. T'es sur quelles bornes du compteur électrique ? Certain de ne pas être sur le contact HP/HC ?
      Une fois validé le fonctionnement, un câble blindé avec paire torsadé pourrait aider. Tu peux utiliser un câble ethernet, c'est pas très cher.

      Piste 3, t'es parti sur quel schéma ? Celui sur cette page ? A priori je dirais que c'est bon oui. Au pire tu le retournes pour essayer. Par contre, t'as un compteur Linky ou pas ? Parce qu'avec le Linky, certains ont été obligés de changer une résistance, en abaissant la valeur de celle de 4,7k.

      posted in Téléinfo
      S
      seb82
    • RE: Compteur LINKY et TIC

      Oui c'est possible, je n'ai rien eu à changer de mon côté sur un montage maison type Wifinfo. Mais certains ont été obligés de d'abaisser une résistance, possible que ce soit la même chose pour Remora. C'est évoqué dans des posts sur ce forum ou sur le forum Jeedom quelques pages plus haut.

      posted in Remora
      S
      seb82
    • RE: Ré-écriture de Wifinfo pour traiter le mode standard du Linky

      @Charles très content d'apprendre que vous travaillez sur une nouvelle version.
      Pour la partie Jeedom, serait-il possible de prendre en compte la nouvelle version du plugin Teleinfo qui attend les données au format json ?
      @mjeanne a fait un script de contournement que l'on peut trouver sur le forum de jeedom. Cela fonctionne très bien, mais tant qu'à faire ce serait encore mieux que ce soit géré directement.

      posted in WifInfo
      S
      seb82
    • RE: Ajout protocole Domoticz

      Bonjour,

      Je me suis inspiré du script précédent (merci pour la contribution !) et je l'ai adapté ainsi :

      • Utilisation directement depuis Domoticz (pas besoin de tâche cron) : Setup > More Options > Events > LUA au lieu de Blockly > Time
      • Mise à jour en utilisant les fonctions lua de Domoticz sans passer par json (ça évite de gérer les utilisateurs)
      • N'ayant pas la valeur de PAPP remontée, je fais un calcul de puissance basé sur la comparaison entre deux valeurs d'index total.
      • J'utilise trois objets "dummy" : Text sensor, Electricity (instant and counter) nommé "Compteur_EDF", Ampere (1 phase)

      Il y a un exemple intéressant ici que j'ai troué un peu (trop) vers la fin : https://www.domoticz.com/wiki/Capturing_Energy_Usage_with_Lua_Scripts

      Voilà, je vous livre le script ci-dessous si ça peut aider quelqu'un. A noter que c'est pour un compteur tempo. A adapter selon votre configuration et vos besoins.

      ---- Script pour récupérer les informations sur un Wifinfo. A mettre dans Domoticz dans "Events" en tant que script LUA / Time
      
      ----------------------------------------------------------------------------------------------------------
      -- Paramètres
      ----------------------------------------------------------------------------------------------------------
      debug = "yes"   -- Turn debugging on ("yes") or off ("no")
      
      frequence = 2 -- toutes les x minutes
      
      -- adresse du fichier JSON de Wifinfo
          local wifinfoURL = "http://192.168.1.210:80/json"
      
      -- index des dispositifs (colonne IDX de domoticz)
          -- Text sensor
          device1 = "Tarif_EDF"
          local colorIdx = otherdevices_idx[device1]
          -- Electricity (instant and counter)
          device2 = "Compteur_EDF"
          local compteurIdx = otherdevices_idx[device2]
          -- Ampere (1 phase)
          device3 = "Intensité_EDF"
          local intensiteIdx = otherdevices_idx[device3]
      
      if debug=="yes" then
          print(device1 .. " : idx " .. colorIdx)
          print(device2 .. " : idx " .. compteurIdx)
          print(device3 .. " : idx " .. intensiteIdx)
      end
      
          -- Domoticz (mise à jour de Domoticz par json, non utilisé)
          --local domoURL = "http://127.0.0.1:8080/json.htm?"
          --local urlParams = "type=command&param=udevice&idx="
      
      ----------------------------------------------------------------------------------------------------------
      -- Fonctions
      ----------------------------------------------------------------------------------------------------------
      
      -- arrondi
      function round2(num, numDecimalPlaces)
        return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num))
      end
      
      -- écart de temps
      function timedifference (s)
          year = string.sub(s, 1, 4)
          month = string.sub(s, 6, 7)
          day = string.sub(s, 9, 10)
          hour = string.sub(s, 12, 13)
          minutes = string.sub(s, 15, 16)
          seconds = string.sub(s, 18, 19)
          t1 = os.time()
          print("t1 = " .. t1)
          t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
          print("t2 = " .. t2)
          difference = os.difftime (t1, t2)
          return difference
      end
      
      ----------------------------------------------------------------------------------------------------------
      -- CommandArray
      ----------------------------------------------------------------------------------------------------------
       
      commandArray = {}
      
      if ( ( os.time() / 60 ) % frequence ) == 0 then
      
      -- inclure les bibliothèques Lua
          json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
          --   json = (loadfile "D:\\Domoticz\\scripts\\lua\\json.lua")()  -- For Windows
      
      -- récupération des données json
          local config=assert(io.popen('/usr/bin/curl -s ' .. wifinfoURL))
          local blocjson = config:read('*all')
          config:close()
      
      if debug=="yes" then
          print ("Fichier JSON : " .. blocjson)
      end
      
      -- décodage des données
          local jsonValeur = json:decode(blocjson)
      
      -- affectation dans des variables 
          local papp = jsonValeur.PAPP
          local iinst = jsonValeur.IINST
          local coulJ = jsonValeur.PTEC
          local coulD = jsonValeur.DEMAIN
          local BBRHCJB = jsonValeur.BBRHCJB
          local BBRHPJB = jsonValeur.BBRHPJB
          local BBRHCJW = jsonValeur.BBRHCJW
          local BBRHPJW = jsonValeur.BBRHPJW
          local BBRHCJR = jsonValeur.BBRHCJR
          local BBRHPJR = jsonValeur.BBRHPJR
          local CPlein = BBRHPJB + BBRHPJW + BBRHPJR
          local CCreux = BBRHCJB + BBRHCJW + BBRHCJR
          local CTotal = CPlein + CCreux
       
      -- un peu de modification de texte pour faciliter la lecture
          coulJ = string.gsub(coulJ, "HPJB", "BLEU HP");
          coulJ = string.gsub(coulJ, "HCJB", "BLEU HC");
          coulJ = string.gsub(coulJ, "HPJW", "BLANC HP");
          coulJ = string.gsub(coulJ, "HCJW", "BLANC HC");
          coulJ = string.gsub(coulJ, "HPJR", "! ROUGE ! HP");
          coulJ = string.gsub(coulJ, "HCJR", "! ROUGE ! HC");
      
      -- obsolète - utilisation de deux variables utilisateur pour calculer les écarts et compenser l'absence de variable papp de certains compteurs
          --local CTotal_old = uservariables["Index_temp"] -- on récupère l'index stocké dans la variable utilisateur Index_temp
          --local time_old = uservariables["Time_temp"] -- on récupère l'heure stockée dans la variable utilisateur Time_temp
          --local time_now = os.time()
          --local ecart_index = CTotal - CTotal_old
          --local ecart_sec = time_now - time_old
          --commandArray['Variable:Index_temp']= tostring(CTotal) -- on met à jour la variable utilisateur avec le nouvel index
          --commandArray['Variable:Time_temp']= tostring(time_now) -- on met à jour la variable utilisateur avec la nouvelle heure
          
      -- on calcule l'écart de temps et d'index pour compenser l'absence de variable papp de certains compteurs
          puissance_old, CTotal_old = string.match(otherdevices_svalues[device2], "(%d+%.*%d*);(%d+%.*%d*)") -- on récupère les valeurs stockées - inspiré de https://www.domoticz.com/wiki/Capturing_Energy_Usage_with_Lua_Scripts
          puissance_old = tonumber(puissance_old)
          CTotal_old = tonumber(CTotal_old)
          local ecart_sec = timedifference(otherdevices_lastupdate[device2])
          local ecart_index = CTotal - CTotal_old
      
      -- si PAPP n'est pas disponible, on calcule avec les écarts
          if (papp == nil)  then
              -- obsolète - puissance = iinst * 230 -- pas bien précis
              puissance = ecart_index / ecart_sec * 3600
          else
              puissance = papp * 0.9 -- en prenant un facteur de puissance à 0.9
          end
      
          puissance = round2(puissance,0)
      
      if debug=="yes" then
          print("Index total (nouveau): " .. CTotal .. " Wh")
          print("Index total (ancien): " .. CTotal_old .. " Wh")
          print("Ecart index : " .. ecart_index .. " Wh")
          print("Ecart de temps : " .. ecart_sec .. " s")
          print ("Puissance : " .. puissance .. " W")
      end
      
      -- construction des paramètres
          -- voir https://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s pour la syntaxe de nvalue|svalue
          local param1 = colorIdx ..'|0|' .. coulJ .. ' / Demain : ' .. coulD
          local param2 = compteurIdx ..'|0|' .. puissance .. ';' .. CTotal
          local param3 = intensiteIdx ..'|0|' .. iinst
      
      -- construction des url (mise à jour de Domoticz par json, non utilisé)
          --url1 =  domoURL .. urlParams .. teleinfoIdx .. '&nvalue=0&svalue=' .. CPlein .. ';' .. CCreux .. ';0;0;' .. papp .. ';0;'
          --url2 =  domoURL .. urlParams .. colorIdx .. '&nvalue=0&svalue=' .. coulJ .. '%20%2F%20Demain%20' .. coulD
      
      if debug=="yes" then
          print("Paramètre 1 : " .. param1)
          print("Paramètre 2 : " .. param2)
          print("Paramètre 3 : " .. param3)
      end
      
      -- mise à jour des objets
          -- commandArray['UpdateDevice']='idx|nValue|sValue' -- for updating Dummy devices e.g. '96|0|Hello World'
          -- http://www.domoticz.com/wiki/LUA_commands
          table.insert (commandArray, { ['UpdateDevice'] = param1 } )
          table.insert (commandArray, { ['UpdateDevice'] = param2 } )
          table.insert (commandArray, { ['UpdateDevice'] = param3 } )
      
      -- appel successif des url  (mise à jour de Domoticz par json, non utilisé)
          --local doIt=assert(io.popen('/usr/bin/curl -s "' .. url1 .. '"'))
          --doIt:read('*all')
          --doIt:close()
          --doIt=assert(io.popen('/usr/bin/curl -s "' .. url2 .. '"'))
          --doIt:read('*all')
          --doIt:close()
      
      end
      
      return commandArray
      

      Sébastien

      posted in WifInfo
      S
      seb82