kouki31

Forum Replies Created

Affichage de 3 réponses de 1 à 3 (sur un total de 3)
  • Replies
    kouki31
    Participant

      Un premier jet marche très bien.

      2 compteur eau a impulsion

      4 pince ampérométrique

      2 compteur EDF

      
      --------------------------------------------------------------------
      -- Script LUA DOMOTICZ compatible DATA.CGX version WES V 0.84A4
      -- révision du Script LUA déposé par @sacres sur le BLog Carteletronic
      --
      -- Personnalisez vos Identifiants Domoticz
      -- Personnalisez vos bloc Relais 1Wire en décomentant les Blocs Relais Présents
      -- Personnalisez vos Capteurs de Température et Humidité en décommentant les Blocs présents
      -- Ne pas oublier de Commenter les Références des Sondes DB18B20 de Températures en relatif
      -- Personnamiser l'URL de votre WES ci-dessous : Login : password et IP du WES
      
      commandArray = {} -- arrays des infos WES
      
      debug = false -- Affiche les Prints si true
      
      --------------------------------------------------------
      -- Personnalisez l'URL de votre WES
      -- URL du WES sous la forme => login:password@ip-du-wes
      --------------------------------------------------------
      WES_IP = "admin:wes@192.168.1.222"
      
      ----------------------------------------------------------
      -- Personnalisez vos Identifiants Obj Domoticz
      -- Adaptez vos propres valeurs IDX Domoticz, définies par défaut ci-dessous
      ----------------------------------------------------------
      
      ---------------------------------------
      -- Définition des 2 Identifiants Relais WES
      ----------------------------------------
      idx_relais1 = 1
      idx_relais2 = 2
      
      ------------------------------------------------------
      -- Définition des 6 Identifiants Compteurs d'impulsions
      ------------------------------------------------------
      idx_impulsion1 = 12
      idx_impulsion2 = 13
      
      -----------------------------------------------------
      -- Définition des 4 Identifiants Pinces ampèremétriques
      ------------------------------------------------------
      idx_pince1 = 6
      idx_pince2 = 7
      idx_pince3 = 8
      idx_pince4 = 9
      
      --------------------------------------------
      -- definition des 3 Compteurs TICs
      --------------------------------------------
      idx_tica1 = 15
      idx_tica2 = 16
      idx_tica3 = 17
      idx_ticab = 22
      idx_ticaw = 24
      
      idx_ticb1 = 18
      idx_ticb2 = 19
      idx_ticb3 = 20
      idx_ticbb = 23
      idx_ticbw = 25
      
      -- Fin de la personnalisations des Identifiants IDX
      
      -----------------------------------------------------
      -- function XML_Capture(cmd , flatten)
      --
      -- cmd : commande système -> lecture d'une URL HTTP
      -- flatten : booléen, suppression des Char spéciaux si = 1 (true)
      ----------------------------------------------------
      function XML_Capture(cmd,flatten)
      local f = assert(io.popen(cmd, 'r'))
      local s = assert(f:read('*a'))
      f:close()
      if flatten then
      s = string.gsub(s, '^%s+', "")
      s = string.gsub(s, '%s+$', "")
      s = string.gsub(s, '[\n\r\t]+', "")
      end
      return s
      end
      
      ----------------------------------------------
      -- function XML_Parse_TAG(field, str)
      --
      -- Récupère le bloc XML compris entre les Tags et d'un XML
      -- field : Tag ID du bloc XML à récupérer
      -- str : Fichier XML
      -- Return = le Bloc string Compris entre les deux TAGs ...
      -- Return "" si le TAG n'est pas trouvé
      -----------------------------------------------
      function XML_Parse_TAG(field, str)
      local tagdeb = "<"..field..">"
      local tagend = "</"..field..">"
      local field_start = string.find(str, tagdeb)
      
      if field_start == nil then
      print ("XML error – TAG NOT found")
      return ""
      end
      
      local field_end = string.find(str, tagend, field_start)
      str_field = string.sub(str, field_start+0, field_end-1)
      
      if debug == true then
      print(str_field)
      end
      
      return str_field
      end
      
      ----------------------------------------------
      -- function XML_Parse_Value(field, str)
      --
      -- Récupère la Value d'un Tag d'un XML
      -- field : Tag de la Value XML à récupérer
      -- str : Fichier XML
      -- Return = Value Numérique ou "On"/"Off" si value d'un Switch
      -- Return 0 si le Tag n'est pas trouvé
      -----------------------------------------------
      function XML_Parse_Value(field, str)
      local field_start = string.find(str ,field)
      if field_start == nil then
      print ("XML error – Value NOT found")
      return 0
      end
      local field_end = string.find(str, "</" ,field_start) str_field = string.sub(str, field_start+0, field_end-1) if debug == true then print(str_field) end local field_e = string.find(str, ">" ,field_start)
      str_field = string.sub(str, field_e+1, field_end-1)
      if str_field == "ON" or str_field == "OFF" then
      return str_field
      else
      return tonumber(str_field)
      end
      
      end
      
      -------------------------------------------------------------------
      -- Début du Script :
      -- Lecture du fichier Data.cgx du WES par envoie d'une requête HTTP
      -------------------------------------------------------------------
      XML_string = XML_Capture("curl -s 'http://"..WES_IP.."/data.cgx'", 1)
      
      if debug == true then
      print(XML_string) -- Print du fichier XML si debut = True
      end
      
      ----------------------------------------
      -- Vérif si la requête WES à réussi ?
      ----------------------------------------
      valid = string.find(XML_string, "") -- check for a valid xml tag
      if valid == nil then
      print ("XML error – info NOT updated")
      else
      
      ------------------------------------------------------------
      -- Implémente toutes les valeurs WES dans la Array commandArray
      ----------------------------------------------------------
      
      --Time
      print('wes')
      tima = XML_Parse_TAG("info", XML_string)
      --print(tima)
      timee = XML_Parse_TAG("time", tima)
      print(timee)
      
      --
      
      ----------------------
      -- 2 Relais du WES
      ----------------------
      --[[
      print('V4')
      relaisa = XML_Parse_Value("",XML_string)
      relais1 = RELAISa
      print(relaisa)
      relais2 = XML_Parse_Value("",XML_string)
      print(relais1)
      print('_________')
      commandArray[idx_relais1] = {['UpdateDevice'] = idx_relais1..'|0|'}
      print(idx_relais1..'|0|')
      commandArray[idx_relais2] = {['UpdateDevice'] = idx_relais2..'|0|'}
      print(idx_relais2..'|0|')
      ]]--
      
      ----------------------------
      -- 6 Compteurs d'impulsions
      -----------------------------
      
      --impulsion1 = XML_Parse_Value("",XML_string)
      index1 = XML_Parse_Value("",XML_string)
      --
      
      --impulsion2 = XML_Parse_Value("",XML_string)
      index2 = XML_Parse_Value("",XML_string)
      --
      
      commandArray[idx_impulsion1] = {['UpdateDevice'] = idx_impulsion1..'|0|'..index1}
      --print(idx_impulsion1..'|0|'..index1)
      commandArray[idx_impulsion2] = {['UpdateDevice'] = idx_impulsion2..'|0|'..index2}
      --print(idx_impulsion1..'|0|'..index1..';')
      
      -----------------------------
      -- 4 Pinces ampèremétriques
      ------------------------------
      
      pince1 = XML_Parse_Value("",XML_string)
      
      pince2 = XML_Parse_Value("",XML_string)
      --index2 = XML_Parse_Value("",XML_string)
      --inject2 = XML_Parse_Value("",XML_string)
      --
      pince3 = XML_Parse_Value("",XML_string)
      --index3 = XML_Parse_Value("",XML_string)
      --inject3 = XML_Parse_Value("",XML_string)
      --
      pince4 = XML_Parse_Value("",XML_string)
      --index4 = XML_Parse_Value("",XML_string)
      --inject4 = XML_Parse_Value("",XML_string)
      -----
      commandArray[idx_pince1] = {['UpdateDevice'] = idx_pince1..'|0|'..pince1}
      commandArray[idx_pince2] = {['UpdateDevice'] = idx_pince2..'|0|'..pince2}
      commandArray[idx_pince3] = {['UpdateDevice'] = idx_pince3..'|0|'..pince3}
      commandArray[idx_pince4] = {['UpdateDevice'] = idx_pince4..'|0|'..pince4}
      
      ----------------------------
      -- Recup Info TIC1 - TIC2 - TIC3
      ----------------------------
      
      XmlTic1 = XML_Parse_TAG("tic1", XML_string) -- Recup du Bloc TAG ....
      XmlTic2 = XML_Parse_TAG("tic2", XML_string) -- Recup du Bloc TAG ....
      --
      papp1 = XML_Parse_Value("", XmlTic1) -- recup Puissance Apparente TIC1
      iinsta1 = XML_Parse_Value("", XmlTic1) -- recup I Instantané TIC1
      iinsta2 = XML_Parse_Value("", XmlTic1) -- recup I Instantané TIC1
      iinsta3 = XML_Parse_Value("", XmlTic1) -- recup I Instantané TIC1
      base1 = XML_Parse_Value("", XmlTic1) -- recup I Instantané TIC1
      --
      papp2 = XML_Parse_Value("", XmlTic2) -- recup Puissance Apparente TIC2
      iinstb1 = XML_Parse_Value("", XmlTic2) -- recup I Instantané TIC2
      iinstb2 = XML_Parse_Value("", XmlTic2) -- recup I Instantané TIC2
      iinstb3 = XML_Parse_Value("", XmlTic2) -- recup I Instantané TIC2
      base2 = XML_Parse_Value("", XmlTic2) -- recup I Instantané TIC2
      
      -------
      commandArray[idx_tica1] = {['UpdateDevice'] = idx_tica1..'|0|'..iinsta1}
      commandArray[idx_tica2] = {['UpdateDevice'] = idx_tica2..'|0|'..iinsta2}
      commandArray[idx_tica3] = {['UpdateDevice'] = idx_tica3..'|0|'..iinsta3}
      commandArray[idx_ticab] = {['UpdateDevice'] = idx_ticab..'|0|'..base1}
      commandArray[idx_ticaw] = {['UpdateDevice'] = idx_ticaw..'|0|'..papp1}
      
      commandArray[idx_ticb1] = {['UpdateDevice'] = idx_ticb1..'|0|'..iinstb1}
      commandArray[idx_ticb2] = {['UpdateDevice'] = idx_ticb2..'|0|'..iinstb2}
      commandArray[idx_ticb3] = {['UpdateDevice'] = idx_ticb3..'|0|'..iinstb3}
      commandArray[idx_ticbb] = {['UpdateDevice'] = idx_ticbb..'|0|'..base2}
      commandArray[idx_ticbw] = {['UpdateDevice'] = idx_ticbw..'|0|'..papp2}
      
      end
      
      return commandArray
      
      

       

       

      0
      0
      kouki31
      Participant

        REBonjour.

        J’ai reussit.

        je posterais le programme modifier.

        il n’y a pas grand chose a reprendre.

        Merci beaucoup

         

        0
        0
        kouki31
        Participant

          Bonjour.

          j’ai essayer mais j’ai:

          <span style= »color: #860016; font-family: ‘Courier New’, monospace; font-size: 11px; font-weight: 600; background-color: #fafafa; »>2021-12-18 03:19:00.291 Error: EventSystem: in wes: [string « … »]:441: attempt to concatenate a nil value (global ‘relais1’)</span>

          le probleme c’est que la valeur relais1

          est <span style= »background-color: #fafafa; color: #067676; font-family: ‘Courier New’, monospace; font-size: 11px; font-weight: 600; »>RELAIS1>ON</span>

          alors que je pense qu’il ne faut que ON ou OFF.

          j’essai de filtrer la valeur mais je sais pas faire…

           

          0
          0
        Affichage de 3 réponses de 1 à 3 (sur un total de 3)