Page 3 sur 9
Re: Device announce Ikea Tradfi et hue pour last update
Publié : 25 mars 2019, 21:50
par pitchoun
Ça ressemble un peu à un bug domoticz tout ça!
Il y a une confusion entre last seen et lastupdate qui veulent dire une fois l'un une fois l'autre.
Je ne vois aucun problème. Le comportement est en accord avec ce qui est documenté.
Je pense que l'idée du Touch est de faire un update (purement au niveau de la base de données) sans mettre en route toute la mécanique Domoticz afin de ne pas impacter les performances.
Les Notifications ( qui declenchent ) dzVents et LUA scripts sont liés à un changement d’état. Ici ce n'est pas le cas.
Quant au Refresh, c'est a utiliser à l'intérieur du Plugin pour rafraîchir la structure Devices du plugin ou cas où il y a eu update de la base sans notification.
Re: Device announce Ikea Tradfi et hue pour last update
Publié : 26 mars 2019, 07:55
par benp
pitchoun a écrit : 25 mars 2019, 21:50
Ça ressemble un peu à un bug domoticz tout ça!
Il y a une confusion entre last seen et lastupdate qui veulent dire une fois l'un une fois l'autre.
Je ne vois aucun problème. Le comportement est en accord avec ce qui est documenté.
Je ne suis pas sur que l'on se soit bien compris.
Pour moi l'incohérence est que lastUpdate retourne:
- lastSeen avec l'API URL
- lastUpdate avec dzvents
Est-ce le fonctionnement voulu et documenté?
Pour moi, lastSeen et last update devraient être accessibles indépendamment du la méthode d'interrogation utilisé.
Re: Device announce Ikea Tradfi et hue pour last update
Publié : 26 mars 2019, 10:14
par Deufo
benp a écrit : 26 mars 2019, 07:55
Je ne suis pas sur que l'on se soit bien compris.
Pour moi l'incohérence est que lastUpdate retourne:
- lastSeen avec l'API URL
- lastUpdate avec dzvents
Est-ce le fonctionnement voulu et documenté?
Pour moi, lastSeen et last update devraient être accessibles indépendamment du la méthode d'interrogation utilisé.
Pipiche en a causé avec le gars qui bosse sur cette partie, ce n'est malheureusement pas possible de mettre à jour le lastupdate côté structure domoticz sans appel côté script. C'est pourquoi je me suis tourné vers l'appel à l'API.
Je ne trouve effectivement pas cela très propre car on a 2 valeurs différentes en fonction de l'appel.
Re: Device announce Ikea Tradfi et hue pour last update
Publié : 26 mars 2019, 16:43
par benp
Deufo a écrit : 26 mars 2019, 10:14
Pipiche en a causé avec le gars qui bosse sur cette partie, ce n'est malheureusement pas possible de mettre à jour le lastupdate côté structure domoticz sans appel côté script. C'est pourquoi je me suis tourné vers l'appel à l'API.
Je ne trouve effectivement pas cela très propre car on a 2 valeurs différentes en fonction de l'appel.
On parle de ce post?:
https://www.domoticz.com/forum/viewtopi ... 65&t=27248
Personnellement, j'aurais préféré avoir aussi l'appel de script mais ça ne doit pas convenir à tout le monde...
Est-ce que la syntaxe dans le plugin est Devices[Unit].Update() au lieu de Devices[Unit].Touch() pour faire l'appel au script. Si oui, je vais tester ça dans le plugin.
Re: Device announce Ikea Tradfi et hue pour last update
Publié : 26 mars 2019, 17:18
par Deufo
C'est bien ce sujet là.
L'update va mettre à jour la db et donc appeler les scripts, ce que l'on ne souhaite pas s'il n'y a pas de changement d'état.
Re: Device announce Ikea Tradfi et hue pour last update
Publié : 26 mars 2019, 21:17
par pitchoun
benp a écrit : 26 mars 2019, 16:43
Deufo a écrit : 26 mars 2019, 10:14
Pipiche en a causé avec le gars qui bosse sur cette partie, ce n'est malheureusement pas possible de mettre à jour le lastupdate côté structure domoticz sans appel côté script. C'est pourquoi je me suis tourné vers l'appel à l'API.
Je ne trouve effectivement pas cela très propre car on a 2 valeurs différentes en fonction de l'appel.
On parle de ce post?:
https://www.domoticz.com/forum/viewtopi ... 65&t=27248
Personnellement, j'aurais préféré avoir aussi l'appel de script mais ça ne doit pas convenir à tout le monde...
Est-ce que la syntaxe dans le plugin est Devices[Unit].Update() au lieu de Devices[Unit].Touch() pour faire l'appel au script. Si oui, je vais tester ça dans le plugin.
La syntax n'a rien a voir, puisque quand pour utiliser Update il faut OBLIGATOIREMENT fournir nValue et sValue. Comme indiqué dans le post ci-dessus en référence, l'objectif est de ne pas declencher de notification
Pour moi entre LastUpdate (dsVent) n'a rien a voir avec lastSeen (API Json).
LastSeen est l'information de la base de données , ce qui est fournie par l'API json.
LastUpdate est une information fournie par le Framework dzVent et qui correspond à la dernière mise-a-jour de l'etat du device.
Re: Device announce Ikea Tradfi et hue pour last update
Publié : 26 mars 2019, 22:22
par benp
pitchoun a écrit : 26 mars 2019, 21:17
Pour moi entre LastUpdate (dsVent) n'a rien a voir avec lastSeen (API Json).
LastSeen est l'information de la base de données , ce qui est fournie par l'API json.
LastUpdate est une information fournie par le Framework dzVent et qui correspond à la dernière mise-a-jour de l'etat du device.
Je suis bien d'accord sauf que dans l'API json lastseen s'appelle lastupdate...
Re: Device announce Ikea Tradfi et hue pour last update
Publié : 03 avr. 2019, 09:27
par benp
J'ai testé le lastupdate sur API cette nuit sur une ikea tradfri.
J'ai utilisé ce script:
Code : Tout sélectionner
return {
on = {
timer = {'every minute'},
httpResponses = {'lastUP' }
},
execute = function(domoticz, item)
if (item.isTimer) then
domoticz.openURL({
url = 'http://192.168.0.4:8080/json.htm?type=devices&rid=139',
callback = 'lastUP'
})
end
if (item.isHTTPResponse and item.ok) then
local last =item.json.result[1]['LastUpdate'] --au format string: heure API last update
local Time = require('Time')
local tupdate=Time(last) -- au format objet Time: heure API last update
print('------------------last update string: ' .. last .. ' last diff ' .. domoticz.time.compare(tupdate).minutes)
if (domoticz.devices('TestV').state=='Off' and domoticz.time.compare(tupdate).minutes<4) then
domoticz.devices('TestV'). switchOn()
end
if (domoticz.devices('TestV').state=='On' and domoticz.time.compare(tupdate).minutes>6) then
domoticz.devices('TestV'). switchOff()
end
end
end
}
Notes pour comprendre/réutiliser le code:
- Le device 139 est ma lampe ikea sur zigate
- TestV est un interrupteur virtuel qui s'allume si lastupdate<4 minutes et d'éteind si lastupdate>6 minutes
- TestV est censé représenter au mieux si l'ampoule est sous tension ou non
Ma lampe est restée allumée toute la nuit et mon interrupteur virtuel TestV s’éteint parfois. Pour le moment, je ne comprend pas trop pourquoi. Je vais tenter d'enregistrer domoticz.time.compare(tupdate).minutes pour pousser un peu mes investigations.
Voila le graphique de ce que ca donne pour une nuit allumée:

- dz-api.PNG (23.73 Kio) Consulté 4723 fois
Re: Device announce Ikea Tradfi et hue pour last update
Publié : 03 avr. 2019, 13:56
par pipiche
j'ai du mal à comprendre ce que tu cherches.
Quel est le problème exact que tu cherches à régler ?
Re: Device announce Ikea Tradfi et hue pour last update
Publié : 03 avr. 2019, 15:10
par benp
pipiche a écrit : 03 avr. 2019, 13:56
j'ai du mal à comprendre ce que tu cherches.
Quel est le problème exact que tu cherches à régler ?
Je veux détecter si mon ampoule est sous tension ou non à partir de last update.
Le script fait:
si last update>6 min éteindre le device virtuel
si lastupdate<4 min allumer le device virtuel
Le graphique ci-dessus montre que ça ne fonctionne pas: la lampe est restée sous tension et parfois lastupdate >6 minutes.
Pourquoi? Je n'ai pas encore trouvé.
Mes hypothèses sont
- Bug dans mon script
- Bug dans le plugin zigate
- Perturbation du réseau zigate
Je penche plutôt vers la dernière hypothèse mais il faut que je pousse un peu plus les investigations.
Je pensais enregistrer lastupdate dans un device pourcentage virtuel mais les données ne sont enregistrées que tous les 5 minutes. Il va falloir que je trouve une autre solution: enregistrer dans un fichier ou en php...