Page 1 of 1

P1 meter Energy Returned not in Dashtizc

Posted: Friday 08 October 2021 17:46
by Roozen
Dear viewer,

Recently I am experimenting with dashticz and trying to getting familiar with custom graphs.

Problem I have is that I don't get the daily "energy returned" in the dashticz graph.

I am using the below script in config.js for the block definition:

Code: Select all

blocks['P1_Stroom2'] = {
    title: 'Stroom Verbruik',
    devices: [4],
    graph: ['line','line'],
    height: '200px',
    legend: true,
    datasetColors:['blue','green'],
    custom : {
       "Vandaag": {
            range: 'day',
            filter: '24 hours',
            data: {
                verbruik: 'd.eu_4',
                Opgewekt: 'd.eg_4',
            }
        }, 
    },

}
When I check the available parameters for P1 device I can find "eg" as parameter for energy returned

Code: Select all

http://[IP_Adress]:[Port]/json.htm?type=devices&rid=[IDX]
For some reason it does not plot the "eg" values and I get the graph as below
Dashticz_Graph.jpg
Dashticz_Graph.jpg (48.71 KiB) Viewed 1479 times
I would like to get similar graph as in Domoticz:
Domoticz_Graph.jpg
Domoticz_Graph.jpg (29.41 KiB) Viewed 1479 times

What do I do wrong here?
Who can help me with this issue?

Re: P1 meter Energy Returned not in Dashtizc

Posted: Sunday 10 October 2021 13:34
by Lokonli
It's a bug. I'm preparing a fix.


Verstuurd vanaf mijn AC2003 met Tapatalk


Re: P1 meter Energy Returned not in Dashtizc

Posted: Friday 15 October 2021 22:44
by Lokonli
Roozen wrote:Dear viewer,

Recently I am experimenting with dashticz and trying to getting familiar with custom graphs.

Problem I have is that I don't get the daily "energy returned" in the dashticz graph.

I am using the below script in config.js for the block definition:

Code: Select all

blocks['P1_Stroom2'] = {
    title: 'Stroom Verbruik',
    devices: [4],
    graph: ['line','line'],
    height: '200px',
    legend: true,
    datasetColors:['blue','green'],
    custom : {
       "Vandaag": {
            range: 'day',
            filter: '24 hours',
            data: {
                verbruik: 'd.eu_4',
                Opgewekt: 'd.eg_4',
            }
        }, 
    },

}
When I check the available parameters for P1 device I can find "eg" as parameter for energy returned

Code: Select all

http://[IP_Adress]:[Port]/json.htm?type=devices&rid=[IDX]
For some reason it does not plot the "eg" values and I get the graph as below
Image

I would like to get similar graph as in Domoticz:
Image



What do I do wrong here?
Who can help me with this issue?
Should be fixed in latest beta 3.8.5. Can you test?

Verstuurd vanaf mijn AC2003 met Tapatalk


Re: P1 meter Energy Returned not in Dashtizc

Posted: Sunday 17 October 2021 10:50
by Roozen
Perfect.
I updated Dashtics to V3.8.5 today and it works :-)
Thanks for the fast solution
new graph.jpg
new graph.jpg (57.03 KiB) Viewed 1479 times

Re: P1 meter Energy Returned not in Dashtizc

Posted: Sunday 17 October 2021 22:11
by JakeOfOz
Oh nice, I had this issue as well, it works now indeed.
I have another problem though: as is also clear from the last screenshot by @Roozen, the two graphs use separate Y-axes, this makes it less usefull. I tried for a few hours now, but how can you let them use the same axis?

Re: P1 meter Energy Returned not in Dashtizc

Posted: Sunday 17 October 2021 22:45
by Lokonli
I noticed that as well. I'm working on a fix already. And as bonus some new functionality :)

Verstuurd vanaf mijn AC2003 met Tapatalk


Re: P1 meter Energy Returned not in Dashtizc

Posted: Sunday 12 December 2021 0:42
by jake
Another P1 Energy returned (not wanting to opening another P1-meter topic for a small question)

I have a 3 phase P1-meter and since some time I realize that Domoticz shows wattage values for both return AND usage at the same time, in case the solar panel is feeding in on one phase and the consumption is on the other.

I would like Dashticz to show the total net power value in Watts: usage - return. As soon as that value is negative, I know that my bill is going down :-). Currently I use the energy block with the '_1" addition to it. It shows a negative value when there is return power to the grid, but doesn't count in the usage power on anoter phase.

Re: P1 meter Energy Returned not in Dashtizc

Posted: Monday 13 December 2021 13:20
by Lokonli
jake wrote: Sunday 12 December 2021 0:42 Another P1 Energy returned (not wanting to opening another P1-meter topic for a small question)

I have a 3 phase P1-meter and since some time I realize that Domoticz shows wattage values for both return AND usage at the same time, in case the solar panel is feeding in on one phase and the consumption is on the other.

I would like Dashticz to show the total net power value in Watts: usage - return. As soon as that value is negative, I know that my bill is going down :-). Currently I use the energy block with the '_1" addition to it. It shows a negative value when there is return power to the grid, but doesn't count in the usage power on anoter phase.
Can you post the Domoticz json device output?

Code: Select all

http://domoticz ip:port/json.htm?type=devices@rid=123
Replace 123 with your Domoticz device id.

Re: P1 meter Energy Returned not in Dashtizc

Posted: Tuesday 14 December 2021 21:54
by jake

Lokonli wrote:
jake wrote: Sunday 12 December 2021 0:42 Another P1 Energy returned (not wanting to opening another P1-meter topic for a small question)

I have a 3 phase P1-meter and since some time I realize that Domoticz shows wattage values for both return AND usage at the same time, in case the solar panel is feeding in on one phase and the consumption is on the other.

I would like Dashticz to show the total net power value in Watts: usage - return. As soon as that value is negative, I know that my bill is going down :-). Currently I use the energy block with the '_1" addition to it. It shows a negative value when there is return power to the grid, but doesn't count in the usage power on anoter phase.
Can you post the Domoticz json device output?

Code: Select all

http://domoticz ip:port/json.htm?type=devices&rid=123
Replace 123 with your Domoticz device id.
The output of the device is:

Code: Select all

{
	"ActTime" : 1639515144,
	"AstrTwilightEnd" : "18:36",
	"AstrTwilightStart" : "06:36",
	"CivTwilightEnd" : "17:11",
	"CivTwilightStart" : "08:01",
	"DayLength" : "07:50",
	"NautTwilightEnd" : "17:55",
	"NautTwilightStart" : "07:17",
	"ServerTime" : "2021-12-14 21:52:24",
	"SunAtSouth" : "12:36",
	"Sunrise" : "08:41",
	"Sunset" : "16:31",
	"app_version" : "2021.1 (build 13872)",
	"result" : 
	[
		{
			"AddjMulti" : 1.0,
			"AddjMulti2" : 1.0,
			"AddjValue" : 0.0,
			"AddjValue2" : 0.0,
			"BatteryLevel" : 255,
			"Counter" : "9202.836",
			"CounterDeliv" : "6239.284",
			"CounterDelivToday" : "0.000 kWh",
			"CounterToday" : "7.606 kWh",
			"CustomImage" : 0,
			"Data" : "4319790;4883046;1846233;4393051;302;0",
			"Description" : "",
			"Favorite" : 1,
			"HardwareDisabled" : false,
			"HardwareID" : 15,
			"HardwareName" : "P1 Smart Meter",
			"HardwareType" : "P1 Smart Meter USB",
			"HardwareTypeVal" : 4,
			"HaveTimeout" : false,
			"ID" : "0001",
			"LastUpdate" : "2021-12-14 21:52:09",
			"Name" : "Electricity",
			"Notifications" : "false",
			"PlanID" : "0",
			"PlanIDs" : 
			[
				0
			],
			"Protected" : false,
			"ShowNotifications" : true,
			"SignalLevel" : "-",
			"SubType" : "Energy",
			"SwitchTypeVal" : 0,
			"Timers" : "false",
			"Type" : "P1 Smart Meter",
			"TypeImg" : "counter",
			"Unit" : 1,
			"Usage" : "302 Watt",
			"UsageDeliv" : "0 Watt",
			"Used" : 1,
			"XOffset" : "0",
			"YOffset" : "0",
			"idx" : "142"
		}
	],
	"status" : "OK",
	"title" : "Devices"
}
I believe that 'before' either 'usage' or 'UsageDeliv' was supposed to be 0 Watt. Nowadays they both can have a value for a 3 phase meter. I guess this was introduced at the time that I also received additional hardware for each separate phase in domoticz.

Re: P1 meter Energy Returned not in Dashtizc

Posted: Tuesday 14 December 2021 22:35
by Lokonli
I've checked the code and you're right. If UsageDeliv > 0 then that value will be shown instead of Usage - UsageDeliv.
I'll create a fix.


Verstuurd vanaf mijn AC2003 met Tapatalk


Re: P1 meter Energy Returned not in Dashtizc

Posted: Tuesday 08 February 2022 18:52
by jake
Lokonli wrote:I've checked the code and you're right. If UsageDeliv > 0 then that value will be shown instead of Usage - UsageDeliv.
I'll create a fix.


Verstuurd vanaf mijn AC2003 met Tapatalk
Hi Lokonli, is the above still on your todo list? If so. No problem. If it is already fixed, how can I implement it?
(if you forgot about it.... please put it on the list) :-)

Re: P1 meter Energy Returned not in Dashtizc

Posted: Wednesday 09 February 2022 9:01
by Lokonli
jake wrote:
Lokonli wrote:I've checked the code and you're right. If UsageDeliv > 0 then that value will be shown instead of Usage - UsageDeliv.
I'll create a fix.


Verstuurd vanaf mijn AC2003 met Tapatalk
Hi Lokonli, is the above still on your todo list? If so. No problem. If it is already fixed, how can I implement it?
(if you forgot about it.... please put it on the list) :-)
Please try latest beta :)

Verstuurd vanaf mijn AC2003 met Tapatalk


Re: P1 meter Energy Returned not in Dashtizc

Posted: Saturday 12 February 2022 12:45
by jake
Lokonli wrote:
jake wrote:
Lokonli wrote:I've checked the code and you're right. If UsageDeliv > 0 then that value will be shown instead of Usage - UsageDeliv.
I'll create a fix.


Verstuurd vanaf mijn AC2003 met Tapatalk
Hi Lokonli, is the above still on your todo list? If so. No problem. If it is already fixed, how can I implement it?
(if you forgot about it.... please put it on the list) :-)
Please try latest beta :)

Verstuurd vanaf mijn AC2003 met Tapatalk
Awesome! I had to wait for a sunny day at home. It works great now in 3.9.0! I only had to change the custom.js file, because this colors the background green when we deliver back to the grid, checking on a UsageDeliv > 0. I have updated that to:

Code: Select all

 function getStatus_142_1(block) {
	if(parseInt(block.device.UsageDeliv - block.device.Usage)>0 ) { //P1-smart meter: electricity usage
		block.addClass= 'background_green';
	}
	else
		block.addClass='';
}

Re: P1 meter Energy Returned not in Dashtizc

Posted: Thursday 03 March 2022 11:16
by jake
jake wrote: Saturday 12 February 2022 12:45 Awesome! I had to wait for a sunny day at home. It works great now in 3.9.0! I only had to change the custom.js file, because this colors the background green when we deliver back to the grid, checking on a UsageDeliv > 0. I have updated that to:

Code: Select all

 function getStatus_142_1(block) {
	if(parseInt(block.device.UsageDeliv - block.device.Usage)>0 ) { //P1-smart meter: electricity usage
		block.addClass= 'background_green';
	}
	else
		block.addClass='';
}
Dashticz 3.9 and 3.9.2
@lokonli, the above .js code no longer works to color the background green as soon as the nett usage < 0, meaning that we deliver more energy than we consume at that moment.
- When I change the calculation back to parseInt(block.device.UsageDeliv)>0 the block turns green when there is delivery at the P1-meter, but the nett usage can be > 0 (for instance when the oven draws 3600W, which is more than my solar system can deliver anytime). In those cases the background should not turn green of course.
- When I change the calculation (only for a test) to parseInt(block.device.Usage)>0 the block turns green when there is usage at the P1-meter.
- to make sure that the usageDeliv is not considered as a negative number, I adapted the code to that as well for a test, but no success: parseInt(block.device.UsageDeliv + block.device.Usage ) < 0 )

I have also tried to modify the code as can be seen here below, since I thought it was possible that block 142_1 (usageDeliv) of th P1-meter might not contain the Usage value. Unfortunately it doesn't help. I simply don't know what the js calculation uses for values for usage and usageDeliv to check the calculation result

Code: Select all

 function getStatus_142(block) {
	if(parseInt(block.device.UsageDeliv - block.device.Usage ) > 0 ) { 
	Dashticz.setBlock('142_1', {
		addClass: 'background_green'
 });
 }
	else
	Dashticz.setBlock('142_1', {
		addClass: ''
	});
}

Re: P1 meter Energy Returned not in Dashtizc

Posted: Thursday 03 March 2022 12:10
by Lokonli
to check the calculation, add the following statement as first line to the code:

Code: Select all

  console.log(block.device);
Then in Chrome open DevTools by pressing F12. Refresh Dashticz. On the DevTools console tab the device info will be visible. If you copy/paste that here we can have a look.

Re: P1 meter Energy Returned not in Dashtizc

Posted: Thursday 03 March 2022 13:00
by Lokonli
If you follow the above, you'll see something like this in the DevTools console tab:

Code: Select all

{
    "AddjMulti": 1,
    "AddjMulti2": 1,
    "AddjValue": 0,
    "AddjValue2": 0,
    "BatteryLevel": 255,
    "Counter": "16344.860",
    "CounterDeliv": "14825.054",
    "CounterDelivToday": "7.994 kWh",
    "CounterToday": "3.332 kWh",
    "CustomImage": 0,
    "Data": "10511199;5833661;4382068;10442986;0;2530",
    "Description": "",
    "Favorite": 1,
    "HardwareDisabled": false,
    "HardwareID": 7,
    "HardwareName": "P1 Smart Meter",
    "HardwareType": "P1 Smart Meter with LAN interface",
    "HardwareTypeVal": 5,
    "HaveTimeout": false,
    "ID": "0001",
    "LastUpdate": "2022-03-03 12:35:41",
    "Name": "Power",
    "Notifications": "false",
    "PlanID": "4",
    "PlanIDs": [
        4,
        3
    ],
    "Protected": false,
    "ShowNotifications": true,
    "SignalLevel": "-",
    "SubType": "Energy",
    "SwitchTypeVal": 0,
    "Timers": "false",
    "Type": "P1 Smart Meter",
    "TypeImg": "counter",
    "Unit": 1,
    "Usage": "0 Watt",
    "UsageDeliv": "2530 Watt",
    "Used": 1,
    "XOffset": "447",
    "YOffset": "81",
    "idx": "43",
    "Data0": "10511199",
    "Data1": "5833661",
    "Data2": "4382068",
    "Data3": "10442986",
    "Data4": "0",
    "Data5": "2530",
    "NettUsage": -2530,
    "NettCounterToday": -4.662,
    "NettCounter": 1519.8060000000005
}
And here you see the problem: Usage and UsageDeliv are both strings with the text 'Watt' at the end: Your subtraction will not work.

Good news: The computed field NettUsage has already been added automatically. You can use this field.

Further, for every subdevice it's 'own' getStatus function will be called as well. You can use this to simplify the code:

Code: Select all

 function getStatus_142_1(block) {      //I've added _1 ! (this this the subdevice)
	if(block.device.NettUsage < 0 )
	    block.addClass='background_green'    //directly manipulate the block itself.
	else
	    block.addClass=''
}
or as oneliner:

Code: Select all

 function getStatus_142_1(block) {      //I've added _1 ! (this this the subdevice)
    block.addClass= block.device.NettUsage < 0  ? 'background_green':'';     //ternary operator
}


Re: P1 meter Energy Returned not in Dashtizc

Posted: Thursday 03 March 2022 14:24
by jake
Lokonli wrote: Thursday 03 March 2022 12:10 to check the calculation, add the following statement as first line to the code:

Code: Select all

  console.log(block.device);
Then in Chrome open DevTools by pressing F12. Refresh Dashticz. On the DevTools console tab the device info will be visible. If you copy/paste that here we can have a look.
In the devtools I find a console tab, however I wouldn't know how to come across the device info. Anyway, i put the code from your other reply and it works just fine. I had seen the 'Watt' text behind the two parameters, but since the simple calculation usageDeliv>0 worked, I assumed that the 'Watt' text was only added in the browser result for better understanding. I guess that js can handle the number and text, but not for adding and subtracting anymore.

Re: P1 meter Energy Returned not in Dashtizc

Posted: Thursday 03 March 2022 14:31
by Lokonli
jake wrote: Thursday 03 March 2022 14:24
Lokonli wrote: Thursday 03 March 2022 12:10 to check the calculation, add the following statement as first line to the code:

Code: Select all

  console.log(block.device);
Then in Chrome open DevTools by pressing F12. Refresh Dashticz. On the DevTools console tab the device info will be visible. If you copy/paste that here we can have a look.
In the devtools I find a console tab, however I wouldn't know how to come across the device info. Anyway, i put the code from your other reply and it works just fine. I had seen the 'Watt' text behind the two parameters, but since the simple calculation usageDeliv>0 worked, I assumed that the 'Watt' text was only added in the browser result for better understanding. I guess that js can handle the number and text, but not for adding and subtracting anymore.
Nice.

It would have worked with (parseInt(block.device.UsageDeliv) - parseInt(block.device.Usage)).
parseInt ignores the ' watt' addition and just creates a number of the first part.

Re: P1 meter Energy Returned not in Dashtizc

Posted: Thursday 03 March 2022 14:38
by jake
Lokonli wrote: Thursday 03 March 2022 14:31
jake wrote: Thursday 03 March 2022 14:24
Lokonli wrote: Thursday 03 March 2022 12:10 to check the calculation, add the following statement as first line to the code:

Code: Select all

  console.log(block.device);
Then in Chrome open DevTools by pressing F12. Refresh Dashticz. On the DevTools console tab the device info will be visible. If you copy/paste that here we can have a look.
In the devtools I find a console tab, however I wouldn't know how to come across the device info. Anyway, i put the code from your other reply and it works just fine. I had seen the 'Watt' text behind the two parameters, but since the simple calculation usageDeliv>0 worked, I assumed that the 'Watt' text was only added in the browser result for better understanding. I guess that js can handle the number and text, but not for adding and subtracting anymore.
Nice.

It would have worked with (parseInt(block.device.UsageDeliv) - parseInt(block.device.Usage)).
parseInt ignores the ' watt' addition and just creates a number of the first part.
Ah, it seems I was halfway. I should have googled better on the meaning of parseInt. Your explanation makes it now clear for me. Thanks, learning every day (a little bit)