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. sebcbien

    Mon Test Jeedom

    @lazer,Waw, ça c'est du post Mais oui, perso, je fais bien la différence entre raid et sauvegarde. Perso pour le moment je fais comme ceci: Les deux PC: chacun une image faite "à la main" de temps en temps pour prévenir un gros crash/encryption etc. Synchro cloud des documents avec Dropbox/OneDrive Sur les deux pc, je synchronise photos/vidéos et documents sur mon NAS syno Sur le NAS Syno, (Raid 5) je fais tourner crashplan qui synchronise toutes les données "perso" off site sur un autre crashplan (avec historisation) à 30Km de là , donc pas de bol si c'est une attaque nucléaire, sinon ça devrait aller Pour les données lourdes et non perso (films, dessins animés, etc) je fais confiance au raid 5 et si vol/destruction etc... bah tant pis. Je vais peut être améliorer ce dernier point. p.s. quel type de proco xeon tu conseille pour un Gen8 ? ... sans devoir découper la boite pour le faire rentrer
  2. Oui j'ai même du 7G chez moi P.s. je suis électricien hein, j'ai pas beaucoup pratiqué mais quand même [emoji14] P.s chez moi j'ai mis des boîtes bien profondes, je peux même mettre deux fgd dans une box. En réno par contre, je l'ai fait chez un pote et comme tu dis, ces pu#&@! de boîtes trop petites. Sent from my Note4
  3. sebcbien

    Mon Test Jeedom

    Merci Lazer, infos très utiles !! Je vais repenser mon RAID alors, ça va me faire gagner un disque, mais je vais devoir revoir ma stratégie de Backup. Quant aux performances, perso, dans mon milieux professionnel, je vois malheureusement bien la différence entre un serveur virtuel ou réel, et j'évite le virtuel dès que c'est possible ou que j'ai besoin d'un max de perfs. Pour mon test esxi, j'avais pris une bonne machine qui tournais sur W10, reformatée, installé esxi et W10 dedans... bah les performances étaient quasi de 50% au ressenti... donc certainement plus en benchmark. Il y avait certainement du tuning à faire, mais bon, y'a jamais de gros miracles non plus. Ceci dit, on est bien d'accord, pour plein de choses pas trop gourmandes, dont une domotique, la virtualisation est le bon choix. je suis très content de mon Jeedom en VM Virtualbox sur Windows 10... D'ailleurs, ESXI accepte les images VirtualBox ?
  4. Oui et non, dans une installation standard, on met généralement 1 voire 2 circuit pour les lampes (pour ne pas être dans le noir si un disjoncteur déclenche) à‡a veut dire deux disjoncteurs au tableau et ensuite tous les points lumineux sont mis "à la queue-leu-leu". Donc max deux câbles qui sortent du tableau. En mode KNX (ou télérupteurs), chaque point lumineux doit revenir au tableau, donc 16 points lumineux=16 câbles+terre (donc 8X plus de câbles) 16 câbles qui rentrent dans un tableau, c'est déjà un beau tableau, et là on n'a que les points lumineux... Idem pour les prises commandées (alors que normalement on peut en chaîner jusqu’à 8 sur un circuit) Je vous passe les commandes volets etc... Bref, on se retrouve vite avec des truc comme ça: https://www.google.be/search?q=tableau+domotique+knx&biw=1851&bih=1215&source=lnms&tbm=isch&sa=X&sqi=2 Perso j'ai déjà vu bien pire dans une simple maison à deux étages... et bien que je sois électricien de formation, ça fait un effet Ouuuffffffffti fieu, quelle usine à gaz !!... Autre petit inconvénient, on ne pourrait pas revenir en arrière (car la puissance ne passe pas par le blochet de l'interrupteur) si on veut "supprimer-cette-domotique-de-merde-qui-ne-marche-jamais"
  5. sebcbien

    Mon Test Jeedom

    Moi aussi je dois dire que j'ai été plusieurs fois voir ce ESXI, je l'ai même installé une fois, mais bon, question licences, gratos, ça pourrait "sauter" on dirait, puis la gestion d'un raid 5 bof bof, les performances, bof bof... les outils de gestion sont limités en version free Et puis les xpenology et autres, c'est vachement pour barbus questions mises à jour. et les bricolages sur les Micro HP pour Xeon, refroidissement, ajout de disques, vrai raid 5 etc demandent bcp bcp d'investissement temps si ce n'est pas son "métier" Finalement je suis toujours retourné à mon syno 412+ raid 5.. ou les mises à jour c'est click click click ;-)
  6. sebcbien

    Mon Test Jeedom

    Merci pour ton retour @acidric, ça fait très plaisir Et effectivement, tout le monde n'a pas le temps ou l'envie de poster, je peux très bien comprendre, chacun à ses priorités, mais remercier comme tu l'a fait, peu le font. Bref, sur ces bonnes paroles, n'oublie pas de faire comme Steven, mettre le chat, femme et enfants à l'hôtel avant de migrer le Z-wave
  7. Effectivement Pitp2, il faut tout prendre en compte. Mais si je ne me trompe pas, il faut aussi ajouter le prix du logiciel (ou du pro qui va installer/programmer), du (sur)câblage, du tableau (souvent 1 tableau dédié au KNX... j'en ai vu un chez un pote, ça m'a fait peur je dois dire...) Bref, j'avais aussi demandé un devis pour une domotique relativement simple (lampes + quelques prises actionnables) en KNX (installée) je dépassais les 10K facile hors câblage qui aurait été réalisé par mon électricien... mais c'est du clef sur porte, pas du DIY on est bien d'accord. Voilà, chacun son budget, sa vision de la domotique (simple/évolutive/complexe), ses connaissances, le temps àconsacrer, le poids de la fiabilité dans la balance etc... Pas facile, on est tous passés par là;-)
  8. sebcbien

    Mon Test Jeedom

    Lol, pourquoi, tu est pressé de ne plus me voir ? Je vais répondre à cette question, une fois de plus ne fera pas de mal 1) Je me laisse du temps pour tester la partie migrée (qui permet un rollback facilement) 2) mon réseau zwave est stable (sauf des deadnodes qui apparaissent dernièrement avec le 090, mais rien de bloquant 3) comme mon réseau z-wave est stable, en migrant, soit je fais aussi bien, soit je fais moins bien, donc 50% de chance de faire moins bien... 4) Ma femme est habituée à l'interface fibaro, avant de lui en mettre une autre entre les mains, je veux être à 100% sur. 5) L'appli fibaro a le push, mais pas (encore) l'appli jeedom (j'ai besoin de pushbullet, je n'ai pas envie de rajouter ça sur son téléphone) 6) J'attends voir leur box, je ne vais pas rester indéfiniment en VM et la non-fiabilité de la SD sur Raspberry m'a refroidit... je pourrais passer en SSD sur Raspberry mais j'ai la flemme... Donc ce sera leur box, ou un petit nuc Windows ou je transférerai mon image virtualbox) 7) La flemme aussi, l'IP les scénarios, les plugins c'est rigolo, inclure/exclure, noter et refaire la config des modules... bof bof, j'aime pas trop le répétitif, et on sais tous que le z-wave peut être parfois TRES pénible, indépendamment de la box... Un petit coup de pouce serait un gros plantage de la HC2 edit: 12/2016 et aussi: 8) pas de plugin pour alarme Satel sur Jeedom 9) partage plus difficile de son travail, sur HC2, un VFIB posté sur un fil suffit, sur Jeedom c'est via le market ou via captures d'écran. 10) pas de mises à jour des firmwares des modules fibaro possible. 11) l'apli mobile Jeedom évolue positivement mais n'est pas encore aussi compacte et puissante que l'appli Fibaro. L'appli web est très bien, mais reste un appli web.. 12) la puissance de GEA (scripter ses scénarios) imbattable en compacité et édition "en masse" de ses scénarios. Jeedom peut tout faire, mais "un scénario à la fois" ...
  9. sebcbien

    Mon Test Jeedom

    Ben heuu, non, je n'ai pas connu de galère, àpart l'essai raspberry pi et ma SD qui a foiré sans attendre, mais bon, je suis retournée en VM en 1 minute et je n'ai rien perdu. Ou alors tu parle de l'échange de mots ? mais ça n'a pas grand chose àvoir avec Jeedom non plus
  10. sebcbien

    Mon Test Jeedom

    Je suis en VM sous Virtualbox (Windows 10), j'ai simplement DL et lancé l'image fournie par Jeedom. un and running et 10 minutes, prix: 0€ ;-) Toutes mises àjour faites
  11. sebcbien

    Mon Test Jeedom

    ??? On parle que de l'appli mobile hein Sinon, j'ai migré 95% de tout mes devices "IP" et j'ai transféré toute ma logique domotique de Fibaro vers Jeedom (98% fait)... Tous les VD, gea, scènes, détection de présence, Thermostats, VMC, SONOS, KODI, Alarme IFTT, Réveils, Géolocalisation, Owntracks, EcoDevices, EmonCMS, Graphiques, Synology, SurveillanceStation, Météo, SARAH, etc. etc. etc. sur Jeedom... Et tout ça sans écrire une seule ligne de code... et en mieux, j'ai amélioré mes process, tellement c'est clair, c'est très facile. Tout ce travail (disons deux-trois gros weekends), je l'ai réalisé quasiment sans rencontrer de bugs (1 remonté et fixé 3h plus tard par l'équipe Jeedom...) et sans plantages. Donc de ce côté je suis à 200% pour Jeedom, plus souple plus simple, beaucoup mieux pensé, stable, là y'a RIEN à dire, j'ai retrouvé du plaisir à faire de la domotique. Voilà , maintenant je pense que je vais laisser un peu comme ça, rajouter des trucs qui me passent par la tête, et tant que ma HC2 donne encore du service, ça me permettra de voir la stabilité de Jeedom dans le temps (je peux encore ré-activer la "logique" côté Fibaro et restaurer les GEA. Je vais voir aussi comment évolue l'application, j'ai essayé imperihome, c'est différent, plus pour une interface tablette/murale je trouve.
  12. sebcbien

    Mon Test Jeedom

    Idem... Pour ma femme c'est assez, même mieux que la Fibaro en fait... J'aime bien le dashboard que l'on peut personnaliser avec des shortcuts. Sur la home, Y'a 4 shortcuts et une grande zone pour mettre le thermostat. Elle n'a vraiment pas besoin de plus. Pour le moment, j'irai plus souvent sur l'appli web.. qui se comporte comme une application, elle est même plus rapide que la "vraie" Y'a encore du boulôt, c'est clair, mais elle est bien née et ergonomique. Sent from my Note4
  13. Ah j'ai "trouvé" en fait ce ne sont que mes modules Qubino qui se mettent en dead node... Surement de la faute de Qubino. Voilà voilà , sinon, vous pensez que la prochaine stable (une vraie de vraie cette fois) qui corrige ces deux trois problèmes mineurs vont sortir dans combien de temps ? Dans 4 mois comme pour celle-ci ? Ou ça va aller plus vite grâce aux vacances ?
  14. 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.
  15. 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
  16. A effacer, plantage serveur du Forum...
  17. A effacer, plantage serveur du Forum...
  18. sebcbien

    Mon Test Jeedom

    Ah ? Heuuu zut !?! j'ai pas trouvé en tout cas. Il n'y a que le plugin tasklauncher mais il ne permet pas l'édition des jours directement. Je ne vais pas demander àma femme d'allumer son PC pour modifier l'heure ou le jour du réveil Sent from my Note4
  19. sebcbien

    Mon Test Jeedom

    Je viens de publier mon premier widget sur le market :-) https://www.jeedom.com/forum/viewtopic.php?t=19779 Sent from my Note4
  20. Pas grand chose àrajouter si ce n'est que j'ai moi aussi construit et que sur le choix du filaire/zwave j'ai choisi le zwave et l'alarme (satel) en filaire. J'évite ainsi au maximum les devices sur piles. Savoir àl'avance quels sont les besoins et comment on va vivre dans une maison est impossible. La flexibilité nécessaire pour répondre àce dilemme est quasi impossible en filaire. Le filaire (généralement knx) est plutôt une affaire de pros et nécessite un gros investissement en € mais aussi en temps. La fiabilité du zwave est très suffisante mais pas parfaite, je dirais 99.9% Je l'ai déjàdit, mais si je devais recommencer àzéro maintenant je prendrais Jeedom je pense. Sent from my Note4
  21. Bah pour moi c un truc qui va bien... Étrangement... Et je me fais envoyer un SMS en complément en cas d'intrusion. Ça marche bien quand une araignée passe devant un capteur;) Sent from my Note4
  22. Ouash !!! À ce prix tu peux presque te payer un majordome [emoji14] Sent from my Note4
  23. Ok ok ok... Merci pour le tuto C'est tentant... Mais comme le dit Krikroff, on a déjàtout ça avec la HC2 et au besoin j'ai mon VPN et le "push" fonctionne très bien sur la nouvelle application. Et bon, un truc de plus chez "Claude" je suis jamais très chaud. Sent from my Note4
  24. J'ai lu que la grosse nouveauté c'est le push des états vers la nouvelle application.Vu qu'il n'y a pas de service "cloud satel", ce push ne doit fonctionner que en vpn ou si on se trouve sur le réseau local. Ou alors j'ai raté quelque-chose ? Sent from my Note4
  25. On est bien d'accord, je ne vais pas y toucher non plus, je ne vois pas trop l'avantage de ce push, qui ne fonctionne qu'en local. Ceci dit, la stabilité de cette "mini domotique" est incroyable... si ca pouvait être comme ça avec notre box bien aimée... Maintenant on a tous peur des mises àjour, je me demande d'où ça vient... lol... Sent from my Note4
×
×
  • Créer...