Misschien dat een LUA kenner me hiermee kan en wil helpen:
Ik heb een GM-sensor die via IP iedere minuut dit soort JSON string stuurt,
{"data":{ "id":"12
000059","type":"1","detector":"SI29BG","cpm":16,"temperature":25.44,"uptime": 1882259}}
Ik kan wel in C+ programmeren maar LUA i.c.m. Domoticz snap ik niet helemaal.
Dit scriptje (is vast voor verbetering vatbaar) heb ik met veel uitproberen en veranderen aan de praat gekregen en kan daarmee de gewenste data in Domoticz bekijken
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
| local idxCpm = 425 --idx of the CPM counter
local idxUptime = 426 -- idx of Uptime
local idxTemperature = 427 -- idx of GM-temperature
local cpm = " "
local uptime = " "
local temperature = " "
-- ???? hier user variabele declareren
commandArray={}
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()
local jsondata = assert(io.popen('curl http://192.168.178.20/j'))
local jsondevices = jsondata:read('*all')
jsondata:close()
local jsonCPM = json:decode(jsondevices)
cpm = jsonCPM.data.cpm
uptime = jsonCPM.data.uptime
temperature = jsonCPM.data.temperature
-- ???? hier moet cpm 5 keer opgeteld worden en gesaved als user-variabele
time = os.date("*t")
if ((time.min % 5)==0) then
-- ???? cpm == user variabele/5 gemiddelde cpm berekenen
commandArray[1] = {['UpdateDevice'] = idxCpm .. '|0|' .. cpm}
commandArray[2] = {['UpdateDevice'] = idxUptime .. '|0|' .. uptime/60} -- in uren
commandArray[3] = {['UpdateDevice'] = idxTemperature .. '|0|' .. temperature}
-- ???? user variabele == 0 en bewaren
end
return commandArray |
De CPM (counts/minute) varieert normaal tussen ca. 1 en 2
0, in de daggrafiek ziet dat er als gras uit, ik wil dit wat vlakker maken door gedurende x minuten de CPM teller op te tellen als een
user variablele en na x minuten door x te delen en de
user variablele weer
0 maken.
In Domoticz heb ik een integer variabele aangemaakt (cpmTot_
uservar) met variabele waarde
0.
Dat gedeelte van het gemiddelde bepalen d.m.v. een
user variabele lukt mij niet. Domoticz blijf fouten genereren.
Wat moet ik bij de vraagtekens invullen om dit script te laten werken?