Hauteur d'eau du puits - graphique
Hauteur d'eau du puits - graphique
Bonjour,
J'ai fabriqué une 'sonde' avec un Arduino et un module rf433 qui me renvoie dans domoticz la hauteur d'eau en mm qu'il y a dans mon puits. J'utilise dans l'Arduino la bibliothèque x10rf et dans domoticz je récupère parfaitement la hauteur avec mon module rfxcom via un dispositif rfxmeter. Le problème c'est l'affichage de cette hauteur. Rfxmeter me semble être fait que pour gérer les compteurs (mais je n'en suis pas sûr). Du coup domoticz affiche des histogrammes et des mm d'eau (consommée peut être...je ne comprends pas leur signification) alors que je souhaiterais avoir une courbe du niveau de l'eau comme celle qu'on a avec les températures par exemple.
Comment faire ? Auriez vous une solution ?
Merci par avance à tous
J'ai fabriqué une 'sonde' avec un Arduino et un module rf433 qui me renvoie dans domoticz la hauteur d'eau en mm qu'il y a dans mon puits. J'utilise dans l'Arduino la bibliothèque x10rf et dans domoticz je récupère parfaitement la hauteur avec mon module rfxcom via un dispositif rfxmeter. Le problème c'est l'affichage de cette hauteur. Rfxmeter me semble être fait que pour gérer les compteurs (mais je n'en suis pas sûr). Du coup domoticz affiche des histogrammes et des mm d'eau (consommée peut être...je ne comprends pas leur signification) alors que je souhaiterais avoir une courbe du niveau de l'eau comme celle qu'on a avec les températures par exemple.
Comment faire ? Auriez vous une solution ?
Merci par avance à tous
Re: Hauteur d'eau du puits - graphique
Salut !
Pour avoir une courbe, il vaut mieux utiliser un custom sensor sur lequel tu spécifie l'unitée voulue (mm dans ton cas) plutôt qu'un rfxmeter. Ce dernier est justement fait pour gérer un compteur, c'est à dire une valeur qui s'accumule dans le temps et non quelque chose qui va et vient comme un niveau de puit.
J'ai une question pour toi : quel capteur utilise-tu pour la mesure ? J'ai fais un truc similaire avec un hc-sr04 mais à partir d'un certain niveau j'ai des écho dans le puit qui m'empèchent de mesurer plus bas
As-tu rencontré un problème similaire ? comment l'as tu résolu ?
Pour avoir une courbe, il vaut mieux utiliser un custom sensor sur lequel tu spécifie l'unitée voulue (mm dans ton cas) plutôt qu'un rfxmeter. Ce dernier est justement fait pour gérer un compteur, c'est à dire une valeur qui s'accumule dans le temps et non quelque chose qui va et vient comme un niveau de puit.
J'ai une question pour toi : quel capteur utilise-tu pour la mesure ? J'ai fais un truc similaire avec un hc-sr04 mais à partir d'un certain niveau j'ai des écho dans le puit qui m'empèchent de mesurer plus bas
Re: Hauteur d'eau du puits - graphique
Merci pour l'info je vais regarder cela (je découvre domoticz... ).
Pour ma sonde, c'est juste un système de flotteur avec un contre poids qui fait tourner un potard 10 tours enfermé dans un pot de confiture (cf photo). Il n'y pas le flotteur sur la photo. J'ai une course de 2m. La précision doit être de l'ordre du cm au final.
Pour ma sonde, c'est juste un système de flotteur avec un contre poids qui fait tourner un potard 10 tours enfermé dans un pot de confiture (cf photo). Il n'y pas le flotteur sur la photo. J'ai une course de 2m. La précision doit être de l'ordre du cm au final.
- Pièces jointes
-
- IMG_20170911_182205-1296x2304.jpg (437.53 Kio) Consulté 7376 fois
Re: Hauteur d'eau du puits - graphique
OK, j'ai créé mon Custom sensor. Mais comment faire pour qu'il reçoive le même nombre que mon device rfxmeter ?
Re: Hauteur d'eau du puits - graphique
J'ai trouvé la réponse à ma question : C'est en faisant un script LUA avec commandArray['UpdateDevice']
Ça marche super. Merci
Ça marche super. Merci
Re: Hauteur d'eau du puits - graphique
Super !
C'est pas mal comme idée le flotteur et l'encodeur. Je vais voir si je peux me bricoler un truc dans le genre ! Merci du tuyau
C'est pas mal comme idée le flotteur et l'encodeur. Je vais voir si je peux me bricoler un truc dans le genre ! Merci du tuyau
Re: Hauteur d'eau du puits - graphique
Bonjour
Je reviens sur ce sujet un peu ancien évoqué par nico81 et pour avoir votre aide pour corriger un script LUA
J'ai moi même fabriqué un capteur de pression absolue dans un puit de 10m acquis par un arduino NANO (je peux détailler pour serait intéressé)
J'utilise la bibliothèque X10RF pour envoyer en RF 433 Mhz la data hauteur d'eau à Domoticz pour NAS
Je la visualise ensuite dans Domoticz comme un RFXMETER en mode compteur
Mais la valeur exacte n'est pas affichée dans le champ en haut à droite mais dans celui du bas en petit et pas exploitable pour la traiter par la ensuite.
La solution donnée semble de coller un script en LUA dans "Evenement" de Domoticz en créant un nouveau "custom sensor" qui va capter la donnée dans le champ du bas de RFXMETER compteur existant
Je ne connais pas le langage LUA et J'ai tenté ce script à l'aveugle mais bien sur il ne fonctionne pas
Quelqu'un pourrait il m'aider à corriger ce script très court ?
Je vous remercie
depth_sensor = 'hauteur RFXMETER'
pct_sensor = 'hauteur CUSTOM SENSOR '
pct_sensor_id = 54
---------------------------------------
commandArray = {}
if (devicechanged[depth_sensor])
then depth = otherdevices_svalues[depth_sensor]
commandArray[1] = {['UpdateDevice'] = depth}
end
return commandArray
Je reviens sur ce sujet un peu ancien évoqué par nico81 et pour avoir votre aide pour corriger un script LUA
J'ai moi même fabriqué un capteur de pression absolue dans un puit de 10m acquis par un arduino NANO (je peux détailler pour serait intéressé)
J'utilise la bibliothèque X10RF pour envoyer en RF 433 Mhz la data hauteur d'eau à Domoticz pour NAS
Je la visualise ensuite dans Domoticz comme un RFXMETER en mode compteur
Mais la valeur exacte n'est pas affichée dans le champ en haut à droite mais dans celui du bas en petit et pas exploitable pour la traiter par la ensuite.
La solution donnée semble de coller un script en LUA dans "Evenement" de Domoticz en créant un nouveau "custom sensor" qui va capter la donnée dans le champ du bas de RFXMETER compteur existant
Je ne connais pas le langage LUA et J'ai tenté ce script à l'aveugle mais bien sur il ne fonctionne pas
Quelqu'un pourrait il m'aider à corriger ce script très court ?
Je vous remercie
depth_sensor = 'hauteur RFXMETER'
pct_sensor = 'hauteur CUSTOM SENSOR '
pct_sensor_id = 54
---------------------------------------
commandArray = {}
if (devicechanged[depth_sensor])
then depth = otherdevices_svalues[depth_sensor]
commandArray[1] = {['UpdateDevice'] = depth}
end
return commandArray
Re: Hauteur d'eau du puits - graphique
Code : Tout sélectionner
--
-- Domoticz passes information to scripts through a number of global tables
--
-- otherdevices, otherdevices_lastupdate and otherdevices_svalues are arrays for all devices:
-- otherdevices['yourotherdevicename'] = "On"
-- otherdevices_lastupdate['yourotherdevicename'] = "2015-12-27 14:26:40"
-- otherdevices_svalues['yourotherthermometer'] = string of svalues
--
-- uservariables and uservariables_lastupdate are arrays for all user variables:
-- uservariables['yourvariablename'] = 'Test Value'
-- uservariables_lastupdate['yourvariablename'] = '2015-12-27 11:19:22'
--
-- other useful details are contained in the timeofday table
-- timeofday['Nighttime'] = true or false
-- timeofday['SunriseInMinutes'] = number
-- timeofday['Daytime'] = true or false
-- timeofday['SunsetInMinutes'] = number
-- globalvariables['Security'] = 'Disarmed', 'Armed Home' or 'Armed Away'
--
-- To see examples of commands see: http://www.domoticz.com/wiki/LUA_commands#General
-- To get a list of available values see: http://www.domoticz.com/wiki/LUA_commands#Function_to_dump_all_variables_supplied_to_the_script
--
-- Based on your logic, fill the commandArray with device commands. Device name is case sensitive.
--
commandArray = {}
offset = 0 -- offset a régler en accord avec l'arduino et la hauteur d'eau reelle du puits
Nbas = tonumber(uservariables['seuil min puits']) -- niveau min pour l'alerte
Nhaut = tonumber(uservariables['seuil ok puits']) -- niveau haut pour l'alerte
Npuits = tonumber(uservariables['niveau puits']) -- niveau actuel du puits
print ("All based event fired");
-- loop through all the devices
for deviceName,deviceValue in pairs(otherdevices) do
-- if (deviceName=='myDevice') then
-- if deviceValue == "On" then
-- print("Device is On")
-- elseif deviceValue == "Off" then
-- commandArray['a device name'] = "On"
-- commandArray['Scene:MyScene'] = "Off"
-- end
-- end
end
--print(otherdevices['puits'])
--print(otherdevices[' puits'])
if (devicechanged['dummy puits'])
then
print("dummy puits changé")
print(tonumber(otherdevices_svalues['dummy puits']))
if tonumber(otherdevices_svalues['dummy puits'])>10000
then -- Il s'agit d'une communication qui n'est pas en rapport à la hauteur d'eau qui qui signifie qu'il y a eu une micro coupure, il faut donc renvoyer l'ordre aux prises
print("coupure détectée") -- ecriture dans le log
commandArray['coupure courant détectée']="On" --Bascule du bouton d'alarme sur On pour garder une trace
if otherdevices['Inter pompe']=='Off' -- on remet le relais dans le meme état que dans domoticz avant la coupure
then commandArray['Inter pompe'] = "Off"
else commandArray['Inter pompe'] = "On"
end
else
if math.abs(tonumber(otherdevices_svalues['dummy puits'])-offset-Npuits)>25 --on filtre
then
Npuits = (otherdevices_svalues['dummy puits']-offset+Npuits)/2
commandArray['Variable:niveau puits']= tostring(Npuits)
commandArray['UpdateDevice']='394|0|'..tostring(Npuits)
else commandArray['UpdateDevice']='394|0|'..tostring(Npuits)
end
local niveau = tonumber(otherdevices_svalues['dummy puits'])-offset;
--print(otherdevices['Alertes email puits'])
-- GESTION D'ENVOI D'EMAIL POUR LES ALERTES DU NIVEAU DU PUITS
if (otherdevices['Alertes email puits']=='On')
then
if (niveau<= Nbas)
then
commandArray['Alertes email puits'] = "Off" -- on desactive l'envoi d'email pour ne pas saturer la boite
print("Le niveau est bas")
commandArray['SendEmail']='Alerte puits#Le niveau est bas#nicolas.deshaies@live.fr'
else
if (niveau>= Nhaut)
then
commandArray['Alertes email puits'] = "Off"
print("Le niveau est bon")
commandArray['SendEmail']='Alerte puits#Le niveau est ok#nicolas.deshaies@live.fr'
end
end
end
-- GESTION DE LA COUPURE DE L'INTER DE LA POMPE EN FONCTION DU NIVEAU D'EAU
if (otherdevices['coupure pompe automatique']=='On')
then
if (niveau<= Nbas) and (otherdevices['Inter pompe']=='On')
then
commandArray['Inter pompe'] = "Off"
print("Pompe coupée")
commandArray['SendEmail']='Alerte puits#La pompe du puits a été coupée automatiquement#nicolas.deshaies@live.fr'
else
if (niveau>= Nhaut)and (otherdevices['Inter pompe']=='Off')
then
commandArray['Inter pompe'] = "On"
print("La pompe est remise en service")
commandArray['SendEmail']='Alerte puits#La pompe a été remise en service#nicolas.deshaies@live.fr'
end
end
end
end
end
-- loop through all the variables
for variableName,variableValue in pairs(uservariables) do
-- if (variableName=='myVariable') then
-- if variableValue == 1 then
-- commandArray['a device name'] = "On"
-- commandArray['Group:My Group'] = "Off AFTER 30"
-- end
-- end
end
return commandArray
Re: Hauteur d'eau du puits - graphique
bonjour,
Ci dessus tout mon script de "gestion" du puits.
Ce qui vous intéresse surtout est cette commande :
commandArray['UpdateDevice']='394|0|'..tostring(Npuits)
394 est l'idx de mon custom sensor correspondant au niveau d'eau dans le puits
Ci dessus tout mon script de "gestion" du puits.
Ce qui vous intéresse surtout est cette commande :
commandArray['UpdateDevice']='394|0|'..tostring(Npuits)
394 est l'idx de mon custom sensor correspondant au niveau d'eau dans le puits
Re: Hauteur d'eau du puits - graphique
Encore merci !
Effectivement c'est cette commande qu'il me faut pour récupérer le niveau d'eau du compteur RFXMETER
Après dans mon cas le script est beaucoup plus court car c'est l'Arduino qui fait la gestion de la pompe et d'une électrovanne de trop plein.
Domoticz va juste me servir à afficher le niveau du puits sur mon téléphone et ensuite je teste ce niveau pour m'envoyer des alertes SMS donc avec Blockly c'est simple et pas besoin de me plonger dans LUA.
Je vais tester quand j'aurais du temps et je vous fais un retour
Merci
Effectivement c'est cette commande qu'il me faut pour récupérer le niveau d'eau du compteur RFXMETER
Après dans mon cas le script est beaucoup plus court car c'est l'Arduino qui fait la gestion de la pompe et d'une électrovanne de trop plein.
Domoticz va juste me servir à afficher le niveau du puits sur mon téléphone et ensuite je teste ce niveau pour m'envoyer des alertes SMS donc avec Blockly c'est simple et pas besoin de me plonger dans LUA.
Je vais tester quand j'aurais du temps et je vous fais un retour
Merci