Aller au contenu

Messages recommandés

Posté(e) (modifié)

En complément de la version Eco Devices Light "T", voici la version "C" soit le compteur d'eau (enfin dans mon cas) . Ce QA est inspiré d'un VD existant sur HC2 dont je ne connais pas l'auteur.

 

Pour l'installation, rien de plus simple :

 

- installer le QA

- renseigner l'adresse IP dans le tableau des variables ("ip_Ecodevice") et l'id utilisateur pour recevoir le rapport journalier ("id_Mail)

- c'est tout...

 

Pour un calcul au plus juste, ce QA prend en compte toutes les taxes annexes (qui seront à modifier selon : cf taxes et abonnement dans la partie du code "Calcul des prix HT")

Un rapport journalier est envoyé automatiquement avec la conso du jour et le coût. Un reset auto de la conso est effectué tous les soirs à minuit.

 

 

Image.jpg.190bbb2add690d19d1f7b9bd1662d945.jpg

 

function QuickApp:onInit()
    self:updateProperty("deviceIcon", 1044)
    self.http = net.HTTPClient({timeout=3000})
    self:loop()
 end


function QuickApp:loop()

local interval = 60 -- Refresh
ipecodevice = self:getVariable("ip_Ecodevice")
idmail = self:getVariable("id_Mail")
self.http:request("http://"..ipecodevice.."/api/xdevices.json?cmd=10", {
            success = function(response)
            if response.status == 200 then
           	response = json.decode(response.data)
            self:setVariable("eau", tostring(response.INDEX_C1))

---------------------------------------
---------------------------------------
--------- CALCULS DES PRIX HT --------- 
---------------------------------------
---------------------------------------
-------------------------------------------
-- VARIABLES POUR CALCUL DU COUT (en HT) --
cout_consommation = 0.001603 --++ (consommation eau / fond renouvellement distribution)
cout_abonnement = 0.1780 --++
cout_assainissement = 0.00003 --++
cout_modernisation = 0.00015 --++
cout_pollution = 0.000316 --++ (Pollution / Prerservation)
cout_collecte = 0.1287 --++
cout_consocollecte = 0.0024 --++
-------------------------------------------
-------------------------------------------
-- TVA   
local TVA5_5 = 1.055
local TVA10 = 1.10


----------------------------------------
local function roundToNthDecimal(num, n)
local mult = 10^(n or 0)
return math.floor(num * mult + 0.5) / mult
end

-- consommation eau / fond renouvellement distribution TVA 5_5 --++
local function consommation(L)
  	local cout = tonumber(L * cout_consommation * TVA5_5) 
    return cout
end

-- redevance abonnement Distrib Eau TVA 5_5 --++
local function abonnement(J)
  	local abonnement = tonumber(J * cout_abonnement * TVA5_5) 
  	return abonnement
end

-- taxe assainissement TVA 10 --++
local function assainissement(L) 
  	local assainissement = tonumber(L * cout_assainissement * TVA10) 
  	return assainissement
end

-- taxe modernisation TVA 10 --++
local function modernisation(L)
  	local modernisation = tonumber(L * cout_modernisation * TVA10) 
  	return modernisation
end

-- taxes Pollution / Prerservation TVA 5_5 --++
local function pollution(L)
  	local pollution = tonumber(L * cout_pollution * TVA5_5) 
 	return pollution
end

-- Abonnement collecte eau TVA 10 --++
local function collecte(J)
  	local collecte = tonumber(J * cout_collecte * TVA10) 
 	return collecte
end

-- Consommation collecte eau TVA 10 --++
local function consocollecte(L)
  	local consocollecte = tonumber(L * cout_consocollecte * TVA10) 
 	return consocollecte
end
      
----------------------------------------------------------
-------- CALCULS DES PRIX JOUR / MOIS / ANNEE ------------
----------------------------------------------------------


local eau, _ = self:getVariable("eau")
eau = tonumber(eau)
local eau_jour, _ = self:getVariable("eau_jour")
eau_jour = tonumber(eau_jour)
local eau_mois, _ = self:getVariable("eau_mois") 
eau_mois = tonumber(eau_mois)
local eau_annee, _ = self:getVariable("eau_annee") 
eau_annee = tonumber(eau_annee)
local total = eau / 1000


-- local prixjour = ( euro * calc_jour)
local calc_jour = (tonumber(eau) - tonumber(eau_jour))
self:setVariable("conso_jour", tostring(calc_jour))

-- local prixmois = ( euro * calc_mois)
local calc_mois = (tonumber(eau) - tonumber(eau_mois)) 

--local prixannee = ( euro * calc_annee)
local calc_annee = (tonumber(eau) - tonumber(eau_annee)) 

----------
local prixjour = roundToNthDecimal(    
  					  consommation(calc_jour) 
  					+ assainissement(calc_jour) 
  					+ modernisation(calc_jour) 
  					+ pollution(calc_jour)
                    + consocollecte(calc_jour)
                    + collecte(1)
  					+ abonnement(1)
                 	,2)
jour = string.sub(prixjour, 1, 6)

----------
local prixmois = roundToNthDecimal(    
 					  consommation(calc_mois) 
  					+ assainissement(calc_mois) 
  					+ modernisation(calc_mois) 
  					+ pollution(calc_mois)
                    + consocollecte(calc_mois)
  					+ collecte(30)
  					+ abonnement(30)	
  		    		,2)
mois = string.sub(prixmois, 1, 6)

----------
local prixannee = roundToNthDecimal(    
  				 consommation(calc_annee) 
  					+ assainissement(calc_annee) 
  					+ modernisation(calc_annee) 
  					+ pollution(calc_annee)
                    + consocollecte(calc_annee)
  					+ collecte(365)
  					+ abonnement(365)	
  		    		,2)
annee = string.sub(prixannee, 1, 6)

        self:setVariable("prix_du_jour", tostring(prixjour))
        
        self:updateProperty("log", ""..tostring(calc_jour).." L / " ..jour.. " €")
        self:updateView("labeleau", "text", "Index EAU au " ..(string.format(os.date("%d/%m/%Y"))).. " : " ..total.. " m³")
        self:updateView("labeleau_jour", "text", "Consommation d'EAU aujourd'hui : " ..calc_jour.. " Litres")
        self:updateView("labeleau_mois", "text", "Consommation du mois : " ..calc_mois.. " Litres soit " ..mois.. " €")
        self:updateView("labeleau_annee", "text", "Consommation de l'année : " ..calc_annee.. " Litres soit " ..annee.. " €")
        self:updateView("labelcout", "text", "Coût de l'EAU aujourd'hui : " ..jour.. " €")
       
                        
        else
			print("Erreur : status=" .. tostring(response.status))
		end
      	
        end,
            error = function(error)
            self:debug('error: ' .. json.encode(error))
        end
    }) 

self:refreshTime()
       fibaro.setTimeout(tonumber(interval) * 1000 * 2, function()
                    self:loop()
            end)
end 
             
-----------------------------------------------------------
function QuickApp:refreshTime()

local currentDate = os.date("*t")
local Jour = tonumber(os.date("%d", os.time()))
local Mois = tonumber(os.date("%m", os.time()))
local Annee = tonumber(os.date("%y", os.time()))
local Heure = tonumber(os.date("%H", os.time()))
local Minute = tonumber(os.date("%M", os.time()))

-------------------------------------------------------------
---------------- ENVOI DU RAPPORT JOURNALIER ----------------
------------------------------------------------------------- 

if Heure == tonumber("23") and Minute == tonumber("58") then
prixdujour = self:getVariable("prix_du_jour")
consodujour = self:getVariable("conso_jour")
local message = ("Coût : "..prixdujour.." €\nConsommation : "..consodujour.." litres")
fibaro.call(tonumber(idmail), "sendEmail", "Consommation EAU maison du "..os.date("%d/%m/%Y"), message)
fibaro.call(20, "sendEmail", "Consommation EAU Maison du "..os.date("%d/%m/%Y"), message)
fibaro.sleep(60 * 1000)
end


-- Envoi index dans variable à minuit tous les jours
if Heure == tonumber("00") and Minute == tonumber("00") then
    local compteur = self:getVariable("eau")
    self:setVariable("eau_jour", compteur)
end
    
--------------------------------------------    
-- Envoi index au 1er du mois    
if Jour == tonumber("01") then
    local compteur = self:getVariable("eau")
    self:setVariable("eau_mois", compteur)      
end
 
-------------------------------------------- 
-- Envoi index au 1er janvier   
if Jour == tonumber("01") and Mois == tonumber("01") then
    local compteur = self:getVariable("eau")
    self:setVariable("eau_annee", compteur)   
end

            fibaro.setTimeout(1000 * 60, function()
        self:refreshTime()
    end)
end 

 

Eau.png.66836857efafa02697afb6f8d9d6714e.png

 

 

 

 

EcoDevice_Borne_C1.fqa

 

 

Stef

 

Modifié par couillerot
  • Like 2
×
×
  • Créer...