Sebbrunie1 Posté(e) le 27 janvier 2016 Signaler Partager Posté(e) le 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 27 janvier 2016 Auteur Signaler Partager Posté(e) le 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 ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sebbrunie1 Posté(e) le 27 janvier 2016 Signaler Partager Posté(e) le 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' Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sebbrunie1 Posté(e) le 27 janvier 2016 Signaler Partager Posté(e) le 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? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sebbrunie1 Posté(e) le 27 janvier 2016 Signaler Partager Posté(e) le 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 28 janvier 2016 Auteur Signaler Partager Posté(e) le 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sebbrunie1 Posté(e) le 31 janvier 2016 Signaler Partager Posté(e) le 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 31 janvier 2016 Auteur Signaler Partager Posté(e) le 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" }, Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sebbrunie1 Posté(e) le 31 janvier 2016 Signaler Partager Posté(e) le 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? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 31 janvier 2016 Auteur Signaler Partager Posté(e) le 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sebbrunie1 Posté(e) le 31 janvier 2016 Signaler Partager Posté(e) le 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sebbrunie1 Posté(e) le 31 janvier 2016 Signaler Partager Posté(e) le 31 janvier 2016 c bon merci. des i trainait a la place de j. ça marche Lien vers le commentaire Partager sur d’autres sites More sharing options...
minos Posté(e) le 13 mars 2017 Signaler Partager Posté(e) le 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 6 juillet 2017 Auteur Signaler Partager Posté(e) le 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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 6 juillet 2017 Signaler Partager Posté(e) le 6 juillet 2017 Le HTTPS, il faut le faire dans une scène.... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 6 juillet 2017 Auteur Signaler Partager Posté(e) le 6 juillet 2017 Hum. Tu m en dit plus ou un exemple quelque part ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 6 juillet 2017 Signaler Partager Posté(e) le 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 6 juillet 2017 Auteur Signaler Partager Posté(e) le 6 juillet 2017 Merci. Je corrige ce week-end alors Lien vers le commentaire Partager sur d’autres sites More sharing options...
minos Posté(e) le 7 juillet 2017 Signaler Partager Posté(e) le 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 8 juillet 2017 Auteur Signaler Partager Posté(e) le 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é le 8 juillet 2017 par Sakkhho Lien vers le commentaire Partager sur d’autres sites More sharing options...
MAM78 Posté(e) le 8 juillet 2017 Signaler Partager Posté(e) le 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é le 8 juillet 2017 par MAM78 2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
minos Posté(e) le 8 juillet 2017 Signaler Partager Posté(e) le 8 juillet 2017 comment je pourrai adapter avec l'api de la sncf pour les ter ?: https://api.sncf.com/v1/ Une idée ....? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 8 juillet 2017 Auteur Signaler Partager Posté(e) le 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 :-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
MAM78 Posté(e) le 8 juillet 2017 Signaler Partager Posté(e) le 8 juillet 2017 attention de bien reprendre le dernier code que j'ai déposé. j'ai corrigé quelques erreurs Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sakkhho Posté(e) le 8 juillet 2017 Auteur Signaler Partager Posté(e) le 8 juillet 2017 (modifié) c'est tout bon, j'avance. @minos, @MAM78 est surement ton homme.. Modifié le 8 juillet 2017 par Sakkhho Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés