› Forums › Serveur WES › Installation & Configuration › Tuto exportation Données vers Domoticz
- Ce sujet contient 45 réponses, 16 participants et a été mis à jour pour la dernière fois par
Ludo, le il y a 9 mois et 3 semaines.
- Post
-
Bonjour.
Je cherche un tuto pour pouvoir exporter des données du WES vers un Raspberry avec >Domoticz ,et un tuto pour importer des données dans Domoticz.
J’ ai déjà lancé un sujet, il y a plusieurs mois sans avoir obtenu satisfaction.
Cordialement.
00
- Replies
-
-
Je regarde cela, j’ai un brouillon il faut que je le mette en page.
00 -
Bonjour.
Avez vous avancer dans la rédaction du Tuto.
Salutations
00 -
Non pas eu le temps (nouvelle interface) si vous voulez je peux vous envoyer le brouillon par mail pour test ?
00 -
Bonjour.
J’ai suivi a la lettre vos recommandations, mais Domoticz n’envoi pas de requête au WES . Ci joint copie écran Fichier Syslog du Raspberry.
IP WES 192.168.1.4 : IP Static port 80 et 8080 ouvert
IP Raspberry : 192.168.1.46 port 8080 ouvertRaspberry Pi2 Rasbian Jessie avec derniére mise a jour IP Static
Domoticz avec derniére mise a jourPour les relais cela fonctionne bien : donc les IP sont corrects
J’utilise Wireshark pour scrupter les trames ethernet de mon réseau et il n’y rien sur l’IP du RaspBerry.
Dans Syslog du Raspberry il y a des messages d’avertissements, mais je ne connait aps grand chose au niveau du RaspBerry et a mon âge : 60 ans depuis le début de l’année j’ai un peu de mal.
Salutations.
Attachments:
You must be logged in to view attached files.00 -
Je vais regarder avec un collègue, j’ai transmis ce document à une autre personne et il a pas eu de problème particulier.
00 -
Bonjour.
Pourrais je avoir une copie de la Carte SD du Raspberry de la personne chez qui cela fonctionne. En plus du RPI 2 j’ai en resserve un RPI B+ qui pourrait me servir de test.
Salutations
00 -
Bonjour, pourrais avoir le tuto également afin de faire des tests?
Merci
00 -
Le tuto (béta) par mail.
00 -
Bonjour,
Je viens également de me lancer dans la configuration de domoticz et je souhaiterais également si possible pouvoir bénéficier de votre tuto pour tenter d’interagir avec mon wes v2.
J’en profite pour demander si vous avez eu des nouvelles de l’équipe de imperihome pour une éventuelle intégration?
Merci
00 -
Par mail SVP, le tuto n’est pas finalisé.
Imperihome ne répond jamais !!!
00-
Bonjour,
Par mail ok j’attends avec impatience le fichier.
J’ai également posté un message à imperihome pour les inciter à vous répondre.
Cordialement
00
-
-
Votre mail sur wesbeta@cartelectronic.fr merci.
00 -
Bonjour pour être mis en relation avec imperihome il faut contacter evertygo
00 -
Bonjour,
Serait il possible d’avoir le tuto (béta) pour exporter des données vers un Raspberry.
Merci par avance
Cordialement
00 -
Bonjour.
Voici la documentation j’avais reçu de Nicolas-Cartelectronic.
salutation
Merci de contacter Nicolas pour avoir les fichiers (pas les poster directement sur le blog)
-
Cette réponse a été modifiée le il y a 8 années et 7 mois par
nicolas_cartelec.
00 -
Cette réponse a été modifiée le il y a 8 années et 7 mois par
-
Merci beaucoup à tous les deux pour ces fichiers. Je suis assez novice dans le domaine et je souhaiterais exporter en continu les mesures des pinces ampèremétriques sur Domoticz afin de pouvoir en faire du post traitement. A terme je souhaite installer des panneaux PV pour faire de l’autoconsommation et utiliser Domoticz pour générer des scénarii et lancer par exemple le chauffe eau en cas d’excédent de production. Est il nécessaire d’utiliser un Raspberry pour cette fonction?
Merci par avance pour votre aide
00 -
Bonjour,
Pour exporter les valeurs des pinces ampèremétrique du Wes vers Domoticz, il faut créer sous Domoticz un capteur virtuel du type « Ampère monophasé ». Ensuite, la méthodologie est décrite dans la documentation attaché à mon précédant post.
La requête à utiliser pour ce capteur est la suivante :
/json.htm?type=command¶m=udevice&idx=IDX&nvalue=0&svalue=CURRENTIDX = idx de votre capteur sous Domoticz.
CURRENT = Valeur de l’intensité la pince ampèremétrique du Wes (Exemple : $A101 retourne l’intensité de la pince n°1, $A201 retourne l’intensité de la pince n°2, etc..).
Cordialement,
Sacres-
Cette réponse a été modifiée le il y a 8 années et 7 mois par
sacres.
00 -
Cette réponse a été modifiée le il y a 8 années et 7 mois par
-
Bonjour.
Merci pour ces informations qui ont le mérite d’être claires et précises. La méthode que m’avait envoyée Nicolas n’a pas fonctionnèe, a part les sorties relais sous Domoticz.
Salutations
00 -
Bonjour à tous,
Déjà merci pour le tuto.
Cependant, impossible d’avoir un comportement fiable après avoir mis les 4 requêtes correspondants aux 4 pinces : les requêtes ne sont jamais toutes les 4 exécutées en même temps, des fois certaines ne sont pas exécutées pendant plusieurs heures. Bref, un comportement bien trop aléatoire.
Pour corriger cela et afin de regrouper toute l’intelligence de ma domotique dans Domoticz (installé sur un NAS Synology, le tout d’une stabilité exemplaire), j’ai créé un script Lua qui permet de venir parser les fichiers XML générés par le serveur WES, et de mettre à jour les devices automatiquement (et de manière stable ;)). Cela a également l’avantage de ne pas surcharger en requête HTML le serveur Domoticz.
La manière de créer les capteurs virtuels est la même (mais ici des capteurs « Ampère monophasé »), il suffit juste de faire exécuter ce script en « time » par Domoticz (pour une mise à jour toutes les minutes).
N’hésitez pas si vous avez des questions.
commandArray = {} -- User data to modify WES_IP = "user:password@192.168.1.2" idx_pince1 = 169 idx_pince2 = 194 idx_pince3 = 193 idx_pince4 = 195 debug = false -- END OF User data to modify 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]+', ' ') end return s end function XML_Parse(field, str) local toto,field_start = string.find(str,field) local field_end = string.find(str,"</", field_start) str_field = string.sub(str,field_start+1,field_end-1) if debug == true then print(str_field) end return tonumber(str_field) end XML_string=XML_Capture("curl -s 'http://"..WES_IP.."/pcetreel.cgx'",1) valid = string.find(XML_string, "<form>") -- check for a valid xml tag if debug == true then print(XML_string) end if valid == nil then print ("XML error - info NOT updated") else pince1 = XML_Parse("IPC1_val</id><value>",XML_string) pince2 = XML_Parse("IPC2_val</id><value>",XML_string) pince3 = XML_Parse("IPC3_val</id><value>",XML_string) pince4 = XML_Parse("IPC4_val</id><value>",XML_string) commandArray[1] = {['UpdateDevice'] = idx_pince1..'|0|'..pince1} commandArray[2] = {['UpdateDevice'] = idx_pince2..'|0|'..pince2} commandArray[3] = {['UpdateDevice'] = idx_pince3..'|0|'..pince3} commandArray[4] = {['UpdateDevice'] = idx_pince4..'|0|'..pince4} end return commandArray
00 -
Bonjour Floche,
Pour ma part je récupère via des scripts en python toutes les variables du WES en parsant le fichier XML « data.cgx »et cela fonctionne bien mieux qu’avec des requêtes.
Suite à ton post avec le code en lua, j’ai voulu voir ce que cela pouvait donner d’utiliser lua pour récupérer l’ensemble des données que je récupérais sur le WES en python (Compteurs d’impulsions, Pinces ampèremétriques, Sondes de températures, Sonde de température et d’humidité, Relais, Entrées, Switchs virtuels, Variables et Carte relais 1-wire additionnelle).
Voici ce que cela donne:
commandArray = {}
— User data to modify
WES_IP = « admin:wes@192.168.1.2″— Compteurs d’impulsions
idx_impulsion1 = 81
idx_impulsion2 = 82
idx_impulsion3 = 83
idx_impulsion4 = 84— Pinces ampèremétriques
idx_pince1 = 24
idx_pince2 = 25
idx_pince3 = 26
idx_pince4 = 27— Sondes de températures
idx_sonde1 = 10
idx_sonde2 = 11
idx_sonde3 = 12
idx_sonde4 = 13
idx_sonde5 = 14
idx_sonde6 = 16
idx_sonde7 = 18
idx_sonde8 = 19
idx_sonde9 = 22
idx_sonde10 = 23— Sonde de température et d’humidité
idx_sondeTH1 = 58
idx_sondeTH2 = 59
idx_sondeTH3 = 60
idx_sondeTH4 = 61
idx_sondeTH5 = 74
idx_sondeTH6 = 73— Relais
idx_relais1 = 87
idx_relais2 = 88— Entrées
idx_entree1 = 114
idx_entree2 = 115— Entrées analogiques
idx_analogique1 = 75
idx_analogique2 = 76
idx_analogique3 = 77
idx_analogique4 = 78— Switchs virtuels
idx_switch1 = 89
idx_switch2 = 90
idx_switch3 = 91
idx_switch4 = 92
idx_switch5 = 93
idx_switch6 = 94
idx_switch7 = 95
idx_switch8 = 96— Variables
idx_variable1 = 97
idx_variable2 = 98
idx_variable3 = 99
idx_variable4 = 100
idx_variable5 = 101
idx_variable6 = 102
idx_variable7 = 103
idx_variable8 = 104— Carte relais 1-wire
idx_relais101 = 106
idx_relais102 = 107
idx_relais103 = 108
idx_relais104 = 109
idx_relais105 = 110
idx_relais106 = 111
idx_relais107 = 112
idx_relais108 = 113debug = false
— END OF User data to modify
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]+’, ‘ ‘)
end
return s
endfunction XML_Parse(field, str)
local toto,field_start = string.find(str,field)
local field_end = string.find(str, »</ », field_start)
str_field = string.sub(str,field_start+1,field_end-1)
if debug == true then
print(str_field)
end
if str_field == « ON » or str_field == « OFF » then
return str_field
else
return tonumber(str_field)
end
endXML_string=XML_Capture(« curl -s ‘http:// »..WES_IP.. »/data.cgx' »,1)
valid = string.find(XML_string, « <data> ») — check for a valid xml tag
if debug == true then
print(XML_string)
endif valid == nil then
print (« XML error – info NOT updated »)
else
— Compteurs d’impulsions
impulsion1 = XML_Parse(« <PULSE1> »,XML_string)
index1 = XML_Parse(« <INDEX1> »,XML_string)
impulsion2 = XML_Parse(« <PULSE2> »,XML_string)
index2 = XML_Parse(« <INDEX2> »,XML_string)
impulsion3 = XML_Parse(« <PULSE3> »,XML_string)
index3 = XML_Parse(« <INDEX3> »,XML_string)
impulsion4 = XML_Parse(« <PULSE4> »,XML_string)
index4 = XML_Parse(« <INDEX4> »,XML_string)
commandArray[idx_impulsion1] = {[‘UpdateDevice’] = idx_impulsion1..’|0|’..impulsion1..’;’..index1}
commandArray[idx_impulsion2] = {[‘UpdateDevice’] = idx_impulsion2..’|0|’..impulsion2..’;’..index2}
commandArray[idx_impulsion3] = {[‘UpdateDevice’] = idx_impulsion3..’|0|’..impulsion3..’;’..index3}
commandArray[idx_impulsion4] = {[‘UpdateDevice’] = idx_impulsion4..’|0|’..impulsion4..’;’..index4}— Pinces ampèremétriques
pince1 = XML_Parse(« <I1> »,XML_string)
pince2 = XML_Parse(« <I2> »,XML_string)
pince3 = XML_Parse(« <I3> »,XML_string)
pince4 = XML_Parse(« <I4> »,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}— Sondes de températures
sonde1 = XML_Parse(« <SONDE1> »,XML_string)
sonde2 = XML_Parse(« <SONDE2> »,XML_string)
sonde3 = XML_Parse(« <SONDE3> »,XML_string)
sonde4 = XML_Parse(« <SONDE4> »,XML_string)
sonde5 = XML_Parse(« <SONDE5> »,XML_string)
sonde6 = XML_Parse(« <SONDE7> »,XML_string)
sonde7 = XML_Parse(« <SONDE9> »,XML_string)
sonde8 = XML_Parse(« <SONDE10> »,XML_string)
sonde9 = XML_Parse(« <SONDE15> »,XML_string)
sonde10 = XML_Parse(« <SONDE16> »,XML_string)
commandArray[idx_sonde1] = {[‘UpdateDevice’] = idx_sonde1..’|0|’..sonde1}
commandArray[idx_sonde2] = {[‘UpdateDevice’] = idx_sonde2..’|0|’..sonde2}
commandArray[idx_sonde3] = {[‘UpdateDevice’] = idx_sonde3..’|0|’..sonde3}
commandArray[idx_sonde4] = {[‘UpdateDevice’] = idx_sonde4..’|0|’..sonde4}
commandArray[idx_sonde5] = {[‘UpdateDevice’] = idx_sonde5..’|0|’..sonde5}
commandArray[idx_sonde6] = {[‘UpdateDevice’] = idx_sonde6..’|0|’..sonde6}
commandArray[idx_sonde7] = {[‘UpdateDevice’] = idx_sonde7..’|0|’..sonde7}
commandArray[idx_sonde8] = {[‘UpdateDevice’] = idx_sonde8..’|0|’..sonde8}
commandArray[idx_sonde9] = {[‘UpdateDevice’] = idx_sonde9..’|0|’..sonde9}
commandArray[idx_sonde10] = {[‘UpdateDevice’] = idx_sonde10..’|0|’..sonde10}— Sonde de température et d’humidité
sondeT1 = XML_Parse(« <SONDE25> »,XML_string)
sondeH1 = XML_Parse(« <SONDE24> »,XML_string)
sondeT2 = XML_Parse(« <SONDE28> »,XML_string)
sondeH2 = XML_Parse(« <SONDE27> »,XML_string)
sondeT3 = XML_Parse(« <SONDE18> »,XML_string)
sondeH3 = XML_Parse(« <SONDE17> »,XML_string)
sondeT4 = XML_Parse(« <SONDE22> »,XML_string)
sondeH4 = XML_Parse(« <SONDE21> »,XML_string)
sondeT5 = XML_Parse(« <SONDE7> »,XML_string)
sondeH5 = XML_Parse(« <SONDE6> »,XML_string)
sondeT6 = XML_Parse(« <SONDE13> »,XML_string)
sondeH6 = XML_Parse(« <SONDE12> »,XML_string)
hum_stat = 0
commandArray[idx_sondeTH1] = {[‘UpdateDevice’] = idx_sondeTH1..’|0|’..sondeT1..’;’..sondeH1..’;’..hum_stat}
commandArray[idx_sondeTH2] = {[‘UpdateDevice’] = idx_sondeTH2..’|0|’..sondeT2..’;’..sondeH2..’;’..hum_stat}
commandArray[idx_sondeTH3] = {[‘UpdateDevice’] = idx_sondeTH3..’|0|’..sondeT3..’;’..sondeH3..’;’..hum_stat}
commandArray[idx_sondeTH4] = {[‘UpdateDevice’] = idx_sondeTH4..’|0|’..sondeT4..’;’..sondeH4..’;’..hum_stat}
commandArray[idx_sondeTH5] = {[‘UpdateDevice’] = idx_sondeTH5..’|0|’..sondeT5..’;’..sondeH5..’;’..hum_stat}
commandArray[idx_sondeTH6] = {[‘UpdateDevice’] = idx_sondeTH6..’|0|’..sondeT6..’;’..sondeH6..’;’..hum_stat}— Relais
relais1 = XML_Parse(« <RELAIS1> »,XML_string)
relais2 = XML_Parse(« <RELAIS2> »,XML_string)
commandArray[idx_relais1] = {[‘UpdateDevice’] = idx_relais1..’|0|’..relais1}
commandArray[idx_relais2] = {[‘UpdateDevice’] = idx_relais2..’|0|’..relais2}— Entrées
entree1 = XML_Parse(« <ENTREE1> »,XML_string)
entree2 = XML_Parse(« <ENTREE2> »,XML_string)
commandArray[idx_entree1] = {[‘UpdateDevice’] = idx_entree1..’|0|’..entree1}
commandArray[idx_entree2] = {[‘UpdateDevice’] = idx_entree2..’|0|’..entree2}— Entrées analogiques
analogique1 = XML_Parse(« <AD1> »,XML_string)
analogique2 = XML_Parse(« <AD2> »,XML_string)
analogique3 = XML_Parse(« <AD3> »,XML_string)
analogique4 = XML_Parse(« <AD4> »,XML_string)
commandArray[idx_analogique1] = {[‘UpdateDevice’] = idx_analogique1..’|0|’..analogique1}
commandArray[idx_analogique2] = {[‘UpdateDevice’] = idx_analogique2..’|0|’..analogique2}
commandArray[idx_analogique3] = {[‘UpdateDevice’] = idx_analogique3..’|0|’..analogique3}
commandArray[idx_analogique4] = {[‘UpdateDevice’] = idx_analogique4..’|0|’..analogique4}— Switchs virtuels
switch1 = XML_Parse(« <SWITCH1> »,XML_string)
switch2 = XML_Parse(« <SWITCH2> »,XML_string)
switch3 = XML_Parse(« <SWITCH3> »,XML_string)
switch4 = XML_Parse(« <SWITCH4> »,XML_string)
switch5 = XML_Parse(« <SWITCH5> »,XML_string)
switch6 = XML_Parse(« <SWITCH6> »,XML_string)
switch7 = XML_Parse(« <SWITCH7> »,XML_string)
switch8 = XML_Parse(« <SWITCH8> »,XML_string)
commandArray[idx_switch1] = {[‘UpdateDevice’] = idx_switch1..’|0|’..switch1}
commandArray[idx_switch2] = {[‘UpdateDevice’] = idx_switch2..’|0|’..switch2}
commandArray[idx_switch3] = {[‘UpdateDevice’] = idx_switch3..’|0|’..switch3}
commandArray[idx_switch4] = {[‘UpdateDevice’] = idx_switch4..’|0|’..switch4}
commandArray[idx_switch5] = {[‘UpdateDevice’] = idx_switch5..’|0|’..switch5}
commandArray[idx_switch6] = {[‘UpdateDevice’] = idx_switch6..’|0|’..switch6}
commandArray[idx_switch7] = {[‘UpdateDevice’] = idx_switch7..’|0|’..switch7}
commandArray[idx_switch8] = {[‘UpdateDevice’] = idx_switch8..’|0|’..switch8}— Variables
variable1 = XML_Parse(« <VARIABLE1> »,XML_string)
variable2 = XML_Parse(« <VARIABLE2> »,XML_string)
variable3 = XML_Parse(« <VARIABLE3> »,XML_string)
variable4 = XML_Parse(« <VARIABLE4> »,XML_string)
variable5 = XML_Parse(« <VARIABLE5> »,XML_string)
variable6 = XML_Parse(« <VARIABLE6> »,XML_string)
variable7 = XML_Parse(« <VARIABLE7> »,XML_string)
variable8 = XML_Parse(« <VARIABLE8> »,XML_string)
commandArray[idx_variable1] = {[‘UpdateDevice’] = idx_variable1..’|0|’..variable1}
commandArray[idx_variable2] = {[‘UpdateDevice’] = idx_variable2..’|0|’..variable2}
commandArray[idx_variable3] = {[‘UpdateDevice’] = idx_variable3..’|0|’..variable3}
commandArray[idx_variable4] = {[‘UpdateDevice’] = idx_variable4..’|0|’..variable4}
commandArray[idx_variable5] = {[‘UpdateDevice’] = idx_variable5..’|0|’..variable5}
commandArray[idx_variable6] = {[‘UpdateDevice’] = idx_variable6..’|0|’..variable6}
commandArray[idx_variable7] = {[‘UpdateDevice’] = idx_variable7..’|0|’..variable7}
commandArray[idx_variable8] = {[‘UpdateDevice’] = idx_variable8..’|0|’..variable8}— Carte relais 1-wire
relais101 = XML_Parse(« <RELAIS101> »,XML_string)
relais102 = XML_Parse(« <RELAIS102> »,XML_string)
relais103 = XML_Parse(« <RELAIS103> »,XML_string)
relais104 = XML_Parse(« <RELAIS104> »,XML_string)
relais105 = XML_Parse(« <RELAIS105> »,XML_string)
relais106 = XML_Parse(« <RELAIS106> »,XML_string)
relais107 = XML_Parse(« <RELAIS107> »,XML_string)
relais108 = XML_Parse(« <RELAIS108> »,XML_string)
commandArray[idx_relais101] = {[‘UpdateDevice’] = idx_relais101..’|0|’..relais101}
commandArray[idx_relais102] = {[‘UpdateDevice’] = idx_relais102..’|0|’..relais102}
commandArray[idx_relais103] = {[‘UpdateDevice’] = idx_relais103..’|0|’..relais103}
commandArray[idx_relais104] = {[‘UpdateDevice’] = idx_relais104..’|0|’..relais104}
commandArray[idx_relais105] = {[‘UpdateDevice’] = idx_relais105..’|0|’..relais105}
commandArray[idx_relais106] = {[‘UpdateDevice’] = idx_relais106..’|0|’..relais106}
commandArray[idx_relais107] = {[‘UpdateDevice’] = idx_relais107..’|0|’..relais107}
commandArray[idx_relais108] = {[‘UpdateDevice’] = idx_relais108..’|0|’..relais108}end
return commandArray
Cordialement,
Sacres
00 -
Bonjour,
Et bravo pour les tutos aussi en JSON, qu’en LUA et python.
J’ai un WES depuis maintenant quelques semaines et je me lance avec Domoticz installé sur mon QNAP.
J’arrive bien à transférer mes données aussi bien à partir du WES par script JSON pour mes sondes, qu’à partir de domoticz par scripts LUA et python pour mes pinces et compteurs reliés au WES.
Par contre je bloque sur mes 2 compteurs reliés à un module RF 868 Mhz, je ne sais pas où récupérer les données.
Merci de votre retour.
Christian
00 -
Bonjour,
Je suis en train de mettre en place un lien entre le WES et mon DOMOTICZ (sous Windows et non Rasberry)
J’ai utilisé le script LUA très bien fait de Sacres ci-dessus. En modifiant les caractères « et » par des » le script LUA est maintenant bien interprété par Domoticz.
Seul problème, a priori Domoticz n’arrive pas à lire le fichier XML data.cgx du WES alors que le fichier est bien présent sur le WES et j’ai bien modifié l’adresse du WES dans le script:
— User data to modify WES_IP = « monuser:monmotdepasse@192.168.1.4″
Voici le message obtenu sur DOMOTICZ :
Est ce que quelqu’un a une idée?
JC
00 -
bonjour,
chez moi j’ai 3 scripts LUA qui fonctionnent parfaitement selon les scripts ci-dessus.
attention au erreur typographique, juste sur la première ligne citée il y a une erreur:
— User data to modify
WES_IP = » monuser:monmotdepasse@192.168.1.4″
il faut mettre un vrai guillemet à l’anglaise » devant monuser….. et non le guillemet à la française »
c’est vrai que la restitution sur ce site n’est pas correcte!!!
-
Cette réponse a été modifiée le il y a 6 années et 9 mois par
chrisv.
-
Cette réponse a été modifiée le il y a 6 années et 9 mois par
chrisv.
-
Cette réponse a été modifiée le il y a 6 années et 9 mois par
chrisv.
00 -
Cette réponse a été modifiée le il y a 6 années et 9 mois par
-
Bonjour à tous,
Vous trouverez ci-dessous un script en LUA pour exporter les valeurs des pinces ampèremétriques du Wes vers Domoticz. Ce script se base sur le fichier CGX « pceval » et est compatible avec la version 0_83H B03 du Wes.
——————————————————————————————————————–
— Ce script permet de récupérer les valeurs de toutes les pinces connectées au WES pour les injecter dans Domoticz
— Version du WES compatible => 0.83H béta3 (Août 2019)
——————————————————————————————————————–commandArray = {}
–***********************
–* User data to modify *
–***********************–Paramètres du WES sous la forme => login:mot-passe@ip-du-wes
WES_CONF = « admin:wes@192.168.0.100 »— Pinces ampèremétriques
— ID de vos capteurs sous domoticz
idx_pince1 = 24
idx_pince2 = 25
idx_pince3 = 26
idx_pince4 = 27type_dummy = « A » — Type de valeur à renvoyer vers domoticz
— A => Ampères
— VA => VoltAmpères
— Wh => Watt-heuredebug = false
–******************************
–* END OF User data to modify *
–******************************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]+’, ‘ ‘)
end
return s
endfunction XML_Parse(field, str)
local toto,field_start = string.find(str,field)
local field_end = string.find(str, » « ..type_dummy.. »</value> », field_start)
str_field = string.sub(str,field_start+1,field_end-1)
if debug == true then
print(str_field)
end
return tonumber(str_field)
endXML_string = XML_Capture(« curl -s ‘http:// »..WES_CONF.. »/WEBPROG/CGX/pceval.cgx' »,1)
— Requête utilisée => http://login:mot-passe@ip-du-wes/WEBPROG/CGX/pceval.cgxif debug == true then
print(XML_string)
end
if type_dummy == « A » then
— Récupération de la valeur du courant (Intensité) des pinces exprimée en Ampères (A)
pince1 = XML_Parse(« <id>IPC1_val</id><value> »,XML_string)
pince2 = XML_Parse(« <id>IPC2_val</id><value> »,XML_string)
pince3 = XML_Parse(« <id>IPC3_val</id><value> »,XML_string)
pince4 = XML_Parse(« <id>IPC4_val</id><value> »,XML_string)else if type_dummy == « VA » then
— Récupération de la puissance apparente des pinces exprimée en VoltAmpères (VA)
pince1 = XML_Parse(« <id>VAPC1_val</id><value> »,XML_string)
pince2 = XML_Parse(« <id>VAPC2_val</id><value> »,XML_string)
pince3 = XML_Parse(« <id>VAPC3_val</id><value> »,XML_string)
pince4 = XML_Parse(« <id>VAPC4_val</id><value> »,XML_string)else if type_dummy == « Wh » then
— Récupération de la valeur des pinces exprimée en Watt-heure (Wh)
pince1 = XML_Parse(« <id>WHPC1_val</id><value> »,XML_string)
pince2 = XML_Parse(« <id>WHPC2_val</id><value> »,XML_string)
pince3 = XML_Parse(« <id>WHPC3_val</id><value> »,XML_string)
pince4 = XML_Parse(« <id>WHPC4_val</id><value> »,XML_string)
end
end
endcommandArray[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}return commandArray
Cordialement,
Sacres
00 -
je tente à mon tour de faire tourner ces scripts 🙂
j’ai enfin compris ou mettre ces scripts et comment les nommer (script_time_xxx.lua)
après les avoir corriger en mettant des caractères « normaux »
j’ai comme message « 2020-01-21 15:07:00.406 Status: LUA: XML error – info NOT updated »
alors que j’accède bien au fichier /data.cgx en direct avec l’url adapté00 -
bon, je progresse mais j’ai encore des messages d’erreur
2020-01-21 17:02:00.553 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_wes_newall.lua: /home/pi/domoticz/scripts/lua/script_time_wes_newall.lua:148: attempt to concatenate global 'idx_impulsion5' (a nil value) 2020-01-21 17:02:00.554 Error: EventSystem: UpdateDevice IDX 81 not found! 2020-01-21 17:02:00.555 Error: EventSystem: UpdateDevice IDX 82 not found! 2020-01-21 17:02:00.555 Error: EventSystem: UpdateDevice IDX 86 not found! 2020-01-21 17:02:00.556 Error: EventSystem: UpdateDevice IDX 85 not found! 2020-01-21 17:02:00.556 Status: EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_time_wes_newall.lua
par contre je sais pas comment faire avec Domoticz après ça :/ (si quelqu’un le sait ?)
00 -
Merci à @Sacres pour ses Scripts.
Par contre il faut savoir que certains Caractères sont modifiés lorsque l’on dépose des scripts par le biais d’un copie/collé directement dans le Texte d’un Post dans ce Blog . Certains Caractères du Script d’origine en visuel sont donc quelques peux modifiés et il y aura des erreurs en utilisation si l’on reprend le script tel que affiché.
Lorsque l’on veut transmettre un Script, il faut le transmettre en Pièce Jointe, Compressé au format ZIP.
En effet Certaines Extensions de fichiers ne sont pas autorisés par le serveur de ce Blog.
Cdt
00 -
Bonjour,
Je vais mettre en place des panneaux solaires chez moi et je cherche à surveiller ça de près, notamment avec Domoticz qui fait déjà tourner la domotique.
J’envisage la possibilité de mettre un Serveur WES, notamment pour pouvoir utiliser les pinces ampèremétriques.Je viens de voir qu’il y aurait différents scripts à mettre en place, ce que je voulais savoir c’est est-ce que ces scripts remontent en « temps réel » la valeur des pinces ? Je dois faire du routage PV vers mon chauffe-eau et ce point est primordial !
Je voulais aussi savoir si une calibration des pinces est possible dans le soft du WES pour avoir une valeur la plus juste possible.Dernièrement, concernant les valeurs Téléinfo (actuellement j’utilise le modèle USB sur Domoticz), est-ce qu’elles peuvent facilement être importées du WES vers Domoticz ?
J’ai actuellement 5 valeurs (HP, HC, Total, % Charge, Courant) et j’aimerait toutes les récupérer avec le WES.Merci.
00 -
Egalement, peut-on utiliser des pinces de la même marque YHDC, mais avec une valeur plus faible pour avoir une meilleure précision ?
Merci !
00 -
bon je n’arrive toujours pas à exploiter les donnée du wes vers Domoticz
peu être que le passage à la dernière version n’a pas arrangé tout celales différent script dans ce topic ont été tester avec les modif des « » et des — pour les commentaires
bref je patauge
est ce qu’il existe un tuto à jour pour mettre les info du wes vers domoticz (ou autre comme grafana)nota je ne suis pas informaticien 😀
00 -
Bonjour,
Je n’utilise pas Domoticz et n’en connais pas ces spécificités.
Par contre j’ai récupéré le Script LUA qui à été déposé par @sacres sur ce Blog et qui permet d’extraire les Infos du DATA.CGX du WES.
Je Modifié et Adapté ce Script LUA pour le rendre compatible avec la dernière version du WES V 0.84A4. Normalement ce Script ainsi corrigé devrait fonctionner.
Je peux vous aidez à récupérer des Valeurs si manquant dans ce Scripts mais je ne peux pas vous aider pour implémenter ce Script dans Domoticz, n’ayant aucune expérience à ce niveau. Il vous faut aussi adapter les Identifiants IDX vis à vis des Objs Domoticz car les valeurs que j’ai implémentées dans ce Script ont été définis par défaut par pure logique.
Trouvez le fichier sous forme d’archive ZIP en pièce jointe
Cdt
Attachments:
You must be logged in to view attached files.00 -
RE: Je vous renvoie le fichier, j’ai remarqué qu’il y a 3 lignes qui devrait être en Commentaire — et qui ne le sont pas
——————————————-
— Sondes de températures DB18B20
— Si parmi les Sondes DB18B20 il y a des capteurs
— de Temp et Humidité modifier en concéquence
— en supprimant les Valeurs Sonde <SONDExx> et SONDExx+1> ainsi
— que les 2 déclarations dans la Array en relatif
— ICI commandArray[idx_sonde(X)] = {[‘UpdateDevice’] = idx_sonde(X)..’|0|’..sonde(X)}
— ICI et
— ICI commandArray[idx_sonde(X+1)] = {[‘UpdateDevice’] = idx_sonde(X+1)..’|0|’..sonde(X+1)}Désolé
Cdt
Attachments:
You must be logged in to view attached files.00 -
RE: Désolé, je vous renvoie encore mon fichier Script corrigé. Comme je ne peux pas tester le Script avec Domoticz, il n’est pas facile de remarquer les Erreurs. Néanmoins je remarque après relecture qu’il y a encore des caractères simple quote qui ne sont pas au bon format. Ce Blog transforme les caractères guillemet et simple quote dans un format visuel similaire mais différents côté valeur ascii.
Je vous renvoie une 3eme copie du Script cette fois bien corrigé !!! Du moins je l’espère ! à tester ….
Cdt
Attachments:
You must be logged in to view attached files.00 -
ok merci, je vais tester tout cela dans la semaine 🙂
je suis en train de tester aussi Jeedom histoire d’avoir un truc correct et entre les 2 j’hésite encore
00 -
Bonjour @bqtt
Je suis utilisateur Jeedom.
il y a un plugin dans Jeedom qui permet de récupérer directement les infos du Serveur Wes, un nouvel interface doit sortir prochainement.
Tu peux aussi via un scenario dans jeedom aller pointer sur le fichier data.cgx du WES (ceci est dans le cas ou tu souhaites avoir des infos non présentes dans le Plugin)
Je t’invite à aller aussi sur le forum Jeedom et de chercher des échanges sur le sujet.
Tu trouveras aussi sur ce forum des échanges entre @cdlog2 et moi sur des choses possibles à faire entre le WES et Jeedom (regarde les pièces jointe pour des exemples de code)
Bonne lecture00 -
Bonjour,
Je suis aussi utilisateur de Jeedom et je récupère les informations qui m’intéressent dans le fichier data.cgx à l’aide de scripts
En effet, l’année dernière le plugin ne fonctionnait pas correctement (V 3). Depuis que l’équipe Jeedom l’a pris en main il fonctionne correctement.
Je fais aussi remonter les informations de production photovoltaique à l’aide du plugin SMA Sunny Boy qui est hyperstable.
Jeedom me permet de rassembler toutes les informations sur une seule page (voir fichier ci-joint).
Attachments:
You must be logged in to view attached files.00 -
Bonjour @fantasio78
As tu un compte sur le forum Jeedom.
J’aurai des questions sur ta présentation, et je ne voudrai pas polluer ce forum avec des questions complétements spécifiques à Jeedom.Cordialement
00 -
-
bon, pour le moment avec Domoticz je patauge
avec le scripte généreusement repris par cdlog2 j’ai des messages d’erreur :
»
2021-04-08 13:36:00.237 Error: EventSystem: in /home/pi/domoticz/scripts/lua/Script_time_WesDomoticz.lua: /home/pi/domoticz/scripts/lua/Script_time_WesDomoticz.lua:713: attempt to concatenate a nil value (global ‘inject1’) »sur des truc non branché j’ai imaginé qu’il fallait que je « comment » les lignes concerné comme les relais, switch virtuel ettc..
mais sur les pinces je dois normalement avoir des données car celle-ci sont branchésur mon wes j’ai le tic, les impulsion en radio pour le gaz et les pinces ampermetrique de connecté
les info de mon data.cgx sont :
13:36V0.84A4021975924438BAS.30Toutes Heures75003000000900000pas connue !010147304000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Pas DispoPas dispo.0NON Dispo !00000000000000pas connue !000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Pas DispoPas dispo.0NON Dispo !00000000000000pas connue !000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000134200 3.13 7653.550 0.000 1.53 2838.790 0.000 1.76 3930.388 0.000 0.00 1166.751 0.000 231 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 OFF OFF 0 00.000.000.000.00000000000000000010000101 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
00 -
bon j’admet que Jeedom me tente de plus en plus
le wes est effectivement bien pris en charge, et ce sans prise de tête
et en plus mes lapin Nabaztag et Karotz sont pris en chargej’attend un p4 avec ssd venant de chine qui sera ma future box domotique Jeedom
mais en attendant je fais des experiences00 -
Bonjour @bqtt,
L’erreur du Script s’effectue sur la valeur de <INJECT1> de la Pince 1, lue du Data.cgx de votre WES. Quelle est la version de votre WES ?
La récupération des champs <INJECT(x)> n’existe pas dans le Script de référence de @sacres que j’avais utilisé comme base. Vous pouvez éliminer ces Erreurs en retirant la lecture et la concaténation des ces valeurs <INJECT(x)> que j’ai rajouté.
Modifier votre Script en supprimant les zones ci-dessous mises en GRAS:
—————————–
— 4 Pinces ampèremétriques
——————————
pince1 = XML_Parse_Value(« <I1> »,XML_string)
index1 = XML_Parse_Value(« <INDEX1> »,XML_string)
inject1 = XML_Parse_Value(« <INJECT1> »,XML_string) — Supprimer cette ligne
—
pince2 = XML_Parse_Value(« <I2> »,XML_string)
index2 = XML_Parse_Value(« <INDEX2> »,XML_string)
inject2 = XML_Parse_Value(« <INJECT2> »,XML_string) — Supprimer cette ligne
—
pince3 = XML_Parse_Value(« <I3> »,XML_string)
index3 = XML_Parse_Value(« <INDEX3> »,XML_string)
inject3 = XML_Parse_Value(« <INJECT3> »,XML_string) — Supprimer cette ligne
—
pince4 = XML_Parse_Value(« <I4> »,XML_string)
index4 = XML_Parse_Value(« <INDEX4> »,XML_string)
inject4 = XML_Parse_Value(« <INJECT4> »,XML_string) — Supprimer cette ligne
—–
commandArray[idx_pince1] = {[‘UpdateDevice’] = idx_pince1..’|0|’..pince1..’;’..index1..’;’..inject1} — modifier comme ceci ‘;’..index1}
commandArray[idx_pince2] = {[‘UpdateDevice’] = idx_pince2..’|0|’..pince2..’;’..index2..’;’..inject2} — modifier comme ceci ‘;’..index2}
commandArray[idx_pince3] = {[‘UpdateDevice’] = idx_pince3..’|0|’..pince3..’;’..index3..’;’..inject3} — modifier comme ceci ‘;’..index3}
commandArray[idx_pince4] = {[‘UpdateDevice’] = idx_pince4..’|0|’..pince4..’;’..index4..’;’..inject4} — modifier comme ceci ‘;’..index4}Votre Script doit ressembler à ceci en final :
—————————–
— 4 Pinces ampèremétriques
——————————
pince1 = XML_Parse_Value(« <I1> »,XML_string)
index1 = XML_Parse_Value(« <INDEX1> »,XML_string)
—
pince2 = XML_Parse_Value(« <I2> »,XML_string)
index2 = XML_Parse_Value(« <INDEX2> »,XML_string)
—
pince3 = XML_Parse_Value(« <I3> »,XML_string)
index3 = XML_Parse_Value(« <INDEX3> »,XML_string)
—
pince4 = XML_Parse_Value(« <I4> »,XML_string)
index4 = XML_Parse_Value(« <INDEX4> »,XML_string)
—–
commandArray[idx_pince1] = {[‘UpdateDevice’] = idx_pince1..’|0|’..pince1..’;’..index1}
commandArray[idx_pince2] = {[‘UpdateDevice’] = idx_pince2..’|0|’..pince2..’;’..index2}
commandArray[idx_pince3] = {[‘UpdateDevice’] = idx_pince3..’|0|’..pince3..’;’..index3}
commandArray[idx_pince4] = {[‘UpdateDevice’] = idx_pince4..’|0|’..pince4..’;’..index4}Ne copier pas les lignes de ce blog. Soit vous modifiez votre script depuis un éditeur de texte ou vous récupérez le Script modifié que je vous joints.
Juste pour information pour comprendre l’erreur du Script, pourriez vous lancer la requête ci-dessous depuis la barre d’adresse de votre navigateur en rentrant vos propres paramètres : login-wes : mot-passe-wes @ ip wes 92.168.xx.xx : http://login:motpasse@192.168.xx.xx/data.cgx
Votre WES va vous renvoyer le résultat de votre Data.cgx rempli. Sélectionner toutes les lignes reçues dans votre navigateur à la sourie et copier le tout dans un éditeur de texte, ( Bloc-Notes , NotePad ou tout autre ) et enregistrer un fichier exemple : mondata.txt. Créer une archive ZIP de votre fichier TXT et le joindre dans un Post sur ce Blog.
Je ne peux pas vous aider plus en avant, je n’ai pas Domoticz et n’en connais pas ces spécificités ! Peut être que @sacres, s’il lit ce blog pourrait vous aider ?.
Le Script PHP Jeedom que j’avais fourni à @Richard semblait fonctionner. Si vous basculez sur Jeedom, je suis sûr que @Richard pourra vous aider
Cdt
Attachments:
You must be logged in to view attached files.00 -
Bonjour.
Je confirme le script fonctionne bien, j’ai fait aussi des fichiers .CGX spécifiques pour ne pas toucher au programme de base.
Cela évite si update du programme de perdre ces modifs, il faut juste penser à faire une sauvegarde des .cgx et de les réinstaller.il faut savoir aussi que le plugin WES de Jeedom fonctionne bien et qu’il couvre déjà beaucoup de choses.
La bidouille c’est bien, par contre pas simple si l’on ne maitrise pas. J’ai galéré avant de sortir un truc qui tourne, et encore je ne comprends pas tous.
Merci pour l’aide de @cdlog2 qui m’avait bien aidé sur le sujet et sans qui je n’aurai rien de fonctionnel.
Bonne soirée
00 -
alors mon wes est
« Version Serveur F417 V2
Version Micrologiciel V0.84A4
Version site WEB V0.84A4 B03
Espace libre sur la micro SD 7.072 GO »et je joins le fichier demandé
00 -
Bonjour,
Je souhaite renvoyer les infos de mon WES V2 vers Domoticz.
Cela fonctionne pour les sondes de temperature, mais pas pour les relais ou switch virtuel.
Comment doivent ils etre créé coté domoticz ?
Meme question pour les infos du Linky, comment les créer coté domoticz pour qu’ils soient mis à jour via le script LUA ?
merci
00
-
Étiqueté : Domoticz
- Vous devez être connecté pour répondre à ce sujet.