Aller au contenu

Info Trafic & Horaires Rer/metro Parisiens


Sakkhho

Messages recommandés

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

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

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

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

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

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

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

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

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

  • 1 an après...

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:P

Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

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

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

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é par Sakkhho
Lien vers le commentaire
Partager sur d’autres sites

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é par MAM78
  • Upvote 2
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...