pepite Posté(e) le 21 mars 2016 Signaler Posté(e) le 21 mars 2016 en fait ils fonctionnent, je recois les push mais il ne recup pas les images web ;-), donc pas d'icone, ni sur l'interface web, ni sur l'app ;-) mais c'est aleatoire depuis hier hihiihh auj je les ai ;-)
sebcbien Posté(e) le 25 juillet 2016 Auteur Signaler Posté(e) le 25 juillet 2016 A effacer, plantage serveur du Forum...
sebcbien Posté(e) le 25 juillet 2016 Auteur Signaler Posté(e) le 25 juillet 2016 A effacer, plantage serveur du Forum...
sebcbien Posté(e) le 25 juillet 2016 Auteur Signaler Posté(e) le 25 juillet 2016 Avec ma "migration" Jeedom, j'ai intégré S.A.R.A.H. et je "vocalise" les prévisions météo à certains moments de la journée. Bref, l'annonce vocale des prévisions de YAMS n'étant pas top, j'ai révisé le code pour avoir des phrases mieux formées. Voici le code modifié, et désolé, non, je n'ai pas adapté cette modification en multilingue. Le script "devrait" créer 3 nouvelles VG (ça n'a pas fonctionné du premier coup pour moi, mais bon, je ne m'étonne plus de rien et je n'ai pas cherché plus loin) Meteo_Day_Speech Meteo_Tomorrow_Sp Meteo_In_2_Days_Sp Code Main loop: ------------------------------------------------------------------------------------------- -- WU WeatherData - Fetch weather data from wunderground.com. Multilanguage support! -- Original Code by Jonny Larsson 2015 http://forum.fibaro.com/index.php?/topic/19810-wu-weatherdata-version-202-2015-10-25/ -- Forked by Sébastien Jauquet 11/2015 http://www.domotique-fibaro.fr/index.php/topic/6446-yams-wu-yet-another-meteo-station-wunderground-version/ -- Inspired by GEA(steven), stevenvd, Lazer, Krikroff and many other users. -- Source - forum.fibaro.com, domotique-fibaro.fr and worldwideweb -- 2014-03-22 - Permissions granted from Krikroff -- 2014-03-23 - Added rain and forecast, Added FR language. -- 2014-03-23 - Language variable changed to get the translation from wunderground.com in forcast -- 2014-03-24 - Added PL language -- 2014-03-24 - Select between PWS or LOCID to download weather data -- 2015-10-23 - New source code. -- 2015-11-16 - Permissions granted from Jonny Larsson -- 2015-11-13 - V3.0 - Fork Code by Sebastien Jauquet (3 days forecast, rain in mm) -- 2015-11-14 - V3.1 - Compatibilty with GEA, French translation -- 2015-11-14 - V3.2 - Catch rain errors (-999mm null empty etc.) -- 2015-11-14 - V3.3 - Catch json decode error (was stopping main loop) with pcall (can be extended to other jdon datas if needed) -- 2015-11-16 - V3.4 - Generate HTML and non HTML version (for compatibility with mobiles) -- 2015-11-18 - V3.5 - Fixed bug not updating Meteo_Day becaus WU.now was only updated at first launch -- 2015-11-18 - V3.6 - Merged some changes from jompa new version -- 2015-11-18 - Added autmatic creation of Global Variables if not existing -- 2015-11-19 - V3.7 - Modify schedule management and CleanUp code -- 2015-11-22 - V3.8 - Finalise mobile version and bug fixing -- 2015-11-23 - V3.9 - Added multiple notification options (Lazer way) -- 2015-11-30 - V4.0 - More precision for rain mm (moring/evening) + added feels like T° + optimized display -- 2016-07-11 - V4.1 - Added Speech VG, with subst of symbols of day, tomorrow and Day+2 to be more speech compatible (in french only, sorry) -- Look for nearest station here: http://www.wunderground.com ------------------------------------------------------------------------------------------- -- MAIN CODE -- ------------------------------------------------------------------------------------------- WU = {}; -- WU settings WU.APIkey = "XXXXXXXXXxxxxxXX"; -- Put your WU api key here WU.PWS = "IGVLEBOR5"; -- The PWS location to get data from (Personal Weather Station) WU.LOCID = "SWXX0076"; -- The location ID to get data from (City location) WU.station = "PWS"; -- Choose your prefered method to retrieve from: PWS or LOCID -- notifications WU.notifications = true; -- send notifications WU.push_fcst1 = "11:30"; -- time when forecast for today will be pushed to smartphone WU.push_fcst2 = "18:15"; -- time when forecast for tonight will be pushed to smartphone WU.notificationTypes = {"push", "email"};--notification types {"push", "email", "sms"} WU.smartphoneID = {1347}; -- Smartphone Id to send push to. {id1, id2, id3} WU.userID = {2}; -- User Id to send email to. {id1, id2, id3} WU.sms = { ["VD_ID"] = 0, -- Virtual Device ID ["VD_Button"] = "1", -- Virtual Device Button ["VG_Name"] = "SMS"}; -- Global Variable Name WU.debug_messages = false; -- Diplay debug for notifications -- Other settings WU.translation = {true}; WU.language = "FR"; -- EN, FR, SW, PL (default is en) WU.GEA = true; -- subst % with %% when storing in the VG's (because gea bug with % in push messages) WU.CreateVG = true; -- will atomaticaly create global variables at first run if = true WU.updateEvery = 30; -- get data every xx minutes -- Do not change WU.startTime = os.time(); WU.scheduler = os.time()+60*WU.updateEvery; WU.currentDate = os.date("*t"); WU.now = os.date("%H:%M"); WU.DoNotRecheckBefore = os.time(); WU.selfId = fibaro:getSelfId(); WU.version = "4.1"; WU.translation["EN"] = { Push_forecast = "Push forecast", Exiting_loop_slider = "Exiting loop earlier (Slider Changed)", Exiting_loop_push = "Exiting loop earlier (For push)", Last_updated = "Last updated", Temperature = "T°/Feels Like", Humidity = "Humidity", Pressure = "Pressure", Wind = "Wind", Rain = "Rain", Forecast = "Forecast ", EmailSubject = "Meteo of this", Station = "Station", Fetched = "Fetched", Data_processed = "Data processed", Update_interval = "Next update will be in (min)", No_data_fetched = "No data fetched", NO_STATIONID_FOUND = "No stationID found", NO_DATA_FOUND = "No data found" }; WU.translation["FR"] = { Push_forecast = "Push des prévisions", Exiting_loop_slider = "Sortie de boucle (Slider Changé)", Exiting_loop_push = "Sortie de boucle (Pour Push)", Last_updated = "Mise à jour", Temperature = "T°/Ressentie", Humidity = "Humidité", Pressure = "Pression", Wind = "Vent", Rain = "Pluie", Forecast = "", EmailSubject = "Météo de ce", Station = "Station", Fetched = "Données reçues", Data_processed = "Données mises à jour", Update_interval = "Prochaine Mise à jour prévue dans (min)", No_data_fetched = "Pas de données reçues !!", NO_STATIONID_FOUND = "StationID non trouvée !!", NO_DATA_FOUND = "Pas de données disponibles !!" }; WU.translation["SW"] = { Push_forecast = "Push forecast", Exiting_loop_slider = "Exiting loop earlier (Slider Changed)", Exiting_loop_push = "Exiting loop earlier (For push)", Last_updated = "Last updated", Temperature = "T°/Feels Like", Humidity = "Fuktighet", Pressure = "Barometer", Wind = "Vind", Rain = "Regn", Forecast = "Prognos ", EmailSubject = "Meteo of this", Station = "Station", Fetched = "Hà¤mtat", Data_processed = "All data processat", Update_interval = "Nà¤sta uppdatering à¤r om (min)", No_data_fetched = "Inget data hà¤mtat", NO_STATIONID_FOUND = "StationID ej funnet", NO_DATA_FOUND = "Ingen data hos WU" }; WU.translation["PL"] = { Push_forecast = "Push prognoza", Exiting_loop_slider = "Exiting loop earlier (Slider Changed)", Exiting_loop_push = "Exiting loop earlier (For push)", Last_updated = "Last updated", Temperature = "T°/Feels Like", Humidity = "Wilgotnosc", Pressure = "Pressure", Wind = "Wiatr", Rain = "Rain", Forecast = "Forecast ", EmailSubject = "Meteo of this", Station = "Station", Fetched = "Fetched", Data_processed = "Data processed", No_data_fetched = "No data fetched", Update_interval = "Next update will be in (min)", NO_STATIONID_FOUND = "No stationID found", NO_DATA_FOUND = "No data found" }; WU.translation["NL"] = { Push_forecast = "Push verwachting", Exiting_loop_slider = "Exiting loop earlier (Slider Changed)", Exiting_loop_push = "Exiting loop earlier (For push)", Last_updated = "Last updated", Temperature = "T°/Feels Like", Humidity = "Vochtigheid", Pressure = "Druk", Wind = "Wind", Rain = "Regen", Forecast = "Verwachting ", EmailSubject = "Meteo of this", Station = "Weerstation", Fetched = "Ontvangen", Data_processed = "Gegevens verwerkt", Update_interval = "Volgende update in (min)", No_data_fetched = "Geen gegevens ontvangen", NO_STATIONID_FOUND = "Geen stationID gevonden", NO_DATA_FOUND = "Geen gegevens gevonden" }; WU.translation["DE"] = { Push_forecast = "Push vorhersage", Exiting_loop_slider = "Exiting loop earlier (Slider Changed)", Exiting_loop_push = "Exiting loop earlier (For push)", Last_updated = "Last updated", Temperature = "T°/Feels Like", Humidity = "Luftfeuchtigkeit", Pressure = "Luftdruck", Wind = "Wind", Rain = "Regen", Forecast = "Vorhersage ", EmailSubject = "Meteo of this", Station = "Station", Fetched = "Abgerufen", Data_processed = "Daten verarbeitet", No_data_fetched = "Keine Daten abgerufen", Update_interval = "Das nà¤chste Update in (min)", NO_STATIONID_FOUND = "Keine stationID gefunden", NO_DATA_FOUND = "Keine Daten gefunden" }; Debug = function (color, message) if color and color ~= "" then fibaro:debug('<span style="color:'..color..';">'..message..'</span>'); else fibaro:debug(message); end end WU.notification = function(message, subject, param) local message = message or "<vide>"; if WU.debug_messages then Debug("yellow", "Notification : "..message); end if param then for _, notif in ipairs(param) do if WU.debug_messages then Debug("grey", notif); end -- Envoi Push if notif == "push" and WU.smartphoneID then for _, id in ipairs(WU.smartphoneID) do if WU.debug_messages then Debug("grey", "Send Push smartphone ID : "..id); end fibaro:call(id, "sendPush", message); end -- Envoi Email elseif notif == "email" and WU.userID then for _, id in ipairs(WU.userID) do if WU.debug_messages then Debug("grey", "Send Email user ID : "..id); end fibaro:call(id, "sendEmail", subject, message); end -- Envoi SMS elseif notif == "sms" and WU.sms then if WU.debug_messages then Debug("grey", "Send SMS : VD_ID="..(WU.sms["VD_ID"] or 0).." VD_Button="..(WU.sms["VD_Button"] or "0").." VG_Name="..(WU.sms["VG_Name"] or "")); end fibaro:setGlobal(WU.sms["VG_Name"], message); if WU.sms["VD_ID"] and tonumber(WU.sms["VD_ID"])>0 and WU.sms["VD_Button"] and tonumber(WU.sms["VD_Button"])>0 then fibaro:call(WU.sms["VD_ID"], "pressButton", WU.sms["VD_Button"]); end end end else Debug("orange", "Warning : no notification options given"); end end WU.createGlobalIfNotExists = function(varName, defaultValue) if (fibaro:getGlobal(varName) == "") then Debug("red", "Global Var: "..varName.." HAS BEEN CREATED"); newVar = {}; newVar.name = varName; HC2 = Net.FHttp("127.0.0.1", 11111); HC2:POST("/api/globalVariables", json.encode(newVar)); end end WU.substPercent = function(doublePercentSymbol) if WU.GEA then doublePercentSymbol = string.gsub(doublePercentSymbol, "%%.", "%%%%"); end return doublePercentSymbol; end WU.substSpeech = function(substSpeech) substSpeech = string.gsub(substSpeech, "km/h", "kilomètre heure"); substSpeech = string.gsub(substSpeech, "ºC", "degrés"); substSpeech = string.gsub(substSpeech, "°C", "degrés"); substSpeech = string.gsub(substSpeech, "%(", "de "); substSpeech = string.gsub(substSpeech, "%)", ""); substSpeech = string.gsub(substSpeech, "mm", "milimètres de pluie."); substSpeech = string.gsub(substSpeech, " Vents ", " Vents de provenance "); substSpeech = string.gsub(substSpeech, "/", " à "); substSpeech = string.gsub(substSpeech, " N ", " Nord "); substSpeech = string.gsub(substSpeech, " S ", " Sud "); substSpeech = string.gsub(substSpeech, " E ", " Est "); substSpeech = string.gsub(substSpeech, " O ", " Ouest "); substSpeech = string.gsub(substSpeech, " NE ", " Nord Est "); substSpeech = string.gsub(substSpeech, " NNE ", " Nord Nord Est "); substSpeech = string.gsub(substSpeech, " ENE ", " Est Nord Est "); substSpeech = string.gsub(substSpeech, " NO ", " Nord Ouest "); substSpeech = string.gsub(substSpeech, " NNO ", " Nord Nord Ouest "); substSpeech = string.gsub(substSpeech, " ONO ", " Ouest Nord Ouest "); substSpeech = string.gsub(substSpeech, " SE ", " Sud Est "); substSpeech = string.gsub(substSpeech, " SSE ", " Sud Sud Est "); substSpeech = string.gsub(substSpeech, " ESE ", " Est Sud Est "); substSpeech = string.gsub(substSpeech, " SO ", " Sud Ouest "); substSpeech = string.gsub(substSpeech, " SSO ", " Sud Sud Ouest "); substSpeech = string.gsub(substSpeech, " OSO ", " Ouest Sud Ouest "); return substSpeech; end WU.cleanJson = function(jsontocheck,returnIfTrue) if jsontocheck == "-999.00" or jsontocheck == "--" or jsontocheck == json.null then jsontocheck = returnIfTrue; end local ok = pcall(function() testConcatenate = "Test Concatenate: " .. jsontocheck; -- test for non concatenate value end ) if (not ok) then decode_error = true; Debug( "red", "decode raised an error"); if WU.notifications then WU.notification("decode error in WU Meteo","Got a Decode Error in WU Meteo.", WU.notificationTypes); end end return jsontocheck; end WU.HtmlColor = function(StringToColor,color) if MobileDisplay == false then StringToColor= "<font color=\""..color.."\"> "..StringToColor.."</font>"; end return StringToColor; end WU.IconOrText = function(icon,txt) if MobileDisplay == false then IconOrText = "<img src="..icon.."\>"; else IconOrText = txt; end return IconOrText; end WU.HtmlOrText = function(_html,txt) if MobileDisplay == false then HtmlOrText = _html; else HtmlOrText = txt; end return HtmlOrText; end WU.getSlider = function() ValeurSliderfunct = fibaro:getValue(WU.selfId , "ui.WebOrMobile.value"); return tonumber(ValeurSliderfunct); end WU.setSlider = function(position) fibaro:call(WU.selfId , "setProperty", "ui.WebOrMobile.value", position); return WU.getSlider(); end WU.checkMobileOrWeb = function() ValeurSliderSleep = WU.getSlider(); -- check slider value at first run if ValeurSliderSleep <= 50 then if ValeurSliderSleep == 1 then MobileDisplay = false; else MobileDisplay = false; WU.runDirect = 1; sleepAndcheckslider = 20*WU.updateEvery; -- exit wait loop Debug("orange", WU.translation[WU.language]["Exiting_loop_slider"]); end WU.setSlider(1); -- désactive le run immediat lors du prochain test end if ValeurSliderSleep >= 50 then if ValeurSliderSleep == 98 then else MobileDisplay = true; WU.runDirect = 1; sleepAndcheckslider = 20*WU.updateEvery; -- exit wait loop Debug("orange", WU.translation[WU.language]["Exiting_loop_slider"]); end WU.setSlider(98); -- désactive le run immediat lors du prochain test end return WU.getSlider(); end WU.fetchWU = function() decode_error = false; WU.checkMobileOrWeb(); local WGROUND = Net.FHttp("api.wunderground.com",80); local response ,status, err = WGROUND:GET("/api/"..WU.APIkey.."/conditions/forecast/lang:"..WU.language.."/q/"..WU.station..":"..locationID..".json"); --Debug("orange", "api.wunderground.com/api/"..WU.APIkey.."/conditions/forecast/lang:"..WU.language.."/q/"..WU.station..":"..locationID..".json"); if (tonumber(status) == 200 and tonumber(err)==0) then Debug( "cyan", WU.translation[WU.language]["Fetched"]); if (response ~= nil) then WU.now = os.date("%H:%M"); jsonTable = json.decode(response); if jsonTable.response.error ~= nil then Debug( "red", WU.translation[WU.language]["NO_DATA_FOUND"]); fibaro:sleep(15*1000); Debug( "yellow", WU.translation[WU.language]["NO_DATA_FOUND"]); fibaro:sleep(15*1000); return end -- current observation stationID = jsonTable.current_observation.station_id; humidity = jsonTable.current_observation.relative_humidity; temperature = jsonTable.current_observation.temp_c; pression = jsonTable.current_observation.pressure_mb; wind = jsonTable.current_observation.wind_kph; rain = WU.cleanJson(jsonTable.current_observation.precip_today_metric,"0"); weathericon = jsonTable.current_observation.icon_url; feelslike_c = jsonTable.current_observation.feelslike_c; temperatureWithFeels = temperature.."/"..feelslike_c -- Today meteo fcstday1 = jsonTable.forecast.txt_forecast.forecastday[1].title; fcst1 = jsonTable.forecast.txt_forecast.forecastday[1].fcttext_metric; fcst1icon = jsonTable.forecast.txt_forecast.forecastday[1].icon_url; -- Today Evening Meteo fcstday2 = jsonTable.forecast.txt_forecast.forecastday[2].title; fcst2 = jsonTable.forecast.txt_forecast.forecastday[2].fcttext_metric; fcst2icon = jsonTable.forecast.txt_forecast.forecastday[2].icon_url; -- Tomorrow Morning Meteo fcstday3 = jsonTable.forecast.txt_forecast.forecastday[3].title; fcst3 = jsonTable.forecast.txt_forecast.forecastday[3].fcttext_metric; fcst3icon = jsonTable.forecast.txt_forecast.forecastday[3].icon_url; -- In 2 days Morning Meteo fcstday5 = jsonTable.forecast.txt_forecast.forecastday[5].title; fcst5 = jsonTable.forecast.txt_forecast.forecastday[5].fcttext_metric; fcst5icon = jsonTable.forecast.txt_forecast.forecastday[5].icon_url; -- SimpleForecast Today Meteo (Complete day) fcst1SmallTxt = jsonTable.forecast.simpleforecast.forecastday[1].conditions; fcst1Tmax = jsonTable.forecast.simpleforecast.forecastday[1].high.celsius; fcst1Tmin = jsonTable.forecast.simpleforecast.forecastday[1].low.celsius; fcst1avewind =jsonTable.forecast.simpleforecast.forecastday[1].avewind.kph; fcst1avewinddir =jsonTable.forecast.simpleforecast.forecastday[1].avewind.dir; fcst1mmday = WU.cleanJson(jsonTable.forecast.simpleforecast.forecastday[1].qpf_day.mm,"0"); fcst1mmnight = WU.cleanJson(jsonTable.forecast.simpleforecast.forecastday[1].qpf_night.mm,"0"); fcst1mm = fcst1mmday.."/"..fcst1mmnight -- SimpleForecast Tomorrow Meteo (Complete day) fcst2SmallTxt = jsonTable.forecast.simpleforecast.forecastday[2].conditions; fcst2Tmax = jsonTable.forecast.simpleforecast.forecastday[2].high.celsius; fcst2Tmin = jsonTable.forecast.simpleforecast.forecastday[2].low.celsius; fcst2avewind =jsonTable.forecast.simpleforecast.forecastday[2].avewind.kph; fcst2avewinddir =jsonTable.forecast.simpleforecast.forecastday[2].avewind.dir; fcst2mmday = WU.cleanJson(jsonTable.forecast.simpleforecast.forecastday[2].qpf_day.mm,"0"); fcst2mmnight = WU.cleanJson(jsonTable.forecast.simpleforecast.forecastday[2].qpf_night.mm,"0"); fcst2mm = fcst2mmday.."/"..fcst2mmnight -- In 2 days Meteo (Complete day) fcst3SmallTxt = jsonTable.forecast.simpleforecast.forecastday[3].conditions; fcst3Tmax = jsonTable.forecast.simpleforecast.forecastday[3].high.celsius; fcst3Tmin = jsonTable.forecast.simpleforecast.forecastday[3].low.celsius; fcst3avewind =jsonTable.forecast.simpleforecast.forecastday[3].avewind.kph; fcst3avewinddir =jsonTable.forecast.simpleforecast.forecastday[3].avewind.dir; fcst3mmday = WU.cleanJson(jsonTable.forecast.simpleforecast.forecastday[3].qpf_day.mm,"0"); fcst3mmnight = WU.cleanJson(jsonTable.forecast.simpleforecast.forecastday[3].qpf_night.mm,"0"); fcst3mm = fcst3mmday.."/"..fcst3mmnight if (stationID ~= nil) and decode_error == false then fibaro:call(WU.selfId , "setProperty", "ui.lblStation.value", locationID); if temperature < 5 then cTemperature = WU.HtmlColor(temperatureWithFeels,"00bfff"); elseif temperature > 18 then cTemperature = WU.HtmlColor(temperatureWithFeels,"ff4500"); else cTemperature = WU.HtmlColor(temperatureWithFeels,"ffd700"); end fibaro:call(WU.selfId , "setProperty", "ui.lblTempHum.value", WU.translation[WU.language]["Temperature"]..": "..cTemperature.."°C | "..humidity.." "..WU.translation[WU.language]["Humidity"]); fibaro:call(WU.selfId , "setProperty", "ui.lblWindRain.value", WU.translation[WU.language]["Wind"]..": "..wind.." km/h - "..WU.translation[WU.language]["Rain"]..": "..rain.." mm"); if (WU.now >= "03:00" and WU.now <= "15:59") then -- donne meteo du jour entre 00:00 (ou 3h) et 15:59. permet de garder la météo du soir jusqu'a 3h du matin, sinon change à minuit fibaro:call(WU.selfId , "setProperty", "ui.lblFcst.value", WU.HtmlOrText( WU.HtmlColor(WU.translation[WU.language]["Forecast"],"c0c0c0")..WU.HtmlColor(fcstday1,"ff4500")..": "..WU.HtmlColor(fcst1.." ("..fcst1mm.." mm)","b0c4de"), fcst1Tmax.."°/"..fcst1Tmin.."° | "..fcst1mm.."mm | "..fcst1avewind.."Km/h ("..fcst1avewinddir..")")); fibaro:call(WU.selfId , "setProperty", "ui.lblIcon.value",WU.IconOrText(fcst1icon,fcstday1..": "..fcst1SmallTxt)); local texte = WU.substPercent(WU.translation[WU.language]["Forecast"]..fcstday1..": ".." "..fcst1.." ("..fcst1mm.." mm)"); fibaro:setGlobal("Meteo_Day", texte); local texte = WU.substPercent(WU.translation[WU.language]["Forecast"]..fcstday1..": ".." "..fcst1); texte = WU.substSpeech(texte); fibaro:setGlobal("Meteo_Day_Speech", texte); elseif (WU.now >= "16:00" and WU.now <= "23:59") then -- donne meteo soirée entre 16:00 et 23:59 fibaro:call(WU.selfId , "setProperty", "ui.lblFcst.value", WU.HtmlOrText( WU.HtmlColor(WU.translation[WU.language]["Forecast"],"c0c0c0")..WU.HtmlColor(fcstday2,"ff4500")..": "..WU.HtmlColor(fcst2.." ("..fcst1mm.." mm)","b0c4de"), fcst1Tmax.."°/"..fcst1Tmin.."° | "..fcst1mm.."mm | "..fcst1avewind.."Km/h ("..fcst1avewinddir..")")); fibaro:call(WU.selfId , "setProperty", "ui.lblIcon.value",WU.IconOrText(fcst2icon,fcstday2..": "..fcst1SmallTxt)); local texte = WU.substPercent(WU.translation[WU.language]["Forecast"]..fcstday2..": ".." "..fcst2.." ("..fcst1mm.." mm)"); fibaro:setGlobal("Meteo_Day", texte); local texte = WU.substPercent(WU.translation[WU.language]["Forecast"]..fcstday2..": ".." "..fcst2); texte = WU.substSpeech(texte); fibaro:setGlobal("Meteo_Day_Speech", texte); end -- Meteo of Tomorrow fibaro:call(WU.selfId , "setProperty", "ui.lblFcstTomorrow.value", WU.HtmlOrText( WU.HtmlColor(WU.translation[WU.language]["Forecast"],"c0c0c0")..WU.HtmlColor(fcstday3,"ff4500")..": "..WU.HtmlColor(fcst3.." ("..fcst2mm.." mm)","b0c4de"), fcst2Tmax.."°/"..fcst2Tmin.."° | "..fcst2mm.."mm | "..fcst2avewind.."Km/h ("..fcst2avewinddir..")")); fibaro:call(WU.selfId , "setProperty", "ui.lblIconTomorrow.value",WU.IconOrText(fcst3icon,fcstday3..": "..fcst2SmallTxt)); local texte = WU.substPercent(WU.translation[WU.language]["Forecast"]..fcstday3..": ".." "..fcst3.." ("..fcst2mm.." mm)"); fibaro:setGlobal("Meteo_Tomorrow", texte); local texte = WU.substPercent(WU.translation[WU.language]["Forecast"]..fcstday3..": ".." "..fcst3); texte = WU.substSpeech(texte); fibaro:setGlobal("Meteo_Tomorrow_Sp", texte); -- Meteo in 2 Days fibaro:call(WU.selfId , "setProperty", "ui.lblFcst2Days.value", WU.HtmlOrText( WU.HtmlColor(WU.translation[WU.language]["Forecast"],"c0c0c0")..WU.HtmlColor(fcstday5,"ff4500")..": "..WU.HtmlColor(fcst5.." ("..fcst3mm.." mm)","b0c4de"), fcst3Tmax.."°/"..fcst3Tmin.."° | "..fcst3mm.."mm | "..fcst3avewind.."Km/h ("..fcst3avewinddir..")")); fibaro:call(WU.selfId , "setProperty", "ui.lblIcon2Days.value",WU.IconOrText(fcst5icon,fcstday5..": "..fcst3SmallTxt)); local texte = WU.substPercent(WU.translation[WU.language]["Forecast"]..fcstday5..": ".." "..fcst5.." ("..fcst3mm.." mm)"); fibaro:setGlobal("Meteo_In_2_Days", texte); local texte = WU.substPercent(WU.translation[WU.language]["Forecast"]..fcstday5..": ".." "..fcst5); texte = WU.substSpeech(texte); fibaro:setGlobal("Meteo_In_2_Days_Sp", texte); if WU.notifications then if (os.date("%H:%M") == WU.push_fcst1) then WU.notification(fcstday1.." - "..fcst1.." ("..fcst1mm.." mm)" , WU.translation[WU.language]["EmailSubject"].." "..fcstday1 , WU.notificationTypes); -- Send Morning meteo elseif (os.date("%H:%M") == WU.push_fcst2) then WU.notification( fcstday2.." - "..fcst2.." ("..fcst2mm.." mm)" , WU.translation[WU.language]["EmailSubject"].." "..fcstday2 , WU.notificationTypes); -- Send evening meteo end end if WU.notifications then fibaro:call(WU.selfId , "setProperty", "ui.lblNotify.value", WU.translation[WU.language]["Push_forecast"].." = true"); else fibaro:call(WU.selfId , "setProperty", "ui.lblNotify.value",WU.translation[WU.language]["Push_forecast"].." = false"); end WU.scheduler = os.time()+WU.updateEvery*60; fibaro:call(WU.selfId, "setProperty", "ui.lblUpdate.value", WU.translation[WU.language]["Last_updated"]..": "..os.date("%c")); Debug( "cyan", WU.translation[WU.language]["Data_processed"]); Debug( "white", WU.translation[WU.language]["Update_interval"].." "..WU.updateEvery); else Debug( "red", WU.translation[WU.language]["NO_STATIONID_FOUND"]); end else fibaro:debug("status:" .. status .. ", errorCode:" .. errorCode); end end sleepAndcheckslider = 0; while sleepAndcheckslider <= 20*WU.updateEvery do fibaro:sleep(3000); WU.checkMobileOrWeb(); sleepAndcheckslider = sleepAndcheckslider+1; if (WU.DoNotRecheckBefore <= os.time()) and ((WU.scheduler == os.time) or (os.date("%H:%M") == WU.push_fcst1) or (os.date("%H:%M") == WU.push_fcst2)) then Debug("orange", WU.translation[WU.language]["Exiting_loop_push"]); WU.DoNotRecheckBefore = os.time()+60; sleepAndcheckslider = 20*WU.updateEvery; end end end Debug( "orange", "10/2015 - WU Weather - Original LUA Scripting by Jonny Larsson 2015"); Debug( "orange", "11/2015 - YAMS WU - Fork by Sébastien Jauquet"); Debug( "orange", "Version: "..WU.version); if WU.station == "LOCID" then locationID = WU.LOCID; elseif WU.station == "PWS" then locationID = WU.PWS; end if WU.CreateVG then WU.createGlobalIfNotExists("Meteo_Day", ""); WU.createGlobalIfNotExists("Meteo_Tomorrow", ""); WU.createGlobalIfNotExists("Meteo_In_2_Days", ""); WU.createGlobalIfNotExists("Meteo_Day_Speech", ""); WU.createGlobalIfNotExists("Meteo_Tomorrow_Sp", ""); WU.createGlobalIfNotExists("Meteo_In_2_Days_Sp", ""); end while true do WU.fetchWU(); end
sebcbien Posté(e) le 25 juillet 2016 Auteur Signaler Posté(e) le 25 juillet 2016 Donc ceci: lundi: Partiellement nuageux. Maximales : 24 °C. Vents OSO soufflant de 10 à 15 km/h. (0/0 mm) Devient ceci: lundi: Partiellement nuageux. Maximales : 24 degrés. Vents de provenance Ouest Sud Ouest soufflant de 10 à 15 kilomètre heure.
pepite Posté(e) le 25 juillet 2016 Signaler Posté(e) le 25 juillet 2016 Super merci Seb, le top; Je teste en rentrant de vacs, j'ose pas jouer à distance;-) je pourrai vocaliser avec les SONOS top merci beaucoup le pied les DEVS ;-) vous etes des boss 1
pepite Posté(e) le 30 juillet 2016 Signaler Posté(e) le 30 juillet 2016 Salut Sebcbien, Mis en place avec les annonces vocales pour Sonos pour moi, PARFAIT !! merci beaucoup le TOP Pour moi non plus la creation des VGs n'a pas fonctionné, donc je l'ai fait à la mano ;-) à l'ancienne ;-) 1
sebcbien Posté(e) le 30 juillet 2016 Auteur Signaler Posté(e) le 30 juillet 2016 Cool :-) J'imagine que c'est encore une modif de la part des polaks ;-) car je n'ai pas changé la fonction de création des vg, j'ai juste rajouté les nouvelles vg àla liste. Sent from my Note4 1
pepite Posté(e) le 5 août 2016 Signaler Posté(e) le 5 août 2016 Salut @sebcbien, J'ai un petit bug Je n'ai plus de conversion de "°C" en "degrés" vers la variable speech ;-) alors la madame du TTS de sonos me lit "C" apres la temperature ;-) Une idée ? Merci merci substSpeech = string.gsub(substSpeech, "°C", "degrés"); texte = WU.substSpeech(texte); fibaro:setGlobal("Meteo_Tomorrow_Sp", texte); [DEBUG] 21:16:25: Meteo_Tomorrow_Sp : samedi: Partiellement nuageux. Maximales : 24 ºC. Vents de provenance Ouest Nord Ouest soufflant de 10 à 15 kilomètre heure. [DEBUG] 21:16:25: Meteo_Tomorrow : samedi: Partiellement nuageux. Maximales : 24 ºC. Vents ONO soufflant de 10 à 15 km/h. (0/0 mm)
sebcbien Posté(e) le 5 août 2016 Auteur Signaler Posté(e) le 5 août 2016 C'est"marrant" idem chez moi, ça ne convertit plus... Hmmm sans doute qquechose changé chez WU. Pas trop le temps de regarder maintenant :-/ Sent from my Note4
pepite Posté(e) le 6 août 2016 Signaler Posté(e) le 6 août 2016 Pas de souci, c'etait surtout pour savoir si cela venait de moi ou bug general ;-) J'essaierai de jeter un oeil chez WU au cas où ;-)
sebcbien Posté(e) le 6 août 2016 Auteur Signaler Posté(e) le 6 août 2016 la solution est dans le code que tu as posté ;-) Ils ont changé le ° en º voici la ligne modifiée: substSpeech = string.gsub(substSpeech, "ºC", "degrés");
sebcbien Posté(e) le 6 août 2016 Auteur Signaler Posté(e) le 6 août 2016 J'ai modifié le code àla page précédente, j'ai laissé les deux, pas testé mais ça devrait fonctionner si jamais ils reviennent en arrière
pepite Posté(e) le 6 août 2016 Signaler Posté(e) le 6 août 2016 Well done, je sais pas coment tu l'as vu celle là ;-) Mis en place, pas testé, j'ai aussi laissé les 2 ;-) MErci @sebcbien 1
pepite Posté(e) le 18 août 2016 Signaler Posté(e) le 18 août 2016 Salut @sebcbien suis-je le seul à avoir le bug ? D'après le debug je recois bien les données de WU, mais cela ne met plus à jour ni les Labels, ni les VG ni les VG_speech ;-)
sebcbien Posté(e) le 18 août 2016 Auteur Signaler Posté(e) le 18 août 2016 Salut @pepite, je ne sais pas si tu es le seul, mais chez moi ça fonctionne toujours... Essaye de refaire un save peut-être? Sinon, question importante, as-tu vérifié qu'il n'a pas de chats noir qui rodent ? Sent from my Note4
pepite Posté(e) le 18 août 2016 Signaler Posté(e) le 18 août 2016 Ah ben non ;-) J'ai fait le save plusieurs fois, bizarre bon, ben je vias jeter un oeil au chat alors ;-) C'est peut-etre @jojo qui me l'a refilé ;-) Je cherche le bug
sebcbien Posté(e) le 18 août 2016 Auteur Signaler Posté(e) le 18 août 2016 Essaye de mettre les paramètres de localisation par défaut, c'est peut-être le json de ta localisation qui foire. Attention que parfois ce n'est pas mis àjour tout de suite àcause du scheduler Sent from my Note4
pepite Posté(e) le 18 août 2016 Signaler Posté(e) le 18 août 2016 Bien vu le coup du json ;-) LE Coupable est bien lui !! suis alle sur l'api et en pws, le json est vide, mais en LOCID ;-) all is good Si ca peut servir a d'autres, c'est cette adresse dans le code de @sebcbien : api.wunderground.com/api/"..WU.APIkey.."/conditions/forecast/lang:"..WU.language.."/q/"..WU.station..":"..locationID..".json 1
sebcbien Posté(e) le 18 août 2016 Auteur Signaler Posté(e) le 18 août 2016 C'est probablement le propriétaire de la station météo personnelle (pws) qui l'a débranchée ou qui est parti en vacances... Sent from my Note4
pepite Posté(e) le 18 août 2016 Signaler Posté(e) le 18 août 2016 oui certainement, finalement en LOCID c'est peut-etre tout aussi fiable ;-)
Did Posté(e) le 29 août 2016 Signaler Posté(e) le 29 août 2016 Bonsoir, Je me suis enfin décidé à installer ce somptueux VD, merci @sebcbien! C'est surtout parce qu'il y a une station à 5/6 km à vol d'oiseau (si j'entre une ville avec un code FRXX, c'est à une vingtaine de bornes) et j'ai réussi sans trop de problèmes, si ce n'est les variables à créer: à quoi servent-elles? Et aussi si je veux faire parler ma Sonos le matin juste pour la tendance du jour ("lblFcst" je crois), la température est juste car remontée d'un FGBS, que faut-il ajouter? (il me semble que @pepite a mis ça en place). Rien mis encore dans GEA non plus.
Did Posté(e) le 29 août 2016 Signaler Posté(e) le 29 août 2016 Un autre truc bizarre depuis minuit je crois, il ne m'affiche plus mardi.
sebcbien Posté(e) le 30 août 2016 Auteur Signaler Posté(e) le 30 août 2016 Les variables globalesservent àstocker les messages. Après tu récupère ca dans gea et tu pousse vers tes sonos aux conditions que tu désire. Pour le mardi?!?! Bizarre Sent from my Note4
Nico Posté(e) le 30 août 2016 Signaler Posté(e) le 30 août 2016 Il faut passer sur Jeedom pour le bug du mardi...
Messages recommandés