LUA CounterToday

Vous avez des questions concernant les scripts dans Domoticz, posez vos questions ici, quelque soit le langage nous tenterons des réponses pertinentes ...
Répondre
bartras
Messages : 86
Enregistré le : 17 mars 2017, 17:44
Localisation : Saint Etienne (42)

LUA CounterToday

Message par bartras »

Bonjour,

Je souhaite récupérer la valeur CounterToday de mon capteur Electrique (instantané+compteur).

Je récupère actuellement les svalue :
ConsPower, ConsEnergy = string.match(otherdevices_svalues[puissance_reseau], "(%d+%.*%d*);(%d+%.*%d*)")
Seulement l'énergie renvoyée, c'est l'énergie totale du capteur.
Or je souhaite récupérer uniquement la quotidienne.

Lorsque je fais une commande JSON:

Code : Tout sélectionner

{
	"ActTime" : 1637747457,
	"AstrTwilightEnd" : "18:51",
	"AstrTwilightStart" : "06:10",
	"CivTwilightEnd" : "17:39",
	"CivTwilightStart" : "07:21",
	"DayLength" : "09:12",
	"NautTwilightEnd" : "18:15",
	"NautTwilightStart" : "06:45",
	"ServerTime" : "2021-11-24 10:50:57",
	"SunAtSouth" : "12:30",
	"Sunrise" : "07:54",
	"Sunset" : "17:06",
	"app_version" : "2021.1",
	"result" : 
	[
		{
			"AddjMulti" : 1.0,
			"AddjMulti2" : 1.0,
			"AddjValue" : 0.0,
			"AddjValue2" : 0.0,
			"BatteryLevel" : 100,
			"CounterToday" : "5.472 kWh",
			"CustomImage" : 0,
			"Data" : "2026.437 kWh",
			"Description" : "",
			"EnergyMeterMode" : "",
			"Favorite" : 0,
			"HardwareDisabled" : false,
			"HardwareID" : 4,
			"HardwareName" : "DummyDev",
			"HardwareType" : "Dummy (Does nothing, use for virtual switches only)",
			"HardwareTypeVal" : 15,
			"HaveTimeout" : false,
			"ID" : "00097816",
			"LastUpdate" : "2021-11-24 10:50:53",
			"Name" : "Puissance r\u00e9seau",
			"Notifications" : "false",
			"PlanID" : "0",
			"PlanIDs" : 
			[
				0
			],
			"Protected" : false,
			"ShowNotifications" : true,
			"SignalLevel" : 6,
			"SubType" : "kWh",
			"SwitchTypeVal" : 0,
			"Timers" : "false",
			"Type" : "General",
			"TypeImg" : "current",
			"Unit" : 1,
			"Usage" : "260 Watt",
			"Used" : 1,
			"XOffset" : "0",
			"YOffset" : "0",
			"idx" : "15816"
		}
	],
	"status" : "OK",
	"title" : "Devices"
}
Il s'agit de cette ligne :
"CounterToday" : "5.472 kWh",
Est ce que quelqu'un sait comment faire ?

Merci de votre aide
Domoticz Version 2021.1
RFLink ; Sonoff basic ; Sonoff RF ; Sonoff mini ; DANIU 433MHz ; OWL Micro+ ; Pluviomètre 433MHz ; Compteur Linky ; Ultrason relié sur wemos D1 ; DS18B20+Wemos

Keros
Messages : 2390
Enregistré le : 23 juil. 2019, 20:57

Re: LUA CounterToday

Message par Keros »

Regarde mon tuto sur la météo OpenWeatherMap, tu trouveras des explications pour récupérer les infos d'un Json.

bartras
Messages : 86
Enregistré le : 17 mars 2017, 17:44
Localisation : Saint Etienne (42)

Re: LUA CounterToday

Message par bartras »

Merci pour le retour.

J'ai bien compris le principe, il faudra que je fasse ces lignes de code:

Code : Tout sélectionner

blocjson = config:read('*all')
config:close()
jsonValeur = json:decode(blocjson)
energy = jsonValeur.current.CounterToday
Par contre je ne comprends pas la ligne précédente qui permet de charger le JSON du device qui m'intéresse.
Ca serait celle qui correspond à ça dans ton code:

Code : Tout sélectionner

config=assert(io.popen('/usr/bin/curl "https://api.openweathermap.org/data/2.5/onecall?lat='..lat..'&lon='..long..'&appid='..api..'&lang=fr&units=metric"'))
Quel serait l'équivalent pour un device Electrique (instantané+compteur) ?
Domoticz Version 2021.1
RFLink ; Sonoff basic ; Sonoff RF ; Sonoff mini ; DANIU 433MHz ; OWL Micro+ ; Pluviomètre 433MHz ; Compteur Linky ; Ultrason relié sur wemos D1 ; DS18B20+Wemos

Keros
Messages : 2390
Enregistré le : 23 juil. 2019, 20:57

Re: LUA CounterToday

Message par Keros »


bartras
Messages : 86
Enregistré le : 17 mars 2017, 17:44
Localisation : Saint Etienne (42)

Re: LUA CounterToday

Message par bartras »

Merci pour l'aide, j'ai réussi.

J'ai eu ces étapes à réaliser en plus :
  • ajouter la déclaration de variable Json qui pointe vers le loadfile
  • ajouter le login et mdp de mon domoticz dans l'adresse du Json
  • modifier le 'classeur' current par le mien qui est result
  • ajouter des crochets [1] pour au result
J'avoue ne pas avoir compris le coup du crochet...
J'ai testé avec 0 (qui n'a pas fonctionné) puis 1 qui a fonctionné.

J'ai bien vu que ça ressemblait à une genre de table, mais je n'ai pas le même affichage du Json que ton tuto dans mon navigateur. J'avoue je pensais que ça aurait été 0 car c'est la première...

Bref merci pour l'aiguillage ;)
Domoticz Version 2021.1
RFLink ; Sonoff basic ; Sonoff RF ; Sonoff mini ; DANIU 433MHz ; OWL Micro+ ; Pluviomètre 433MHz ; Compteur Linky ; Ultrason relié sur wemos D1 ; DS18B20+Wemos

Keros
Messages : 2390
Enregistré le : 23 juil. 2019, 20:57

Re: LUA CounterToday

Message par Keros »

Et non, en LUA, la première ligne d'un tableau est 1 et pas 0 (j'ai dû l'écrire dans le tuto).

Si ton serveur n'a pas un accès sans identification à DomoticZ, il est normal que tu ais dû indiquer un login et un mot de passe.

Répondre