Heatzy - reconnu par Domoticz ?

les autres capteurs : Sondes Météo, switches
Répondre
deennoo
Messages : 4006
Enregistré le : 25 janv. 2015, 02:00

Re: Heatzy - reconnu par Domoticz ?

Message par deennoo » 17 nov. 2018, 19:46

D'abord on check l'orthographe du nom de la variables.

Et puis ensuite en ssh il faut vérifier ce que donne la commande envoyer par le script.

Et ceci pour la commande et le retour d'état.

Spoiler : j'avance dans l'apprentissage de la création de plugin python pour domoticz.

Une fois fini d'améliorer les scripts existant sur du matos Xiaomi et le bluetooth, je m'attaquerai au plugin qui on besoin du json (Heatzy pilot, Heatzy Flam, Robot tondeuse Landroid)
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Charlesp
Messages : 4
Enregistré le : 10 nov. 2018, 00:09

Re: Heatzy - reconnu par Domoticz ?

Message par Charlesp » 18 nov. 2018, 16:18

deennoo a écrit :
17 nov. 2018, 19:46
D'abord on check l'orthographe du nom de la variables.

Et puis ensuite en ssh il faut vérifier ce que donne la commande envoyer par le script.

Et ceci pour la commande et le retour d'état.

Spoiler : j'avance dans l'apprentissage de la création de plugin python pour domoticz.

Une fois fini d'améliorer les scripts existant sur du matos Xiaomi et le bluetooth, je m'attaquerai au plugin qui on besoin du json (Heatzy pilot, Heatzy Flam, Robot tondeuse Landroid)
J'ai vérifié l'orthographe des variables --> RAS

En ssh j'ai vérifié ce que donnait le script retour d'état et je me suis rendu compte que les retours de l'API ne sont pas en chinois mais bien en français (stop, cft, eco et fro). J'ai modifié les caractères en chinois par les caractères en français, et là, ho miracle, ça fonctionne!!

Par contre pour la commande, je ne comprend toujours pas où ça bloque. Voici un exemple de commande envoyée que j'ai récupérée dans le log de Domoticz :
LUA: curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Gizwits-User-token: ea41a534e8fc4944a43ffc2985a71e58' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' -d '{"raw": [1,1,0]} ' 'https://euapi.gizwits.com/app/control/**********************'

J'ai bien sûr remplacé mon did par des *.

Vois-tu d'où le problème peut venir?

Heatzy n'aurait pas modifié des choses dans son API par hasard?

Merci pour ton aide

Vivement le plugin python pour Domoticz ;)

Charlesp
Messages : 4
Enregistré le : 10 nov. 2018, 00:09

Re: Heatzy - reconnu par Domoticz ?

Message par Charlesp » 22 nov. 2018, 20:38

Charlesp a écrit :
18 nov. 2018, 16:18
deennoo a écrit :
17 nov. 2018, 19:46
D'abord on check l'orthographe du nom de la variables.

Et puis ensuite en ssh il faut vérifier ce que donne la commande envoyer par le script.

Et ceci pour la commande et le retour d'état.

Spoiler : j'avance dans l'apprentissage de la création de plugin python pour domoticz.

Une fois fini d'améliorer les scripts existant sur du matos Xiaomi et le bluetooth, je m'attaquerai au plugin qui on besoin du json (Heatzy pilot, Heatzy Flam, Robot tondeuse Landroid)
J'ai vérifié l'orthographe des variables --> RAS

En ssh j'ai vérifié ce que donnait le script retour d'état et je me suis rendu compte que les retours de l'API ne sont pas en chinois mais bien en français (stop, cft, eco et fro). J'ai modifié les caractères en chinois par les caractères en français, et là, ho miracle, ça fonctionne!!

Par contre pour la commande, je ne comprend toujours pas où ça bloque. Voici un exemple de commande envoyée que j'ai récupérée dans le log de Domoticz :
LUA: curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Gizwits-User-token: ea41a534e8fc4944a43ffc2985a71e58' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' -d '{"raw": [1,1,0]} ' 'https://euapi.gizwits.com/app/control/**********************'

J'ai bien sûr remplacé mon did par des *.

Vois-tu d'où le problème peut venir?

Heatzy n'aurait pas modifié des choses dans son API par hasard?

Merci pour ton aide

Vivement le plugin python pour Domoticz ;)
Hello,

En fait avec un peu de recherche je viens de comprendre pourquoi je n'ai pas les mêmes retours d'état que vous et pourquoi le script de commande ne donne rien. C'est parce que j'ai un Heatzy Pilote de 2ème génération... :roll:

En effet, dans la doc de l'API en page 14, il y a bien une référence à une deuxième génération. Les modes sont bien: "mode : 0.cft 1.eco 2.fro 3.stop 4.cft1 5.cft2"

Par contre, j'ai essayé de modifier ton script pour remplacer {"raw": [1,1,0]} par ce qui va bien, mais je n'ai pas réussi. As-tu une idée de la modification à apporter?

Merci

Redfirebrooks
Messages : 39
Enregistré le : 23 févr. 2018, 22:02

Re: Heatzy - reconnu par Domoticz ?

Message par Redfirebrooks » 21 janv. 2019, 18:06

Bonjour

j'ai les pilotes v2 et je n'arrive pas trouver la syntaxe pour envoyer un ordre. J'ai essayé ceci (et d'autres variantes) mais ce ne passe pas:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Gizwits-User-token: MONTOKEN' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' -d '{'mode':'2.fro'}' 'https://euapi.gizwits.com/app/control/MONDEVICEID'

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Redfirebrooks
Messages : 39
Enregistré le : 23 févr. 2018, 22:02

Re: Heatzy - reconnu par Domoticz ?

Message par Redfirebrooks » 21 janv. 2019, 18:09

Redfirebrooks a écrit :
21 janv. 2019, 18:06
Bonjour

j'ai les pilotes v2 et je n'arrive pas trouver la syntaxe pour envoyer un ordre. J'ai essayé ceci (et d'autres variantes) mais ce ne passe pas:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Gizwits-User-token: MONTOKEN' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' -d '{'mode':'2.fro'}' 'https://euapi.gizwits.com/app/control/MONDEVICEID'
En fait je viens de trouver

-d '{"attrs": {"mode":"fro"}}'

ca passe avec les v2

Redfirebrooks
Messages : 39
Enregistré le : 23 févr. 2018, 22:02

Re: Heatzy - reconnu par Domoticz ?

Message par Redfirebrooks » 21 janv. 2019, 18:28

et voici le script modifié, on peut faire mieux je pense mais en tout cas ca fonctionne

Code : Tout sélectionner

--script pilotant les modules fils pilote heatzy

--Variable a personnaliser
did = 'TON DID' -- entre les '  '' --que tu recuperes avec la commande : "curl -X GET --header 'Accept: application/json' --header 'X-Gizwits-User-token: quicetrouvedanstavariableutilisateurdomoticzheatzytoken' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' 'https://euapi.gizwits.com/app/bindings?limit=20&skip=0'
selectorheatzy = 'Heatzy Salon' --ici le nom de ton selector entre les '  '
vartoken = 'heatzytoken' -- ici le nom de ta variable utilisateur de type chaîne que tu as créer pour recevoir le token entre les '  '

--Fin des variable a personnaliser


token = tostring(uservariables[vartoken])
--Confort = '[1,1,0]'   
--Eco = '[1,1,1]' 
--Hors_Gel = '[1,1,2]'
--Off = '[1,1,3]'


---
commandArray = {}
--Off
if devicechanged[selectorheatzy] == 'Off' then
    
    runcommand = "curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Gizwits-User-token: "..token.."' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' -d '{\"attrs\": {\"mode\":\"stop\"}}' 'https://euapi.gizwits.com/app/control/"..did.."'";
    os.execute(runcommand);
   --print(runcommand)
   
--Confort
elseif devicechanged[selectorheatzy] == 'Confort' then
    --print(..token..)
    runcommand = "curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Gizwits-User-token: "..token.."' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' -d '{\"attrs\": {\"mode\":\"cft\"}}' 'https://euapi.gizwits.com/app/control/"..did.."'";
    os.execute(runcommand);
   --print(runcommand)

--Eco
elseif devicechanged[selectorheatzy] == 'Eco' then
    --print(..token..)
    runcommand = "curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Gizwits-User-token: "..token.."' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' -d '{\"attrs\": {\"mode\":\"eco\"}}' 'https://euapi.gizwits.com/app/control/"..did.."'";
    os.execute(runcommand);
   --print(runcommand)

--Horsgel
elseif devicechanged[selectorheatzy] == 'Hors Gel' then
    --print(..token..)
    runcommand = "curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Gizwits-User-token: "..token.."' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' -d '{\"attrs\": {\"mode\":\"fro\"}}' 'https://euapi.gizwits.com/app/control/"..did.."'";
    os.execute(runcommand);
   --print(runcommand)
   
end
return commandArray

kwak24
Messages : 6
Enregistré le : 29 sept. 2017, 17:57

Re: RE: Re: Heatzy - reconnu par Domoticz ?

Message par kwak24 » 06 mars 2019, 11:44

Redfirebrooks a écrit :et voici le script modifié, on peut faire mieux je pense mais en tout cas ca fonctionne

Code : Tout sélectionner

--script pilotant les modules fils pilote heatzy

--Variable a personnaliser
did = 'TON DID' -- entre les '  '' --que tu recuperes avec la commande : "curl -X GET --header 'Accept: application/json' --header 'X-Gizwits-User-token: quicetrouvedanstavariableutilisateurdomoticzheatzytoken' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' 'https://euapi.gizwits.com/app/bindings?limit=20&skip=0'
selectorheatzy = 'Heatzy Salon' --ici le nom de ton selector entre les '  '
vartoken = 'heatzytoken' -- ici le nom de ta variable utilisateur de type chaîne que tu as créer pour recevoir le token entre les '  '

--Fin des variable a personnaliser


token = tostring(uservariables[vartoken])
--Confort = '[1,1,0]'   
--Eco = '[1,1,1]' 
--Hors_Gel = '[1,1,2]'
--Off = '[1,1,3]'


---
commandArray = {}
--Off
if devicechanged[selectorheatzy] == 'Off' then
    
    runcommand = "curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Gizwits-User-token: "..token.."' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' -d '{\"attrs\": {\"mode\":\"stop\"}}' 'https://euapi.gizwits.com/app/control/"..did.."'";
    os.execute(runcommand);
   --print(runcommand)
   
--Confort
elseif devicechanged[selectorheatzy] == 'Confort' then
    --print(..token..)
    runcommand = "curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Gizwits-User-token: "..token.."' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' -d '{\"attrs\": {\"mode\":\"cft\"}}' 'https://euapi.gizwits.com/app/control/"..did.."'";
    os.execute(runcommand);
   --print(runcommand)

--Eco
elseif devicechanged[selectorheatzy] == 'Eco' then
    --print(..token..)
    runcommand = "curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Gizwits-User-token: "..token.."' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' -d '{\"attrs\": {\"mode\":\"eco\"}}' 'https://euapi.gizwits.com/app/control/"..did.."'";
    os.execute(runcommand);
   --print(runcommand)

--Horsgel
elseif devicechanged[selectorheatzy] == 'Hors Gel' then
    --print(..token..)
    runcommand = "curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-Gizwits-User-token: "..token.."' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' -d '{\"attrs\": {\"mode\":\"fro\"}}' 'https://euapi.gizwits.com/app/control/"..did.."'";
    os.execute(runcommand);
   --print(runcommand)
   
end
return commandArray
Bonjour,

Je confirme ce script fonctionne. Merci.

En revanche le script pour le retour des états de l'application ne fonctionne pas.

Encore merci

Slt



Envoyé de mon CLT-L29 en utilisant Tapatalk


Redfirebrooks
Messages : 39
Enregistré le : 23 févr. 2018, 22:02

Re: Heatzy - reconnu par Domoticz ?

Message par Redfirebrooks » 24 mars 2019, 15:19

Pas de problème pour le retour d'état mais depuis ce matin (dimanche 24 mars 2019) plus possible d'envoyer les ordres à partir de domoticz.
Aucun problème avec l'app sur iOS.

La commande

Code : Tout sélectionner

curl -X GET --header 'Accept: application/json' --header 'X-Gizwits-User-token: votretoken' --header 'X-Gizwits-Application-Id: c70a66ff039d41b4a220e198b0fcc8b3' 'https://euapi.gizwits.com/app/bindings?limit=20&skip=0'
semble ne pas donner de réponse non plus

eric
Messages : 47
Enregistré le : 13 mai 2017, 15:37

Re: Heatzy - reconnu par Domoticz ?

Message par eric » 25 août 2019, 16:29

Bonjour à tous,

J'utilise Imperihome avec domoticz et il y a maintenant un support natif dans imperihome pour Heatzy.
Ca fonctionne bien mais j'aurais aimé pouvoir gérer le mode marche forcée mais ce n'est pas possible.
J'ai des plages réglées pour le chauffage de la salle de bain en semaine mais le weekend rien (enfin une programmation flat en hors gel) car on ne l'utilise pas forcement sur un créneau précis.
Du coup avec l'application souvent je mets en mode marche forcée pendant 30mn ou 1 heure et ensuite je n'ai rien à faire et ca revient en mode hors gel.

Savez vous si ce mode marche forcé et géré par l'API (j'ai des modules en v2)?
Merci
Eric

lost
Messages : 430
Enregistré le : 12 nov. 2016, 11:01

Re: Heatzy - reconnu par Domoticz ?

Message par lost » 27 août 2019, 09:23

eric a écrit :
25 août 2019, 16:29
Du coup avec l'application souvent je mets en mode marche forcée pendant 30mn ou 1 heure et ensuite je n'ai rien à faire et ca revient en mode hors gel.

Savez vous si ce mode marche forcé et géré par l'API (j'ai des modules en v2)?
Vu la description, ca doit l'être: On repasse en consigne "confort" probablement. Il y a juste que quand un ordre planifié revient sur une tranche horaire on revient à la consigne programmé.

Ca ressemble a ce que j'ai fait chez moi, mais géré automatiquement et en utilisant des modules fil-pilote Qubino en z-wave.

Cela utilise les capteurs de température/mouvement (parfois combinés) présents par ailleurs: En gros, si consigne courante < eco (donc a priori plage horaire hors-gel ou on n'est pas censé être là) mais présence détectée(on est là quand même et dans la pièce du radiateur controlé! Le status presence global de la fonction alarme est ici aussi utilisé mais pourrait être retiré) et température < 18.5°C, le radiateur le plus puissant du salon reçoit 2 ordres planifiés: Mode éco immédiat puis retour en mode eco après 30mn.

Certes, un ordre planifié dans Domoticz peut repasser d'ici là et nous remettre en HG, mais si les conditions présence/température sont de nouveau là, au 1er mouvement détecté un ordre éco repart.

C'est un script device assez simple (le module qubino est vu comme un variateur, avec des tranches de % correspondant à des ordres fil-pilote, le machin pour débilophone Heatzy je sais pas, c'est donc à adapter):

script_device_heaterOnMov.lua

Code : Tout sélectionner

-- Heater devices dynamic control script (using movement detector presence info)
-- If presence & movement detected & current level = HG (= out of usual presence
-- planning level), then send an ECO level for 30 minutes...

timeOnSec='1800'
tempLimit=18.5

presence='PresenceGlobal'

move1='MvtSalon'
heat1='Radiateur Salon'
temp1='Temperature Salon'

commandArray = {}

if (devicechanged[move1] == 'On' and otherdevices[presence] == 'On') then
	curLvl=tonumber(otherdevices_svalues[heat1])
	curTmp=tonumber(otherdevices_svalues[temp1])
	
	-- Uncomment for debug:
	-- print(heat1..": Level="..tostring(curLvl).."/Temp="..tostring(curTmp))
	
	if ((curLvl > 10) and (curLvl < 20) and (curTmp < tempLimit)) then
	    print(heat1.." HG->ECO on presence detection : Salon.")
		commandArray[1]={[heat1]='Set Level 25'}
		commandArray[2]={[heat1]='Set Level 15 AFTER '..timeOnSec}
	end
end

return commandArray
Ca permet de gérer de l'auto adaptatif, passant outre les plannings, si par exemple les enfants ont un cours qui saute et sont présents hors horaires planifiés: Ils n'ont alors à s'occuper de rien pour ne pas se cailler trop longtemps.

Maintenant, les truc connectés imposant une connexion externe pour contrôler son chez soi, perso je ne suis pas client: Le fabricant mets la clef sous la porte, une fois l'hébergement du cloud externe arrivé à échéance c'est le plus souvent bon pour la poubelle.

Mais si une appli tierce a pu implémenter le service c'est forcément qu'ils ont eu accès à une API pour contrôler le heatzy, donc que le fabricant la propose à des tiers.

Il serait alors peut-être possible d'envoyer les ordre en restant dans son LAN, si on sait comment les envoyer (probable API HTTP ou autre, qu'on pourra gérer d'un script Lua avec des commandes systeme genre curl ou autre, pour lire l'état courant et en écrire un nouveau, afin d'adapter mon script... ou bien si un peu complexe, ré-écrire cela en python).

EDIT:

En remontant un peu plus haut, il semble qu'une API ait été publiée... Par contre, là ou c'est extrêmement ballot à mon sens, c'est que cela oblige toujours à passer par l'extérieur et un domaine euapi.gizwits.com au vu des scripts, après avoir récupéré les device ID nécéssaires au controle là encore via ce domaine!

Bref, l'API publiée est celle du cloud fabricant, pas celle du module!!! On tiens des champions là et il faut vraiment aimer s'emmerder pour acheter ce genre de machin. Ou oublier toute utilisation adaptée à son besoin propre et rester sur les possibilités données par le fabricant... tant qu'il pourra ou voudra s'en occuper.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Répondre