Aller au contenu

couillerot

Membres confirmés
  • Compteur de contenus

    1 505
  • Inscription

  • Dernière visite

  • Jours gagnés

    69

Messages posté(e)s par couillerot

  1. en fait dans mon QA Weatherbit, je récupère le numéro du jour (de dimanche à samedi / de 0 à 6) via os.date("%w") et vu qu'il n'existe pas dans la console, je soupçonne qu'il récupère l'info dans l'horloge... et vu que celle-ci est désynchronisée et bien le changement de jour ne s'opère pas à l'heure dite. (avec quelquefois plusieurs heures de décalage)

     

    Stef

  2. Merci Lazer pour ton aide car j'ai bientôt fini mon QA WeatherBit avec gestion auto de l'arrosage :74:

     

    il me reste encore à fignoler quelques bricoles et surtout l'intégrer en tant que fibaro.weather

     

    Stef

     

     

     

    eee40" comme valeur à "data"

    weatherbit_wall.jpg

    • Like 1
  3. {"status_code":429,"status_message":"Your request count (513) is over the allowed limit of 500 per day - Upgrade your key, or retry after 477.41666666667 minutes"}

     

    rebelotte ! :2:

     

    Stef

    • Haha 1
  4. finalement, sur le debug j'arrive obtenir quelquechose :

    debug.jpg.26db77603c7f500892283a3537a3d0e6.jpg

     

    cependant, je souhaite aller justement dans la table data / table 

     

    dans le tableau des variables, j'arrive bien à récupérer quelques donnée mais la table data est vide...

     

    debug.thumb.jpg.01d60b8aefeca28d92e4e94eea1fb499.jpg

     

    une piste, peut-être... je sèche !

     

    voici le morceau de code :

     

    self.http:request("http://api.weatherbit.io/v2.0/forecast/daily?city_id=3027642&lang=fr&key=e1fc285d7350412c80504c0670faba05", {
       	    success = function(response)
            if response.status == 200 then
                if response.data and response.data ~= "" then
                  
         		    local jsonTable = json.decode(response.data)
                   	local k, v
    				for k, v in pairs(jsonTable) do
                    	print("key = " .. k .. " - type(v) = " .. type(v))
                        self:setVariable(k,v)
                    end

     

    Stef

     

  5. d'après le début de ton code, je vois que tu allumes, tu l'éteints après 6s et de suite tu l'allumes de nouveau. Pour faire simplement du On/Off, tu devrais déjà supprimer ton 2ème fibaro.call(171,"turnOn") pour qu'il reste en position Off. 

     

    Stef

    • Like 1
  6. ne serait pas simplement un problème lié aux variables locales qui ne peuvent être appelées que dans dans leur propre QA (sans faire intervenir l'artillerie lourde), à contrario des VG ?

     

    Stef

  7. Autre question qui n'a rien à voir...

     

    voilà, je souhaite réaliser un petit QA basé sur l'api de weatherbit qui s'orienterait plutôt vers les prévisions de précipitations pour mon arrosage auto.

    j'arrive bien à extraire les datas mais je coince sur le comment récupérer toutes les variables "precip"... du data ??? et je n'y connais absolument rien en table s'il s'agit de cela... je sais bien que cela est très basique comme demande mais je ne souhaite qu'apprendre et pouvoir bricoler deux ou trois trucs :)

     

    merci

     

    Stef

     

    voici un extrait du data :

     

    weatherbit.thumb.jpg.c7abbdb953acfc6d835a949814aa3947.jpg

  8. 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

     

    • Like 2
  9. salut à tous,

     

    A des années lumières du superbe et complet QA de Barelle sur l'Eco Devices, voici une version light (et sans prétentions) spéciale HP / HC (un grand merci à Lazer pour son aide ;))

     

    Pour l'installation, rien de plus simple :

    - télécharger le QA

    - renseigner dans le tableau des variables :

                    * l'adresse IP de l'Eco Devices ("ip_Ecodevice")

                    * le coût de l'abonnement / an ("tarifAbonnement")

                    * le prix des heures Pleines / Creuses ("tarifHC" et "tarifHP")

                    * l'id utilisateur pour recevoir le rapport journalier sur la consommation HC / HP et le coût total ("id_Mail")

     

    et c'est tout...

     

    ce QA prend en compte toutes les taxes annexes pour un calcul au plus juste (TCFE, CFPE et CTA). Un reset auto est effectué tous les soirs à minuit.

    Par défaut, ce QA pointe sur la borne T1. pour se loguer sur le T2, 3 lignes seront à modifier dans le code du QA (signalées).

     

    wall.thumb.jpg.31a8a72fbb05ffcf6ef4bd7be2fefa0a.jpg

     

     

    1348096169_Electricit.png.ddc8a119ba84ee883d13b67e5623610a.png

     

    Compteur d'énergie (type EnergyMeter) :

    Compteur Energie.fqa

     

    Compteur de puissance (type PowerSensor) :

    Compteur Puissance.fqa

     

     

    Version 1.1

    - ce QA est désormais reconnu comme compteur d'énergie par la HC3 (par défaut, il indique la conso instantanée en VA)

    - affichage du tarif en cours (donc heures pleines ou heures creuses)

     

    Version 1.2

    - QA peut être considéré comme compteur d'énergie (type EnergyMeter) ou Compteur de puissance (type PowerSensor) 

     

     

    Stef

     

    • Like 2
×
×
  • Créer...