@
sjoemie1985
Dit lua script is eigenlijk afhankelijk van een ander lua script, wat "Eigen verbruik" eerst uit rekent, uit je zonnepanelen en data van de slimme meter. Resultaat is dan de dummy Consumption devicename.
Als je de zonnepanelen info terughaalt van pvoutput, heb je per 5 minuten data.
Je slimme meter zal ieder 10 sec updaten.
De berekening van eigen verbruik, zal dan enorm afwijken. De panelen info is immers 4,59 minuten oud.
Het moet zoveel mogelijk synchroon lopen. Dus liefst iedere 10 sec een update van de zonnepanelen en P1 (slimme meter). Pas dan heb je een correcte berekening van "Eigen verbruik" in de consumption devicename dummy.
In je script staan fouten
Geen aanhalingstekens gebruikt bij de Domoticz IDX of devices
ConsumptionDeviceName is dus niet je slimme meter, maar dus een berekende dummy "Eigen verbruik"
Ook moet je met dit script "socket.http" extra installeren (staat ook ergens uitgelegd in de domoticz wiki)
Maw.
Het is veel makkelijker een dzVents script te gebruiken hiervoor, zodat je dat niet hoeft te installeren.
Deze heb ik onlangs (met veel moeite en tijd) in elkaar gestoken.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| return {
on = {
devices = {
79, -- Slimme meter youless (youless or P1)
82, -- Zonnepanelen
}
},
logging = {
level = domoticz.LOG_INFO,
-- level = domoticz.LOG_ERROR,
marker = "Eigen verbruik"
},
execute = function(domoticz, item)
local Smartmeter = domoticz.devices(6) -- Slimme meter (youless or P1)
local Generation = domoticz.devices(18) -- Zonnepanelen
local Consumption = domoticz.devices(83) -- Eigen verbruik / calculated value / dummy Elekta kWh + counter
-- Smartmeter
local EnergyImportLow = Smartmeter.rawData[1]
local EnergyImportHigh = Smartmeter.rawData[2]
local EnergyExportLow = Smartmeter.rawData[3]
local EnergyExportHigh = Smartmeter.rawData[4]
local PowerImport = Smartmeter.rawData[5]
local PowerExport = Smartmeter.rawData[6]
-- Generation
local EnergyGeneration = Generation.rawData[2]
local PowerGeneration = Generation.rawData[1]
--Calculate
local EnergyImport = EnergyImportLow + EnergyImportHigh
local EnergyExport = EnergyExportLow + EnergyExportHigh
local EnergyConsumption = EnergyGeneration + EnergyImport - EnergyExport
local PowerConsumption = PowerGeneration + PowerImport - PowerExport
domoticz.log('EnergyImportLow ' .. EnergyImportLow .. ' Wh ', domoticz.LOG_INFO)
domoticz.log('EnergyImportHigh ' .. EnergyImportHigh .. ' Wh ', domoticz.LOG_INFO)
domoticz.log('EnergyExportLow ' .. EnergyExportLow .. ' Wh ', domoticz.LOG_INFO)
domoticz.log('EnergyExportHigh ' .. EnergyExportHigh .. ' Wh ', domoticz.LOG_INFO)
domoticz.log('PowerImport ' .. PowerImport .. ' W ', domoticz.LOG_INFO)
domoticz.log('PowerExport ' .. PowerExport .. ' W ', domoticz.LOG_INFO)
domoticz.log('EnergyGeneration ' .. EnergyGeneration .. ' Wh ', domoticz.LOG_INFO)
domoticz.log('PowerGeneration ' .. PowerGeneration .. ' W ', domoticz.LOG_INFO)
domoticz.log('EnergyConsumption ' .. EnergyConsumption .. ' Wh ', domoticz.LOG_INFO)
domoticz.log('PowerConsumption: ' .. PowerConsumption .. ' W ', domoticz.LOG_INFO)
domoticz.openURL('http://127.0.0.1:8095/json.htm?type=command¶m=udevice&idx=83'..'&nvalue=0&svalue='..PowerConsumption..';'..EnergyConsumption)
--vul zelf hier idx in van dummy Consumption (83) en domoticz port (8095)
end
} |
Een en ander is afhankelijk van de data die je aanbiedt.
Een sensor kan je makkelijk uitlezen en in de info in de log laten plaatsen, om zo tot de juiste parameters te komen (rawdata[x] in bovenstaand geval)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| return {
active = true,
on = {
devices = {81}-- device idx that you want to readout and put into the log
--timer = { 'at 15:51'}
},
execute = function(d, item)
print("START Testscript---------------------------------------------------")
-- toont alle info van item:
item.dump()
print("END Testscript-------------------------------------------------")
end
} |
Dan nog een script om te uploaden naar pvoutput:
Zie
hierboven en zelf aanvullen verbeteren met v1 en v2 etc.