This is my latest version with Min/Max
In the Min/Max I had to use a Python Script and my Outdoor Temperature’s Max in item Weather_Temp_Max according to Sample Rules.
Items:
Group Smhi (All)
//String SMHI_TEMP "Temperatur [%s]" <temperature> (Smhi) { http="<[http://opendata-download-metobs.smhi.se/api/version/1.0/parameter/1/station/107420/period/latest-hour/data.json:60000:JSONPATH($..0.value)]"}
Number SMHI_Pressure "Lufttryck [%.1f mb]" <pressure> (Smhi)
Number SMHI_Temperature "Temperatur [%.1f °C]" <temperature> (Smhi)
Number SMHI_Temperature_Min "Temperatur Min [%.1f °C]" <temperature> (Smhi)
Number SMHI_Temperature_Max "Temperatur Max [%.1f °C]" <temperature> (Smhi)
Number SMHI_Visibility "Sikt [%.1f km]" <temperature> (Smhi)
Number SMHI_WindDirection "Vindriktning [%.0f °]" <wind> (Smhi)
Number SMHI_WindSpeed "Vindhastighet [%.1f m/s]" <wind> (Smhi)
Number SMHI_Humidity "Luftfuktighet [%.1f %%]" <humidity> (Smhi)
Number SMHI_ThunderProbability "Åska sanolikhet [%.0f %%]" <sun_clouds> (Smhi)
Number SMHI_CloudCover "Molntäckning [%.0f]" <sun_clouds> (Smhi)
Number SMHI_CloudCoverLow "Molntäckning Låg [%.0f]" <sun_clouds> (Smhi)
Number SMHI_CloudCoverMedium "MolnTäckning Medel [%.0f]" <sun_clouds> (Smhi)
Number SMHI_CloudCoverHigh "MolnTäckning Hög [%.0f]" <sun_clouds> (Smhi)
Number SMHI_WindGustSpeed "Byvindar [%.1f m/s]" <wind> (Smhi)
Number SMHI_PrecipitationMin "Nederbörd Min [%.1f mm/h]" <rain> (Smhi)
Number SMHI_PrecipitationMax "Nederbörd Max [%.1f mm/h]" <rain> (Smhi)
Number SMHI_PrecipitationFrozen "Frysen nederbörd [%.0f %%]" <climate> (Smhi)
Number SMHI_PrecipitationCat "Nederbörd Kategori [MAP(smhi_precip_cat.map):%s]" <rain> (Smhi)
Number SMHI_PrecipitationMean "Nederbörd Medel [%.1f mm/h]" <rain> (Smhi)
Number SMHI_PrecipitationMedian "Nederbörd Median [%.1f mm/h]" <rain> (Smhi)
Number SMHI_Condition_No "Vädrerkod [%s]" <sun_clouds> (Smhi)
String SMHI_Condition "Vädret är [%s]" <sun_clouds> (Smhi)
DateTime SMHI_ObsTime "Prognos tid [%1$tY-%1$td-%1$tm %1$tH:%1$tM]" <clock> (Smhi)
Number SMHI_Pressure_1 "Lufttryck P1 [%.1f mb]" <pressure> (Smhi)
Number SMHI_Temperature_1 "Temperatur P1 [%.1f °C]" <temperature> (Smhi)
Number SMHI_Temperature_Min_1 "Temperatur Min P1 [%.1f °C]" <temperature> (Smhi)
Number SMHI_Temperature_Max_1 "Temperatur Max P1 [%.1f °C]" <temperature> (Smhi)
Number SMHI_Visibility_1 "Sikt P1 [%.1f km]" <temperature> (Smhi)
Number SMHI_WindDirection_1 "Vindriktning P1 [%.0f °]" <wind> (Smhi)
Number SMHI_WindSpeed_1 "Vindhastighet P1 [%.1f m/s]" <wind> (Smhi)
Number SMHI_Humidity_1 "Luftfuktighet P1 [%.1f %%]" <humidity> (Smhi)
Number SMHI_ThunderProbability_1 "Åska sanolikhet P1 [%.0f %%]" <sun_clouds> (Smhi)
Number SMHI_CloudCover_1 "Molntäckning P1 [%.0f]" <sun_clouds> (Smhi)
Number SMHI_CloudCoverLow_1 "Molntäckning Låg P1 [%.0f]" <sun_clouds> (Smhi)
Number SMHI_CloudCoverMedium_1 "MolnTäckning Medel P1 [%.0f]" <sun_clouds> (Smhi)
Number SMHI_CloudCoverHigh_1 "MolnTäckning Hög P1 [%.0f]" <sun_clouds> (Smhi)
Number SMHI_WindGustSpeed_1 "Byvindar P1 [%.1f m/s]" <wind> (Smhi)
Number SMHI_PrecipitationMin_1 "Nederbörd Min P1 [%.1f mm/h]" <rain> (Smhi)
Number SMHI_PrecipitationMax_1 "Nederbörd Max P1 [%.1f mm/h]" <rain> (Smhi)
Number SMHI_PrecipitationFrozen_1 "Frysen nederbörd P1 [%.0f %%]" <climate> (Smhi)
Number SMHI_PrecipitationCat_1 "Nederbörd Kategori P1 [MAP(smhi_precip_cat.map):%s]" <rain> (Smhi)
Number SMHI_PrecipitationMean_1 "Nederbörd Medel P1 [%.1f mm/h]" <rain> (Smhi)
Number SMHI_PrecipitationMedian_1 "Nederbörd Median P1 [%.1f mm/h]" <rain> (Smhi)
Number SMHI_Condition_No_1 "Vädrerkod P1 [%s]" <sun_clouds> (Smhi)
String SMHI_Condition_1 "Vädret imorgon är [%s]" <sun_clouds> (Smhi)
DateTime SMHI_ObsTime_1 "Prognos tid P1 [%1$tY-%1$td-%1$tm %1$tH:%1$tM]" <clock> (Smhi)
Number SMHI_Pressure_2 "Lufttryck P2 [%.1f mb]" <pressure> (Smhi)
Number SMHI_Temperature_2 "Temperatur P2 [%.1f °C]" <temperature> (Smhi)
Number SMHI_Temperature_Min_2 "Temperatur Min P2 [%.1f °C]" <temperature> (Smhi)
Number SMHI_Temperature_Max_2 "Temperatur Max P2 [%.1f °C]" <temperature> (Smhi)
Number SMHI_Visibility_2 "Sikt P2 [%.1f km]" <temperature> (Smhi)
Number SMHI_WindDirection_2 "Vindriktning P2 [%.0f °]" <wind> (Smhi)
Number SMHI_WindSpeed_2 "Vindhastighet P2 [%.1f m/s]" <wind> (Smhi)
Number SMHI_Humidity_2 "Luftfuktighet P2 [%.1f %%]" <humidity> (Smhi)
Number SMHI_ThunderProbability_2 "Åska sanolikhet P2 [%.0f %%]" <sun_clouds> (Smhi)
Number SMHI_CloudCover_2 "Molntäckning P2 [%.0f]" <sun_clouds> (Smhi)
Number SMHI_CloudCoverLow_2 "Molntäckning Låg P2 [%.0f]" <sun_clouds> (Smhi)
Number SMHI_CloudCoverMedium_2 "MolnTäckning Medel P2 [%.0f]" <sun_clouds> (Smhi)
Number SMHI_CloudCoverHigh_2 "MolnTäckning Hög P2 [%.0f]" <sun_clouds> (Smhi)
Number SMHI_WindGustSpeed_2 "Byvindar P2 [%.1f m/s]" <wind> (Smhi)
Number SMHI_PrecipitationMin_2 "Nederbörd Min P2 [%.1f mm/h]" <rain> (Smhi)
Number SMHI_PrecipitationMax_2 "Nederbörd Max P2 [%.1f mm/h]" <rain> (Smhi)
Number SMHI_PrecipitationFrozen_2 "Frysen nederbörd P2 [%.0f %%]" <climate> (Smhi)
Number SMHI_PrecipitationCat_2 "Nederbörd Kategori P2 [MAP(smhi_precip_cat.map):%s]" <rain> (Smhi)
Number SMHI_PrecipitationMean_2 "Nederbörd Medel P2 [%.1f mm/h]" <rain> (Smhi)
Number SMHI_PrecipitationMedian_2 "Nederbörd Median P2 [%.1f mm/h]" <rain> (Smhi)
Number SMHI_Condition_No_2 "Vädrerkod P2 [%s]" <sun_clouds> (Smhi)
String SMHI_Condition_2 "Vädret överimorgon är [%s]" <sun_clouds> (Smhi)
DateTime SMHI_ObsTime_2 "Prognos tid P2 [%1$tY-%1$td-%1$tm %1$tH:%1$tM]" <clock> (Smhi)
Number SMHI_Pressure_3 "Lufttryck P3 [%.1f mb]" <pressure> (Smhi)
Number SMHI_Temperature_3 "Temperatur P3 [%.1f °C]" <temperature> (Smhi)
Number SMHI_Temperature_Min_3 "Temperatur Min P3 [%.1f °C]" <temperature> (Smhi)
Number SMHI_Temperature_Max_3 "Temperatur Max P3 [%.1f °C]" <temperature> (Smhi)
Number SMHI_Visibility_3 "Sikt P3 [%.1f km]" <temperature> (Smhi)
Number SMHI_WindDirection_3 "Vindriktning P3 [%.0f °]" <wind> (Smhi)
Number SMHI_WindSpeed_3 "Vindhastighet P3 [%.1f m/s]" <wind> (Smhi)
Number SMHI_Humidity_3 "Luftfuktighet P3 [%.1f %%]" <humidity> (Smhi)
Number SMHI_ThunderProbability_3 "Åska sanolikhet P3 [%.0f %%]" <sun_clouds> (Smhi)
Number SMHI_CloudCover_3 "Molntäckning P3 [%.0f]" <sun_clouds> (Smhi)
Number SMHI_CloudCoverLow_3 "Molntäckning Låg P3 [%.0f]" <sun_clouds> (Smhi)
Number SMHI_CloudCoverMedium_3 "MolnTäckning Medel P3 [%.0f]" <sun_clouds> (Smhi)
Number SMHI_CloudCoverHigh_3 "MolnTäckning Hög P3 [%.0f]" <sun_clouds> (Smhi)
Number SMHI_WindGustSpeed_3 "Byvindar P3 [%.1f m/s]" <wind> (Smhi)
Number SMHI_PrecipitationMin_3 "Nederbörd Min P3 [%.1f mm/h]" <rain> (Smhi)
Number SMHI_PrecipitationMax_3 "Nederbörd Max P3 [%.1f mm/h]" <rain> (Smhi)
Number SMHI_PrecipitationFrozen_3 "Frysen nederbörd P3 [%.0f %%]" <climate> (Smhi)
Number SMHI_PrecipitationCat_3 "Nederbörd Kategori P3 [MAP(smhi_precip_cat.map):%s]" <rain> (Smhi)
Number SMHI_PrecipitationMean_3 "Nederbörd Medel P3 [%.1f mm/h]" <rain> (Smhi)
Number SMHI_PrecipitationMedian_3 "Nederbörd Median P3 [%.1f mm/h]" <rain> (Smhi)
Number SMHI_Condition_No_3 "Vädrerkod P3 [%s]" <sun_clouds> (Smhi)
String SMHI_Condition_3 "Vädret överöverimorgon är [%s]" <sun_clouds> (Smhi)
DateTime SMHI_ObsTime_3 "Prognos tid P3 [%1$tY-%1$td-%1$tm %1$tH:%1$tM]" <clock> (Smhi)
Rule
import java.util.Date
import java.text.SimpleDateFormat
rule "SMHI"
when
Time cron "0 10 * * * ?"
then
var SimpleDateFormat cdf = new SimpleDateFormat( "yyyy-MM-dd'T'HH:00:00'Z'")
var String Currentvaliddate = cdf.format(new Date())
var SimpleDateFormat fdf = new SimpleDateFormat( "yyyy-MM-dd'T'12:00:00'Z'")
var String Tomorrowvaliddate = fdf.format(now.plusDays(1).toDate )
var String DayafterTomorrowvaliddate = fdf.format(now.plusDays(2).toDate )
var String Day3validdate = fdf.format(now.plusDays(3).toDate )
var String smhijson = sendHttpGetRequest("http://opendata-download-metfcst.smhi.se/api/category/pmp2g/version/2/geotype/point/lon/XX.XXXX/lat/YY.YYYY/data.json")
//Current Forecast
//Air pressure
var String msl = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='msl')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Pressure.postUpdate(msl)
//Air temperature
var String t = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='t')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Temperature.postUpdate(t)
//Horizontal visibility
var String vis = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='vis')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Visibility.postUpdate(vis)
//Wind direction
var String wd = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='wd')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_WindDirection.postUpdate(wd)
//Wind speed
var String ws = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='ws')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_WindSpeed.postUpdate(ws)
//Relative humidity
var String r = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='r')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Humidity.postUpdate(r)
//Thunder probability
var String tstm = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='tstm')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_ThunderProbability.postUpdate(tstm)
//Mean value of total cloud cover
var String tcc_mean = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='tcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCover.postUpdate(tcc_mean)
//Mean value of low level cloud cover
var String lcc_mean = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='lcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCoverLow.postUpdate(lcc_mean)
//Mean value of medium level cloud cover
var String mcc_mean = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='mcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCoverMedium.postUpdate(mcc_mean)
//Mean value of high level cloud cover
var String hcc_mean = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='hcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCoverHigh.postUpdate(hcc_mean)
//Wind gust speed
var String gust = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='gust')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_WindGustSpeed.postUpdate(gust)
//Minimum precipitation intensity
var String pmin = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='pmin')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMin.postUpdate(pmin)
//Maximum precipitation intensity
var String pmax = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='pmax')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMax.postUpdate(pmax)
//Percent of precipitation in frozen form
var String spp = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='spp')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationFrozen.postUpdate(spp)
//Precipitation category
var String pcat = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='pcat')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationCat.postUpdate(pcat)
//Mean precipitation intensity
var String pmean = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='pmean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMean.postUpdate(pmean)
//Median precipitation intensity
var String pmedian = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='pmedian')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMedian.postUpdate(pmedian)
//Weather symbol
var String wsymb = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Currentvaliddate+"')].parameters.[?(@.name=='Wsymb')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Condition_No.postUpdate(wsymb)
SMHI_ObsTime.sendCommand(Currentvaliddate)
//Tomorrow Forecast
//Air pressure
var String msl1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='msl')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Pressure_1.postUpdate(msl1)
//Air temperature
var String t1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='t')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Temperature_1.postUpdate(t1)
//Horizontal visibility
var String vis1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='vis')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Visibility_1.postUpdate(vis1)
//Wind direction
var String wd1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='wd')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_WindDirection_1.postUpdate(wd1)
//Wind speed
var String ws1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='ws')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_WindSpeed_1.postUpdate(ws1)
//Relative humidity
var String r1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='r')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Humidity_1.postUpdate(r1)
//Thunder probability
var String tstm1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='tstm')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_ThunderProbability_1.postUpdate(tstm1)
//Mean value of total cloud cover
var String tcc_mean1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='tcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCover_1.postUpdate(tcc_mean1)
//Mean value of low level cloud cover
var String lcc_mean1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='lcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCoverLow_1.postUpdate(lcc_mean1)
//Mean value of medium level cloud cover
var String mcc_mean1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='mcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCoverMedium_1.postUpdate(mcc_mean1)
//Mean value of high level cloud cover
var String hcc_mean1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='hcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCoverHigh_1.postUpdate(hcc_mean1)
//Wind gust speed
var String gust1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='gust')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_WindGustSpeed_1.postUpdate(gust1)
//Minimum precipitation intensity
var String pmin1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='pmin')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMin_1.postUpdate(pmin1)
//Maximum precipitation intensity
var String pmax1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='pmax')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMax_1.postUpdate(pmax1)
//Percent of precipitation in frozen form
var String spp1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='spp')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationFrozen_1.postUpdate(spp1)
//Precipitation category
var String pcat1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='pcat')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationCat_1.postUpdate(pcat1)
//Mean precipitation intensity
var String pmean1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='pmean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMean_1.postUpdate(pmean1)
//Median precipitation intensity
var String pmedian1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='pmedian')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMedian_1.postUpdate(pmedian1)
//Weather symbol
var String wsymb1 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Tomorrowvaliddate+"')].parameters.[?(@.name=='Wsymb')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Condition_No_1.postUpdate(wsymb1)
SMHI_ObsTime_1.postUpdate(new DateTimeType(Tomorrowvaliddate))
//DayafterTomorrow Forecast
//Air pressure
var String msl2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='msl')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Pressure_2.postUpdate(msl2)
//Air temperature
var String t2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='t')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Temperature_2.postUpdate(t2)
//Horizontal visibility
var String vis2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='vis')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Visibility_2.postUpdate(vis2)
//Wind direction
var String wd2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='wd')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_WindDirection_2.postUpdate(wd2)
//Wind speed
var String ws2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='ws')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_WindSpeed_2.postUpdate(ws2)
//Relative humidity
var String r2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='r')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Humidity_2.postUpdate(r2)
//Thunder probability
var String tstm2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='tstm')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_ThunderProbability_2.postUpdate(tstm2)
//Mean value of total cloud cover
var String tcc_mean2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='tcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCover_2.postUpdate(tcc_mean2)
//Mean value of low level cloud cover
var String lcc_mean2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='lcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCoverLow_2.postUpdate(lcc_mean2)
//Mean value of medium level cloud cover
var String mcc_mean2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='mcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCoverMedium_2.postUpdate(mcc_mean2)
//Mean value of high level cloud cover
var String hcc_mean2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='hcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCoverHigh_2.postUpdate(hcc_mean2)
//Wind gust speed
var String gust2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='gust')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_WindGustSpeed_2.postUpdate(gust2)
//Minimum precipitation intensity
var String pmin2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='pmin')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMin_2.postUpdate(pmin2)
//Maximum precipitation intensity
var String pmax2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='pmax')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMax_2.postUpdate(pmax2)
//Percent of precipitation in frozen form
var String spp2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='spp')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationFrozen_2.postUpdate(spp2)
//Precipitation category
var String pcat2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='pcat')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationCat_2.postUpdate(pcat2)
//Mean precipitation intensity
var String pmean2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='pmean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMean_2.postUpdate(pmean2)
//Median precipitation intensity
var String pmedian2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='pmedian')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMedian_2.postUpdate(pmedian2)
//Weather symbol
var String wsymb2 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+DayafterTomorrowvaliddate+"')].parameters.[?(@.name=='Wsymb')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Condition_No_2.postUpdate(wsymb2)
SMHI_ObsTime_2.postUpdate(new DateTimeType(DayafterTomorrowvaliddate))
//Day3 Forecast
//Air pressure
var String msl3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='msl')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Pressure_3.postUpdate(msl3)
//Air temperature
var String t3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='t')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Temperature_3.postUpdate(t3)
//Horizontal visibility
var String vis3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='vis')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Visibility_3.postUpdate(vis3)
//Wind direction
var String wd3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='wd')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_WindDirection_3.postUpdate(wd3)
//Wind speed
var String ws3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='ws')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_WindSpeed_3.postUpdate(ws3)
//Relative humidity
var String r3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='r')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Humidity_3.postUpdate(r3)
//Thunder probability
var String tstm3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='tstm')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_ThunderProbability_3.postUpdate(tstm3)
//Mean value of total cloud cover
var String tcc_mean3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='tcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCover_3.postUpdate(tcc_mean3)
//Mean value of low level cloud cover
var String lcc_mean3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='lcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCoverLow_3.postUpdate(lcc_mean3)
//Mean value of medium level cloud cover
var String mcc_mean3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='mcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCoverMedium_3.postUpdate(mcc_mean3)
//Mean value of high level cloud cover
var String hcc_mean3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='hcc_mean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_CloudCoverHigh_3.postUpdate(hcc_mean3)
//Wind gust speed
var String gust3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='gust')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_WindGustSpeed_3.postUpdate(gust3)
//Minimum precipitation intensity
var String pmin3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='pmin')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMin_3.postUpdate(pmin3)
//Maximum precipitation intensity
var String pmax3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='pmax')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMax_3.postUpdate(pmax3)
//Percent of precipitation in frozen form
var String spp3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='spp')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationFrozen_3.postUpdate(spp3)
//Precipitation category
var String pcat3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='pcat')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationCat_3.postUpdate(pcat3)
//Mean precipitation intensity
var String pmean3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='pmean')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMean_3.postUpdate(pmean3)
//Median precipitation intensity
var String pmedian3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='pmedian')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_PrecipitationMedian_3.postUpdate(pmedian3)
//Weather symbol
var String wsymb3 = transform("JSONPATH", "$.timeSeries.[?(@.validTime=='"+Day3validdate+"')].parameters.[?(@.name=='Wsymb')].values[0]", smhijson).replace('[','').replace(']','')
SMHI_Condition_No_3.postUpdate(wsymb3)
SMHI_ObsTime_3.postUpdate(new DateTimeType(Day3validdate))
//Pythonscript for minmax
logInfo("Smhi", "SMHI Min/Max")
var String command = "python@@/home/openhab/smhi_minmax.py"
var String smhiminmaxjson = executeCommandLine(command , 360000)
var Number tmin = Float::parseFloat(String::format("%s",transform("JSONPATH", "$.tmin", smhiminmaxjson)))
if (tmin > Weather_Temp_Min.state as DecimalType){tmin = Weather_Temp_Min.state as DecimalType}
SMHI_Temperature_Min.postUpdate(tmin)
var Number tmax = Float::parseFloat(String::format("%s",transform("JSONPATH", "$.tmax", smhiminmaxjson)))
if (tmax < Weather_Temp_Max.state as DecimalType){tmax = Weather_Temp_Max.state as DecimalType}
SMHI_Temperature_Max.postUpdate(tmax)
var Number tmin1 = Float::parseFloat(String::format("%s",transform("JSONPATH", "$.tmin1", smhiminmaxjson)))
SMHI_Temperature_Min_1.postUpdate(tmin1)
var Number tmax1 = Float::parseFloat(String::format("%s",transform("JSONPATH", "$.tmax1", smhiminmaxjson)))
SMHI_Temperature_Max_1.postUpdate(tmax1)
var Number tmin2 = Float::parseFloat(String::format("%s",transform("JSONPATH", "$.tmin2", smhiminmaxjson)))
SMHI_Temperature_Min_2.postUpdate(tmin2)
var Number tmax2 = Float::parseFloat(String::format("%s",transform("JSONPATH", "$.tmax2", smhiminmaxjson)))
SMHI_Temperature_Max_2.postUpdate(tmax2)
var Number tmin3 = Float::parseFloat(String::format("%s",transform("JSONPATH", "$.tmin3", smhiminmaxjson)))
SMHI_Temperature_Min_3.postUpdate(tmin3)
var Number tmax3 = Float::parseFloat(String::format("%s",transform("JSONPATH", "$.tmax3", smhiminmaxjson)))
SMHI_Temperature_Max_3.postUpdate(tmax3)
SMHI_TEST.sendCommand(OFF)
logInfo("Smhi", "SMHI Ready")
end
rule "SMHI Condition"
when
Item SMHI_Condition_No received update
then
SMHI_Condition.postUpdate(transform("MAP","smhi_weather_code_se.map",SMHI_Condition_No.state.toString))
end
rule "SMHI Condition 1"
when
Item SMHI_Condition_No_1 received update
then
SMHI_Condition_1.postUpdate(transform("MAP","smhi_weather_code_se.map",SMHI_Condition_No_1.state.toString))
end
rule "SMHI Condition 2"
when
Item SMHI_Condition_No_2 received update
then
SMHI_Condition_2.postUpdate(transform("MAP","smhi_weather_code_se.map",SMHI_Condition_No_2.state.toString))
end
rule "SMHI Condition 3"
when
Item SMHI_Condition_No_3 received update
then
SMHI_Condition_3.postUpdate(transform("MAP","smhi_weather_code_se.map",SMHI_Condition_No_3.state.toString))
end
/Mike