Sebbrunie1 13 Signaler ce message Posté(e) 27 janvier 2016 Bonsoir, j'essaye d'adapter ce très interessant VD avec le tramways et je rentre ca local LineTram3a = jsonTable.response.Tramways[3A].line local EtatTram3a = jsonTable.response.Tramways[3A].title Mais le A ne vas pas.. Comment faire pour avoir les infos..... Merci Sébastien Partager ce message Lien à poster Partager sur d’autres sites
Sakkhho 468 Signaler ce message Posté(e) 27 janvier 2016 Pourtant ca marche bien si tu lances l'api http://api-ratp.pierre-grimaud.fr/v2/traffic/tramways/3A EDIT effectivement je viens de tester et j'ai [ERROR] 22:20:55: line 56: malformed number near '3A' heu je sais pas quoi dire du coup ... Partager ce message Lien à poster Partager sur d’autres sites
Sebbrunie1 13 Signaler ce message Posté(e) 27 janvier 2016 Je sais mais j'ai cela lorsque j'essaye de débuger [ERROR] 22:22:33: line 20: malformed number near '3A' Partager ce message Lien à poster Partager sur d’autres sites
Sebbrunie1 13 Signaler ce message Posté(e) 27 janvier 2016 comme ca ca marche local LineTram3a = jsonTable.response.tramways[3].line local EtatTram3a = jsonTable.response.tramways[3].title Par contre pour la boucle, ou je trouve l'intitulé de la destination. C'est mon arret? Partager ce message Lien à poster Partager sur d’autres sites
Sebbrunie1 13 Signaler ce message Posté(e) 27 janvier 2016 c'est juste pour mon deuxième RER? for j=1, MaxB do --while ProchainRer == 0 do if jsonTableB.responseB.schedules[j].destination == "Châtelet" then ProchainRerB = jsonTableB.responseB.schedules[i].message break elseif jsonTableB.responseB.schedules[j].destination == "Châtelet" then ProchainRerB = jsonTable.responseB.schedules[i].message break else ProchainRerB = 0 end end Partager ce message Lien à poster Partager sur d’autres sites
Sakkhho 468 Signaler ce message Posté(e) 28 janvier 2016 tu en es ou ? pour la boucle pour connaitre l'horaire du prochain train il faut que tu modifies deja l'appel de l'api local response ,status, err = TRAFIC:GET("/v2/rers/a/stations/grande+arche+la+defense?destination=st+germain+en+laye+poissy+cergy") avec la bonne ligne et les bonnes destinations que tu trouves la par exemple http://api-ratp.pierre-grimaud.fr/v2/rers et pour le nom de l'arret http://api-ratp.pierre-grimaud.fr/v2/rers/a/stations donc pour toi : chatelet-les-halles Partager ce message Lien à poster Partager sur d’autres sites
Sebbrunie1 13 Signaler ce message Posté(e) 31 janvier 2016 En fait je veux suivre 2 RERs différents et j'ai fait ça: local response ,status, err = TRAFIC:GET("/v2/rers/a/stations/fontenay+sous+bois?destination=boissy+st+leger+marne+la+vallee") local jsonTable = json.decode(response) local ProchainRer = 0 local Max = 5 for i=1, Max do --while ProchainRer == 0 do if jsonTable.response.schedules[i].destination == "Boissy" then ProchainRer = jsonTable.response.schedules[i].message break elseif jsonTable.response.schedules[i].destination == "Boissy" then ProchainRer = jsonTable.response.schedules[i].message break else ProchainRer = 0 end end local responseB ,statusB, errB = TRAFIC:GET("/v2/rers/a/stations/41?destination=4") local jsonTableB = json.decode(responseB) local ProchainRerB = 0 local MaxB = 5 for j=1, MaxB do --while ProchainRer == 0 do if jsonTableB.responseB.schedules[j].destination == "Châtelet" then ProchainRerB = jsonTableB.responseB.schedules[i].message break elseif jsonTableB.responseB.schedules[j].destination == "Châtelet" then ProchainRerB = jsonTable.responseB.schedules[i].message break else ProchainRerB = 0 end end Partager ce message Lien à poster Partager sur d’autres sites
Sakkhho 468 Signaler ce message Posté(e) 31 janvier 2016 dans la boucle tu es pas obligé de mettre le elseif, si le train à une destination unique j'avais fait ca car dans mon cas, je peux prendre une destination ou une autre, ma gare étant desservie par les 2 branches. si tu as qu'une possibilité supprime le elseif en revanche ca doit pas marcher car les noms des stations n'est pas ok "id": "3", "name": "Boissy Saint Leger", "slug": "boissy+saint+leger" }, "id": "8", "name": "Châtelet-Les-Halles", "slug": "chatelet-les-halles" }, Partager ce message Lien à poster Partager sur d’autres sites
Sebbrunie1 13 Signaler ce message Posté(e) 31 janvier 2016 j'ai mis ça maintenant mais rien ne remonte local response ,status, err = TRAFIC:GET("/v2/rers/a/stations/chatelet-les-halles?destination=boissy+st+leger+marne+la+vallee")local jsonTable = json.decode(response) local ProchainRer = 0 local Max = 5 for i=1, Max do --while ProchainRer == 0 do if jsonTable.response.schedules[i].destination == "boissy+saint+leger" then ProchainRer = jsonTable.response.schedules[i].message break elseif jsonTable.response.schedules[i].destination == "Marne+la+Vallee-Chessy" then ProchainRer = jsonTable.response.schedules[i].message break else ProchainRer = 0 end end local responseB ,statusB, errB = TRAFIC:GET("/v2/rers/b/stations/41?destination=4") local jsonTableB = json.decode(responseB) local ProchainRerB = 0 local MaxB = 5 for j=1, MaxB do --while ProchainRer == 0 do if jsonTableB.responseB.schedules[j].destination == "Aeroport Ch.De Gaulle 2" then ProchainRerB = jsonTableB.responseB.schedules[i].message break elseif jsonTableB.responseB.schedules[j].destination == "Mitry-Claye" then ProchainRerB = jsonTable.responseB.schedules[i].message break else ProchainRerB = 0 end faut il que je change le nom des variable locale par ma deuxième boucle? Partager ce message Lien à poster Partager sur d’autres sites
Sakkhho 468 Signaler ce message Posté(e) 31 janvier 2016 ca devrait marcher ca local response ,status, err = TRAFIC:GET("/v2/rers/a/stations/chatelet-les-halles?destination=boissy+st+leger+marne+la+vallee") local jsonTable = json.decode(response) local ProchainRer = "" local Max = 5 for i=1, Max do if jsonTable.response.schedules[i].destination ~= nil then if jsonTable.response.schedules[i].destination == "Marne la Vallee-Chessy" then ProchainRer = jsonTable.response.schedules[i].message break elseif jsonTable.response.schedules[i].destination == "Boissy Saint Leger" then ProchainRer = jsonTable.response.schedules[i].message break else ProchainRer = "" end end end local response ,status, err = TRAFIC:GET("/v2/rers/b/stations/chatelet?destination=charles+de+gaulle+mitry+claye") local jsonTable = json.decode(response) local ProchainRerB = "" for j=1, Max do if jsonTable.response.schedules[i].destination ~= nil then if jsonTable.response.schedules[j].destination == "Aeroport Ch.De Gaulle 2" then ProchainRerB = jsonTable.response.schedules[i].message break elseif jsonTable.response.schedules[j].destination == "Mitry-Claye" then ProchainRerB = jsonTable.response.schedules[i].message break else ProchainRerB = "" end end end après bien sur il faut de rajouter un label pour afficher le rerb Partager ce message Lien à poster Partager sur d’autres sites
Sebbrunie1 13 Signaler ce message Posté(e) 31 janvier 2016 J'ai ca en debug [DEBUG] 16:41:39: A [DEBUG] 16:41:39: Travaux [DEBUG] 16:41:39: 1 [DEBUG] 16:41:39: Trafic normal [ERROR] 16:41:40: line 75: attempt to index field '?' (a nil value) pour la ligne if jsonTable.response.schedules[i].destination ~= nil then Partager ce message Lien à poster Partager sur d’autres sites
Sebbrunie1 13 Signaler ce message Posté(e) 31 janvier 2016 c bon merci. des i trainait a la place de j. ça marche Partager ce message Lien à poster Partager sur d’autres sites
minos 27 Signaler ce message Posté(e) 13 mars 2017 Bonsoir , je viens déterrer le sujet... y aurait-il la même chose pour les TER... je suis de la bourgogne et pratique la sncf tous les jours ...avec ses grêves, ses pannes , ses retards de trains ... vous l'aurez compris que du bonheur.... donc si je pouvais avoir une piste pour adapter .. ce serait cool... Merci Partager ce message Lien à poster Partager sur d’autres sites
Sakkhho 468 Signaler ce message Posté(e) 6 juillet 2017 Hello j'ai vu que récemment l'api est passé en V3 sauf que c'est du HTTPS me semble il maintenant https://api-ratp.pierre-grimaud.fr/v3/traffic?format=json alors qu'avant on était en http http://api-ratp.pierre-grimaud.fr/v2/traffic?format=json du coup j'ai tenté la modif local TRAFIC = Net.FHttp("api-ratp.pierre-grimaud.fr",443) local selfId = fibaro:getSelfId() local response ,status, err = TRAFIC:GET("/v3/traffic?format=json") mais ca marche pas Je crois que HTTPS ne se fait avec la fibaro si ? Partager ce message Lien à poster Partager sur d’autres sites
Lazer 8 473 Signaler ce message Posté(e) 6 juillet 2017 Le HTTPS, il faut le faire dans une scène.... Partager ce message Lien à poster Partager sur d’autres sites
Sakkhho 468 Signaler ce message Posté(e) 6 juillet 2017 Hum. Tu m en dit plus ou un exemple quelque part ? Partager ce message Lien à poster Partager sur d’autres sites
Lazer 8 473 Signaler ce message Posté(e) 6 juillet 2017 Le début : local httpClient = net.HTTPClient() httpClient:request("https://url", { ... Il y a pas mal d'exemples sur le forum de cette fonction. Partager ce message Lien à poster Partager sur d’autres sites
Sakkhho 468 Signaler ce message Posté(e) 6 juillet 2017 Merci. Je corrige ce week-end alors Partager ce message Lien à poster Partager sur d’autres sites
minos 27 Signaler ce message Posté(e) 7 juillet 2017 Il y a 7 heures, Sakkhho a dit : Merci. Je corrige ce week-end alors Salut Sakkhho tu crois que c'est jouable de l'adapter avec l'API sncf ter ? , par exemple : GET https://api.sncf.com/v1/coverage/sncf/stop_areas/stop_area:OCE:SA:87391003/departures?datetime=20170222T211300 bonne journée Partager ce message Lien à poster Partager sur d’autres sites
Sakkhho 468 Signaler ce message Posté(e) 8 juillet 2017 (modifié) messieurs, besoin d'aide ... car je suis perdu le json https://api-ratp.pierre-grimaud.fr/v3/traffic?format=json j'ai tenté ceci --[[ %% autostart %% properties %% globals --]] -- User variables local URL = "https://api-ratp.pierre-grimaud.fr/v3" local httpClient = net.HTTPClient() ---- Appel Api --- httpClient:request(URL .. "/traffic?format=json", {options = { method = 'GET'}, success = function(result) local jsonTable = json.decode(result) local LineRer = jsonTable.result.rers[1].line local EtatRer = jsonTable.result.rers[1].title local EtatLongRer = jsonTable.result.rers[1].message local LineMetro = jsonTable.result.metros[1].line local EtatMetro = jsonTable.result.metros[1].title fibaro:debug("OK") end, error = function(err) fibaro:debug("Error: " ..err) end }) --local dateTag = os.date("%H:%M", os.time()) --fibaro:call(selfId, "setProperty", "ui.Date.value", dateTag) --fibaro:call(selfId, "setProperty", "ui.LineRer.value", LineRer .. " ") --fibaro:call(selfId, "setProperty", "ui.EtatRer.value", EtatRer .. " ") --fibaro:call(selfId, "setProperty", "ui.LineMetro.value", LineMetro .. " ") --fibaro:call(selfId, "setProperty", "ui.EtatMetro.value", EtatMetro .. " ") -- Gestion des icônes et mise à jour de la variable --if EtatRer == "Trafic normal" then -- fibaro:call(selfId , "setProperty", "currentIcon", TraficOk) -- fibaro:setGlobal("EtatTrafic", "OK") --else -- fibaro:call(selfId , "setProperty", "currentIcon", TraficNok) -- fibaro:setGlobal("EtatTrafic", EtatLongRer) print(LineRer) print(EtatRer) print(LineMetro) print(EtatMetro) print(EtatRer) mais j'obtiens [DEBUG] 14:12:24: nil [DEBUG] 14:12:24: nil [DEBUG] 14:12:24: nil [DEBUG] 14:12:24: nil [DEBUG] 14:12:24: nil [DEBUG] 14:12:24: [1;31m2017-07-08 14:12:24.534764 [ fatal] LUA error: /usr/share/lua/5.2/json/decode.lua:74: bad argument #1 to 'match' (string expected, got table) pouvez vous me guider un peu plus ? merci Modifié 8 juillet 2017 par Sakkhho Partager ce message Lien à poster Partager sur d’autres sites
MAM78 408 Signaler ce message Posté(e) 8 juillet 2017 (modifié) Hello @Sakkhho Voici ton code corrigé avec une traitement des erreurs potentielles --[[ %% autostart %% properties %% globals --]] -- User variables function GetData() local URL = "https://api-ratp.pierre-grimaud.fr" local Parameter = "/v3/traffic?format=json" local Query = URL .. Parameter local http = net.HTTPClient() local ok = pcall(function() http:request(Query, { options = { method = 'GET', headers = {["Content-Type"] = "application/json"}, data = body }, success = function(response) if response.status == 200 then local status, data = pcall(json.decode, response.data) if (status and data) then LineRer = data.result.rers[1].line EtatRer = data.result.rers[1].title EtatLongRer = data.result.rers[1].message LineMetro = data.result.metros[1].line EtatMetro = data.result.metros[1].title fibaro:debug(LineRer) fibaro:debug(EtatRer) fibaro:debug(LineMetro) fibaro:debug(EtatMetro) fibaro:debug(EtatRer) end else if response.status == 500 or response.status == 503 then fibaro:debug("Erreur d'indisponibilité du serveur") else fibaro:debug("Erreur requête serveur, response.status = "..response.status) end end end, error = function(err) fibaro:debug("Erreur de reception de données, Erreur = ".. err) end }) end) if not(ok) then Debug("red","Erreur dans l'exécution de fhttp:request(Query") end end GetData() Modifié 8 juillet 2017 par MAM78 2 Partager ce message Lien à poster Partager sur d’autres sites
minos 27 Signaler ce message Posté(e) 8 juillet 2017 comment je pourrai adapter avec l'api de la sncf pour les ter ?: https://api.sncf.com/v1/ Une idée ....? Partager ce message Lien à poster Partager sur d’autres sites
Sakkhho 468 Signaler ce message Posté(e) 8 juillet 2017 merci @MAM78 , c'était bien au dessus de mes possibilités lol j'adore ce forum je continue donc pour remettre le VD focntionnel le plus gros est fait tu me diras :-) Partager ce message Lien à poster Partager sur d’autres sites
MAM78 408 Signaler ce message Posté(e) 8 juillet 2017 attention de bien reprendre le dernier code que j'ai déposé. j'ai corrigé quelques erreurs Partager ce message Lien à poster Partager sur d’autres sites
Sakkhho 468 Signaler ce message Posté(e) 8 juillet 2017 (modifié) c'est tout bon, j'avance. @minos, @MAM78 est surement ton homme.. Modifié 8 juillet 2017 par Sakkhho Partager ce message Lien à poster Partager sur d’autres sites