Klik HIER om een account aan te maken, zodat je alle scripts en posts kunt bekijken!

Recente berichten

Pagina's: [1] 2 3 ... 10
1
PHP / Re: Maak van je Raspberry Pi een weerstation (PHP-versie)
« Laatste bericht door Joost Gepost op 14 mei 2020, 18:59:18 »
In de regels 154 t/m 169 gebruik je als index 44, moet dat niet de variabele $weerstation zijn?

Klopt inderdaad, is nu aangepast!

Verder de vraag wat er gebeurt als je een weerstation gebruikt dat een bepaalde waarde (vb. visibility) niet levert, loopt het script dan vast?

Het script zal niet vast lopen, bij het updaten van het device zal er nu nog waarde 0 meegegeven worden. Zal binnenkort kijken of ik hier iets voor kan verzinnen.
2
PHP / Re: Maak van je Raspberry Pi een weerstation (PHP-versie)
« Laatste bericht door GerritH Gepost op 13 mei 2020, 22:30:04 »
Joost,

Het script draait niet direct, maar al sleutelend komt het zeker goed.

In de regels 154 t/m 169 gebruik je als index 44, moet dat niet de variabele $weerstation zijn?
Verder de vraag wat er gebeurt als je een weerstation gebruikt dat een bepaalde waarde (vb. visibility) niet levert, loopt het script dan vast?

Gerrit
3
PHP / Re: Maak van je Raspberry Pi een weerstation (PHP-versie)
« Laatste bericht door Joost Gepost op 13 mei 2020, 08:10:27 »
Je kunt de (meeste) devices van het oude script gewoon blijven gebruiken. Wel goed opletten dat je bv. 'Temperatuur grond' nu ook voor 'Temperatuur grond' gaat gebruiken, anders klopt de historie niet meer.
4
PHP / Re: Maak van je Raspberry Pi een weerstation (PHP-versie)
« Laatste bericht door GerritH Gepost op 10 mei 2020, 22:00:21 »
Dag Joost,

Dank voor deze actie, ik ga er zeker mee aan de slag. Inderdaad goed om af te stappen van DarkSky, ik was zelf al bezig geweest om de gegevens van zicht/visibility van Buienradar te halen, want DarkSky kon voor mijn lokatie niets anders produceren dan 16.1 km (ik neem aan 10 mile). Waar ik me nu wel in zal moeten verdiepen is het overzetten van de data die ik de afgelopen twee maanden verzameld heb naar dit nieuwe script, maar dat gaat goed komen.

Als tip nog: je zegt terecht dat er op moet worden gepast dat niet alle weerstations alle gegevens bevatten, zo geeft Heino (Zwolle) geen waarde af voor zicht, dus daarvoor had ik het Lua-script aangepast om die bij station Twente weg te halen. Dat ga ik in jouw php-script vast ook doen.

Nogmaals dank, dit gaat voor mij een opfris-cursus PHP worden.

Groet, Gerrit.
5
PHP / Maak van je Raspberry Pi een weerstation (PHP-versie)
« Laatste bericht door Joost Gepost op 01 mei 2020, 20:53:07 »
Helaas kun je sinds kort op Darksky geen API-sleutel meer (gratis) krijgen, tijd dus voor een nieuw script dat gegevens gebruikt van Buienradar. Aangezien ik vrijwel geen kennis van PHP heb leek het me leuk om eens te kijken hoe ver ik met PHP zou komen.... Voor zover ik tot nu toe heb kunnen testen werkt alles naar behoren. Ongetwijfeld kunnen veel dingen anders en/of beter, maar dit is de eerste keer dat ik met PHP aan de slag ben gegaan. Mocht er iets niet werken, laat dan een berichtje achter!


Voorbereidingen:
  • Installeer PHP op je Raspberry Pi (bij voorkeur versie 7.4)
  • Download Meteo Alarm Weather Warnings en upload alle .php and .json bestanden in de map meteo-alarm-weather-warnings/src naar de map /var/www/html/meteo-alarm-weather-warnings-1.1/src/ op de Raspberry Pi. Wijzig vervolgens de naam van het warnings.json bestand naar warnings.php (je hebt nu dus 2 bestanden met dezelfde naam, 1x beginnend met een kleine letter en 1x beginnend met een hoofdletter). Open nu het bestand Period.php (in de subfolder /src). Op regel 31 wijzig je 'from' naar 'starttime' en wijzig je 'until' naar 'endtime'. Vergeet niet om de wijziging op te slaan!
  • Maak in Domoticz de benodigde devices aan zoals in het script staat (onder // IDX van devices).De namen van de devices kun je naar eigen wens kiezen, het type device moet wel overeenkomen, zoals in het script staat.
  • Wijzig in het script de gegevens onder Settings en onder IDX van devices.
  • Maak een bestand met de naam weer.php aan en kopieer het script erin. Sla het bestand op in de folder /home/pi/domoticz/scripts/php/.
  • Maak een cronjob aan met commando sudo crontab -e en voeg de volgende regel toe: */10 * * * * sudo sh /home/pi/domoticz/scripts/php/weer.php. */10 betekent dat het script iedere 10 minuten uitgevoerd wordt. Uiteraard kun je dat naar wens wijzigen. Ook de locatie en bestandsnaam kun je naar eigen keuze instellen, maar doe dat dan bij beide stappen!
Onderstaande gegevens zal je in Domoticz krijgen:
  • Temperatuur buiten
  • Temperatuur gevoel
  • Temperatuur grond
  • Luchtvochtigheid
  • Windrichting
  • Windkracht
  • Windstoten
  • Luchtdruk
  • Zicht
  • Zonkracht
  • Regen (laatste uur)
  • Regen (laatste 24 uur)
  • Weersverwachting kort
  • Weersverwachting uitgebreid
  • Weersverwachting komende 24 uur
  • Weersverwachting 1-5 dagen vooruit
  • Weersverwachting 6-10 dagen vooruit
  • Weer-waarschuwing vandaag (code geel/oranje/rood met tekst)
  • Weer-waarschuwing morgen (code geel/oranje/rood met tekst)
  • Weersverwachting komende 5 dagen ('teletekst-style')
  • Automatische notificatie bij code geel/oranje/rood

<?php


/*
WEERSTATIONS:


Amsterdam   = 36   Groningen           = 13   Oost-Groninigen = 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-Groninigen    = 24   Uden            = 45   Woensdrecht     = 50
Gorinchem   = 16   Noordoostpolder     = 30   Venlo           = 1      Zwolle          = 15


Note: Sommige weerstations bevatten niet alle benodigde gegevens, waardoor er fouten kunnen ontstaan in het script. Om te testen kun je weerstation 45 gebruiken.


REGIO'S VOOR ALERTS:


007=Groningen      011=Noord-Holland   015=Utrecht
008=Flevoland      012=Limburg         016=Overijssel
009=Zuid-Holland   013=Noord-Brabant   017=Friesland
010=Zeeland         014=Gelderland      018=Drenthe


801=Vlissingen         805=Rottum
802=Hoek van Holland   806=Waddenzee
803=IJmuiden         807=IJsselmeer
804=Texel
*/


// SETTINGS
$webserver_ip '192.168.2.63'// Alleen IP
$domoticz_url='http://192.168.2.63:8080/'//URL met poortnummer
$weerstation 45// Zie weerstations
$alerts_country 'NL'// Niet wijzigen
$alerts_region '013'// Zie 'Regio's voor alerts'


// IDX van devices
// Maak in Domoticz de juiste type virtuele sensoren aan en zet hieronder het IDX-nummer neer. De namen van de devices kun je naar eigen keuze kiezen.
$idx1  '25'// Alerts vandaag - Alert sensor
$idx2  '26'// Alerts morgen - Alert sensor
$idx3  '8'// Temperatuur buiten - Temperature sensor
$idx4  '9'// Temperatuur gevoel - Temperature sensor
$idx5  '20'// Temperatuur grond - Temperature sensor
$idx6  '12'// Zicht - Visibility sensor
$idx7  '24'// Zonkracht - Solar Radiation sensor
$idx8  '21'// Weer nu - Text sensor
$idx9  '18'// Weer uitgebreid - Text sensor
$idx10 '22'// Verwachting 1-5 dagen - Text sensor
$idx11 '23'// Verwachting 6-10 dagen - Text sensor
$idx12 '71'// Verwachting week - Text sensor
$idx13 '19'// Komende 24 uur - Text sensor
$idx14 '13'// Wind - Wind sensor
$idx15 '11'// Luchtdruk - Barometer sensor
$idx16 '87'// Regen (afgelopen 24 uur) - Rain sensor
$idx17 '88'// Regen (afgelopen uur) - Rain sensor
$idx18 '10'// Luchtvochtigheid - Humidity sensor




// *** HIERONDER NIETS WIJZIGEN!!!! *** //


$url_1 'https://data.buienradar.nl/2.0/feed/json';
$url_2 'http://'.$webserver_ip.'/meteo-alarm-weather-warnings-1.1/src/warnings.php?country='.$alerts_country.'&region='.$alerts_region.'&time_zone=Europe/Amsterdam';


// Functions


function Weather($idx,$temp) {
   global 
$domoticz_url;
   
$reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=udevice&idx='.$idx.'&nvalue=0&svalue='.$temp),true);
   if(
$reply['status']=='OK'$reply='OK';else $reply='ERROR';
   return 
$reply;
}


function 
Barometer($idx,$bar,$bar_for) {
   global 
$domoticz_url;
   
$reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=udevice&idx='.$idx.'&nvalue=0&svalue='.$bar.';'.$bar_for),true);
   if(
$reply['status']=='OK'$reply='OK';else $reply='ERROR';
   return 
$reply;
}


function 
Wind($idx,$winddirectiondegrees_now,$winddirection_now,$windspeed_now,$windgusts_now,$temp_now,$tempfeel_now) {
   global 
$domoticz_url;
   
$reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=udevice&idx='.$idx.'&nvalue=0&svalue='.$winddirectiondegrees_now.';'.$winddirection_now.';'.$windspeed_now.';'.$windgusts_now.';'.$temp_now.';'.$tempfeel_now),true);
   if(
$reply['status']=='OK'$reply='OK';else $reply='ERROR';
   return 
$reply;
}


function 
Humidity($idx,$hum,$hum_stat) {
   global 
$domoticz_url;
   
$reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=udevice&idx='.$idx.'&nvalue='.$hum.'&svalue='.$hum_stat),true);
   if(
$reply['status']=='OK'$reply='OK';else $reply='ERROR';
   return 
$reply;
}


function 
Text($idx,$text) {
   global 
$domoticz_url;
    
$reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=udevice&idx='.$idx.'&nvalue=0&svalue='.$text),true);
   if(
$reply['status']=='OK'$reply='OK';else $reply='ERROR';
   return 
$reply;
}


function 
Notification($subject,$thebody) {
   global 
$domoticz_url;
    
$reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=sendnotification&subject='.$subject.'&body='.$thebody),true);
   if(
$reply['status']=='OK'$reply='OK';else $reply='ERROR';
   return 
$reply;
}


function 
Rain($idx,$rainrate,$raincounter) {
   global 
$domoticz_url;
    
$reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=udevice&idx='.$idx.'&nvalue=0&svalue='.$rainrate.';'.$raincounter),true);
   if(
$reply['status']=='OK'$reply='OK';else $reply='ERROR';
   return 
$reply;
}


function 
Alert($idx,$level,$text) {
   global 
$domoticz_url;
    
$reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=udevice&idx='.$idx.'&nvalue='.$level.'&svalue='.$text),true);
   if(
$reply['status']=='OK'$reply='OK';else $reply='ERROR';
   return 
$reply;
}


function 
TempHum($idx,$temp,$hum,$hum_stat) {
   global 
$domoticz_url;
    
$reply=json_decode(file_get_contents($domoticz_url.'json.htm?type=command&param=udevice&idx='.$idx.'&nvalue=0&svalue='.$temp.';'.$hum.';'.$hum_stat),true);
   if(
$reply['status']=='OK'$reply='OK';else $reply='ERROR';
   return 
$reply;
}
// Ophalen gegevens Buienradar
$contents file_get_contents(($url_1),true);
$clima=json_decode($contents);


foreach (
$clima->actual->stationmeasurements as $item) {
if ($item->stationid == $weerstation) {
$airpressure_now=$item->airpressure;
$humidity_now=$item->humidity;
$temp_now=$item->temperature;
$tempground_now=$item->groundtemperature;
$tempfeel_now=$item->feeltemperature;
$precipitation_now=$item->precipitation;
$rainFallLast24Hour=$item->rainFallLast24Hour;
$rainFallLastHour=$item->rainFallLastHour;
$sunpower_now=$item->sunpower;
$visibility_now=$item->visibility/1000;
$weather_now=$item->weatherdescription;
$winddirection_now=$item->winddirection;
$windgusts_now=$item->windgusts*10;
$windspeed_now=$item->windspeed*10;
$windspeedBft_now=$item->windspeedBft;
$winddirectiondegrees_now=$item->winddirectiondegrees;
}
}


$weatherreport_summary=$clima->forecast->weatherreport->summary;
$weatherreport_title=$clima->forecast->weatherreport->title;
$weatherreport_text=$clima->forecast->weatherreport->text;
$weatherreport_shortterm=$clima->forecast->shortterm->forecast;
$weatherreport_shortterm_startdate=substr($clima->forecast->shortterm->startdate010);
$weatherreport_shortterm_enddate=substr($clima->forecast->shortterm->enddate010);
$weatherreport_longterm=$clima->forecast->longterm->forecast;
$weatherreport_longterm_startdate=substr($clima->forecast->longterm->startdate010);
$weatherreport_longterm_enddate=substr($clima->forecast->longterm->enddate010);


$temp_min_day1=$clima->forecast->fivedayforecast[0]->mintemperatureMin;
$temp_min_day2=$clima->forecast->fivedayforecast[1]->mintemperatureMin;
$temp_min_day3=$clima->forecast->fivedayforecast[2]->mintemperatureMin;
$temp_min_day4=$clima->forecast->fivedayforecast[3]->mintemperatureMin;
$temp_min_day5=$clima->forecast->fivedayforecast[4]->mintemperatureMin;
$temp_max_day1=$clima->forecast->fivedayforecast[0]->maxtemperatureMax;
$temp_max_day2=$clima->forecast->fivedayforecast[1]->maxtemperatureMax;
$temp_max_day3=$clima->forecast->fivedayforecast[2]->maxtemperatureMax;
$temp_max_day4=$clima->forecast->fivedayforecast[3]->maxtemperatureMax;
$temp_max_day5=$clima->forecast->fivedayforecast[4]->maxtemperatureMax;
$sunchance_day1=$clima->forecast->fivedayforecast[0]->sunChance;
$sunchance_day2=$clima->forecast->fivedayforecast[1]->sunChance;
$sunchance_day3=$clima->forecast->fivedayforecast[2]->sunChance;
$sunchance_day4=$clima->forecast->fivedayforecast[3]->sunChance;
$sunchance_day5=$clima->forecast->fivedayforecast[4]->sunChance;
$rainchance_day1=$clima->forecast->fivedayforecast[0]->rainChance;
$rainchance_day2=$clima->forecast->fivedayforecast[1]->rainChance;
$rainchance_day3=$clima->forecast->fivedayforecast[2]->rainChance;
$rainchance_day4=$clima->forecast->fivedayforecast[3]->rainChance;
$rainchance_day5=$clima->forecast->fivedayforecast[4]->rainChance;
$rainmin_day1=$clima->forecast->fivedayforecast[0]->mmRainMin;
$rainmin_day2=$clima->forecast->fivedayforecast[1]->mmRainMin;
$rainmin_day3=$clima->forecast->fivedayforecast[2]->mmRainMin;
$rainmin_day4=$clima->forecast->fivedayforecast[3]->mmRainMin;
$rainmin_day5=$clima->forecast->fivedayforecast[4]->mmRainMin;
$rainmax_day1=$clima->forecast->fivedayforecast[0]->mmRainMax;
$rainmax_day2=$clima->forecast->fivedayforecast[1]->mmRainMax;
$rainmax_day3=$clima->forecast->fivedayforecast[2]->mmRainMax;
$rainmax_day4=$clima->forecast->fivedayforecast[3]->mmRainMax;
$rainmax_day5=$clima->forecast->fivedayforecast[4]->mmRainMax;
$winddirection_day1=strtoupper($clima->forecast->fivedayforecast[0]->windDirection);
$winddirection_day2=strtoupper($clima->forecast->fivedayforecast[1]->windDirection);
$winddirection_day3=strtoupper($clima->forecast->fivedayforecast[2]->windDirection);
$winddirection_day4=strtoupper($clima->forecast->fivedayforecast[3]->windDirection);
$winddirection_day5=strtoupper($clima->forecast->fivedayforecast[4]->windDirection);
$wind_day1=$clima->forecast->fivedayforecast[0]->wind;
$wind_day2=$clima->forecast->fivedayforecast[1]->wind;
$wind_day3=$clima->forecast->fivedayforecast[2]->wind;
$wind_day4=$clima->forecast->fivedayforecast[3]->wind;
$wind_day5=$clima->forecast->fivedayforecast[4]->wind;


$forecast_day1=date('D',strtotime($clima->forecast->fivedayforecast[0]->day));
$forecast_day1 str_replace(array('Mon''Tue''Wed''Thu''Fri''Sat''Sun'), array('Ma''Di''Wo''Do''Vr''Za''Zo'), $forecast_day1);
$forecast_day2=date('D',strtotime($clima->forecast->fivedayforecast[1]->day));
$forecast_day2 str_replace(array('Mon''Tue''Wed''Thu''Fri''Sat''Sun'), array('Ma''Di''Wo''Do''Vr''Za''Zo'), $forecast_day2);
$forecast_day3=date('D',strtotime($clima->forecast->fivedayforecast[2]->day));
$forecast_day3 str_replace(array('Mon''Tue''Wed''Thu''Fri''Sat''Sun'), array('Ma''Di''Wo''Do''Vr''Za''Zo'), $forecast_day3);
$forecast_day4=date('D',strtotime($clima->forecast->fivedayforecast[3]->day));
$forecast_day4 str_replace(array('Mon''Tue''Wed''Thu''Fri''Sat''Sun'), array('Ma''Di''Wo''Do''Vr''Za''Zo'), $forecast_day4);
$forecast_day5=date('D',strtotime($clima->forecast->fivedayforecast[4]->day));
$forecast_day5 str_replace(array('Mon''Tue''Wed''Thu''Fri''Sat''Sun'), array('Ma''Di''Wo''Do''Vr''Za''Zo'), $forecast_day5);


$weatherdescription_tomorrow=$clima->forecast->fivedayforecast[0]->weatherdescription;


//Barometer
//if ($airpressure_now = nil) {$bar_for = 5;} // 5 = unknow
if ($airpressure_now 966) {$bar_for 4;} // 4 = thunderstorm
if (($airpressure_now 966) && ($airpressure_now 993)) {$bar_for 6;} // 6 = cloudy/rain
if (($airpressure_now 993) && ($airpressure_now 1007)) {$bar_for 2;} // 2 = cloudy
if (($airpressure_now 1007) && ($airpressure_now 1013)) {$bar_for 3;} // 3 = unstable
if (($airpressure_now 1013) && ($airpressure_now 1033)) {$bar_for 0;} // 0 = stable
if (($airpressure_now 1033) && ($airpressure_now 1050)) {$bar_for 1;} // 1= sunny


// Windrichting van Engels naar Nederlands
$winddirection_now str_replace(array('N''O''Z''W'), array('N''E''S''W'), $winddirection_now);


// Weer komende 24 uur
$weather_tomorrow $weatherdescription_tomorrow.'<br><br>Komende nacht daalt de temperatuur naar '.$temp_min_day1.' C. Morgen overdag wordt morgen maximaal '.$temp_max_day1'C. Er is morgen '.$sunchance_day1.'% kans op zon en '.$rainchance_day1.'% kans op neerslag ('.$rainmin_day1.'-'.$rainmax_day1.' mm). De wind komt uit het '.$winddirection_day1.' en zal kracht '.$wind_day1.' Bft hebben.<br><br>';


// Vervangen 'vreemde' tekens
$weather_now str_replace(array(">""<""\"""&""%"" "), array("&gt;""&lt;""&quot;""&amp;""%25""%20"), $weather_now);
$weatherreport_title str_replace(array(">""<""\"""&""%"" "), array("&gt;""&lt;""&quot;""&amp;""%25""%20"), $weatherreport_title);
$weatherreport_shortterm str_replace(array(">""<""\"""&""%"" "), array("&gt;""&lt;""&quot;""&amp;""%25""%20"), $weatherreport_shortterm);
$weatherreport_longterm str_replace(array(">""<""\"""&""%"" "), array("&gt;""&lt;""&quot;""&amp;""%25""%20"), $weatherreport_longterm);
$weatherreport_text str_replace(array("&nbsp;"" "), array("%20""%20"), $weatherreport_text);
$weather_tomorrow str_replace(array("\"""&""%"" "), array("&quot;""&amp;""%25""%20"), $weather_tomorrow);


// Week komende 5 dagen
$dag1=$forecast_day1.':%20'.$temp_min_day1.'/'.$temp_max_day1.'C,%20'.$winddirection_day1.$wind_day1.',%20&#9728;&#65039;'.$sunchance_day1.'%25,%20&#65039;'.$rainchance_day1.'%25%20('.$rainmin_day1.'-'.$rainmax_day1.'%20mm)<br>';
$dag2=$forecast_day2.':%20'.$temp_min_day2.'/'.$temp_max_day2.'C,%20'.$winddirection_day2.$wind_day2.',%20&#9728;&#65039;'.$sunchance_day2.'%25,%20&#65039;'.$rainchance_day2.'%25%20('.$rainmin_day2.'-'.$rainmax_day2.'%20mm)<br>';
$dag3=$forecast_day3.':%20'.$temp_min_day3.'/'.$temp_max_day3.'C,%20'.$winddirection_day3.$wind_day3.',%20&#9728;&#65039;'.$sunchance_day3.'%25,%20&#65039;'.$rainchance_day3.'%25%20('.$rainmin_day3.'-'.$rainmax_day3.'%20mm)<br>'
$dag4=$forecast_day4.':%20'.$temp_min_day4.'/'.$temp_max_day4.'C,%20'.$winddirection_day4.$wind_day4.',%20&#9728;&#65039;'.$sunchance_day4.'%25,%20&#65039;'.$rainchance_day4.'%25%20('.$rainmin_day4.'-'.$rainmax_day4.'%20mm)<br>';
$dag5=$forecast_day5.':%20'.$temp_min_day5.'/'.$temp_max_day5.'C,%20'.$winddirection_day5.$wind_day5.',%20&#9728;&#65039;'.$sunchance_day5.'%25,%20&#65039;'.$rainchance_day5.'%25%20('.$rainmin_day5.'-'.$rainmax_day5.'%20mm)';


$weer=$dag1.$dag2.$dag3.$dag4.$dag5;
$weer='<font%20face="courier%20new">'.$weer.'</font>';


// WEERALERTS


// Ophalen gegevens
$contents2 file_get_contents(($url_2),true);
$clima2=json_decode($contents2);


// Alert vandaag
$alerttype_today1=$clima2->warnings->regions[0]->today[0]->awareness->awareness_type->type;
$alertlevel_today1=$clima2->warnings->regions[0]->today[0]->awareness->awareness_level->level;
$alertcolour_today1=$clima2->warnings->regions[0]->today[0]->awareness->awareness_level->colour// 0=White/Unknown, 1=Green/No Warnings, 2=Yellow, 3=Amber, 4=Red
$alertcolour_today1=str_replace(array('Yellow''Amber''Red''Green''White'), array('GEEL''ORANJE!''ROOD!!!''groen''onbekend'), $alertcolour_today1);
//if ($alertlevel_today1 != 1) { 
   
$alertstarttime_today1 str_replace('CEST'''$clima2->warnings->regions[0]->today[0]->period->starttime);
   
$alertstart_today1 str_replace(array('Monday''Tuesday''Wednesday''Thursday''Friday''Saturday''Sunday'), array('maandag''dinsdag''woensdag''donderdag''vrijdag''zaterdag''zondag'), $alertstarttime_today1);
   
$alertendtime_today1 =str_replace('CEST'''$clima2->warnings->regions[0]->today[0]->period->endtime);
   
$alertend_today1 str_replace(array('Monday''Tuesday''Wednesday''Thursday''Friday''Saturday''Sunday'), array('maandag''dinsdag''woensdag''donderdag''vrijdag''zaterdag''zondag'), $alertendtime_today1);
   
$alerttext_today1 str_replace('nederlands:  '''$clima2->warnings->regions[0]->today[0]->description);
//}


// Alert morgen
$alerttype_tomorrow1=$clima2->warnings->regions[0]->tomorrow[0]->awareness->awareness_type->type;
$alertlevel_tomorrow1=$clima2->warnings->regions[0]->tomorrow[0]->awareness->awareness_level->level;
$alertcolour_tomorrow1=$clima2->warnings->regions[0]->tomorrow[0]->awareness->awareness_level->colour// 0=White/Unknown, 1=Green/No Warnings, 2=Yellow, 3=Amber, 4=Red
$alertcolour_tomorrow1=str_replace(array('Yellow''Amber''Red''Green''White'), array('GEEL''ORANJE!''ROOD!!!''groen''onbekend'), $alertcolour_tomorrow1);
//if ($alertlevel_tomorrow1 != 1) { 
   
$alertstarttime_tomorrow1 str_replace('CEST'''$clima2->warnings->regions[0]->tomorrow[0]->period->starttime);
   
$alertstart_tomorrow1 str_replace(array('Monday''Tuesday''Wednesday''Thursday''Friday''Saturday''Sunday'), array('maandag''dinsdag''woensdag''donderdag''vrijdag''zaterdag''zondag'), $alertstarttime_tomorrow1);
   
$alertendtime_tomorrow1 =str_replace('CEST'''$clima2->warnings->regions[0]->tomorrow[0]->period->endtime);
   
$alertend_tomorrow1 str_replace(array('Monday''Tuesday''Wednesday''Thursday''Friday''Saturday''Sunday'), array('maandag''dinsdag''woensdag''donderdag''vrijdag''zaterdag''zondag'), $alertendtime_tomorrow1);
   
$alerttext_tomorrow1 str_replace('nederlands:  '''$clima2->warnings->regions[0]->tomorrow[0]->description);
//}


if ($alertlevel_today1 !=1) {
   
$alerttext_today1 explode('english:'$alerttext_today1);
//   echo $alerttext_today1[0]; // engels
//   echo $alerttext_today1[1]; // nederlands
}


if (
$alertlevel_tomorrow1 !=1) {
   
$alerttext_tomorrow1 explode('english:'$alerttext_tomorrow1);
//   echo $alerttext_tomorrow1[0]; // engels
//   echo $alerttext_tomorrow1[1]; // nederlands
}


if (
$alerttype_today1 == 0) {
   
$alerttitle_today1 'Geen waarschuwingen';
} elseif (
$alerttype_today1 == 1) {
   
$alerttitle_today1 'Wind waarschuwing';
} elseif (
$alerttype_today1 == 2) {
   
$alerttitle_today1 'Sneeuw/IJzel waarschuwing';
} elseif (
$alerttype_today1 == 3) {
   
$alerttitle_today1 'Onweer waarschuwing';
} elseif (
$alerttype_today1 == 4) {
   
$alerttitle_today1 'Mist waarschuwing';
} elseif (
$alerttype_today1 == 5) {
   
$alerttitle_today1 'Extreem hoge temperatuur waarschuwing';
} elseif (
$alerttype_today1 == 6) {
   
$alerttitle_today1 'Extreem lage temperatuur waarschuwing';
} elseif (
$alerttype_today1 == 7) {
   
$alerttitle_today1 'Kust waarschuwing';
} elseif (
$alerttype_today1 == {
   
$alerttitle_today1 'Bosbrand waarschuwing';
} elseif (
$alerttype_today1 == 9) {
   
$alerttitle_today1 'Lawine waarschuwing';
} elseif (
$alerttype_today1 == 10) {
   
$alerttitle_today1 'Regen waarschuwing';
} elseif (
$alerttype_today1 == 11) {
   
$alerttitle_today1 'Niet beschikbaar';
} elseif (
$alerttype_today1 == 12) {
   
$alerttitle_today1 'Overstroming waarschuwing';
} elseif (
$alerttype_today1 == 13) {
   
$alerttitle_today1 'Regen/Overstroming waarschuwing';
}


if (
$alerttype_tomorrow1 == 0) {
   
$alerttitle_tomorrow1 'Geen waarschuwingen';
} elseif (
$alerttype_tomorrow1 == 1) {
   
$alerttitle_tomorrow1 'Wind waarschuwing';
} elseif (
$alerttype_tomorrow1 == 2) {
   
$alerttitle_tomorrow1 'Sneeuw/IJzel waarschuwing';
} elseif (
$alerttype_tomorrow1 == 3) {
   
$alerttitle_tomorrow1 'Onweer waarschuwing';
} elseif (
$alerttype_tomorrow1 == 4) {
   
$alerttitle_tomorrow1 'Mist waarschuwing';
} elseif (
$alerttype_tomorrow1 == 5) {
   
$alerttitle_tomorrow1 'Extreem hoge temperatuur waarschuwing';
} elseif (
$alerttype_tomorrow1 == 6) {
   
$alerttitle_tomorrow1 'Extreem lage temperatuur waarschuwing';
} elseif (
$alerttype_tomorrow1 == 7) {
   
$alerttitle_tomorrow1 'Kust waarschuwing';
} elseif (
$alerttype_tomorrow1 == {
   
$alerttitle_tomorrow1 'Bosbrand waarschuwing';
} elseif (
$alerttype_tomorrow1 == 9) {
   
$alerttitle_tomorrow1 'Lawine waarschuwing';
} elseif (
$alerttype_tomorrow1 == 10) {
   
$alerttitle_tomorrow1 'Regen waarschuwing';
} elseif (
$alerttype_tomorrow1 == 11) {
   
$alerttitle_tomorrow1 'Niet beschikbaar';
} elseif (
$alerttype_tomorrow1 == 12) {
   
$alerttitle_tomorrow1 'Overstroming waarschuwing';
} elseif (
$alerttype_tomorrow1 == 13) {
   
$alerttitle_tomorrow1 'Regen/Overstroming waarschuwing';
}


if (
$alertlevel_today1 != 1) {
$alert_today1 urlencode($alerttitle_today1.PHP_EOL.PHP_EOL.$alertstart_today1.' uur t/m '.$alertend_today1.' uur'.PHP_EOL.PHP_EOL.$alerttext_today1[0].PHP_EOL.PHP_EOL);
} else 
$alert_today1 urlencode($alerttitle_today1.PHP_EOL.PHP_EOL.'Er zijn geen waarschuwingen'.PHP_EOL.PHP_EOL.PHP_EOL);


if (
$alertlevel_tomorrow1 != 1) {
$alert_tommorow1 urlencode($alerttitle_tomorrow1.PHP_EOL.PHP_EOL.$alertstart_tomorrow1.' uur t/m '.$alertend_tomorrow1.' uur'.PHP_EOL.PHP_EOL.$alerttext_tomorrow1[0].PHP_EOL.PHP_EOL);
} else 
$alert_tommorow1 urlencode($alerttitle_tomorrow1.PHP_EOL.PHP_EOL.'Er zijn geen waarschuwingen'.PHP_EOL.PHP_EOL.PHP_EOL);


// Devices updaten
TempHum($idx3,$temp_now,$humidity_now,0);
Weather($idx4,$tempfeel_now);
Weather($idx5,$tempground_now);
Weather($idx6,$visibility_now);
Weather($idx7,$sunpower_now);


Text($idx8,$weather_now);
Text($idx9,($weatherreport_title'<br><br>' $weatherreport_text));
Text($idx10,(date('l%20d%20F'strtotime($weatherreport_shortterm_startdate))). '%20t/m%20' . (date('l%20d%20F'strtotime($weatherreport_shortterm_enddate))). '<br><br>' $weatherreport_shortterm);
Text($idx11,(date('l%20d%20F'strtotime($weatherreport_longterm_startdate))). '%20t/m%20' . (date('l%20d%20F'strtotime($weatherreport_longterm_enddate))). '<br><br>' $weatherreport_longterm);
Text($idx12,$weer);
Text($idx13,$weather_tomorrow);


Wind($idx14,$winddirectiondegrees_now,$winddirection_now,$windspeed_now,$windgusts_now,$temp_now,$tempfeel_now);
Barometer($idx15,$airpressure_now,$bar_for);
Rain($idx16,0,$rainFallLastHour); // Todo: nog vervangen door mm/u op dat moment
Rain($idx17,0,$rainFallLastHour); // Todo: nog vervangen door mm/u op dat moment
Humidity($idx18,$humidity_now,0); // Todo: nog vervangen https://www.domoticz.com/wiki/Domoticz_API/JSON_URL's#Humidity


// Notifications versturen
$subject 'WEER-ALERT!';
if (
$alertlevel_today1 != 1) {
   
$thebody urlencode('Code '.$alertcolour_today1.PHP_EOL.PHP_EOL.$alerttitle_today1.PHP_EOL.PHP_EOL.$alertstart_today1.' uur t/m '.$alertend_today1.' uur'.PHP_EOL.PHP_EOL.$alerttext_today1[0]);
} else 
$thebody urlencode('Code '.$alertcolour_today1.PHP_EOL.PHP_EOL.'Er zijn geen waarschuwingen');


$url_3$domoticz_url.'json.htm?type=devices&rid='.$idx1;
$contents3 file_get_contents(($url_3),true);
$clima3=json_decode($contents3);
$alert_now1=urlencode($clima3->result[0]->Data);


if ((
$alert_now1 != urlencode($alerttitle_today1.PHP_EOL.PHP_EOL.$alertstart_today1.' uur t/m '.$alertend_today1.' uur'.PHP_EOL.PHP_EOL.$alerttext_today1[0].PHP_EOL.PHP_EOL)) && ($alert_now1 != urlencode($alerttitle_today1.PHP_EOL.PHP_EOL.'Er zijn geen waarschuwingen'.PHP_EOL.PHP_EOL.PHP_EOL))) {
   
Notification($subject,$thebody);
}


// Devices updaten (alerts)
Alert($idx1,$alertlevel_today1,$alert_today1);
Alert($idx2,$alertlevel_tomorrow1,$alert_tommorow1);


?>
6
LUA / Re: Maak van je Raspberry Pi een weerstation
« Laatste bericht door Joost Gepost op 22 april 2020, 17:11:47 »
Dag, nadat het script een tijd gedraaid heeft, ben ik het spoor toch weer bijster geraakt. Is het nu de bedoeling dat ik in Doimoticz zelf een LUA-script aanmaak, of moet ik het als script_time_weer.lua in de folder /home/pi/domoticz/scripts/lua zetten?

Laat ik zelf maar direct met een reactie/antwoord komen, het lijkt erop dat je ofwel het een ofwel het ander moet doen. Als je beide doet, loopt de boel spaak. Ik heb het bestand even "uit gezet", en dan draait het script ineens goed. Klopt deze redenatie??

Je moet inderdaad of de interne editor gebruiken of het bestand opslaan in de lua-folder en de naam moet beginnen met script_time_
7
LUA / Re: Maak van je Raspberry Pi een weerstation
« Laatste bericht door GerritH Gepost op 22 april 2020, 00:28:29 »
Dag, nadat het script een tijd gedraaid heeft, ben ik het spoor toch weer bijster geraakt. Is het nu de bedoeling dat ik in Doimoticz zelf een LUA-script aanmaak, of moet ik het als script_time_weer.lua in de folder /home/pi/domoticz/scripts/lua zetten?

Laat ik zelf maar direct met een reactie/antwoord komen, het lijkt erop dat je ofwel het een ofwel het ander moet doen. Als je beide doet, loopt de boel spaak. Ik heb het bestand even "uit gezet", en dan draait het script ineens goed. Klopt deze redenatie??

Een andere zaak is die met de visibility. Darksky geeft onverstoorbaar 16.1 km (ik neem aan 10 mijl). Ik heb in het script dit omgezet, zodat ik de visibility vanaf Buienradar haal. Dan wel opletten dat niet alle stations dit meesturen. Ik moest voor dit veld uitwijken van Heino naar Twente.
8
LUA / Re: Maak van je Raspberry Pi een weerstation
« Laatste bericht door Joost Gepost op 16 april 2020, 09:46:00 »
@Robert,

1) plaats het script in de folder /home/pi/domoticz/scripts/lua en de bestandsnaam moet beginnen met script_time, dus bijvoorbeeld: script_time_weer.lua. Door de prefix script_time zal Domoticz het script iedere minuut laten draaien.

2) in Domoticz: Setup > Settings > Local Networks: vul hier je lokale ip-adressen in, bijvoorbeeld: 192.168.2.*;127.0.0.* (Nu kun je wel Website Protection gebruiken, maar hoef je binnen deze netwerken geen wachtwoord in te geven.

3) Een API-key is persoonlijk en sinds kort kun je deze inderdaad helaas niet meer aanmaken.
9
LUA / Re: Maak van je Raspberry Pi een weerstation
« Laatste bericht door robbert Gepost op 14 april 2020, 19:55:32 »
Beste allen,

Ik ben een echte beginner met linux en met domoticz die ik op PI4 heb staan.

Ik probeer deze script te draaien en liep/loop tegen een aantal zaken waarbij ik graag jullie hulp zou willen hebben :P

1) allereerst wist ik niet waar en hoe ik de script gekopieerd in eerste bericht moest plaatsen heb deze meto.lua genoemd en in /home/pi/domoticz/scripts/dzVents/scripts geplaatst weet niet of dat helemaal ok is maar wordt volgens mij verder niet aangegeven.
VRAAG: is dit ok?

2) vervolgens liep ik vast op: local config=assert(io.popen('curl "http://'..domo_ip..'/json.htm?type=settings"'))

Mijn error in log was: 
/home/pi/domoticz/scripts/lua/JSON.lua:808: HTML passed to JSON:decode(): <html><head><title>Unauthorized</title>

Dit komt m.i. omdat ik een login op domoticz heb.
VRAAG: kan ik een inlognaam en password meegeven? (heb nu inlog verwijderd voor nu)

3) Nu loop ik vast op:

curl "https://api.darksky.net/forecast/153854f6c0a1bd5237a2f28464ca8de5/COORDS,COORDS?lang=nl&units=si&exclude=hourly,flags"

uiteraard staat op COORDS,COORDS de juiste coordinaten uit domoticz

Ik krijg nu de error: {"code":401,"error":"permission denied"}

In de log:
2020-04-14 20:06:01.029 Error: dzVents: Error: (3.0.1) /home/pi/domoticz/scripts/dzVents/scripts/script_meteo.lua:159: attempt to index a nil value (field 'currently')
Maar blijkt dat dat dus in ophalen info van darksky fout gaat.

Ik heb gelezen dat je geen nieuwe api's kan aanmaken maar ging ervan uit dat de opgegeven api zou werken..
VRAAG: hoe los ik dit op of debug ik dit?

Ik hoor graag en alvast bedankt voor de moeite :)

Mvg robbert
10
LUA / Re: Maak van je Raspberry Pi een weerstation
« Laatste bericht door Kubra Gepost op 12 april 2020, 23:33:53 »

Laatste vraag: ik ben ooit begonnen aan dit weerstation vanuit die EHOCO uitleg.
Hier vanuit heb ik nog de MeteoAlarmEU python script staan, dus ook "op schijf". Moet ik die verwijderen of kan ik die laten staan?

Verwijderen. Dit is nu in het nieuwe script opgenomen. Zoals je wellicht hiervoor al hebt gelezen werkt MeteoAlarm bij mij nog niet helemaal maar zal mogelijk wel komen dat ik het script op Synology draai.
Pagina's: [1] 2 3 ... 10