Impossible de mettre à jour une variable utilisateur

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Impossible de mettre à jour une variable utilisateur

Message par boum »

Oui en effet, ce n'est pas très optimal, mais si ça marche 8-)

Honnêtement, plutôt que de communiquer avec l'interface json de domoticz, j'aurais probablement stocké les consommations dans un fichier local. (probablement en lua pour l'exécuter plutot que le parser en lecture........ :mrgreen: )

Ensuite en remarques générique, tu peux virer le commandArray au début et son return à la fin, c'est pour les "autres" scripts lua.

Le HTTP Poller fait déjà un appel à l'écocompteur je suppose et remplit la table "request"
Cf: https://github.com/domoticz/domoticz/bl ... e_json.lua

Après libre à toi d'utiliser la bibliothèque JSON.lua pour décoder le résultat plutôt que les quelques fonctions fournies dans ces scripts un peu particuliers.

Pour ce qui est des performances, ça se mesure. mais ce serait 10 appels à curl en moins (donc créer de nouveaux process).
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Aile
Messages : 157
Inscription : 27 janv. 2022, 12:18

Re: Impossible de mettre à jour une variable utilisateur

Message par Aile »

Merci encore pour tous ces conseils.
Je regarde tout ça et je reviens vers vous.
NUC Celeron 1037U / Win 10 Pro
  • EcoCompteur Legrand
  • RFLink Nodo : capteurs T° Alecto / capteurs présence EV1527
  • Clef Sonoff Zigbee 3.0 : capteurs T° Sonoff / capteurs présence Lidl / Détecteurs fumée Heiman
  • BroadLink : pilotage clim
  • Shelly 1
Aile
Messages : 157
Inscription : 27 janv. 2022, 12:18

Re: Impossible de mettre à jour une variable utilisateur

Message par Aile »

Rebonjour :) !

Petit ennui avec le fichier log de Domoticz. il est saturé par les informations de mise à jour de mes variables :

Code : Tout sélectionner

 2022-05-19 18:10:54.435 Status: LUA: Variable based event fired on 'ConsommationConsole', value '902.11333333638'
2022-05-19 18:10:55.685 Status: LUA: Variable based event fired on 'ConsommationMaison', value '11061.923611106'
2022-05-19 18:10:55.779 Status: LUA: Variable based event fired on 'ConsommationConsole', value '902.20166666971'
2022-05-19 18:10:57.107 Status: LUA: Variable based event fired on 'ConsommationMaison', value '11062.191666662'
2022-05-19 18:10:57.216 Status: LUA: Variable based event fired on 'ConsommationConsole', value '902.28944444749'
2022-05-19 18:10:58.419 Status: LUA: Variable based event fired on 'ConsommationMaison', value '11062.459166662'
2022-05-19 18:10:58.513 Status: LUA: Variable based event fired on 'ConsommationConsole', value '902.37750000305'
2022-05-19 18:10:59.716 Status: LUA: Variable based event fired on 'ConsommationMaison', value '11062.726666662'
2022-05-19 18:11:01.122 Status: LUA: Variable based event fired on 'ConsommationMaison', value '11062.99444444'
2022-05-19 18:11:01.216 Status: LUA: Variable based event fired on 'ConsommationConsole', value '902.55333333638'
2022-05-19 18:11:02.435 Status: LUA: Variable based event fired on 'ConsommationMaison', value '11063.265555551'
En plus, il occupe inutilement la CPU...
Quelqu'un sait où on règle la "Verbosity" ?
NUC Celeron 1037U / Win 10 Pro
  • EcoCompteur Legrand
  • RFLink Nodo : capteurs T° Alecto / capteurs présence EV1527
  • Clef Sonoff Zigbee 3.0 : capteurs T° Sonoff / capteurs présence Lidl / Détecteurs fumée Heiman
  • BroadLink : pilotage clim
  • Shelly 1
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: Impossible de mettre à jour une variable utilisateur

Message par denis_brasseur »

Aile a écrit : 19 mai 2022, 18:13 Rebonjour :) !

Petit ennui avec le fichier log de Domoticz. il est saturé par les informations de mise à jour de mes variables :
En plus, il occupe inutilement la CPU...
Quelqu'un sait où on règle la "Verbosity" ?
Quelle commande envois tu pour mettre à jour tes variables ?
J'ai eu ce probleme de logs bavard, il me semble l'avoir résolu en utilisant une commande json :

Code : Tout sélectionner

/json.htm?type=command&param=updateuservariable&idx=idx&vname=uservariablename&vtype=uservariabletype&vvalue=uservariablevalue
plutôt qu'avec :

Code : Tout sélectionner

commandArray['my_variable'] = my_value
A vérifier
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Aile
Messages : 157
Inscription : 27 janv. 2022, 12:18

Re: Impossible de mettre à jour une variable utilisateur

Message par Aile »

J'ai peur que ce soit le contraire parce que j'utilise justement une commande JSON :

Code : Tout sélectionner

CommandeMAJ = "http://127.0.0.1:8080/json.htm?type=command&param=updateuservariable&vname=" .. Variable .. "&vtype=1&vvalue=" .. EnergiePrec + Puissance * 1/3600
(Voir mon script complet un peu plus haut)

Je ne peux pas utiliser la commande

Code : Tout sélectionner

commandArray['my_variable'] = my_value
dans un script lua_parsers.
Donc impossible de vérifier.
NUC Celeron 1037U / Win 10 Pro
  • EcoCompteur Legrand
  • RFLink Nodo : capteurs T° Alecto / capteurs présence EV1527
  • Clef Sonoff Zigbee 3.0 : capteurs T° Sonoff / capteurs présence Lidl / Détecteurs fumée Heiman
  • BroadLink : pilotage clim
  • Shelly 1
Aile
Messages : 157
Inscription : 27 janv. 2022, 12:18

Re: Impossible de mettre à jour une variable utilisateur

Message par Aile »

boum a écrit : 18 mai 2022, 23:21 Honnêtement, plutôt que de communiquer avec l'interface json de domoticz, j'aurais probablement stocké les consommations dans un fichier local. (probablement en lua pour l'exécuter plutot que le parser en lecture........ :mrgreen: )
Bonsoir Boum,

Cette idée m'intéresse. Comment concrètement stocker les consommations dans un fichier local ?
Par cette commande ?

Code : Tout sélectionner

Descripteur = io.open(Nom_du_fichier, "w")
Descripteur:write(“Datas”)
NUC Celeron 1037U / Win 10 Pro
  • EcoCompteur Legrand
  • RFLink Nodo : capteurs T° Alecto / capteurs présence EV1527
  • Clef Sonoff Zigbee 3.0 : capteurs T° Sonoff / capteurs présence Lidl / Détecteurs fumée Heiman
  • BroadLink : pilotage clim
  • Shelly 1
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: Impossible de mettre à jour une variable utilisateur

Message par boum »

Oui, je ferais qq chose du genre (pas testé):

Code : Tout sélectionner

local writeTable = function(nom, t)
    local lf = "\n"
    local f = assert(io.open(nom, "w"))
    f:write("return {", lf)
    for key, value in pairs(t) do
        -- version simplifiée, ne marche que pour les clés sans caractères spéciaux
        -- et les valeurs numériques
        f:write(key, " = ", value, ",", lf)
    end
    f:write("}", lf)
    f:close()
end

-- pour sauver une table dans le genre
local valeurs = {
  ConsommationConsole = 902.20166666971,
  ConsommationMaison = 11062.191666662,
}
writeTable(Nom_Fichier, valeurs)

-- pour charger, c'est un fichier lua valide
local valeursSurDisque = loadfile(Nom_Fichier)
print(valeursSurDisque.ConsommationConsole)
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Aile
Messages : 157
Inscription : 27 janv. 2022, 12:18

Re: Impossible de mettre à jour une variable utilisateur

Message par Aile »

Effectivement, c'est plus élégant et plus rapide !
En plus, ça résout le problème de la saturation du log.

Merci Boum :) !
NUC Celeron 1037U / Win 10 Pro
  • EcoCompteur Legrand
  • RFLink Nodo : capteurs T° Alecto / capteurs présence EV1527
  • Clef Sonoff Zigbee 3.0 : capteurs T° Sonoff / capteurs présence Lidl / Détecteurs fumée Heiman
  • BroadLink : pilotage clim
  • Shelly 1
Répondre