Aller au contenu
Julien92130

HC3 et pompe à chaleur Daikin

Recommended Posts

Hello

 

Voici mon premier sujet. Comme je le disais dans ma présentation, je viens de finir ma migration HCL > HC3, qui s’est plutôt bien passée. Là où je galère en revanche, c’est sur le portage de mes VD vers les QA…

 

Ma question concerne le contrôle d’une pompe à chaleur. Grâce aux API Daikin, je pilotais, via donc des VDs, ma PAC :

 

1209068284_Screenshot2020-04-26at19_28_39.thumb.png.cd6cd0c9e6138d07e2f0457ba90ad2b0.png

 

Je cherche à reproduire exactement la même chose sur HC3. Je m'oriente donc vers les QA mais je n'ai malheureusement AUCUNE idée de comment porter ces 2 appels :( 

 

Si une âme charitable pouvait m'aider / m'orienter un peu, ça serait vraiment top ! 

 

Portez-vous bien :)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

un truc du genre

 

en copiant l'url complet ainsi que la chaîne d'authorisation... faut essayer...

 

local http = net.HTTPClient({ timeout = 20000 })
http:request("http://192.168.1.151/aircons/......&f_dir=0", {
    options = {
        header = {['Authorization'] = 'Basic .........'},
        method = "GET",
    },        
    success = function(status) print(json.encode(status)) end,
    error = function(error) print(json.encode(error)) end
})

 

a mettre dans le turnOn / Off d'un QA binary switch

 

Modifié par jjacques68

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci ! Effectivement, j'ai réussi à "bidouiller" un truc qui ressemble à ta solution.

 

Je suis parti sur une QA de type Binary switch. 

 

Amis développeurs, ne m'en voulait pas, c'est sûrement très crado mais ça fait le job :) Si vous avez des suggestions d'améliorations n'hésitez pas. 

 

Je copie/colle pour celles et ceux que ça peut aider : 

function QuickApp:turnOn()
    self:debug("binary switch turned on")
    self:updateProperty("value", true)
    local address = "http://192.168.1.150/aircon/set_control_info?pow=1&mode=3&stemp=21.0&shum=0&f_rate=A&f_dir=0"

    self.http:request(address, {
        options={
            headers = { 
                Accept = "application/json"
            },
            checkCertificate = true,
            method = 'GET'
        },
        success = function(response)
            self:debug("response status:", response.status) 
            self:debug("headers:", response.headers["Content-Type"]) 
            local data = json.decode(response.data)  
            if data.contents and data.contents.quotes and data.contents.quotes[1] then
                local quote = data.contents.quotes[1].quote
                self:debug(quote)
                self:updateView("label", "text", quote) 
            end
        end,
        error = function(error)
            self:debug('error: ' .. json.encode(error))
        end
    })
end

function QuickApp:turnOff()
    self:debug("binary switch turned off")
    self:updateProperty("value", false)
    local address = "http://192.168.1.150/aircon/set_control_info?pow=0&mode=3&stemp=21.0&shum=0&f_rate=A&f_dir=0"

    self.http:request(address, {
        options={
            headers = { 
                Accept = "application/json"
            },
            checkCertificate = true,
            method = 'GET'
        },
        success = function(response)
            self:debug("response status:", response.status) 
            self:debug("headers:", response.headers["Content-Type"]) 
            local data = json.decode(response.data)  
            if data.contents and data.contents.quotes and data.contents.quotes[1] then
                local quote = data.contents.quotes[1].quote
                self:debug(quote)
                self:updateView("label", "text", quote) 
            end
        end,
        error = function(error)
            self:debug('error: ' .. json.encode(error))
        end
    })    
end

function QuickApp:onInit()
    self:debug("onInit")
    self.http = net.HTTPClient({timeout=3000})
end
  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

nickel ! :) 

 

tu n'as pas eu de soucis avec l'authentification visiblement ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Apparement non :lol:

 

Sur ma HCL j’avais eu besoin de le rajouter mais là non. 

 

 

Merci pour le support.

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour Julien92130,

 

Je réactive ton sujet d'il y a un an :rolleyes: car cela m'intéresse en tant que propriétaire d'unités Emura Daikin et de la HC3 Fibaro

J'aimerai ajouter l'utilisation de "/aircon/get_sensor_info" pour avoir l'affichage des infos sur les températures

As tu une idée pour intégrer cela ?

 

Merci :)

 

 

Modifié par JLT

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour JLT,

 

Je n'y ai pas consacré beaucoup plus de temps. A l'heure actuelle j'utilise une QA trouvée sur le forum officiel de Fibaro : 

https://forum.fibaro.com/topic/50207-hc3-quick-app-for-controlling-ac-units/#comment-207151

 

Les fonctionnalités que proposent cette QA me suffisent : 

 

1608324114_Screenshot2021-06-16at14_12_07.thumb.png.074f069e85f86ee5d17cce2232b54851.png

 

Pour le reste (notamment le suivi de la consommation), j'ai écrit ma propre QA qui requête les unités par l'API Daikin et qui remonte ça dans un dashboard Grafana. Je peux te copier-coller cette QA comme base de départ à adapter pour récupérer les infos que tu cherches :

 

1189315849_Screenshot2021-06-16at14_15_56.thumb.png.12d0ac2c2617e3bdffc46155a28b9ba9.png

 

 

 

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir Julien92130,

 

J'avais vu cette QA sur le forum mais elle se limite au "get_control_info" et moi c'est le "get_sensor_info" qui m'intéresse.

 

Génial que ton QA de suivi de consommation :60:

 

Je n'ai/connaissais pas grafana (ca à l'air pas mal du tout), je souhaite juste afficher les données des sensor dans "Yubil" de Fibaro, mais surtout, de récupérer ces données pour pouvoir les utiliser pour créer des scènes Fibaro pour les Emura Daikin !

 

En fait jusqu'il y peu, je passais par IFTTT, mais pour une raison inconnue et malgré mes multiples tentatives (désinstall, reset, réinstall...), le "Out of Home" de l'app "Controller" de Daikin ne fonctionne plus (soit ne trouve pas le serveur, soit ne trouve pas les unités)

Et donc du même coup, IFTTT ne trouve plus mes unités Daikin et donc ne réalise plus les scénarios !

Tout ça me fait penser à un problème de serveur chez Daikin (qui ne le reconnait pas pour l'instant, vu que pas d'autres signalement... certainement du au nombre faible d'utilisateur de cette fonction....)

 

Pour revenir à ta proposition, oui je suis preneur, même si je ne suis pas un spécialiste en QA, en cherchant je trouverai ce qu'il faudra adapter ;)

 

Merci d'avance

Modifié par JLT

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut JLT, 

 

Voilà une QA très simple, et surement loin d'être parfaite (je ne suis pas du tout développeur), mais qui fait le job: 

Daikin_sensors.fqa

 

Sur mes unités (Daikin FTXA15AW), le "get_sensor_info" me retourne quelque chose comme ça : 

ret=OK,htemp=27.0,hhum=50,otemp=22.0,err=0,cmpfreq=0

La QA jointe récupère ces infos et créée des variables de QA avec chacune des valeurs (htemp, hhum, otemp). 

 

Il te suffit de changer l'adresse IP et d'ajouter/enlever les champs que te retournent tes unités. 

 

Hope that helps :) 

  • Thanks 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Slt Julien92130,

 

Merci beaucoup.

 

J'ai commencé à décrypter (lentement quand on est pas un spécialiste ;))

 

Dur dur mais ca y est :)

 

J'ai compris ton astuce de récupération des données du "get_sensor_info", simple mais fallait le savoir :60:

 

Peut être que c'est différent chez toi, mais j'ai du adapter tes 3 lignes concernées :

 

htemp = string.sub(apiResult, 14, -36)

Car ca prenait trop de données, j'ai changé en 

htemp = string.sub(apiResult, 14, 17)

donnant ainsi les numéros des caractères à récupérer : "25.0"

 

Il y a apparemment une différence pour l'humidité, car chez moi cela affiche "=-" :

ret=OK,htemp=25.0,hhum=-,otemp=19.0,err=0,cmpfreq=14,mompow=2

Mes unités sont des Emura FTXJ, peut être est ce du à la différence avec tes FTXA ?

 

Un autre souci de débutant, chez moi ;)

Je veux assigner l'affichage des résultats aux boutons.

 

Edit : c'est ok j'ai trouvé une solution :)

 

 

image.png.e85ad36169d665211fa9e14c1b19b456.png => image.png.92c708e6e208e5d447c28aa29b682314.png => image.png.b88fdf6f9d8a7a5452435e17da0d75a9.png

 

image.png.bc82ee6cf9afda3f8d7fc7604a247897.png => image.png.eaf88cfb1d1bfa4b504bbf2ec817828c.png => image.png.b287b1bbdad9ef34f4424b6c8eb107b4.png

 

Petite question : pourquoi la "Valeur :" est sur "0" ?

 

Edit 2 : la proposition fonctionne tant qu'il n'y a pas d'autre chiffre, et là une faille se présente :

"ret=OK,htemp=26.0,hhum=-,otemp=19.0,err=10000,cmpfreq=0"

Avec l'apparition de 10000 pour err, le résultat d'affichage de cmpfreq n'est plus celui après le signe "=" mais les lettres "re" du mot "cmpfreq".

Une solution est de décompter les caractères au lieu de les compter (pour la dernière valeur évidemment)

Modifié par JLT

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @JLT,

 

Désolé je n'avais pas vu ta réponse. Bravo :) Je suis loin, TRES loin, d'être aussi un spécialiste, mais c'est en forgeant qu'on devient forgeron )) 

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello,

 

Je sèche sur la création d'un "child" afin de créer une scène Fibaro (pour remplacer IFTTT que Daikin ne prend plus en charge).

J'ai lu les manuels d'initiation mais j'arrive pas à transposer ici.

 

Quelqu'un a une idée à proposer ?

 

:)

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @JLT,

 

Je n'ai jamais eu besoin de créer des child devices, je ne peux pas t'aider, mais que cherches-tu à faire exactement ? 

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @Julien92130,

 

En fait, je voudrais, par exemple, créer une scène qui allume une unité Daikin lorsque la température passe un seuil défini à l'avance.

un peu comme la fonction que j'avais avec IFTTT précédemment :

image.thumb.png.61ff2d7b926700df87f442054ab1a7ae.png

 

Ca doit être faisable avec un QA mais pas évident pour un débutant comme moi... :huh:

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, c'est même assez "simple" (mais il faut se plonger un peu dans le LUA :)). 

 

Pour ma part j'ai : 

- une QuickApp par unité Daikin

- de multiples scènes qui interagissent avec ces QA en fonction des scénarios que je souhaite couvrir (Ex.: il fait chaud, le soir, je suis chez moi, j'allume la clim dans la chambre).

 

Les QA que j'utilisent pour gérer mes unités Daikin sont celles de mon message du 16 juin sur cette page, ensuite, depuis les scènes, j'appelle les QA de cette façon :

fibaro.call(431,"setVariable","ac_stemp","21.0")

fibaro.call(431, "btnPowerPressed")

fibaro.call(431, "btnModeCoolPressed")

Il te "suffit" donc de récupérer le modèle de QA, de l'importer en l'adaptant à ton installation, puis de créer tes scènes. Ca n'est pas très très compliqué mais c'est faisable, il faut juste se plonger un peu dedans. 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci @Julien92130

 

tu es apparemment plus performant que moi en lua ;) 

 

Je comprends ton explication des "fibaro.call"

Mais pour les conditions, ?

j'ai essayé sur ton conseil de passer à du lua pour la scène :huh:

 

j'ai fait une conversion en lua d'une tentative de création via bloc

en y apportant quelques modifications, mais j'avoue être dans le brouillard...

Est ce que la condition "si température intérieure au-dessus de 22.0 C°" est bien libellée ?

Comment boucler cette scène, style "relire la condition chaque 5 minutes" ?

Et puis, comment faire la différence entre l'action On et l'action OFF car là si je lance la scène, soit elle arrête l'unité si elle est ON, soit elle la démarre si elle est OFF (logique car l'action ne fait que déclencher le bouton power sans tenir compte de son état)

 

image.png.caeb8f46c296a1d96a5ea6e112c73abc.png

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @JLT,

 

C'est bien essayé mais non :=) Je suis un peu pris par mon boulot cette semaine, je n'ai pas trop le temps de te répondre ou t'expliquer, mais c'est un peu plus compliqué que ça... J'essaye de t'aider un peu plus tard quand ça se sera calmé... Mais il te faut quand même quelques notions de dev LUA pour te lancer, ou lire des exemples de scènes déjà écrites. J'ai pas mal appris aussi avec la documentation de Fibaro à cette adresse : 

https://manuals.fibaro.com/home-center-3-lua-scenes/

 

Bon courage, rien n'est impossible :) 

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut @Julien92130, est-ce que tu pourrais partager le QA qui permet de récupérer les infos de consommation des PAC ?  ou simplement envoyer la commande que tu utilises ?

et le top, si tu as la possibilité de partager ca, ce serait la partie Grafana, ca m'intéresse de voir comment tu a construit ton dashboard, je pense éventuellement faire un truc comme ca aussi par la suite.

merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Cardane, 

 

Voilà la QA que j'utilise pour récupérer la conso. 

 

Pour Grafana, je me suis basé sur ce thread sur le forum officiel Fibaro (j'y ai partagé mon dashboard il y a quelques temps) : 

https://forum.fibaro.com/topic/47604-howto-hc2-grafana-influxdb/

 

Le principe : je me base sur une scène récupérée sur ce thread, qui récupère les infos que je souhaite mettre sur mon dashboard et les stocks dans une base de données Influxdb (hébergée sur mon NAS Synology). Ensuite, je connecte cette source de donnée sur mon dashboard Grafana et voilà. 

Daikin_Conso.fqa

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Super, merci, je regarde ca à tête reposée

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

je cherche désespérément à incrémenter ce module avec les valeurs température intérieure, température ext, et humidité et les afficher dans un label

Daikin_AC (1).fqa

 

de plus le "set mode" n'actionne rien

 

edit:

 

je cherche à intégrer ceci dans le main, mais j'avoue de pas y arriver

je ne sais pas ou

--===============================================
-- AFFICHAGE des temperature in/out et humidité
--===============================================

function QuickApp:onInit()
    self:debug("OnInit") 
    self.http = net.HTTPClient({timeout=3000})
    self:loop("")
     
end

-- Fonction pour formater le retour de l'API
function split(s)
  local pattern = "/"
  local maxsplit = -1
  local s = s
  local t = {}
  local patsz = #pattern
  while maxsplit ~= 0 do
    local curpos = 1
    local found = string.find(s, pattern)
    if found ~= nil then
      table.insert(t, string.sub(s, curpos, found - 1))
      curpos = found + patsz
      s = string.sub(s, curpos)
    else
      table.insert(t, string.sub(s, curpos))
      break
    end
    maxsplit = maxsplit - 1
    if maxsplit == 0 then
      table.insert(t, string.sub(s, curpos - patsz - 1))
    end
  end
  output = t
end

-- Fonction d'arrondi
function round(number, precision)
   local fmtStr = string.format('%%0.%sf',precision)
   number = string.format(fmtStr,number)
   return number
end

function QuickApp:loop(text) 
    local interval = 3600

    -- PAC SALON
    local url =  "http://" .. "192.168.1.245" .. "/aircon/get_sensor_info"
    self.http:request(url, {
        options={
            headers = {Accept = "application/json"}, method = 'GET'}, success = function(response)
            --self:debug("response status:", response.status) 
            --self:debug("headers:", response.headers["Content-Type"]) 
            apiResult = response.data
            print(apiResult)
            -- exemple de retour : 
                   --ret=OK,htemp=24.0,hhum=40,otemp=8.0,err=0,cmpfreq=0,mompow=1

            ----------------------------------------------
            -- Récupération des données
            ----------------------------------------------
            htemp = string.sub(apiResult, 14, 17)
            hhum = string.sub(apiResult, 24, 25)
            --otemp = string.sub(apiResult, 33, 36) 
            otemp = string.sub(apiResult, 33, -26)
            ----------------------------------------------
            -- Création des variables de QuickApp
            ----------------------------------------------
            self:setVariable("htemp", htemp)
            self:setVariable("hhum", hhum)
            self:setVariable("otemp", otemp)

            --afficher données
             
             self:updateView("Lbl1", "text", "Temp. INT = "..htemp .. "°C")
             self:updateView("Lbl2", "text", "HUMID = "..hhum .. "%")
             self:updateView("Lbl3", "text", "Temp. EXT = "..otemp .. "°C")
        end,
            error = function(error)
            self:debug('error: ' .. json.encode(error))
        end        
    })

    -- LOOP
    fibaro.setTimeout(tonumber(interval)*1000, function() -- Vérifie toutes les n secondes les nouvelles données
        self:loop(text)
    end)
end
--=================================================
--===================================================

 

 

Modifié par flamalex
  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

@Julien92130

Ton grafana me plais beaucoup

serai t’il possible de partager ta réalisation

Merci

Modifié par flacon030

Partager ce message


Lien à poster
Partager sur d’autres sites

J'arrive à intégrer les températures actuelles OK, (ok pour la lecture aircon/get_sensor_info)

mais comment fonctionne la récupération des températures de consigne chaud/froid du QA "Système HVAC automatique"  "coolingThermostatSetpoint et heatingThermostatSetpoint"

Je ne trouve rien sur le net, concernant l'exploitation de ce QA :rolleyes:

alors c'est vrai, j'arrive 2 ans après avec mes questions :20:, mais ça fait 3 semaines que je suis sur ce QA :6:, j'avais un super VD DAIKIN sur HC2 et j'essaie de le reproduire en partant de tous les QA que je trouve sur le net pour comprendre (idem pour mon VD arrosage) quel galère :(

mais je dois très probablement mal chercher :23:

 

je souhaite reproduire ceci sur hc3

large.78CD7174-BADE-4B74-A68E-E2C404CF5871.png.4812c5512ee9282a328e3951da8a2e7b.png

Modifié par flamalex

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a une heure, flamalex a dit :

j'arrive à intégrer les températures actuelles OK, (ok pour la lecture aircon/get_sensor_info)

mais comment fonctionne la récupération des températures de consigne chaud/froid du QA "Système HVAC automatique"  "coolingThermostatSetpoint et heatingThermostatSetpoint"

Je ne trouve rien sur le net, concernant l'exploitation de ce QA :rolleyes:

alors c'est vrai, j'arrive 2 ans après avec mes questions :20:, mais ça fait 3 semaines que je suis sur ce QA :6:, j'avais un super VD DAIKIN sur HC2 et j'essaie de le reproduire en partant de tous les QA que je trouve sur le net pour comprendre (idem pour mon VD arrosage) quel galère :(

mais je dois très probablement mal chercher :23:

même réflexion en ce qui concerne le "slider" dans la QA ("DAIKIN AC LIVING SWITCH") :huh:

image.png.35b1606bfddc5fc812d0872ac71140b7.png

Quelque soit la position choisie, rien ne change pour la température demandée...

Une idée ?

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 02/07/2021 à 12:29, Cardane a dit :

Salut @Julien92130, est-ce que tu pourrais partager le QA qui permet de récupérer les infos de consommation des PAC ?  ou simplement envoyer la commande que tu utilises ?

et le top, si tu as la possibilité de partager ca, ce serait la partie Grafana, ca m'intéresse de voir comment tu a construit ton dashboard, je pense éventuellement faire un truc comme ca aussi par la suite.

merci

Salut, désolé je ne me connecte pas très souvent. Voilà ce que j'utilise pour récupérer la conso de la PAC. A adapter, et surement pas développé dans les règles de l'Art, mais ça fonctionne :60:

daikin_conso.lua

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

×