Skip to content

Instantly share code, notes, and snippets.

@ivomans
Created April 25, 2022 20:29
Show Gist options
  • Save ivomans/57a6591be9d37e381e63285899ec0281 to your computer and use it in GitHub Desktop.
Save ivomans/57a6591be9d37e381e63285899ec0281 to your computer and use it in GitHub Desktop.
Opvragen KNMI data tbv Domoticz
----------------------------------------------------------------------------------------------------------------
-- Script om gegevens van KNMI in Domoticz te verwerken
----------------------------------------------------------------------------------------------------------------
-- config ---------------------------------------------------------
-- 1: maak onder Setup-Hardware een DUMMY hardware aan (als nog niet aanwezig)
-- 2: maak bij dit DUMMY hardware virtuele sensoren aan:
-- 1x type 'Wind'
-- 1x type 'Temp+Hum+Baro'
-- 3: kijk onder Setup-Devices welke ID bovenstaande sensoren hebben gekregen
-- 4: vul deze ID onderstaand in:
device_wind='85'
device_temp='86'
-- Het volledige pad naar de bij domoticz geinstalleerde JSON.lua file
JSON = (loadfile "/home/ubuntu/domoticz/scripts/lua/JSON.lua")()
-- Vul gewenste plaats in van de weer-data
loc='Eindhoven'
-- Vul hier je secret-key van de registratie in:
key='********'
url='http://weerlive.nl/api/json-data-10min.php?key='..key..'&locatie='..loc
----- MAIN Program ------
commandArray = {}
local m = os.date('%M')
if (m % 5 == 0) then
-- eens in de 5 minuten uitvoeren
print('Start KNMI script');
jsonfile=assert(io.popen('curl "'..url..'"'))
jsonstring = jsonfile:read('*all')
jsonfile:close()
knmidata = JSON:decode(jsonstring)
-- Vertalen 'NoordWest' naar 315 graden
wdir = knmidata.liveweer[1].windr
wdir = string.gsub(wdir,'Noord','N')
wdir = string.gsub(wdir,'West','W')
wdir = string.gsub(wdir,'Zuid','S')
wdir = string.gsub(wdir,'Oost','E')
wdir = string.gsub(wdir,'Z','S')
wdir = string.gsub(wdir,'O','E')
wdeg=10
if wdir=='N' then wdeg=0
elseif wdir=='NNE' then wdeg=22.5
elseif wdir=='NE' then wdeg=45
elseif wdir=='ENE' then wdeg=67.5
elseif wdir=='E' then wdeg=90
elseif wdir=='ESE' then wdeg=112.5
elseif wdir=='SE' then wdeg=135
elseif wdir=='SSE' then wdeg=157.5
elseif wdir=='S' then wdeg=180
elseif wdir=='SSW' then wdeg=202.5
elseif wdir=='SW' then wdeg=225
elseif wdir=='WSW' then wdeg=247.5
elseif wdir=='W' then wdeg=270
elseif wdir=='WNW' then wdeg=292.5
elseif wdir=='NW' then wdeg=315
elseif wdir=='NNW' then wdeg=337.5
else wdeg=5
print('!!! onbekende windrichting: ',wdir)
end
commandArray[1] = {['UpdateDevice'] = device_wind .. '|0'
..'|'..tostring(wdeg)
..';'..wdir
..';'..tostring(10*tonumber(knmidata.liveweer[1].windms))
..';'..tostring(10*0)
..';'..knmidata.liveweer[1].temp
..';'..knmidata.liveweer[1].gtemp
}
commandArray[2] = {['UpdateDevice'] = device_temp .. '|0'
..'|'..knmidata.liveweer[1].temp
..';'..knmidata.liveweer[1].lv
..';'..'0'
..';'..knmidata.liveweer[1].luchtd
..';'..'0'
}
end
return commandArray
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment