probleme conso virtuel

Posez ici vos questions d'utilisation, de configuration de DomoticZ, de bugs, de conseils sur le logiciel lui même dans son utilisation et son paramétrage.
Des forums spécifiques sont ouverts ci-dessous pour regrouper les différents sujets.
AlexElectro
Messages : 55
Inscription : 18 juil. 2015, 22:13

Re: probleme conso virtuel

Message par AlexElectro »

@vil1driver
Oui c'est ce que j'ai créé comme compteur.
Domoticz sur RPi - RfxCom - Sondes oregon DIY - Bus one wire - sondes DS18B20 - BMP085 - Home confort
http://electro.bassignyinformatique.fr/
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: probleme conso virtuel

Message par vil1driver »

ah..

fais un script juste avec ceci

Code : Tout sélectionner

commandArray = {}
print('conso: '..otherdevices_svalues['Conso Evrard'])
return commandArray
que dit le log ?
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
AlexElectro
Messages : 55
Inscription : 18 juil. 2015, 22:13

Re: probleme conso virtuel

Message par AlexElectro »

j'ai une erreur:

Code : Tout sélectionner

Error: EventSystem: /home/pi/domoticz/scripts/lua/script_time_test.lua:2: attempt to concatenate field 'Conso Evrard' (a nil value)
Domoticz sur RPi - RfxCom - Sondes oregon DIY - Bus one wire - sondes DS18B20 - BMP085 - Home confort
http://electro.bassignyinformatique.fr/
alexbi
Messages : 123
Inscription : 29 nov. 2015, 16:36

Re: probleme conso virtuel

Message par alexbi »

Reboot domoticz pour voir
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: probleme conso virtuel

Message par vil1driver »

ceci dans la barre d'adresse de ton navigateur donne quoi ?
(remplace IP par l'ip de ton domoticz)
http://IP:8080/json.htm?type=devices&rid=50
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
AlexElectro
Messages : 55
Inscription : 18 juil. 2015, 22:13

Re: probleme conso virtuel

Message par AlexElectro »

Ca avance!! Depuis le reboot, il n'y a plus l'erreur.
j'ai ça dans le log:

Code : Tout sélectionner

2016-01-16 16:55:00.188 LUA: Conso Evrard nulle
2016-01-16 16:55:00.191 EventSystem: Script event triggered: /home/pi/domoticz/scripts/lua/script_time_conso.lua
2016-01-16 16:55:00.210 LUA: conso: 0;83.333333333335
le lien de @vil1driver donne:

Code : Tout sélectionner

{
   "ActTime" : 1452959614,
   "ServerTime" : "2016-01-16 16:53:34",
   "Sunrise" : "08:24",
   "Sunset" : "17:11",
   "result" : [
      {
         "AddjMulti" : 1.0,
         "AddjMulti2" : 1.0,
         "AddjValue" : 0.0,
         "AddjValue2" : 0.0,
         "BatteryLevel" : 255,
         "CounterToday" : "0.083 kWh",
         "CustomImage" : 0,
         "Data" : "0.083 kWh",
         "Description" : "",
         "Favorite" : 0,
         "HardwareID" : 9,
         "HardwareName" : "Matériel virtuel",
         "HardwareType" : "Dummy (Does nothing, use for virtual switches only)",
         "HardwareTypeVal" : 15,
         "HaveTimeout" : false,
         "ID" : "00082049",
         "LastUpdate" : "2016-01-16 16:53:00",
         "Name" : "Conso Evrard",
         "Notifications" : "false",
         "PlanID" : "0",
         "PlanIDs" : [ 0 ],
         "Protected" : false,
         "ShowNotifications" : true,
         "SignalLevel" : "-",
         "SubType" : "kWh",
         "SwitchTypeVal" : 0,
         "Timers" : "false",
         "Type" : "General",
         "TypeImg" : "current",
         "Unit" : 1,
         "Usage" : "0.0 Watt",
         "Used" : 1,
         "XOffset" : "0",
         "YOffset" : "0",
         "idx" : "50"
      }
   ],
   "status" : "OK",
   "title" : "Devices"
Par contre je m'interroge:
Si j'ai bien compris, le script time s'exécute toute les minutes. Donc il envoi dans le compteur la valeur 'energy1'. Mais je ne comprend pas comment cette valeur est calculée.
Que signifie ces lignes:

Code : Tout sélectionner

npower1, energy1 = string.match(otherdevices_svalues[conso1], "(%d+%.*%d*);(%d+%.*%d*)")
	  energy1 = tonumber(energy1) + (puissance1 / 60)    
      npower1 = tonumber(npower1)
Domoticz sur RPi - RfxCom - Sondes oregon DIY - Bus one wire - sondes DS18B20 - BMP085 - Home confort
http://electro.bassignyinformatique.fr/
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: probleme conso virtuel

Message par vil1driver »

Code : Tout sélectionner

2016-01-16 16:55:00.210 LUA: conso: 0;83.333333333335
le code met dans les variables le contenu de ton compteur
npower1 = puissance actuelle = 0
energy1 = puissance cumulée = 83.333333333335

puis on ajoute au cumule ce que tu as consommé dans la minute

et on renvoie le tout
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
AlexElectro
Messages : 55
Inscription : 18 juil. 2015, 22:13

Re: probleme conso virtuel

Message par AlexElectro »

ok . Je te remercie pour ta patience et tes explications.
Mais je vais t'embéter encore un peu. Pourrais tu me dire ce que fait la commande 'string.match', car je ne trouve pas de doc sur internet :roll:
et que veulent dire les "(%d+%.*%d*);(%d+%.*%d*)" qui suivent ?
Domoticz sur RPi - RfxCom - Sondes oregon DIY - Bus one wire - sondes DS18B20 - BMP085 - Home confort
http://electro.bassignyinformatique.fr/
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: probleme conso virtuel

Message par vil1driver »

cette commande
string.match(otherdevices_svalues[conso1], "(%d+%.*%d*);(%d+%.*%d*)")
sépare la chaine otherdevices_svalues[conso1] (0;83.333333333335) avec comme séparateur le ;
(%d+%.*%d*) est l'expression à chercher, en gos, tout et n'importe quoi ;) (pas exacte mais suffisamment explicite :) )

tu retrouveras cette commande dans beaucoup de scripts qui travaillent avec des périphériques contenants plusieurs infos, comme les sondes de température/humidité/baromètre par exemple..

Code : Tout sélectionner

temp, hum, baro = string.match(otherdevices_svalues['meteo'], "(%d+%.*%d*);(%d+%.*%d*);(%d+%.*%d*)")
j'ai découvert lua il y a environs 18mois maintenant, en même temps que domoticz en fait, donc je n'ai pas toutes les explications, mais je comprends le principe. j'ai toujours cherché à comprendre à fin de modifier et créer mes scripts et avec google sous le coude on fini par piger à quoi sert telle ou telle commande et ses variantes..

et puis ici on parle d'un code que j'ai écris (extrait de mon script de chauffage) alors ce n'est pas trop dure de t'en parler :D
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
AlexElectro
Messages : 55
Inscription : 18 juil. 2015, 22:13

Re: probleme conso virtuel

Message par AlexElectro »

Merci de ces explications. J'essaye aussi de comprendre le code pour pouvoir le mettre à ma sauce. Le problème avec LUA c'est que tout est en Anglais et comme je ne suis ppas trop bilingue.... c'est pas facile.
J'ai trouvé ça:

string.match (s, pattern [, init])

Looks for the first match of pattern in the string s. If it finds one, then match returns the captures from the pattern; otherwise it returns nil. If pattern specifies no captures, then the whole match is returned. A third, optional numerical argument init specifies where to start the search; its default value is 1 and can be negative.

et aussi ça sur les paramètres:
%d: represents all digits.
.: (a dot) represents all characters.

source: http://www.lua.org/manual/5.1/manual.html

Ca confirme ce que tu disais, string.match va chercher et séparer les deux valeurs de la sonde pour les enregistrer dans les variables energy1 et npower1.


je me demande aussi à quoi sert la variable npower dans cette partie du script:

Code : Tout sélectionner

npower1, energy1 = string.match(otherdevices_svalues[conso1], "(%d+%.*%d*);(%d+%.*%d*)")
	  energy1 = tonumber(energy1) + (puissance1 / 60)    
      npower1 = tonumber(npower1)
	  commandArray[1]={['UpdateDevice'] = conso_id1 .. '|0|' .. puissance1 .. ';' .. energy1} 
      print('Conso Evrard envoyée')
puisque dans le commande.array, on envoi dans le compteur la valeur des variables puissance1 et energy1. On ne semble pas utiliser npower1?
Domoticz sur RPi - RfxCom - Sondes oregon DIY - Bus one wire - sondes DS18B20 - BMP085 - Home confort
http://electro.bassignyinformatique.fr/
Répondre