Till senaste kommentaren

Hitta ankomsttid till en tågstation vid pågående tågförsening

Jag trafikerar ofta linjen Örnsköldsvik - Arlanda med nattåg (91). Alltför ofta har tåget en försening vilket gör det omöjligt att ställa en väckarklocka.
Jag använder mig av Android i mobiltelefonen och det superbra automatiserings-programmet "tasker" som har kapaciteten att göra ett http anrop POST t.ex. till https://api.trafikinfo.trafikverket.se/v2/data.json där jag redan har en API-nyckel. Anropet lyckas och jag belönas med ett ton av data - ser ut att vara uppdateringar som sparas på hög och presenteras i oordning.

Mitt bekymmer är att förstå hur jag skall kunna sortera ut den senaste informationen (i takt med att tåget närmar sig Arlanda och informationen så att säga blir "säkrare") och kunna identifiera den mest sannorlika ankomsttiden till Arlanda. Annorlunda uttryckt; få tag på den senaste uppdateringen för Arlanda ochautomatställa väckaren baserat på den informationen.

Jag begriper att det måste ske med en bra filtrerad fråga alltså <QUERY> och förmodligen även <FILTER>, men jag går bet på uppgiften hela tiden.
Skulle jag bara få ett vettigt svar, kan jag med regex snabbt filtrera ut klockslaget, dra bort en kvart och automatställa ett alarm.

Snälla hjälp mig knäcka daVinci-koden

Vänliga hälsningar / B-O Å
Bert-Olof Ahrstrom

Kommentarer

  • Hej Bert-Olof,

    På grund av sommarledigheter dröjer det lite med svar. Vi återkommer nästa vecka.

    Hälsningar,
    Bert
    Bert på Trafiklab
  • Hej Bert-Olof,

    Den här fråga returnerar ankomsstiden vid arlanda central för nattåg 94:
    <REQUEST>
    <LOGIN authenticationkey=" DIN NYCKEL HÄR " />
    <QUERY objecttype="TrainAnnouncement" schemaversion="1.4" limit="1000">
    <FILTER>
    <EQ name="LocationSignature" value="Arnc" />
    <EQ name="ActivityType" value="Ankomst" />
    <EQ name="AdvertisedTrainIdent" value="94" />
    <EQ name="Deleted" value="false" />
    <GT name="ModifiedTime" value="2022-07-10" />
    </FILTER>
    <INCLUDE>TimeAtLocation</INCLUDE>
    </QUERY>
    </REQUEST>

    LocationSignatur filtrerar på Arlanda central, ActivityType på ankomster, AdvertisedTrainIdent på tåg-nummer (justera efter behov), deleted gör att man inte får med ogiltig information (för säkerhetens skull, det fanns inga som hade "deleted: true" när jag kollade), och ModifiedTime är en greater-than filter för att bara ta med information som har uppdaterats sen en viss datum (på detta sätt undviker du dubletter).

    Sen finns det en Include som gör att bara fältet TimeAtLocation returneras.

    Resultatet:

    {
    "RESPONSE": {
    "RESULT": [{
    "TrainAnnouncement": [{
    "TimeAtLocation": "2022-07-12T18:39:00.000+02:00"
    }]
    }]
    }}


    Hoppas att detta hjälper dig på väg.

    Hälsningar,
    Bert


    Bert på Trafiklab
  • Hallå Bert och tack för den förlösande koden!!!

    Nu begriper jag plötsligt hur jag skall ställa mina frågor, och eftersom jag är mycket mer interesserad av ”EstimatedTimeAtLocation” (för att kunna ställa ett alarm 15 minuter innan) så bakade jag helt enkelt in det i frågeställningen och voila – jag får riktiga och relevanta svar!!!! =D

    Stort stort tack för din hjälp!!

    Mvh / B-O

    PS. Min kod ser numera ut som följer och innehåller alla relevanta detaljer för att kunna ställa mitt alarm i tid och uppdatera på 15 minuters bas. Om 1 vecka far jag söderut igen och skall med stort interesse pröva min skapelse.

    <REQUEST> <LOGIN authenticationkey="******98e0b1******b956a53*****"/> <QUERY objecttype="TrainAnnouncement" schemaversion="1.6" lastmodified="true" > <INCLUDE>ActivityType</INCLUDE> <INCLUDE>EstimatedTimeAtLocation</INCLUDE> <INCLUDE>TimeAtLocation</INCLUDE> <FILTER> <EQ name="AdvertisedTrainIdent" value="%Train" /> <EQ name="Deleted" value="false" /> <EQ name="LocationSignature" value="%Destination" /> <OR> <LT name="EstimatedTimeAtLocation" value="$dateadd(%Freshness)" /> <LT name="TimeAtLocation" value="$dateadd(%Freshness)" /> </OR> </FILTER> </QUERY> </REQUEST>

    %Train = “92”, %Destination = “Arnc” och %Freshness = 0.03:00:00 bara för att sålla bort allt skrot som postas under en natt och som sedan länge mer inte är relevant när det börjar nalkas ankomst!

    Jo – jag har f.ö. kontaktat SJ:s kundtjänst och bett dem baka in denna lilla finess (vill du ställa ett alarm kort innan du kommer fram – säg 15 minuter innan!?) i deras app, men jag har inte stött på något interesse alls...:/
    Bert-Olof Ahrstrom

Kommentera eller skriv ett nytt inlägg

Ditt namn och inlägg kan ses av alla. Din e-post visas aldrig publikt.