Maak van Domoticz een weerstation – Deel 2

In Maak van Domoticz een weerstation – Deel 1 hebben we al 18 sensoren/switches werkend gekregen om van Domoticz een weerstation te maken. Helaas ontbreken we nog enkele gegevens om een weerbericht voor de volgende dag te kunnen maken. In dit artikel leggen we uit hoe we de ontbrekende gegevens kunnen toevoegen. Het gaat om:

  • Grondtemperatuur
  • Verwachting morgen
  • Verwachting uitgebreid
  • Temperatuur dauwpunt
  • Bewolkingsgraad
  • UV-waarde
  • Ozon-waarde

 

 

Benodigdheden

 

Virtuele sensoren aanmaken

De volgende stap is om een virtuele sensor aan te maken. Ga naar Setup -> Hardware en kies bij Type voor Dummy. Je mag zeg een herkenbare naam kiezen:

Zodra de Dummy Hardware toegevoegd is kunnen de virtuele sensoren gaan aanmaken. Klik hiervoor op Create Virtual Sensors (in het donkerblauw).

Maak nu de virtuele sensor aan van het type “Temperature” en geef “Temperatuur Grond” als naam van de sensor in:

Maak op dezelfde wijze onderstaande virtuele sensoren aan (hou dezelfde namen aan, anders moet je ze ook wijzigen in het script op regel 25 t/m 31):

Verwachting morgen      — Text sensor
Verwachting uitgebreid  — Text sensor
Temperatuur Dauwpunt    — Temperature sensor
Bewolkingsgraad         — Percentage sensor
UV                      — UV sensor
Ozone                   — Custom sensor met axis “DU”

 

DarkSky API-key

Tot slot moeten we nog een API-key aanmaken op de website van DarkSky. Deze API-key heb je nodig om via het script informatie van DarkSky naar Domoticz te halen. Volg de instructies op de DarkSky website.

Darksky API

 

Script

De laatste stap is het script. Ga naar Setup > More Options > Events en kies voor een LUA event (van het type Time). Kopieer onderstaand script naar Domoticz. Vul op regel 14 het IP + poortnummer van Domoticz in. Vul op regel 15 het nummer van een weerstation bij jou in de buurt in. Op regel 16 vul het de API-key van DarkSky in. Debugging kun je op regel 17 aan- of uitzetten. Tot slot kun je op regel 18 de taal voor de weersverwachtingen instellen. Activeer het event en sla het op.

--[[ WEERSTATIONS:
Amsterdam   = 36  Groningen           = 13  Oost-Groningen  = 31  Vlissingen      = 44
Arnhem      = 2   Hoek van Holland    = 17  Oost-Overijssel = 12  Voorschoten     = 46
Berkhout    = 3   Hoogeveen           = 18  Rotterdam       = 33  Wadden          = 19
Den Helder  = 6   Leeuwarden          = 26  Utrecht         = 5   Weert           = 8
Eindhoven   = 7   Lelystad            = 27  Terneuzen       = 47  West-Friesland  = 38
Gilze Rijen = 10  Maastricht          = 29  Twente          = 41  West-Utrecht    = 28
Goes        = 11  Noord-Groningen     = 24  Uden            = 45  Woensdrecht     = 50
Gorinchem   = 16  Noordoostpolder     = 30  Venlo           = 1   Zwolle          = 15
--]]
--------------------------------
---------- SETTINGS ------------
--------------------------------
local domo_ip       = "192.168.2.62:8080"					-- IP adres van Domoticz, inclusief poort
local weerstation   = 33                                    -- Kies je weerstation naar keuze
local api_key       = "126387d6c1a1bd4731a2f366854ab8ed5"    -- Darksky secret key
local debug         = 1                                     -- 0 = no debug, 1 = debug
local language      = "nl"                                  -- ar: Arabic, az: Azerbaijani, be: Belarusian, bg: Bulgarian, bs: Bosnian, ca: Catalan, cs: Czech, da: Danish,
                                                            -- de: German, el: Greek, en: English, es: Spanish, et: Estonian, fi: Finnish, fr: French, he: Hebrew, hr: Croatian,
                                                            -- hu: Hungarian, id: Indonesian, is: Icelandic, it: Italian, ja: Japanese, ka: Georgian, ko: Korean, kw: Cornish,
                                                            -- lv: Latvian, nb: Norwegian Bokmål, nl: Dutch, no: Norwegian Bokmål (alias for nb), pl: Polish, pt: Portuguese,
                                                            -- ro: Romanian, ru: Russian, sk: Slovak, sl: Slovenian, sr: Serbian, sv: Swedish, tet: Tetum, tr: Turkish,
                                                            -- uk: Ukrainian, x-pig-latin: Igpay Atinlay, zh: simplified Chinese, zh-tw: traditional Chinese

local dev_TempGround    = "Temperatuur Grond"       -- Temperature sensor
local dev_TextTomorrow  = "Verwachting morgen"      -- Text sensor
local dev_LongText      = "Verwachting uitgebreid"  -- Text sensor       
local dev_DewPoint      = "Temperatuur Dauwpunt"    -- Temperature sensor 
local dev_CloudCover    = "Bewolkingsgraad"         -- Percentage sensor
local dev_UV            = "UV"                      -- UV sensor
local dev_Ozone         = "Ozone"                   -- Custom sensor with axis "DU"

commandArray={}
--Functie devices updaten
function UpdateDev(device,nvalue,svalues)
    commandArray[#commandArray+1] = {['UpdateDevice'] = otherdevices_idx[device]..'|'..tostring(nvalue)..'|'..tostring(svalues)}
end
-- Functie afronding
function round(num, dec)
    if num == 0 then
        return 0
    else
        local mult = 10^(dec or 0)
        return math.floor(num * mult + 0.5) / mult
    end
end
--------------------------------------------------
----- ######## Buienradar API Data call ######## -----
--------------------------------------------------
time = os.date("*t")
if  ((time.min+2)%5)==0  then -- Script loopt iedere 5 minuten (bv. 11.03, 11.08, 11.13, 11.18, etc.
    json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
    local config=assert(io.popen('curl "https://data.buienradar.nl/2.0/feed/json"'))   
    local Stringjson = config:read('*all')
    config:close()
    local jsonData = json:decode(Stringjson)
-- Convert the json to a LUA table
if jsonData.actual.stationmeasurements[ weerstation ] ~= nil then  -- this sometimes happens around midnight
    val_TempGround              = jsonData.actual.stationmeasurements[ weerstation ].groundtemperature
    val_WeatherTomorrow         = jsonData.forecast.fivedayforecast[1].weatherdescription        
    val_SunChanceTomorrow       = jsonData.forecast.fivedayforecast[1].sunChance
    val_RainChanceTomorrow      = jsonData.forecast.fivedayforecast[1].rainChance        
    val_RainMinimum             = jsonData.forecast.fivedayforecast[1].mmRainMin
    val_RainMaximum             = jsonData.forecast.fivedayforecast[1].mmRainMax
    val_WindDirectionTomorrow   = jsonData.forecast.fivedayforecast[1].windDirection        
    val_WindSpeedTomorrow       = jsonData.forecast.fivedayforecast[1].wind        
    val_TempTomorrowMinMin      = jsonData.forecast.fivedayforecast[1].mintemperatureMin --minimale minimumtemperatuur
    val_TempTomorrowMaxMin      = jsonData.forecast.fivedayforecast[1].mintemperatureMax --maximale minimumtemperatuur
    val_TempTomorrowMinMax      = jsonData.forecast.fivedayforecast[1].maxtemperatureMin --minimale maximumtemperatuur
    val_TempTomorrowMaxMax      = jsonData.forecast.fivedayforecast[1].maxtemperatureMax --maximale maximumtemperatuur
end

--Min/Max. temperatuur bepalen
if val_TempTomorrowMinMin == val_TempTomorrowMaxMin then TempMinimum = val_TempTomorrowMinMin
    else TempMinimum = val_TempTomorrowMinMin.." - "..val_TempTomorrowMaxMin end
if val_TempTomorrowMinMax == val_TempTomorrowMaxMax then TempMaximum = val_TempTomorrowMinMax
    else TempMaximum = val_TempTomorrowMinMax.." - "..val_TempTomorrowMaxMax
end
--Regenhoeveeldheid bepalen
if val_RainMinimum == val_RainMaximum then RainIntensity = val_RainMinimum
    else RainIntensity = val_RainMinimum.." - "..val_RainMaximum end
-- Windrichting tekst bepalen
if val_WindDirectionTomorrow == "z" or val_WindDirectionTomorrow == "Z" then WindDirectionTomorrow = " het zuiden"
    elseif val_WindDirectionTomorrow == "zw" or val_WindDirectionTomorrow == "ZW" then WindDirectionTomorrow = "het zuidwesten"
    elseif val_WindDirectionTomorrow == "zo" or val_WindDirectionTomorrow == "ZO" then WindDirectionTomorrow = "het zuidoosten"
    elseif val_WindDirectionTomorrow == "w" or val_WindDirectionTomorrow == "W" then WindDirectionTomorrow = "het westen"
    elseif val_WindDirectionTomorrow == "nw" or val_WindDirectionTomorrow == "NW" then WindDirectionTomorrow = "het noordwesten"
    elseif val_WindDirectionTomorrow == "n" or val_WindDirectionTomorrow == "N" then WindDirectionTomorrow = "het noorden"
    elseif val_WindDirectionTomorrow == "no" or val_WindDirectionTomorrow == "NO" then WindDirectionTomorrow = " het noordoosten"
    elseif val_WindDirectionTomorrow == "o" or val_WindDirectionTomorrow == "O" then WindDirectionTomorrow = "het oosten"
    else WindDirectionTomorrow = "variabele richtingen" end
--Voorspellingen
forecast=val_WeatherTomorrow.. "\n " .."\n".. "Komende nacht daalt de temperatuur naar "..TempMinimum.." °C. Morgen overdag wordt morgen maximaal "..TempMaximum.. " °C. Er is morgen "..val_SunChanceTomorrow.." % kans op zon en "..val_RainChanceTomorrow.." % kans op neerslag ("..RainIntensity.." mm). De wind komt uit "..WindDirectionTomorrow.." en zal kracht "..val_WindSpeedTomorrow.." Bft hebben." .."\n " .."\n "
if otherdevices_svalues[dev_TextTomorrow] ~= forecast then UpdateDev(dev_TextTomorrow,0,forecast) end
-- Updating domoticz devices
    UpdateDev(dev_TempGround,0,val_TempGround)     
if debug==1 then
    print ("Temperatuur Grond: "..val_TempGround.." °C") 
end
end
---------------------------------------
-- ######## Darksy API call ######## --
---------------------------------------
if  ((time.min+2)%5)==0  then -- Script loopt iedere 5 minuten (bv. 11.03, 11.08, 11.13, 11.18, etc.

    json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
    local config=assert(io.popen('curl "http://'..domo_ip..'/json.htm?type=settings"'))
    local Stringjson = config:read('*all')
    config:close()
    local jsonData = json:decode(Stringjson)
-- Convert the json to a LUA table
    lat          = jsonData.Location.Latitude
    lon          = jsonData.Location.Longitude

  local coord = lat..","..lon
 
    json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
    local config=assert(io.popen('curl "https://api.darksky.net/forecast/'..api_key..'/'..coord..'?lang='..language..'&units=si&exclude=hourly,flags"'))
    local Stringjson = config:read('*all')
    config:close()
    local jsonData = json:decode(Stringjson)
-- Convert the json to a LUA table
   if jsonData ~= nil then  -- this sometimes happens around midnight
        val_UV          = jsonData.currently.uvIndex
        val_Ozone       = jsonData.currently.ozone
        val_DewPoint    = round(jsonData.currently.dewPoint,1)
        val_CloudCover  = jsonData.currently.cloudCover*100
end
    
    if debug==1 then
        print("Bewolkingsgraad : "..val_CloudCover.. " %")
        print("UV-kracht :"..val_UV)
        print("Ozone : De ozone-waarde is "..val_Ozone) 
        print("Dauwpunt : "..val_DewPoint.. " °C")
    end
    
-- Domoticz devices updaten
    UpdateDev(dev_CloudCover,0,val_CloudCover)
    UpdateDev(dev_DewPoint,0,val_DewPoint)
    UpdateDev(dev_UV,0,val_UV..";0")
    UpdateDev(dev_Ozone,0,val_Ozone)
 
if debug==1 then
    print ("Dauwpunt: "..val_DewPoint.." °C")
    print ("Bewolkingsgraad: "..val_CloudCover.." %")
    print ("UV-Index: "..val_UV)
    print ("Ozone: "..val_Ozone)
end
end
-------------------------------------------------------
-- ######## Buienradar Verwachting API call ######## --
-------------------------------------------------------
if  ((time.min+2)%30)==0  then -- Script loopt iedere 30 minuten (bv. 11.28, 11.58, 12.28, 12.58, etc.
    json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()  -- For Linux
    local config=assert(io.popen('curl "https://data.buienradar.nl/1.1/feed/json"'))
    local Stringjson = config:read('*all')
    config:close()
    local jsonData = json:decode(Stringjson)
-- Convert the json to a LUA table
    val_LongText 	= jsonData.buienradarnl.weergegevens.verwachting_vandaag.titel .."\n " .."\n ".. jsonData.buienradarnl.weergegevens.verwachting_vandaag.tekst .."\n " .."\n"
    val_LongText = string.gsub(val_LongText, " ", " ")
    val_LongText = string.gsub(val_LongText, "’", "'")
    val_LongText = string.gsub(val_LongText, "‘", "'")
    val_LongText = string.gsub(val_LongText, "ë", "ë")
    val_LongText = string.gsub(val_LongText, "è", "è")
    val_LongText = string.gsub(val_LongText, "é", "é")
    val_LongText = string.gsub(val_LongText, "ê", "ê")
    val_LongText = string.gsub(val_LongText, ";", ";")

  if debug==1 then
    print ("Uitgebreid: "..val_LongText) 
end
  
if otherdevices_svalues[dev_LongText] ~= val_LongText then UpdateDev(dev_LongText,0,val_LongText) end

end

return commandArray

 

Ga terug naar Deel 1

Ga door naar Deel 3

117 gedachten over “Maak van Domoticz een weerstation – Deel 2

  • 25 november 2018 om 13:01
    Permalink

    Hoi Joost,

    Ik heb je script geprobeerd maar ik loop tegen deze error aan.

    2018-11-25 13:00:00.649 Error: EventSystem: in weer: [string “–[[ WEERSTATIONS:
    …”]:49: attempt to concatenate local ‘lat’ (a nil value)

    Weet jij zo de oplossing?

    Beantwoorden
    • 25 november 2018 om 13:41
      Permalink

      Dat betreft een fout in de user variable LatitudeThuis.

      Heb je als type ‘String’ en bij value een punt i.p.v. een komma gebruikt? Ook de naam van de user variable moet exact overeenkomen.

      Beantwoorden
  • 29 november 2018 om 22:12
    Permalink

    Het kan zijn dat CloudCover in jouw regio (tijdelijk) niet beschikbaar is, dan krijg je een foutmelding in de log te zien. De regel is verder gewoon goed, alleen de fout-afhandeling is nog niet optimaal in het script. Kijk het eens een paar uurtjes aan…

    Beantwoorden
  • 30 november 2018 om 19:58
    Permalink

    Hoi Joost,

    Ik had ook nog een typefout in de sensors :), nu werkt alles behalve de bevolkingsgraad maar die kan ik wel missen.

    Dank voor jouw support!

    Inmiddels het speedtest script van jou ook al draaien.

    Gr. Tinus

    Beantwoorden
  • 14 december 2018 om 13:33
    Permalink

    Hoi Joost,
    (Bijna) alles werkt, behalve bewolkingsgraad (en dauwpunt, voor mij niet belangrijk). Krijg alleen onderstaande foutmelding:
    2018-12-14 13:28:01.174 Error: EventSystem: in buienradar: [string “–[[ WEERSTATIONS:
    …”]:185: attempt to index field ‘alerts’ (a nil value) ….maar er is geen waarschuwing geweest, zou kunnen kloppen..

    Groet, Ben

    Beantwoorden
  • 15 december 2018 om 13:13
    Permalink

    De kabouters hebben hun werk gedaan: vannacht heeft het script e.e.a. opgepakt en alle ontbrekende units, waaronder bewolkingsgraad en nog een paar dingen, zichtbaar gemaakt. Heb er niks aan veranderd. Update werkt nu ook voor alles. Resume: laat het eerst een paar dagen zijn gang gaan…

    Beantwoorden
  • 26 december 2018 om 13:02
    Permalink

    Dank voor je handleiding. Deel 1 werkt perfect. Bij deel 2 krijg ik toch errors nav mijn script ‘Weerstation’:
    18-12-26 12:54:00.648 Error: EventSystem: Lua script Weerstation did not return a commandArray

    Ik heb meerdere weerstations in de buurt gebruikt maar bij allemaal krijg ik deze error. Wat kan dit zijn?

    Beantwoorden
    • 27 december 2018 om 17:30
      Permalink

      Krijg je de foutmelding incidenteel een keer? Of iedere 5 minuten? Kun je de volledige foutmelding eens posten. Er wordt bij de melding een regelnummer aangegeven.

      Beantwoorden
      • 2 januari 2019 om 15:07
        Permalink

        Ik kreeg deze melding ook elke minuut:
        “Error: EventSystem: Lua script dummyWeatherStationUpdate did not return a commandArray”

        Ik heb dat opgelost door voor de definitie van de UpdateDev function deze 3 regels toe te voegen:

        if commandArray == nil then
        commandArray = {}
        end

        Dit zorgt er voor dat als de variabele commandArray nog niet bestaat deze als lege array wordt gedefinieerd.

        Wat ik heb begrepen zou dit niet nodig moeten zijn als je je script als Event in Domoticz hebt aangemaakt als intepreter ‘LUA’ en eventType ‘time’.

        Beantwoorden
  • 3 januari 2019 om 11:13
    Permalink

    @Joost: Leuke serie artikelen. Daarmee heb ik wat handige functies aan m’n Domoticz kunnen toevoegen. En voor een beginner met Domoticz laat het zien wat kan met LUA en dzVentz event scripts, en een plugin gedaan kan worden.
    @Anne: Bedankt voor het oplossen voor foutmelding.

    Beantwoorden
  • 4 januari 2019 om 11:23
    Permalink

    Goedemorgen,

    Vreemd genoeg krijg ik onderstaande melding:
    2019-01-04 11:18:00.759 Error: EventSystem: in Darksky weerstation: [string ” –[[ WEERSTATIONS: …”]:36: attempt to concatenate field ‘?’ (a nil value)
    Enig idee waar het hem daar in kan zitten?

    De opmerking van Anne van 2 januari heb ik al in het script toegevoegd.

    Alvast dank!

    Beantwoorden
    • 4 januari 2019 om 11:35
      Permalink

      Hoi Steef,

      Kun je even laten zien wat er bij jou op regel 36 staat?
      (Door de aanpassing komen de regelnummers niet meer overeen met het script zoals het hierboven staat)

      Zou het kunnen zijn dat de naamgeving van de sensor zoals die in het script wordt gebruikt niet overeen komt met hoe je het in Domoticz hebt ingevoerd? (Zie regel 25 t/m 31 in het bovenstaande script)

      Anne.

      Beantwoorden
      • 4 januari 2019 om 13:25
        Permalink

        Hoi Anne,

        Natuurlijk, onderstaand mijn regel 36:
        commandArray[#commandArray+1] = {[‘UpdateDevice’] = otherdevices_idx[device]..’|’..tostring(nvalue)..’|’..tostring(svalues)}

        De namen heb ik hetzelfde gehouden, vanwege de waarschuwing in de handleiding dat het dan ook op andere plekken aangepast moest worden. Zo bedreven ben ik nog niet met .lua scripts 🙂

        Beantwoorden
        • 4 januari 2019 om 16:30
          Permalink

          Hoi Steef,

          Ik denk toch dat het in de naamgeving zit.
          Ik had namelijk datzelfde probleem. (De post waar ik dat in uitleg wil echter om de 1 of andere reden niet verschijnen)

          Bij mij waren er 3 sensoren waarbij de namen in de aanmaak instructie en in de code niet overeen kwamen:

          ‘Temperatuur Grond’ – heet als sensor ‘GrondTemperatuur’
          ‘Verwachting uitgebreid’ – heet als sensor ‘Uitgebreide verwachting’
          en
          ‘Temperatuur Dauwpunt’ – heet als sensor ‘Dauwpunt’

          Ik heb dus deze regels aangepast:

          local dev_TempGround = “GrondTemperatuur” — Temperature sensor
          local dev_LongText = “Uitgebreide verwachting” — Text sensor
          local dev_DewPoint = “Dauwpunt” — Temperature sensor

          Daarna werkte dat ook weer.

          Anne.

          Beantwoorden
          • 5 januari 2019 om 10:37
            Permalink

            Er waren inderdaad 3 sensoren van naam veranderd, dit is nu aangepast in het script.

        • 5 januari 2019 om 18:30
          Permalink

          Hoi Steef,

          Wil dat zeggen dat na de aanpassingen van de 3 namen het nu wel goed werkt bij jou?

          Anne.

          Beantwoorden
  • 5 januari 2019 om 20:27
    Permalink

    Goedenavond, nee, ik krijg helaas nog steeds dezelfde melding 😦

    Beantwoorden
    • 5 januari 2019 om 21:50
      Permalink

      Wanneer ik het stukje code uit Anne’s tekst weghaal krijg ik weer de ‘dit not return a command array’ foutmelding.

      Dus er gaat iets nog niet goed, alleen lastig te bepalen waar.

      Beantwoorden
    • 5 januari 2019 om 22:49
      Permalink

      Hoi Steef,

      Om te kunnen bepalen wat er waar fout gaat moeten er (nogal) wat debug statements worden toegevoegd. Als eenmaal is bepaald waar het probleem zit kun je die weer weghalen.

      Vervang de functie updateDev met onderstaande code.
      Na een tijdje zul je dan in de log de informatie zien en dan waarschijnlijk ook kunnen bepalen bij welk device het mis gaat.

      Anne.

      –Functie devices updaten
      function UpdateDev(device,nvalue,svalues)
      print(“UpdateDev(device,nvalue,svalues) check”)
      if (device == nil) then
      print(“device parameter is nil”)
      end
      if (device ~= nil) then
      print(“device”)
      print(device)
      end
      if (otherdevices_idx == nil) then
      print(“otherdevices_idx array is nil”)
      end
      if (otherdevices_idx ~= nil) then
      if (otherdevices_idx[device] == nil) then
      print(“otherdevices_idx[device] is nil”)
      end
      if (otherdevices_idx[device] ~= nil) then
      print(“otherdevices_idx[“..device..”]”)
      print(otherdevices_idx[device])
      end
      end
      if (nvalue == nil) then
      print(“nvalue parameter is nil”)
      end
      if (nvalue ~= nil) then
      print(“nvalue”)
      print(nvalue)
      end
      if (svalues == nil) then
      print(“svalues parameter is nil”)
      end
      if (svalues ~= nil) then
      print(“svalues”)
      print(nvalue)
      end
      commandArray[#commandArray+1] = {[‘UpdateDevice’] = otherdevices_idx[device]..’|’..tostring(nvalue)..’|’..tostring(svalues)}
      end

      Beantwoorden
  • 6 januari 2019 om 14:24
    Permalink

    Goedemiddag,

    Volgens mij doe ik gewoon iets grandioos verkeerd, ik krijg namelijk onderstaande foutmelding:

    2019-01-06 14:21:00.565 Error: EventSystem: in Darksky weerstation: [string ” –[[ WEERSTATIONS: …”]:38: unexpected symbol near char(226)

    Regel 38 is na toevoegen van het script de onderstaande regel:
    print(“UpdateDev(device,nvalue,svalues) check”)

    Beantwoorden
  • 6 januari 2019 om 16:26
    Permalink

    Als ik bovenstaande handeling uitvoer, krijg ik het volgende:
    2019-01-06 15:42:00.628 Error: EventSystem: in Buienradar: [string “–[[ WEERSTATIONS:
    …”]:34: unexpected symbol near char(226)

    Beantwoorden
  • 6 januari 2019 om 17:03
    Permalink

    Kun je/jullie je script (met domo_ip en api_key leeg gemaakt) eens ergens uploaden, dan kan ik kijken of ik er achter kan komen wat er mis is.

    Anne.

    Beantwoorden
    • 8 januari 2019 om 00:55
      Permalink

      Hoi Steef,

      Ik zie niet direct een probleem met dit script.
      Welk foutmelding geeft deze versie?

      Anne.

      Beantwoorden
      • 8 januari 2019 om 09:20
        Permalink

        Hoi Anne,

        Hij blijft de melding Error: EventSystem: in Darksky weerstation: [string ” –[[ WEERSTATIONS: …”]:36: attempt to concatenate field ‘?’ (a nil value) geven bij mij. Terwijl ik wel een paar waarden (cloud cover en weersverwachting voor morgen) doorkrijg.

        Gisteren gaf hij nog een authentificatie error, maar die is opgelost.

        Beantwoorden
        • 8 januari 2019 om 10:06
          Permalink

          Het bijzondere is wel, hij geeft nu elk half uur de melding, terwijl de updates voor zover ik kan zien nog steeds elke 5 minuten binnen komen.

          Beantwoorden
          • 9 januari 2019 om 14:36
            Permalink

            Hoi Steef,

            Dat het maar eens in de 30 minuten is ipv eens in de 5 minuten is al weer een goede indicatie waar het probleem zou kunnen zitten.

            Er zijn 2 delen van het script die elke 5 minuten draaien.
            Onderaan staat de buienradar verwachting, die elk half uur wordt uitgevoerd.

            Ik heb het script dat je deelde aangepast zodat hij wat meer informatie geeft bij het updaten
            Zie de functie
            function UpdateDev(device,nvalue,svalues)

            en ook de buienradar verwachting elke keer dat het script wordt aangeroepen uitvoert
            Zie de regel met
            if (true) then —

            Samen zou je dat een idee moeten geven waar het probleem zou moeten zitten.

            Het aangepaste script:
            https://drive.google.com/open?id=1kE2yXL7C63hASCnW2VdKH8Kt_0Bi3Wga

            Anne.

  • 7 januari 2019 om 15:47
    Permalink

    Alles weer terug naar zoals het was, nu dus weer dit iedere 5 minuten:

    2019-01-07 15:33:00.777 Error: EventSystem: in Buienradar: [string “–[[ WEERSTATIONS:
    …”]:33: attempt to get length of global ‘commandArray’ (a nil value)
    2019-01-07 15:34:00.492 Error: EventSystem: Lua script Buienradar did not return a commandArray
    2019-01-07 15:35:00.644 Error: EventSystem: Lua script Buienradar did not return a commandArray
    2019-01-07 15:36:00.771 Error: EventSystem: Lua script Buienradar did not return a commandArray
    2019-01-07 15:37:00.803 Error: EventSystem: Lua script Buienradar did not return a commandArray

    Beantwoorden
    • 8 januari 2019 om 01:17
      Permalink

      Hoi René,

      De foutmelding over het missende commandArray kun je zoals gezegd oplossen door _voor_ de UpdateDev() functie de onderstaand regels toe te voegen. Die controleren of commandArray niet gedefinieerd is (nil is) en zo ja maken het aan als lege array/table/sequence.

      if commandArray == nil then
      commandArray = {}
      end

      Ik heb je script bekeken en zie daar verder niet direct fouten in.
      Het enige dat ik nog als suggestie zou kunnen doen is om de namen (en typen) van de sensoren die je hebt aangemaakt nog eens goed te controleren dat er geen typeouten in zitten.

      Als je dus de commandArray regels hebt toegevoegd om de melding over missend commandArray op te lossen dan zou het moeten werken.

      Ik neem aan dat je het als lua script van het type Time hebt aangemaakt?

      Als je in je browser je domoticz kunt benaderen via poort 443, dan zou dat eigenlijk moeten werken, maar het kan wel tot vreemd gedrag leiden. 443 is normaal gezien namelijk de https poort, en het zou kunnen zijn dat je dan een (signed) certificate moet gebruiken om het geheel vlekkeloos te laten verlopen.

      Anne.

      Beantwoorden
  • 8 januari 2019 om 10:25
    Permalink

    Goede morgen Anne, dit werkt, maar er komt nu een volgend probleem:

    Onderstaand deel is het deel van het script wat DarkSky aanroept, en daar komt op de regel die de latitude aanroept de volgende fout:
    2019-01-08 10:23:00.919 Error: EventSystem: in Buienradar: [string “–[[ WEERSTATIONS:
    …”]:110: attempt to index local ‘jsonData’ (a nil value)

    (Dat is deze regel: lat = jsonData.Location.Latitude )

    Hier het gedeelte van het script:
    —————————————
    — ######## Darksy API call ######## —
    —————————————
    if ((time.min+2)%5)==0 then — Script loopt iedere 5 minuten (bv. 11.03, 11.08, 11.13, 11.18, etc.
    json = (loadfile “/home/pi/domoticz/scripts/lua/JSON.lua”)() — For Linux
    local config=assert(io.popen(‘curl “http://’..domo_ip..’/json.htm?type=settings”‘))
    local Stringjson = config:read(‘*all’)
    config:close()
    local jsonData = json:decode(Stringjson)
    — Convert the json to a LUA table
    lat = jsonData.Location.Latitude
    lon = jsonData.Location.Longitude
    local coord = lat..”,”..lon

    json = (loadfile “/home/pi/domoticz/scripts/lua/JSON.lua”)() — For Linux
    local config=assert(io.popen(‘curl “https://api.darksky.net/forecast/’..api_key..’/’..coord..’?lang=’..language..’&units=si&exclude=hourly,flags”‘))
    local Stringjson = config:read(‘*all’)
    config:close()
    local jsonData = json:decode(Stringjson)
    — Convert the json to a LUA table
    if jsonData ~= nil then — this sometimes happens around midnight
    val_UV = jsonData.currently.uvIndex
    val_Ozone = jsonData.currently.ozone
    val_DewPoint = round(jsonData.currently.dewPoint,1)
    val_CloudCover = jsonData.currently.cloudCover*100
    end

    if debug==1 then
    print(“Bewolkingsgraad : “..val_CloudCover.. ” %”)
    print(“UV-kracht :”..val_UV)
    print(“Ozone : De ozone-waarde is “..val_Ozone)
    print(“Dauwpunt : “..val_DewPoint.. ” °C”)
    end

    — Domoticz devices updaten
    UpdateDev(dev_CloudCover,0,val_CloudCover)
    UpdateDev(dev_DewPoint,0,val_DewPoint)
    UpdateDev(dev_UV,0,val_UV..”;0″)
    UpdateDev(dev_Ozone,0,val_Ozone)

    if debug==1 then
    print (“Dauwpunt: “..val_DewPoint..” °C”)
    print (“Bewolkingsgraad: “..val_CloudCover..” %”)
    print (“UV-Index: “..val_UV)
    print (“Ozone: “..val_Ozone)
    end
    end

    Beantwoorden
  • 9 januari 2019 om 15:42
    Permalink

    Goedemiddag, dank voor het aangepaste script!

    Ik krijg het onderstaande uit de log:
    2019-01-09 15:40:00.497 Status: dzVents: Info: WUS: —— Finished updateWeatherSensors.lua
    2019-01-09 15:40:01.363 Status: LUA: Uitgebreid: Meer zon, vannacht lichte vorst!
    2019-01-09 15:40:01.363
    2019-01-09 15:40:01.363 Vandaag zien we in het hele land de zon weer eens tevoorschijn komen. Ook doet de temperatuur een stapje terug. Het frissere, drogere weer is echter van korte duur.Vanmiddag zijn er flinke zonnige perioden en het blijft droog. De temperatuur komt uit op een graad of 7 en de noordenwind is matig tot krachtig. Vanavond verdwijnt de laatste bewolking waarna de nacht vrij helder verloopt. Daardoor koelt het flink af met in het binnenland lichte vorst! De minima liggen tussen + 1 graad langs de kust en -1 tot -3 graden in het binnenland. In de loop van de nacht raakt het vanuit het noordwesten opnieuw bewolkt. Daarnaast zwakt de noordenwind af. Morgen (na het krabben van de autoruiten) begint de dag in het binnenland met een glimp van de zon. Verder is het bewolkt en in de loop van de middag gaat het vanuit het noordwesten licht regenen. Het is een stuk frisser dan de afgelopen dagen met de middagtemperatuur tussen 2 graden langs de oostgrens en een graad of 6 aan zee. Er staat een zwakke tot matige noordenwind.De dagen daarna is het tamelijk wisselvallig en vrij zacht. De bewolking heeft duidelijk de overhand en er valt soms regen, vooral op zaterdag. In de middag wordt het een graad of 8 en de nachten verlopen vorstvrij.
    2019-01-09 15:40:01.363
    2019-01-09 15:40:01.363
    2019-01-09 15:40:01.363 Status: LUA: UpdateDev(device,nvalue,svalues) check
    2019-01-09 15:40:01.363 Status: LUA: otherdevices_idx[device] is nil
    2019-01-09 15:40:01.363 Error: EventSystem: in Darksky weerstation: [string ” –[[ WEERSTATIONS:
    …”]:54: attempt to concatenate field ‘?’ (a nil value)
    2019-01-09 15:40:03.539 Status: Notification sent (Email)

    Hij lijkt dus vast te zitten op de otherdevices_idx[device] op een of andere manier.

    Wat ook bijzonder is, is dat ik nu opeens de uitgebreide omschrijving ontvang (in de log, niet in de switch). Die kreeg ik daarvoor niet, dus ik heb het vermoeden dat het daar ergens zit.

    Beantwoorden
    • 9 januari 2019 om 20:40
      Permalink

      Om nog even op mijn eigen reactie terug te komen, op wonderbaarlijke wijze werkt het nu zonder foutmeldingen. De debug in het UpdateDev gedeelte heb ik teruggezet naar het oude, in het Buienradar deel staat het nog vanuit jouw stuk code. Dat laat ik ook maar zo, want zo werkt het, haha!

      Beantwoorden
      • 10 januari 2019 om 17:00
        Permalink

        Hoi Steef,

        De regel
        if (true) then — if ((time.min+2)%30)==0 then — Script loopt iedere 30 minuten (bv. 11.28, 11.58, 12.28, 12.58, etc.
        kun je het beste weer
        if ((time.min+2)%30)==0 then — Script loopt iedere 30 minuten (bv. 11.28, 11.58, 12.28, 12.58, etc.
        van maken, anders belast je het systeem denk ik te veel.

        Als je nog wil weten met welke waar het (wrs soms) mis gaat zou je dit nog in de dev update functie kunnen opnemen:
        if (otherdevices_idx ~= nil) then
        if (otherdevices_idx[device] == nil) then
        print(“otherdevices_idx[device] is nil”)
        print(“device”)
        print(device)
        end
        end

        Die laat dan ook de naam van het device zien waarvan de otherdevices_idx array/table niet gevonden wordt. (Dat moet eigenlijk haast wel een naamgeving issue zijn)

        Beide veel plezier er mee.

        Anne.

        Beantwoorden
  • 10 januari 2019 om 11:49
    Permalink

    Goede moergen Anne,
    Hier een beetje hetzelfde verhaal, af en toe komt er foutmelding langs, en dan een dag niet meer.
    Gaat verder wl goed zo, bedankt voor het meedenken.

    Beantwoorden
  • 11 januari 2019 om 08:18
    Permalink

    Hoi Anne,
    Dank voor de input, ik heb de regel even aangepast.

    Zo af en toe geeft hij nog een foutmelding, maar dat lijkt compleet random te zijn (afgelopen nacht iets na 00:00 4x op val_WindSpeedTomorrow, daarna niet meer)

    Hartelijk dank voor alle geboden ondersteuning!

    Beantwoorden
  • 11 januari 2019 om 08:57
    Permalink

    Beste Anne, ik heb ook gisteren alles geinstalleerd op mijn domoticz.
    Eerst kreeg ik vanuit dit script de error:
    2019-01-11 08:37:00.659 Error: EventSystem: Lua script wusScript did not return a commandArray
    2019-01-11 08:38:01.000 Error: EventSystem: in wusScript: [string “–[[ WEERSTATIONS:
    …”]:33: attempt to get length of global ‘commandArray’ (a nil value)

    Ik heb dat opgelost door, zoals hierboven omschreven, voor de definitie van de UpdateDev function deze 3 regels toe te voegen:

    if commandArray == nil then
    commandArray = {}
    end

    Nu krijg ik iedere 5 minuten de volgende error, en ik weet niet hoe ik dit moet oplossen
    2019-01-11 08:53:01.171 Error: EventSystem: in wusScript: /home/pi/domoticz/scripts/lua/JSON.lua:660: html passed to JSON:decode(): Unauthorized401 Unauthorized

    Misschien kun je me helpen
    Rudi

    Beantwoorden
    • 12 januari 2019 om 08:24
      Permalink

      Ondertussen zijn alle issues opgelost.
      Ik heb de UpdateDev functie overgenomen.
      Verder had ik een typefout in een device gemaakt (Temperatuur Dauwpunt i.p.v. Dauwpunt)
      Als laatste had ik in mijn Domoticz>Settings>local networks het IP-adres van mijn RPI niet staan. Deze toegevoegd en ik heb geen errors meer, ook alle devices worden gevuld.

      Beantwoorden
      • 12 januari 2019 om 12:22
        Permalink

        Hoi Rudi,

        Altijd mooi als problemen zich ‘vanzelf’ oplossen 😉

        Ik heb al 2 keer gepoogd een stukje te posten met uitleg hoe ik het bij mij aan de praat heb gekregen (onder Windows), maar om de een of andere reden komt dat stukje hier niet terecht.

        Het belangrijkste dat daar in stond is inderdaad dat je de gebruikte namen goed controleert. Dat wat in het script staat ook precies overeen komt met wat je in Domoticz hebt aangemaakt.
        De namen zijn volgens mij ook ‘hoofdletter gevoelig’, dus ook het gebruik van hoofdletters en kleine letters moet precies overeen komen. Zelfs als je de instructie goed volgt kan het zijn dat er een (klein) verschil in zit en dan werkt het niet.

        Ik denk overigens dat het toevoegen van je RPI aan de local networks er voor gezorgd heeft dat je de ‘unauthorized access’ fout niet meer krijgt.

        Anne.

        Beantwoorden
  • 15 januari 2019 om 12:29
    Permalink

    Hallo
    Sinds gisteren krijg ik de volgende foutmelding:

    Error: EventSystem: in Weerstation: [string “…”]:60: attempt to index local ‘jsonData’ (a nil value)

    En verschillene switches worden dan niet meer geupdated (zoals Lux Calulated en Lux Solar Powertime)

    Is er iets veranderd?
    gr.

    Cor

    Beantwoorden
  • 15 januari 2019 om 14:17
    Permalink

    Hoi Cor,

    Dit zijn volgens mij 2 verschillende dingen.

    Het regelnummer 60 komt niet helemaal overeen met het bovenstaande script, maar ik denk dat het een gevolg is van het niet goed kunnen inlezen van
    https://api.buienradar.nl/data/public/2.0/jsonfeed

    Is dit een fout die elke 5 minuten optreed, of alleen zo nu en dan?
    Dat laatste kan voor komen.

    De Lux devices worden in de script van Deel 1 geupdate maar staan dus los van de jsonData melding: de variabele jsonData wordt in die scripts niet gebruikt.

    Beantwoorden
    • 15 januari 2019 om 15:56
      Permalink

      Het was idd een probleem van mijn dns-server. Dns-probleem opgelost en backup teruggezet.
      Nu is de foutmelding weg en mijn Lux Calculated wordt weer netjes bijgewerkt.
      Dank voor de tip.

      Beantwoorden
  • 22 januari 2019 om 20:02
    Permalink

    Buienradar heeft de URL van de API gewijzigd. Hierdoor dient regel 52 en 154 van het script aangepast te worden. De wijzigingen staan reeds in bovenstaand script.

    Beantwoorden
    • 23 januari 2019 om 08:31
      Permalink

      Hoi Joost,

      In regel 52 staat “2.0” in de URL, en in regel 154 “1.1”, klopt dat?

      Groet, Steef

      Beantwoorden
      • 23 januari 2019 om 08:44
        Permalink

        Hoi Steef, ja dat klopt! Zijn 2 verschillende API’s.

        Beantwoorden
  • 6 februari 2019 om 10:59
    Permalink

    Goeden dag
    Is een api van Darksky gratis of moet je er voor betalen.

    Beantwoorden
    • 6 februari 2019 om 11:23
      Permalink

      Ik heb mijn account gratis in een paar minuten kunnen aanmaken.

      Beantwoorden
      • 6 februari 2019 om 12:46
        Permalink

        En het werkt ook ik krijg de onderstaande fout, ik weet ook niet goed waar ik de 3 regels van de post hier boven op 2 januari moet toevoegen.
        Kan jij mij helpen

        Beantwoorden
  • 6 februari 2019 om 12:24
    Permalink

    Goeden dag ik ben nog onbekend met domoticz, maar heb de sensors aan gemaakt. Het schript in luna gezet onder time. Ip en poort ingevuld stationscode en mijn persoonlijke api van Darksky. Nu krijg ik in mijn log onderstaande fout melding.

    2019-02-06 12:17:01.442 Error: EventSystem: Lua script Weer station Darksky did not return a commandArray

    Kan iemend mij AUB helpen, alvast bedankt

    Beantwoorden
  • 6 februari 2019 om 14:26
    Permalink

    Alles werkend gekregen. Ik heb nog een vraag is het ook mogelijk om de barometer druk in domoticz te krijgen

    Beantwoorden
  • 6 februari 2019 om 22:41
    Permalink

    Dag Anne heb jij deel 1 ook er bij zitten jij hebt veel meer gegevens denk ik.
    Ik ben pas begonnen met de raspberry en domoticz ben nog er nog aardig mee aan het stoeien.

    Beantwoorden
  • 7 februari 2019 om 22:25
    Permalink

    Bij mij wil deel 1 maar niet lukken , krijg zoveel foutmeldingen in mijn log, ben er maar weer mee gestopt. Jammer hoor dat het niet lukt.

    Beantwoorden
    • 7 februari 2019 om 23:02
      Permalink

      Hoi Rene,

      Vaak hebben foutmeldingen te maken met 1 of 2 dingen die mis gaan.
      Bij mij wilde bijvoorbeeld de api calls met curl eerst niet werken.

      Als je je aangepast scripts (met je ip en api key verwijderd) en de logs ergens kunt neerzetten dan wil ik er wel eens naar kijken of mij iets op valt.

      Anne.

      Beantwoorden
  • 8 februari 2019 om 11:54
    Permalink

    Nu ben ik ook hiermee bezig, echter met het verkrijgen van een API zoals genoemd in het script(regel 37 googleAPIkey) moet ik op het eind creditcard gegevens vermelden. Klopt dit? Heb al gecontroleerd of ik zo’n ding heb, blijkt niet het geval.

    Beantwoorden
    • 8 februari 2019 om 13:30
      Permalink

      Hoi Ben,

      Ik heb zelf mijn lattitude en longitude ingevuld en daarnaast

      useDomoticzLocation = false;
      googleAPIkey = false;

      en

      myWeatherStation = “Voorschoten”;

      ingesteld. Dan hoeft hij helemaal niets met de google api te doen.
      Is wel makkelijk dat het script het allemaal zelf uit kan zoeken, maar eigenlijk ook een beetje zonde van de verwerkingskracht om steeds een gegeven op te halen dat nooit meer verandert.

      Anne.

      Beantwoorden
  • 8 februari 2019 om 15:26
    Permalink

    Hallo allemaal,

    Ik heb zojuist deel 1 en 2 gevolgd van deze toffe handleiding.
    ik krijg alleen 3 meldingen die ik zelf niet opgelost krijg (ben ook niet erg ervaren)
    zie onderstaande:
    2019-02-08 15:21:00.741 Error: EventSystem: Lua script Weer did not return a commandArray
    2019-02-08 15:21:00.748 Error: Error opening url: http://127.0.0.1:8080/json.htm?type=settings
    2019-02-08 15:21:00.995 Error: dzVents: Error (2.4.6): WUS: [0006] Er is een probleem met inlezen van de data; controleer wat er fout is gegaan. in:WUS_locationResponse, Error: 401

    Voor de array melding heb ik al geprobeerd de drie regels toe te voegen welke hier boven waren aangegeven maar dit werkt bij mij niet, of zit ik er naast en is dit niet de zelfde melding als hier boven.
    Ik hoop dat iemand weet wat er mis gaat 🙂

    Beantwoorden
    • 8 februari 2019 om 17:10
      Permalink

      Hoi Bas,

      Http error 401 is een ‘unauthorized’ error.
      De aanroep naar http://127.0.0.1:8080/json.htm?type=settings
      wordt dus niet toegestaan omdat je niet voldoende rechten daarvoor hebt.

      Ik denk dat je 127.0.0.1 mss moet vervangen met het ipadres waar je domticz ook opvraagt?

      Anne.

      Beantwoorden
  • 8 februari 2019 om 20:14
    Permalink

    Hoi Anne,

    Bedankt voor je reactie, ik heb gezocht waar deze code word opgeroepen.
    onder de darksky api (regel 107) kom ik deze tegen.

    local config=assert(io.popen(‘curl “http://’..domo_ip..’/json.htm?type=settings”‘))

    Het vreemde is dat ik bovenin op regel 14 het juiste adres van mijn Rasberry (uiteraard geen x) incl poort heb staan dus ik snap niet goed waaron hij naar de localhost zoekt.

    local domo_ip = “192.168.x.x:8080”

    enig idee hier over?

    Bas

    Beantwoorden
    • 9 februari 2019 om 13:45
      Permalink

      Hoi Bas,

      Ik denk dat het hem in het updateWeatherSensors.lua script zit.
      Of beter gezegd, in de instelling die daar gebruikt wordt.
      Dit vanwege de vermelding van ‘WUS_locationResponse’ in jouw foutmelding.

      De aanroep URL voor de aan roep van json.htm?type=settings wordt daar op regel 304 gedaan:
      const.LOCATIONURL = dz.settings[‘Domoticz url’] .. “/json.htm?type=settings”

      waarbij dus de Domoticz url uit de settings van domoticz zelf uitgelezen lijkt te worden.

      Domoticz_url lijkt te worden ingesteld in de Domiticz code in dzEvents/runtime/EventHelpers.lua op regel 29 (in de versie die ik heb)
      Dat lijkt niet instelbaar te zijn. Alleen de poort waarop Domoticz te benaderen is is instelbaar.

      Waarom je dus ene 401 krijgt op iets dat je niet kunt aanpassen is mij niet echt duidelijk.

      Als je erg avontuurlijk bent zou je de 127.0.0.1 op die regel kunnen vervangen met jou 192.1168.x.x en dan de boel eens herstarten.

      Maar eigenlijk moet er iets anders mis zijn, dus de kans dat je 1 probleem gaat omzeilen en dan tegen een volgende aan loopt is wel groot.

      Anne

      Beantwoorden
  • 11 februari 2019 om 21:23
    Permalink

    Hoi Anne,

    ik heb twee keer een bericht gestuurd, maar vind het niet terug. Ben bezig met deel 1 en 2.
    Bij mij doet alleen de verwachting voor morgen het als ik bij events vraag naar de “Current states”. Dan werkt hij die sensor bij.
    Alle andere sensoren worden niet bijgewerkt.
    Ik krijg wel een foutmelding: [string “…”]:40: attempt to concatenate field ‘?’ (a nil value)
    In het script van de weersverwachting.

    Van deel 1 wordt geen enkele sensor bijgewerkt.

    Enig idee hoe ik verder kom?

    Beantwoorden
    • 12 februari 2019 om 16:28
      Permalink

      Hoi Albert,

      Ja soms kopen reacties niet goed door, heb ik ook al een keer gehad.

      Ik heb toch iets meer informatie nodig om je te kunnen helpen.
      Bijvoorbeeld wat meer van de foutmelding die je in de log tegen komt.

      En als je de scripts hebt aangepast ook een kopie daarvan, omdat de regelnummers in de logging dan gematched kunnen worden.

      Anne.

      Beantwoorden
      • 15 februari 2019 om 19:34
        Permalink

        Anne,

        is mijn script nog doorgekomen?
        En heb je idee waarom deel 1 niet werkt. Heb alles weer opnieuw geupload. Geen resultaat.

        Albert

        Beantwoorden
  • 12 februari 2019 om 15:39
    Permalink

    Goedemiddag,

    allereerst dank voor deze mooie scripts. Heb Domoticz draaien in combinatie met Dashticz en nu een zeer mooi weerstation aan de muur hangen dankzij dit 🙂

    Ik loop met het script van deel 2 echter tegen een probleem aan dat ik maar niet opgelost krijg.

    Ik draai Domoticz op een Synology, dus de json loadfile van regel 51 werkt voor mij niet.
    json = (loadfile “/home/pi/domoticz/scripts/lua/JSON.lua”)() — For Linux

    Ik heb het path aangepast naar mijn situatie (/domoticz/var/scripts/lua/JSON.lua) maar ik krijg iedere 5 minuten de volgende foutmelding:

    2019-02-12 15:28:00.757 Error: EventSystem: in Weerstation: [string “–[[ WEERSTATIONS:
    …”]:51: attempt to call a nil value

    Heeft iemand enig idee hoe ik dit kan oplossen en of het überhaupt wel werkzaam te krijgen is op een Synology?

    Alvast bedankt!

    Beantwoorden
    • 12 februari 2019 om 17:44
      Permalink

      Hoi Ronald,

      De vraag is dan wat er op regel 51 staat.
      Want die melding past niet echt bij het uitvoeren van
      json = (loadfile “/domoticz/var/scripts/lua/JSON.lua”)() — For Synology

      De vraag is of je op je Synology het curl command beschikbaar hebt om dit uit te voeren:
      curl “https://data.buienradar.nl/2.0/feed/json”

      Als dat kan, dan zou het mogelijk moeten zijn dit op een Synology te runnen.

      Anne.

      Beantwoorden
  • 13 februari 2019 om 11:42
    Permalink

    Hi Anne,

    Dank voor je antwoord. Ik zag dat ik een fout had gemaakt in het path naar de lua file. Die is gecorrigeerd en sinds gisterenavond werken 2 sensoren nu (grond temp en verwachting morgen).

    De – voor mij belangrijkste – sensor, verwachting uitgebreid werkt helaas niet. De foutmelding die ik nu krijg is:

    2019-02-13 11:38:01.007 Error: EventSystem: in Weerstation: [string “–[[ WEERSTATIONS:
    …”]:116: attempt to index local ‘jsonData’ (a nil value)

    Regel 116 is:
    lat = jsonData.Location.Latitude

    Het lijkt me dat ik het curl command wel beschikbaar heb want anders zouden de twee sensoren toch niet geüpdatet kunnen worden? Verder heeft de lua folder root rechten op de NAS.

    Ik zie het even niet meer 🙂

    Groet,
    Ronald

    Beantwoorden
  • 15 februari 2019 om 16:16
    Permalink

    Issue solved!

    Voor de mensen die dit op een Synology willen laten draaien:

    Bij mij liep het script vast op het deel waar geprobeerd wordt de locatie (lon en lat) te achterhalen via de jsonData:

    lat = jsonData.Location.Latitude
    lon = jsonData.Location.Longitude

    Ik heb dit opgelost door de lat en lon bovenin het script te definiëren en vervolgens de bovenstaande twee regels script te verwijderen. Na dit gedaan te hebben werden alle ‘sensoren’ actief.

    local weerstation = XX
    local lat = “XXXXX”
    local lon = “XXXXX”
    local api_key = “XXXXXX”

    Beantwoorden
  • 21 februari 2019 om 18:29
    Permalink

    Ter info: de nummers van de steden/regio’s zijn in de API gewijzigd en doorgevoerd in bovenstaand script.

    Beantwoorden
    • 22 februari 2019 om 23:01
      Permalink

      Hallo Joost,

      Dat hoeft toch alleen maar in het bovenstaande script van deel 2?
      Ik heb daar op regel 46 vervangen voor 35 — Voorschoten
      en het lijkt nu weer te werken.

      Anne.

      Beantwoorden
        • 7 maart 2019 om 18:52
          Permalink

          Kloppen de station nummers nog wel?
          Volgens mij is Leeuwarden niet nummer 20 bijv?

          vr.gr. John

          Beantwoorden
          • 7 maart 2019 om 19:07
            Permalink

            Hallo John,

            Buienradar heeft weer de oude indeling in de API gezet. Is nu weer aangepast in bovenstaand script.

          • 7 maart 2019 om 19:18
            Permalink

            Misschien beter om op basis van stationnaam ipv id in te stellen. Die veranderen denk ik minder vaak.
            Nu krijg je zonder dat je het in de gaten hebt de gegevens van een ander station.

            Overigens mooi gedaan allemaal.

            John

  • 23 februari 2019 om 21:21
    Permalink

    Hoi allemaal,

    Deel 1 en Deel 2 werken bij mij nu goed TOP hoor !!!
    Alleen waar ik nog wel mee zit deel 2 plot de gegevens om de 5 minuten en Deel 1 om de minuut. Dat om de minuut vind ik een beetje te veel en zou dat ook graag om de 5 minuten willen hebben, wat moet ik daar voor aanpassen in Deel 1
    Alvast bedankt voor de medewerking.

    Met vriendelijk,
    Rene

    Beantwoorden
  • 12 maart 2019 om 01:43
    Permalink

    Hallo allemaal,

    Ik heb bovenstaande gevolgd en alles uitgeprobeerd, echter ik blijf zitten met de volgende error:
    Error: EventSystem: in Dark Sky: [string “–[[ WEERSTATIONS:
    …”]:146: attempt to concatenate local ‘api_key’ (a nil value)

    Het gevolg is dat alle waarden uit deel2 NIET worden bijgewerkt behalve “verwachting morgen”.
    Dus:
    niet: Grondtemperatuur
    wel: Verwachting morgen
    niet: Verwachting uitgebreid
    niet: Temperatuur dauwpunt
    niet: Bewolkingsgraad
    niet: UV-waarde
    niet: Ozon-waarde

    Ook kreeg ik ineens:
    Error: Error opening url: https://gadgets.buienradar.nl/data/raintext?lat=52.44&lon=7.50
    en
    Error: dzVents: Error (2.4.6): WUS: [0006] Er is een probleem met inlezen van de data; controleer wat er fout is gegaan. in:WUS_rainForecastResponse, Error: 11855324

    Wie kan me op weg helpen dit op te lossen?

    Met vriendelijke groet,
    Jan Walhof

    Beantwoorden
    • 12 maart 2019 om 12:05
      Permalink

      Hallo Jan,

      De melding ‘attempt to concatenate local ‘api_key’ (a nil value)’ wil zeggen dat de variabele api_key leeg is.
      Deze wordt boven in het script (rond regel 16, afhankelijk van de aanpassingen die je hebt gedaan) ingesteld. Dat lijkt bij jou niet goed te gaan.

      Deze variabele wordt voor zover ik kan zien maar op 1 plaats gebruikt en wel in de regel waar het bij jou mis lijkt te gaan:
      local config=assert(io.popen(‘curl “https://api.darksky.net/forecast/’..api_key..’/’..coord..’?lang=’..language..’&units=si&exclude=hourly,flags”‘))
      daar is de variabele api_key dus leeg (nil).

      Anne.

      Beantwoorden
  • 12 maart 2019 om 09:43
    Permalink

    Hallo allemaal,

    Na een nacht niets doen blijken deze beide errors verdwenen:
    – Error: Error opening url: https://gadgets.buienradar.nl/data/raintext?lat=52.44&lon=7.50
    en
    – Error: dzVents: Error (2.4.6): WUS: [0006] Er is een probleem met inlezen van de data; controleer wat er fout is gegaan. in:WUS_rainForecastResponse, Error: 11855324

    Deze error blijft:
    Error: EventSystem: in Dark Sky: [string “–[[ WEERSTATIONS:
    …”]:146: attempt to concatenate local ‘api_key’ (a nil value)

    Ik heb van alles uitgeprobeerd, maar kom niet tot een oplossing.
    Mogelijk een nieuwe api-key aanvragen bij Dark Sky?
    Wie helpt me op weg naar de oplossing?

    Met vriendelijke groet,
    Jan Walhof

    Beantwoorden
    • 12 maart 2019 om 09:54
      Permalink

      Krijg je deze melding iedere keer dat het script draait? Of slechts incidenteel?

      Beantwoorden
      • 12 maart 2019 om 10:58
        Permalink

        Hallo Joost,

        Ik krijg zojuist geen errors meer en alle sensors en berichten worden nu bijgewerkt.

        De reden dat het nu wel werkt:
        In mijn script stond: local dev_TempGround = “Temperatuur grond” — Temperature sensor
        Dit moest zijn: local dev_TempGround = “Temperatuur Grond” — Temperature sensor
        Verschil: kleine letter/grote letter
        Het zijn vaak de kleine dingen die het (niet) doen…..

        Dank voor je reactie en uiteraard voor het gehele script.

        Met vriendelijke groet,
        Jan Walhof

        Beantwoorden
  • 12 maart 2019 om 10:45
    Permalink

    Hallo allemaal,

    Bovenstaande errors opgelost!
    In het script had ik staan: local dev_TempGround = “Temperatuur grond” — Temperature sensor
    Dit moest zijn: local dev_TempGround = “Temperatuur Grond” — Temperature sensor

    Alles werkt nu, ook alle sensoren en berichten worden nu bijgewerkt.

    Zelf opgelost, maar misschien hebben voorgaande berichten van me nut voor iemand anders.

    Met vriendelijke groet,
    Jan Walhof

    Beantwoorden
  • 13 maart 2019 om 15:26
    Permalink

    Joost/Anne

    ik ben nog maar een beginner dus hier een voor jullie makkelijke vraag:
    na de registratie bij Dark Sky (deel 2) staat het woord script als aanduiding voor een nieuw hoofdstuk en dan:

    ga naar setup>more options etc……
    ik kan dat nergens vinden……..

    welke app/appl?

    ik hoor graag van jullie

    gr

    jan dahmen

    Beantwoorden
      • 13 maart 2019 om 17:52
        Permalink

        Dankjewel, ik heb het gevonden. Script opslaan als?

        Beantwoorden
      • 13 maart 2019 om 18:19
        Permalink

        ik heb nog de volgende probleempjes:

        2019-03-13 18:15:00.537 Error: EventSystem: Lua script script_device_sensorDS did not return a commandArray
        2019-03-13 18:15:00.567 Error: Error opening url: http://127.0.0.1:8043/json.htm?type=settings
        2019-03-13 18:15:00.950 Error: dzVents: Error (2.4.6): WUS: [0006] Er is een probleem met inlezen van de data; controleer wat er fout is gegaan. in:WUS_locationResponse, Error: 401

        ik heb het lua script gesaved met de naam : script_device_sensorDS; ik weet niet of dit wel goed is

        Beantwoorden
        • 15 maart 2019 om 02:54
          Permalink

          Hoi Jan,

          401 is de unauthorized code.
          Zie hierboven voor een aantal mogelijkheden hoe anderen dat hebben opgelost.
          Je zult mogelijk het IP nummer van de Domoticz machine eregens moeten invullen.

          Anne.

          Beantwoorden
  • 19 maart 2019 om 16:38
    Permalink

    Bedankt alvast voor je bijdrage, Joost!

    Bestaat de mogelijkheid om ook Belgische stations op te nemen?

    Luc

    Beantwoorden
    • 19 maart 2019 om 22:19
      Permalink

      Luc, helaas is dat niet mogelijk, er zijn alleen Nederlandse stations beschikbaar.

      Beantwoorden
  • 26 maart 2019 om 01:10
    Permalink

    Hallo,

    Net een poging gedaan om de scripts aan de praat te krijgen.
    Ik krijg de volgende 2 error meldingen:

    2019-03-25 19:06:00.420 Error: dzVents: local netWork not open for dzVents openURL call !
    2019-03-25 19:06:00.442 Error: EventSystem: Lua script WeerSation did not return a commandArray

    ip adres van mijn rpi is goed ingevuld als domo_ip
    Iemand een idee wat er mis is?

    Arthur

    Beantwoorden
  • 2 april 2019 om 03:13
    Permalink

    Hoi, ik heb het aan het werk gekregen maar heb problemen met al mijn sensoren van specifiek dit hoofdstuk van de handleiding. Deze worden niet ververst. Geen foutmelding of zo. Namen komen overeen in het script met de sensoren. Wat gaat hier mis?

    Beantwoorden
    • 2 april 2019 om 11:24
      Permalink

      Hoi Joost,

      De logging staat wel aan? Zonder foutmeldingen wordt het heel erg lastig na te gaan wat er mis is.

      De sensoren uit Deel 1 werken wel goed?

      Anne.

      Beantwoorden
  • 2 april 2019 om 15:08
    Permalink

    Ik krijg het script niet aan de praat, ik heb de ook de volgende fout melding.

    2019-04-02 09:57:01.034 Error: EventSystem: Lua script Darksky did not return a commandArray
    2019-04-02 09:58:01.581 Error: EventSystem: in Darksky: [string “–[[ WEERSTATIONS:…”]:35: attempt to get length of global ‘commandArray’ (a nil value)

    Als ik deze regel toevoeg;
    if commandArray == nil then
    commandArray = {}
    end
    is de foutmelding wel weg maar mijn sensors worden niet geüpdatet.

    Ik heb alle namen gecontroleerd en ook het stukje voor de extra foutmelding toegevoegd maar daar komt geen extra data uit.

    wat gaat hier mis en wie kan mij verder helpen?

    Beantwoorden
    • 2 april 2019 om 16:26
      Permalink

      Hoi Machielj,

      Welke melding zie/krijg je nog wel?
      Zonder foutmeldingen is het lastig te bepalen wat er waar mis gaat.

      Anne.

      Beantwoorden
      • 2 april 2019 om 21:47
        Permalink

        Hi Anne,

        Dit is de melding die ik krijg;
        2019-04-02 16:42:01.872 Error: EventSystem: Lua script Darksky did not return a commandArray
        2019-04-02 16:43:01.734 Error: EventSystem: in Darksky: [string “–[[ WEERSTATIONS:…”]:35: attempt to get length of global ‘commandArray’ (a nil value)

        De eerste elke minuut, de tweede elke 5 minuten.
        De eerste kan ik omzeilen met de code die hierboven genoemd staat maar de aangemaakte sensoren worden niet geüpdatet.
        Ik heb deze post al goed doorgelezen maar ik kom er niet uit.

        Er zit in de debug code van jou ook een fout, ik denk dat je het met word hebt gemaakt maar de aanhalingstekens kloppen niet als je hem 1 op 1 kopieert.

        Beantwoorden
        • 3 april 2019 om 14:17
          Permalink

          Hoi machielj,

          Kun je jouw versie eens ergens uploaden, evt met je het laatste stuk ip en darsky key verwijderd?

          Ik weet niet over welke debug code je het hebt.

          Ik gebruik eigenlijk nooit Word voor iets anders dan brieven te sturen (heeeeeeel weinig dus ;)).
          Mijn editor of choice is Eclipse of MultiEdit (erg old skool).

          Typevouten maak ik dan wel weer bij de vleet, dus mss dat het daar in zat 😉

          Of mss had je het over code die door Joost is gemaakt, maar ik durf denk ik er ook wel geld op te zetten dat hij voor het maken van de scripts niet Word gebruikt.

          Anne.

          Beantwoorden
  • 2 april 2019 om 18:57
    Permalink

    Hoi, ja de sensoren uit deel 1 gaan goed. Dit haal ik uit de logs
    2019-04-02 18:38:01.605 Error: EventSystem: in Weer: [string “–[[ WEERSTATIONS: …”]:36: attempt to concatenate field ‘?’ (a nil value)
    2019-04-02 18:40:00.398 Error: dzVents: local netWork not open for dzVents openURL call !

    Beantwoorden
    • 3 april 2019 om 19:22
      Permalink

      Hoi Joost,

      Volgens de dzVents.cpp code van Domoticz (heeft dus niet direct iets met deze scripts te maken) komt dat omdat 127.0.0.1 (ook wel localhost genoemd) niet in de lijst staat van URL’s die zonder password mogen worden benaderd.

      Dat is een Domoticz instelling (ik kan ff niet bij mijn systeem dus kan je niet zeggen welke precies).

      Anne.

      Beantwoorden
      • 14 april 2019 om 00:30
        Permalink

        Hoi Anne,

        Deze melding is nu inderdaad weg. Ik blijf echter het probleem houden dat mijn sensoren niet updaten. Het gaat dus om de sensoren: Verwachting uitgebreid, Temperatuur dauwpunt, Bewolkingsgraad, UV en Ozone .

        Beantwoorden
        • 14 april 2019 om 14:48
          Permalink

          Hoi Joost,

          Er is blijkbaar een nwe versie van het script (zie bericht van Joost hieronder).
          Het probleem met het parsen van het uitgebreide weerbericht zou zo maar eens iets met jouw issue te maken kunnen hebben.

          Overigens is het vrij lastig iets zinnigs te zeggen zonder op zijn minst een paar debug regels die laten zien wat er waar fout gaat. Dan kom je vaak niet verder dan platitudes als ‘controleer de gebruikte namen nog eens goed’.

          Anne.

          Beantwoorden
  • 13 april 2019 om 09:37
    Permalink

    Op regel 160 van het script zijn nu drie regels toegevoegd, waardoor het uitgebreide weerbericht niet meer afgekapt wordt (door ‘verkeerde’ apostrofs in de API van Buienradar).

    Beantwoorden
    • 1 juni 2019 om 10:54
      Permalink

      Vanochtend ging het weer mis met het uitgebreide weerbericht door een “verkeerde” è in de API. Het script is hierop nu aangepast.

      Beantwoorden
  • 15 april 2019 om 16:50
    Permalink

    Goedemiddag,

    Het ging hier een hele tijd goed, maar nu krijg ik constant de volgende error:
    2019-04-15 16:46:00.289 Error: EventSystem: in /home/pi/domoticz/dzVents/runtime/dzVents.lua: /home/pi/domoticz/dzVents/runtime/EventHelpers.lua:99: attempt to index local ‘fileStorage’ (a boolean value)

    Hierdoor werken (volgens mij) de sensoren als zicht en zonnestraling niet meer. Die zijn in ieder geval met rood aangegeven in het tabblad ‘weer’. Iemand enig idee waar het hem in kan zitten?

    Beantwoorden
    • 16 april 2019 om 00:43
      Permalink

      Hoi Steef,

      Nee, maar…
      gebruik je de laatste versie van zowel Domoticz als de scripts?
      En heeft Domoticz nog voldoende ruimte zowel kwa HD als geheugen?

      Anne.

      Beantwoorden
      • 24 april 2019 om 16:39
        Permalink

        Ja, Domoticz draait op versie V4.10619
        Geheugen zit rond de 4%, en de HD heeft 16% vrij, dus dat lijkt me genoeg.

        Het komt op mij over alsof ik ‘fileStorage’ ergens moet definiëren, maar ik ben verre van een dzVents expert 🙂

        De melding komt overigens elke minuut, en komt ook tevoorschijn als ik het script bovenaan deze pagina pauzeer. Verder zijn het volgens mij net de sensoren die Buienradar gebruikt, de Darksky data komt wel door.
        Schrijfrechten voor diverse mappen staat ook op ‘anyone’, dus daar zijn ook geen restricties (meer) in.

        Ik heb alleen geen idee waar ik verder moet zoeken, dus alle hulp is welkom 🙂

        Beantwoorden
        • 24 april 2019 om 20:40
          Permalink

          Ik ben bang dat ik je niet heel veel verder kan helpen, anders dan dat je mss de variabelen die niet werken een keer moet verwijderen en opnieuw aanmaken.

          Als je naar het commentaar in de buurt van de code waar de foutmelding vandaan komt kijkt
          https://github.com/domoticz/domoticz/blob/development/dzVents/runtime/EventHelpers.lua
          staat daar
          “– obviously this is a var that was added later
          — initialize it”

          Maar daar stopt mijn inzicht in dzVents / lua scripts / domoticz code 😉

          Anne.

          Beantwoorden
  • 17 april 2019 om 22:30
    Permalink

    Ik heb nu dat niet alleen de sensoren uit het tweede deel maar ook het weerbericht van 22:00 niet ververst wordt. Waar kan dat in zitten? Welk script moet ik dit zoeken?

    Beantwoorden
    • 18 april 2019 om 07:45
      Permalink

      Opmaak van het weerbericht van 22:00 is regel 92 van Deel 2. Het versturen (naar bv. Telegram) is Deel 4.

      Beantwoorden
  • 18 april 2019 om 20:03
    Permalink

    Het weerbericht wordt keurig opgemaakt. Echter de sensor wordt niet ververst waardoor ik steeds hetzelfde bericht krijg.

    Beantwoorden
  • 1 mei 2019 om 12:02
    Permalink

    Goedemorgen, Het ging een tijd goed en ik ben heel tevreden met mijn weerstation. Alleen krijg ik nu regelmatig de volgende melding in de logging:
    2019-05-01 11:58:52.136 Error: EventSystem: in Weer: /home/pi/domoticz/scripts/lua/JSON.lua:1009: /home/pi/domoticz/scripts/lua/JSON.lua:660: can’t parse JSON at char 1 of: daily usage limit exceeded
    Waar kan dit aan liggen?

    Beantwoorden
  • 19 mei 2019 om 23:41
    Permalink

    Fantastisch projectje, maar ik loop tegen een foutje aan waardoor ik niet verder kom.

    Error: EventSystem: in Script #2: [string “–…”]:59: attempt to get length of global ‘commandArray’ (a nil value)
    Error: EventSystem: Lua script Script #2 did not return a commandArray

    Weet iemand hiervoor een oplossing wat ik fout doe ?
    Erik

    Beantwoorden
  • 24 mei 2019 om 21:19
    Permalink

    Voor degenen die een foutmelding als “did not return a commandArray” kregen: waarschijnlijk stond jullie script niet tussen return commandArray={} en commandArray.

    Dit is nu aangepast (op regel 33 en 172).

    Beantwoorden
  • 17 september 2019 om 21:24
    Permalink

    2019-09-17 21:22:28.690 Status: dzVents: Error (2.4.19): /home/pi/domoticz/scripts/dzVents/scripts/wusErrors.lua:6: attempt to index global ‘TRIGGERERROR’ (a nil value)
    2019-09-17 21:22:28.705 Status: dzVents: Error (2.4.19): /home/pi/domoticz/scripts/dzVents/scripts/wusSettings.lua:61: attempt to index global ‘dzW’ (a nil value)

    wat kan ik hier aan doen?

    Beantwoorden
  • 18 oktober 2019 om 08:17
    Permalink

    Goedemorgen,

    Ik heb je fantastische script ook geïmplementeerd in mijn Domoticz.
    In principe krijg ik voor nagenoeg alle switches netjes data binnen, behalve voor de volgende:

    Temperature:
    ———————
    Grondtemperatuur –> Wel data, maar rode balk
    Temperatuur dauwpunt –> Geen data + rode balk

    Weather:
    —————
    Kracht van de zon –> Geen data + rode balk
    Regen –> Wel data, maar rode balk
    UV –> Geen data + rode balk

    Utility:
    ———-
    Bewolkingsgraad –> Wel data, maar rode balk
    Ozon –> Geen data + rode balk

    In het log van Domoticz zie ik iedere minuut de volgende foutmelding langskomen:

    2019-10-18 08:16:00.452 Error: EventSystem: in Weerstation: [string “– [[ WEERSTATIONS:…”]:2: syntax error near ‘-‘

    Verder is er vanmorgen 1x de volgende foutmelding binnen gekomen:

    2019-10-18 07:08:10.140 Error: Error opening url: https://gadgets.buienradar.nl/data/raintext?lat=51.67&lon=5.64

    Beantwoorden
    • 19 oktober 2019 om 19:47
      Permalink

      Ik denk dat je het script niet goed gekopieerd hebt (of bewerkt hebt). De foutmelding heeft met een koppelstreepje (-) te maken die je ergens neergezet hebt.

      Beantwoorden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *