Created
April 25, 2022 20:29
-
-
Save ivomans/57a6591be9d37e381e63285899ec0281 to your computer and use it in GitHub Desktop.
Opvragen KNMI data tbv Domoticz
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
---------------------------------------------------------------------------------------------------------------- | |
-- 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