Aller au contenu

sebcbien

Membres confirmés
  • Compteur de contenus

    4 189
  • Inscription

  • Dernière visite

  • Jours gagnés

    85

Tout ce qui a été posté par sebcbien

  1. j'ai des problèmes avec les icônes des scènes. Je viens de refaire l'icône pour le id Check de Steven http://www.domotique-fibaro.fr/index.php/topic/9074-sc%C3%A9nario-permettant-de-contr%C3%B4ler-les-ids/page-3#entry138652 Maios j'ai eu dui mal à effacer l'ancienne et mettre la nouvelle... c'est comme si les id étaient décalés de 1, j'effaçait toujours l'icône située après dans la liste... Au final pour effacer la dernière icône, je devais cliquer sur la précédente, idem pour choisir, je devais cliquer sur la précédente (icône du watchdog de Lazer) ... qui est toujours bien déclarée dans la scène Watchdog. Caches bien vidés etc... Personne n'a remarqué ça ? (ça n'arrive pas souvent que l'on doive le faire évidemment...)
  2. Voici la nouvelle icône, transparente pour Môôôsieur ... voici ce que ça donne "en situation": J'espère ne pas me faire insulter cette fois
  3. oubliez pas de garder vos paramètres
  4. Hé c'est pas une box pour barbus ici !!!Hérétique !!! ;-) Sent from my Note4
  5. @did Pas si tu utilises un intermédiaire comme ceci: http://www.domotique-fibaro.fr/index.php/topic/9079-say-it-sarah-sonos/?p=138273 Tellement plus simple hein ?
  6. voici le code mis àjour. Temps de test: 5 minutes, donc je garantis pas qu'il n'y a pas de bugs Code du main loop àremplacer: ------------------------------------------------------------------------------------------- -- 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 -- 2061-10-01 - V4.2 - Removed HTML tags ------------------------------------------------------------------------------------------- -- 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 WU.APIkey = "XXXXXxxxxxXXXXXXX"; -- Put your WU api key here WU.PWS = "XXXXXXXXXX"; -- The PWS location to get data from (Personal Weather Station) WU.LOCID = "XXXXXXX"; -- The location ID to get data from (Public City location) WU.station = "LOCID"; -- 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.2"; 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); fibaro:call(WU.selfId , "setProperty", "ui.lblTempHum.value", WU.translation[WU.language]["Temperature"]..": "..temperature.."°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 <= "23: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.translation[WU.language]["Forecast"]..fcstday1..": "..fcst1.." ("..fcst1mm.." mm)", 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.translation[WU.language]["Forecast"]..fcstday2..": "..fcst2.." ("..fcst1mm.." mm)", 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.translation[WU.language]["Forecast"]..fcstday3..": "..fcst3.." ("..fcst2mm.." mm)", 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.translation[WU.language]["Forecast"]..fcstday5..": "..fcst5.." ("..fcst3mm.." mm)", 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
  7. perso j'ai aussi cliqué et "rien" J'avais du boulôt, donc j'ai laissé comme ça et 2h plus tard elle était en 4.1 Maintenant combien de temps ça àpris ?? aucune idée.
  8. Maj faite hier, jusqu'ici la maison n'a pas encore brûlée :-) Comme le dit Lazer, on va peut-être enfin avoir des nouveautés depuis deux ans. Mais vont-ils pouvoir délivrer sans àchaque fois casser la base ?!? Wait and see... Sent from my Note4
  9. hmmm oui je viens de voir j'ai toujours les icônes mais plus les couleurs. 'fallait s'y attendre...
  10. sebcbien

    Showroom Gea V2

    trop fort jojo ! trop fort jojo ! trop fort jojo ! Plus qu'a analyser tout ça. Je t'aurais bien donné un coup de main mais je matais 2 fin de saison 6 de GOT et je n'ai pas vu les alertes
  11. sebcbien

    Showroom Gea V2

    trop fort jojo ! trop fort jojo !
  12. sebcbien

    Showroom Gea V2

    trop fort jojo !
  13. sebcbien

    Showroom Gea V2

    Woooohooo, génial ! À mon avis, si tu la poste en deux parties, avec ce qu'il faut de posts vides entre les deux pour passer àla page suivante, ça devrait aller. Sent from my Note4
  14. Perfectitude du crocodile, ça c sur
  15. 1) PROUT ! 2) Je l'ai faite sur un pc sans photoshop et en 2 minutes sur un paint un peu plus évolué, alors les transparents... 'fo pas rêver 3) SI j'ai le temps ET SI vous êtes sages, je pourrais EVENTUELLEMENT ENVISAGER de PENSER à la POSSIBILITE de la refaire.
  16. Si mais je l'ai enlevé, c mieux les messages courts et la personne dans la pièce sais normalement que la TV est allumée depuis longtemps et aussi la duration n'est pas prononçable. Sent from my Note4
  17. yes, should work. Here is one of mine: GEA.add({"Sensor+", id2["TV___AMPLI"], 150}, 180*60, "TV Allumée depuis #duration# (#value# Watt)",{ {"Portable", id["PHONE_SEB"]}, {"Label", id2["SONOS_SAY_IT"], "Message", "Télévision allumée depuis 3 heures. La consomation est de #value# Watt"},TTS_Sonos })
  18. Pour le moment, la seule solution qui marche àtous les coups pour que le TTS passe sur mes deux SONOS, c'est de faire une paire stéréo avec le deux... mais donc plus moyen de les piloter individuellement après. Quand je fais un groupe, ça ne tiens que jusqu'àce que je veuille ne jouer de la musique que dans une pièce et alors, le TTS ne se fait plus que sur un seul HP.. Un peu dommage...
  19. Je te rassure, mon orthographe n'est pas si mauvaise Si j'écris rez il me le prononce mal, donc je triche un peu Sent from my Note4
  20. Voilà , je vous ai créé un VD générique à personnaliser pour les 3 TTS configurés. Voir le mode d'emploi dans le bouton. À personaliser donc: 2 rename 1 upload d'icône 1 ip et un port à configurer (uniquement pour Karotz ou SARAH) Fait à l'arrache, pas trop testé mais ça a l'air de fonctionner. Enjoy
  21. Aye aye sir Pour les scènes oui, bien que certaines n'ont pas besoin de déclencheurs et idem pour les VD. Et pour les entêtes, ton tool peut vérifier ça facilement. Donc ça ne resouds pas tout mais une fameuse partie quand même. Sent from my Note4
  22. Et vous voulez un pour Karotz aussi j'imagine?!? Sent from my Note4
  23. Il faudrait voir si on pourrait stocker tout dans un label ou une VG et l'appeler en début de script. Quitte àcompresser. Mais àmon avis ça risquerait de ralentir Sent from my Note4
  24. Corruption du fichier?Essaye de le re-telecharger du premier post Sent from my Note4
  25. Voici un VD qui permet d'appeler facilement les fonctions TTS des 3 actuellement disponibles: KAROTZ SONOS (via le VD de @krikroff ) S.A.R.A.H. Avantages: - sans passer par une Variable Globale - Et avec historisation des 10 derniers messages Voir exemple d'utilisation plus bas pour GEA. Exemples pour S.A.R.A.H. et SONOS: Exemple Gea: local TTS_Sarah = {"VirtualDevice", id2["S_A_R_A_H__SAY_IT"], 1} local TTS_Sonos = {"VirtualDevice", id2["SONOS_SAY_IT"], 1} ensuite: {"Label", id2["SONOS_SAY_IT"], "Message", "Bonjour, enclenchement du chauffage du ré de chaussée"},TTS_Sonos, ou {"Label", id2["S_A_R_A_H_SAY_IT"], "Message", "Bonjour, enclenchement du chauffage du ré de chaussée"},TTS_Sarah, Voici la partie config du bouton et le VD générique est attaché ci-dessous. -- Say It Copyright Sébastien Jauquet 2016 -- V 1.0.0 28/09/2016 ------------------------------------------- -- HOW TO USE THIS VD: -- Rename the name of the label (Say It XXXXXX !), NOT the ID !!! -- Rename the name of the VD (XXXXX Say It !) -- Fill Ip Address and port in the VD settings -- Port: usualy 8080 for SARAH and 80 for KAROTZ -- Un-comment one of the three line below depending of the device you want to control local TTS_Device = "sarah" --local TTS_Device = "karotz" --local TTS_Device = "sonos" local id2 = { SONOS_REMOTE = 2124 } -- enter Krikroff sonos VD id ------- NO USER MOD BELOW ------------------------------- local selfId = fibaro:getSelfId() local SARAH_KAROTZ_Ip = fibaro:get(selfId, "IPAddress") local port = fibaro:get(selfId, "TCPPort") function urlencode(s) if (s) then .... blablabla icônes: XXXXXX_Say_It_!.vfib
×
×
  • Créer...