Bonjour,Gaz a écrit :Bonjour,
Je tente à mon tour de récupérer les données de mon compteur d'eau, pour le moment je suis en mode laboratoire, j'utiliserai un module fibaro FGBS001 ( car dispo dans un tiroir) pour envoyer les différents états, si pas concluant je passerais par un émetteur chinois en 433 mais après plusieurs heurūes.
Le script tourne nickel :
Mais voila au niveau de la remontée sur le compteur virtuel ça merdeCode : Tout sélectionner
--|0.004 commandArray = {} local thisfilename = "/volume1/@appstore/domoticz/samplescripts/lua/script_device_Eau.lua" local virtualcounter_idx = "567" local switchName = "Eau" if devicechanged[switchName] == 'Open' then -- Open this file and read in the first line file = io.open(thisfilename, "rb") sContents = file:read("*l") file:close() -- Parse and update the countvalue foo, snumber = sContents:match("([^,]+)|([^,]+)") local countvalue = snumber + 0.001 local newline = foo .. "|" .. string.format("%.3f", tostring(countvalue)) -- Update virtual counter device ts = virtualcounter_idx .. "|0|" .. string.format("%.3f", tostring(countvalue)) commandArray['UpdateDevice'] = ts -- Write back new counter value local file = io.open(thisfilename, "r+") file:write(newline) file:close() end return commandArray![]()
L'incrémentation se fait bien, mais la partie consommation journalière reste à 0m3 du coup les logs restent à 0 et la page rapport aussi. J'ai essayer avec tout les type de compteurs.Idem![]()
Avez-vous déjà rencontré ce problème ? Une solution ?
Apres il y le poste de js-martin et son script en python (viewtopic.php?t=1737) mais je sais pas comment l'adapter sans l'utilisation des GPIO et sur un nas Synology.
En espérant avoir de l'aide.Code : Tout sélectionner
#!/usr/bin/python # -*- coding: utf-8 -*- import json import requests import urllib import RPi.GPIO as GPIO # bibliotheque pour utiliser les GPIO import time ############# Parametres ################################# #~~~~~~~~~~ Parametres Domoticz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ domoticz_ip="192.168.0.40" domoticz_port="8080" #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # IDX de Domoticz #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # remplacer XXX par votre idx de votre widget dummy_idx={'compteur_eau': 331, 'switch_eau':330} #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Mode debug #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # si debug = True => on affiche plein de choses... (sinon mettre False) debug=True #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Choix du GPIO #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # On mesure le compteur d'eau sur le GPIO 22 pin 15 GPIO.setmode(GPIO.BCM) # mode de numérotation des pins GPIO.setup(22,GPIO.IN) # GPIO 22 (pin 15) regle en entree ############### fin des parametres ############################# CheckGoOFF=False def Loop4(channel): global CheckGoOFF global debug if GPIO.input(channel): if debug: print "---interrupt ON---" print "---Valeur CheckGoOFF="+str(CheckGoOFF) if CheckGoOFF: # On met CheckGoOFF à False CheckGoOFF=False # on met à jour le compteur incremental de Domoticz requete='http://'+domoticz_ip+':'+domoticz_port+'/json.htm?type=command¶m=udevice&idx='+str(dummy_idx['compteur_eau'])+'&svalue=1' urllib.urlopen(requete) #on passe le switch d'etat de la demi-lune à ON requete='http://'+domoticz_ip+':'+domoticz_port+'/json.htm?type=command¶m=switchlight&idx='+str(dummy_idx['switch_eau'])+'&switchcmd=On&level=0' urllib.urlopen(requete) if debug: print "***La roue a bien fait un tour, il faut incrementer le compteur de 1" r = requests.get('http://'+domoticz_ip+':'+domoticz_port+'/json.htm?type=devices&rid='+str(dummy_idx['compteur_eau'])).json() result={} index=str(r['result'][0]['Counter']) print "Compteur eau nouvel index = "+index else: CheckGoOFF=False # not needed if debug: print "=====Traitement interruptions multiples sur un meme etat====" print "=====>> CheckGoOFF vaut encore False : la demi lune n'a pas encore fait un tour... on ignore l'interruption" else: if debug: print ":::interrupt OFF:::" print ":::Valeur CheckGoOFF="+str(CheckGoOFF) print ":::La lune metalique a fait un demi-tour - on passe la valeur de CheckGoOFF a True" CheckGoOFF=True #on passe le switch d'etat de la demi-lune a OFF requete='http://'+domoticz_ip+':'+domoticz_port+'/json.htm?type=command¶m=switchlight&idx='+str(dummy_idx['switch_eau'])+'&switchcmd=Off&level=0' urllib.urlopen(requete) GPIO.add_event_detect(22, GPIO.BOTH, callback=Loop4, bouncetime=100) while True: time.sleep(100) print "..."
Je me permets de rebondir sur la question ci-dessus car j'ai le même problème avec un compteur de gaz. Le statut s'incrémente bien, mais le compteur journalier reste à 0.
J'ai utilisé le script donné au début du sujet avec un contact de porte 433mhz.
Avez-vous une idée pour faire fonctionner le compteur journalier ?
La seule solution que je vois est d'écrire sur le paramètre "CounterToday" en calculant dans le script la consommation du jour.
Qu'en pensez-vous ?
Merci par avance pour votre aide !
Baptiste
