Toon bijdragen

Deze sectie stelt je in staat om alle bijdragen van dit lid te bekijken. Je kunt alleen de bijdragen zien waar je op dit moment toegang toe hebt.

Berichten - Nvbgm

1
LUA / Re: Maak van je Raspberry Pi een weerstation
17 februari 2020, 08:32:02
De instructie van Joost geeft alleen de installatie van de php files aan. Maar je zult jou raspberry eerst als webserver in moeten richten om hem als zodanig ook te gebruiken.
Daar zijn verschillende mogelijkheden voor maar meestal gebruikt men daar apache2 voor . Daarbij zul je ook PHP7.x op jou raspberry moeten installeren om de php files te kunnen runnen.

https://howtoraspberrypi.com/how-to-install-web-server-raspberry-pi-lamp/

Met de browser bedoel ik niet dat je er een op jou raspberry moet installeren maar de browser op jou pc. Tenminste of die aanwezig is.
2
LUA / Re: Maak van je Raspberry Pi een weerstation
16 februari 2020, 18:34:34
Citaat van: Wallgarden op 16 februari 2020, 14:04:05
Hallo Joost,

Een werkelijk heel mooi script, hartelijk dank.
Alles werkte de eerste keer bijna meteen, echter de alarm meldingen "Waarschuwing vandaag" en "Waarschuwing morgen" werkt niet bij mij.
Ik kan niet vinden waar het fout gaat, krijg ook geen error meldingen. Debug heb ik op 5 gezet.
Kun je me wat op weg helpen dit op te lossen?

Ik gebruik een PI 3.B  met Buster en Domoticz V4.10717


Ik heb zelf ook dagenlang gezocht maar heb het nu voor elkaar.
Kijk eens in de error log van apache of je daar ook een foutmelding krijgt.
En heb je ook geprobeerd om het script vanuit je browser aan te spreken ???

Als je eerst het volgende probeert in je browser:

IP-ADRES/meteoalarm/warnings.json (meteoalarm veranderen in jou path)

Je zou nu een melding moeten krijgen dat je nog een Country parameter in moet geven.

{"error":"GET parameter country is required"}

Als je dan het volgende ingeeft:

IP-ADRES/meteoalarm/warnings.php?country=NL

Zou je een heel scherm met data moeten krijgen. Of een error 500 melding.
Ben benieuwd






3
Hallo dmAnne

Volgens mij zit er toch een klein foutje in. Je geeft aan om een paar files te renamen o.a.

Citeeren warning.json Warning.php.


In onderstaande lijst (zoals je hem download van GITHUB) vind ik geen warning.json. Een s vergeten ?

Awareness.php
AwarenessLevel.php
AwarenessType.php
Config.php
Description.php
Period.php
Region.php
Result.php
Warning.php
warnings.json
Warnings.php
4
Joost dank voor jou uitleg ik ga dit proberen.
Ik maak trouwens gebruik van de visibility waarde van buienrader daar ik in de data van Darksky soms grote verschillen zie met de data die ik hier van het naburige weerstation bekijk.
(vliegbasis leeuwarden) Die van buienradar komen daarbij bijuna altijd overeen. Weet niet of anderen die ervaring ook hebben maar soms heb ik in temperatuur b.v. wel 4 graden verschil.
En dat is mij toch een trui teveel :-)
Ik ga kijken wat jou code doet en anders zolang zet ik hem weer terug naar Darksky zolang de waarden er weer is.
5
Joost,

Ik gebruik chrome met een extensie genaamd json formater maar ook dan zie ik ze niet.
Maar dat terzijde. Heb nog wel een andere vraag.
Soms krijg ik de volgende error melding:

2020-01-26 13:05:01.500 Error: EventSystem: in 2-WeerData: [string "-- LUA TIME Weerdata script ..."]:293: attempt to perform arithmetic on field 'visibility' (a nil value)

Deze ontstaat doordat op sommige momenten de data niet verstrekt word door het buienradar station. Waarom dat zo is geen idee. Maar als ik de json data check van buienradar dan is hij er soms wel en soms niet.

Ook op de grafieken site :  https://www.buienradar.nl/nederland/weerbericht/weergrafieken
zie dat hij leeg is.

Nu mijn vraag. Is het script op die waarde zo aan te passen dat wanneer deze nwaarde ontbreekt er een "0" waarde aan wordt gegeven zodat je dan niet telkens die error krijgt maar dat je zichtmeter gewoon op "0" komt te staan.
Iets van if .... then  ...... is "0"

Ik heb dit alleen bij de visibility parameter..

Zou dit een oplossing kunnen zijn voor dit probleem ??
Nieuwe functie toegevoegd:
--function isempty
local function isempty(s)
  return s == nil or s == ''
end

en dan

if isempty(val_Visibility) then val_Visibility = "0" end
6
Aha en die zie ik dus niet in mijn JSON   rara

7
@Joost

Ik ben er nog steeds niet achter hoe jij in het script bepaald welk station je moet halen uit de json van buienradar.
Je geeft als variabele 'Weerstation' = xx op maar dat is niet het ID van het weerstation zo te zien.
Kun je aangeven hoe je dan het juiste station uit de json haalt ??

8
Citaat van: Nvbgm op 10 januari 2020, 11:51:09
Oke Joost ik zal je uitleggen waar ik tegen aan liep/loop
Mijn data vergelijk ik met de xml/json file die ik in een ander programma hier ook uit buienradar haal.
Wat mij opviel dat ik in dit script andere waarden zag dan in de andere twee.
Als voorbeeld heb ik mijn eigen regio genomen n.l 26 en als ik die in het andere prg invoer dan pas komen de data overeen.
In het andere programma selecteer ik het station op ID en dan is het voor Leeuwarden ID 29 of ID 6270.
Ik kon hier niets anders vinden dan 26 waaruit ik heb opgemaakt dat ik hier een verkeerd ID gebruik.
Maar misschien zit ik verkeerd.

Heb inmiddels de verschillen en foutjes zoals hierboven aangegeven gevonden en opgelost.
Het blijkt dat de waarden die Darksky presenteerde toch iets anders zijn dan die van buienradar.
Zo word de plaatselijke Temp uit de data ven Darksky gehaald en niet uit de stadiongegevens van buienradar.
Darksky gebruik hier vaak de locatie Amsterdam voor terwijl buienradar de locatie van het meetstation aangeeft.
Vandaar dat ik verschil had in sommige waarden. Ik heb het script aangepast zodat ik dus ook b.v. de Temperatuur uit buienradar haal.
Ik ga kijken of ik dat ook doen kan met andere waarden die verschillen.
9
Oke Joost ik zal je uitleggen waar ik tegen aan liep/loop
Mijn data vergelijk ik met de xml/json file die ik in een ander programma hier ook uit buienradar haal.
Wat mij opviel dat ik in dit script andere waarden zag dan in de andere twee.
Als voorbeeld heb ik mijn eigen regio genomen n.l 26 en als ik die in het andere prg invoer dan pas komen de data overeen.
In het andere programma selecteer ik het station op ID en dan is het voor Leeuwarden ID 29 of ID 6270.
Ik kon hier niets anders vinden dan 26 waaruit ik heb opgemaakt dat ik hier een verkeerd ID gebruik.
Maar misschien zit ik verkeerd.
10
@Joost
Ik ben bezig om het script wat aan te passen naar mijn behoeften en kan 1 ding niet duidelijk vinden waar dat bepaald word.

Aan het begin van het script geef je "Locall weerstation = 26" (voor mij 26) aan.
Deze variabele word volgens mij alleen gebruikt voor het bepalen van het station ID in de data van buienradar.
De Darksky data word bepaald door de lat/long uit Domoticz.

Als mijn redenering juist is dan zit er een klein foutje in het script.
Zo niet dan vraag ik mij af waar de station bepaling vandaan komt om de juiste data uit de json van buienradar te halen ...

Kun je daar iets over zeggen ??

11
Is hier inmiddels al een oplossing voor ???
ik hou nog regelmatig deze melding..

2020-01-03 00:00:14.977 Error: EventSystem: Warning!, lua script 2-WeerData has been running for more than 10 seconds
2020-01-03 12:00:14.363 Error: EventSystem: Warning!, lua script 2-WeerData has been running for more than 10 seconds
12
Citaat van: Dbox op 02 januari 2020, 14:47:32
Dag Joost,

Allereerst de beste wensen voor het nieuwe jaar.
Sinds een paar dagen aan het stoeien om het e.e.a. aan de praat te krijgen maar het wil niet lukken, alle voorbereidingen uitgevoerd en meermaals nagekeken.
De virtuele devices in Domoticz worden niet bijgewerkt en daar waar de waarde hoort te staan is rood gekleurd.
Ik vermoed dat ik iets met het script verkeerd doet, het script heet Weerstation.lua en staat in de dir /home/pi/domoticz/scripts/lua
Alvast bedankt voor het antwoord.

René

Misschien kun je het script eens in de interne editor van Domoticz plaatsen en kijken of het dan wel werkt.
Tabblad 'Instellingen' > 'Meer opties' > 'Gebeurtenissen'
Maak een Luna-Time script aan.
13
Citaat van: Joost op 02 januari 2020, 08:31:32
Citaat van: Nvbgm op 01 januari 2020, 13:04:47
Al geruime tijd staat mijn "Zicht" device op 16,1 km
ook gisteren bleef de waarde hetzelfde.
Ik krijg geen foutmelding in het script maar blijkbaar ook geen update van het device.

Bedankt voor de melding. Ik heb e.e.a. even nagekeken: in het script gaat alles goed, alleen de bron (Darksky) geeft continu de oude waarde door. Even afwachten totdat zij terug zijn van Kerst-reces  ;)

Inderdaad Joost je had gelijk
Nu het Kerst-reces voorbij is zitten ze weer aan de knoppen.:-)
14
Al geruime tijd staat mijn "Zicht" device op 16,1 km
ook gisteren bleef de waarde hetzelfde.
Ik krijg geen foutmelding in het script maar blijkbaar ook geen update van het device.
Wel veranderd de datum en tijd in het device maar niet de waarde.
En gisteren of vannacht lijkt mij 16,1 km wat te veel  ;D

Iedereen nog een voorspoedig 2020
15
LUA / Is er iemand thuis?
23 december 2019, 16:17:30
Het volgende script heb ik ergens opgedaan en aangepast om bij afwezigheid de verwarming automatisch op een bepaalde stand te zetten.
Maar ook om zodra ik weer thuis kom de verwarming aan te zetten. Ik heb wat veranderingen en aanpassingen gedaan zodat het voor mij prima bruikbaar is. Ik wil het graag met jullie delen.

-- LUA Time "Niemand Thuis" script
-- Wat kan dit script:
-- De verwarming handmatig op continu 15 graden zetten.
-- De verwarming handmatig op tijdelijk 19 graden zetten tot het volgende schakelpunt van de thermostaat.
-- De verwarming automatisch op 15 graden zetten indien er aan bepaalde voorwaarden word voldaan.
-- De verwarming automatisch weer aanzetten bij verandering van de voorwaarden
-- o.a Ping je mobieltje of die in het netwerk aanwezig is. Zo niet verwarming na 20min op 15 graden constant.
-- Zodra mobiel weer online is de verwarming weer op tijdelijk 19 graden.
-- Dit alles is natuurlijk aan te passen naar eigen wensen.
-- Welke switches heb ik nodig:
-- 1 Light/Switch, Selector switch, Selector (b.v. Auto, Temp-19, Cont-15). Let op !! Zet Auto als eerste (Off) de andere als (On).
-- 1 Lightning2, AC, ON/OFF (b.v. Thermostaat switch) Hier kun je in de aan/uit actie de commando's ingeven voor de verwarming.
-- Voor de rest wijst het zich vanzelf.
-- ===============================================================================

function DevicePing(ip, device)
    ping_success=""
    ping_success=os.execute('ping -c1 -w1 ' .. ip)
    if ping_success then
        print("ping success " ..device)
        DeviceOnOff('On',device)
    else
        print("ping fail " ..device)
        DeviceOnOff('Off',device)
    end

end

function DeviceOnOff(Action, device)
   
    for deviceName,deviceValue in pairs(otherdevices) do
        if (deviceName==device) then
            if deviceValue == Action then
                print(tostring(device) .." staat ".. tostring(Action))
            else
                commandArray[device] = Action
                print(tostring(device) .." " ..tostring(Action).. "  gezet")
            end
       end
    end
end

commandArray = {}

DevicePing('192.157.1.15','A') --rechtstreeks on/off schakelen zet hier dan het devicenaam ('192.157.1.15','devicenaam')
DevicePing('192.157.1.16','B') --zodra dan het device online komt zal er geschakeld worden. de rest van het script is dan n.v.t.

if (otherdevices['Mijn mobiel'] == 'On' or otherdevices['Haar mobiel'] == 'On' or otherdevices['Thermostaat'] == 'Tijd-19' or otherdevices['Thermostaat'] == 'Cont-15') then
    print("Er is iemand thuis")
    DeviceOnOff("On","Thermostaat switch")
    commandArray['Variable:NiemandThuisTeller']=tostring(0)
       
    elseif (otherdevices['Mijn mobiel'] == 'Off' and otherdevices['Haar mobiel'] == 'Off' and otherdevices['Thermostaat'] == 'Auto') then   
            -- hier niet ......... uitzetten, maar alleen de var laten optellen --
            commandArray['Variable:NiemandThuisTeller'] = tostring(tonumber(uservariables['NiemandThuisTeller']) + 1)
            print("Er is al "..tostring(tonumber(uservariables['NiemandThuisTeller']) + 1).." minuten niemand thuis")
    end

if (tonumber(uservariables['NiemandThuisTeller']) > 19) then -- je moet minimaal XX minuten buiten bereik zijn
    DeviceOnOff("Off","Thermostaat switch")
end


Ter aanvulling nog dit. Wanneer je op de selector schakelaar de Temp-19 of de Cont-15 gebruikt word het script buiten werking gesteld.
Het script zal niet eerder weer werken dan dat je de selector op Auto zet.

Veel plezier.. :)