Forum Replies Created
- Replies
-
- 19 décembre 2021 à 16 h 48 min
- in reply to: Données du Wes dans Domoticz
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
00- 18 décembre 2021 à 21 h 01 min
- in reply to: Données du Wes dans Domoticz
REBonjour.
J’ai reussit.
je posterais le programme modifier.
il n’y a pas grand chose a reprendre.
Merci beaucoup
00- 18 décembre 2021 à 12 h 21 min
- in reply to: Données du Wes dans Domoticz
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…
00