Arduino - Anropa hemsida
Re: Arduino - Anropa hemsida
Aha, det är klart det är så. I mitt huvud så tog den alla data och stoppade den i c = SLData. Sen började den söka. Men nej.
Borde man inte kunna "analysera" inkommande data direkt så den kollar efter "DisplayTime" och efter det kommit så sparar den ner följande 4-6 tecken i en sträng?
Borde man inte kunna "analysera" inkommande data direkt så den kollar efter "DisplayTime" och efter det kommit så sparar den ner följande 4-6 tecken i en sträng?
Re: Arduino - Anropa hemsida
Det kan definitivt gå! Det är ju bara att definiera en konstant sträng med det den ska hitta ("Display Time") och sedan ha en rutin som jämför med första bokstaven.
Är de lika stegar den ett steg i strängen och kollar att nästa tecken är lika med osv. När den når strängen är de nästa data som kommer dom du vill ha.
Om det finns fel tecken i den inkommande data är det ju bara att börja om på tecken 1.
Men det hade ju varit bättre och enklare med en µC med minne nog.
Är de lika stegar den ett steg i strängen och kollar att nästa tecken är lika med osv. När den når strängen är de nästa data som kommer dom du vill ha.
Om det finns fel tecken i den inkommande data är det ju bara att börja om på tecken 1.
Men det hade ju varit bättre och enklare med en µC med minne nog.
Senast redigerad av Icecap 5 april 2018, 21:48:24, redigerad totalt 1 gång.
Re: Arduino - Anropa hemsida
Awww.. Jag blir så trött...
Tänkte jag skulle försöka städa upp lite i alla data så det blir mindre för arduinon att ta hand om. Men då stöter jag så klart på nästa problem.
Söker efter DisplayTime och sparar allt efter den tills den kommer till Journey stoppar in det i $match.
Men eftersom DisplayTime och Journey finns med flera gånger i alla data så stannar den inte vid första träffen.
PHP kod
Detta är vad som kommer ut: Det som är i rött är inte med, det har jag bara lagt dit nu för att förtydliga
DisplayTime":"Next bus: 6 min","JourneyNumber":22056,"Deviations":null},{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Danderyds sjukhus","JourneyDirection":1,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50213,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-13T20:32:39","ExpectedDateTime":"2018-03-13T20:34:27","DisplayTime":"19 min","JourneyNumber":22079,"Deviations":null},{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Brommaplan","JourneyDirection":2,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50214,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-13T20:40:05","ExpectedDateTime":"2018-03-13T20:40:05","DisplayTime":"20:40","Journey
Tänkte jag skulle försöka städa upp lite i alla data så det blir mindre för arduinon att ta hand om. Men då stöter jag så klart på nästa problem.
Söker efter DisplayTime och sparar allt efter den tills den kommer till Journey stoppar in det i $match.
Men eftersom DisplayTime och Journey finns med flera gånger i alla data så stannar den inte vid första träffen.
PHP kod
Kod: Markera allt
<?php
$content = file_get_contents('http://geekjoan.com/sl_test.html');
preg_match('#DisplayTime(.*)Journey#', $content, $match);
$ONE = $match[1];
$ONE = substr($ONE, 3, -3); // Plockar bort tre tecken efter DisplayTime och tre tecken innan Journey
echo "Next bus: $ONE";
?>
DisplayTime":"Next bus: 6 min","JourneyNumber":22056,"Deviations":null},{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Danderyds sjukhus","JourneyDirection":1,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50213,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-13T20:32:39","ExpectedDateTime":"2018-03-13T20:34:27","DisplayTime":"19 min","JourneyNumber":22079,"Deviations":null},{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Brommaplan","JourneyDirection":2,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50214,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-13T20:40:05","ExpectedDateTime":"2018-03-13T20:40:05","DisplayTime":"20:40","Journey
Re: Arduino - Anropa hemsida
Kunde vara värt att utnyttja att det är json... Har obefintlig erfarenhet av php, men kanske dethär kan ge ideer:
https://stackoverflow.com/questions/293 ... n-with-php
https://stackoverflow.com/questions/293 ... n-with-php
- Mickecarlsson
- EF Sponsor
- Inlägg: 4289
- Blev medlem: 15 april 2017, 18:06:15
- Ort: Malmö
- Kontakt:
Re: Arduino - Anropa hemsida
Kan detta vara något att bygga på:
Kod: Markera allt
<?php
$json='{"StatusCode":0,"Message":null,"ExecutionTime":29,"ResponseData":{"LatestUpdate":"2018-03-13T20:14:21","DataAge":11,"Metros":[],"Buses":[{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Danderyds sjukhus","JourneyDirection":1,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50213,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-13T20:17:39","ExpectedDateTime":"2018-03-13T20:21:11","DisplayTime":"6 min","JourneyNumber":22056,"Deviations":null},{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Danderyds sjukhus","JourneyDirection":1,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50213,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-13T20:32:39","ExpectedDateTime":"2018-03-13T20:34:27","DisplayTime":"19 min","JourneyNumber":22079,"Deviations":null},{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Brommaplan","JourneyDirection":2,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50214,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-13T20:40:05","ExpectedDateTime":"2018-03-13T20:40:05","DisplayTime":"20:40","JourneyNumber":22119,"Deviations":null}],"Trains":[],"Trams":[],"Ships":[],"StopPointDeviations":[]}}';
$bussar = json_decode($json,true);
//echo $arr[1];
//var_dump($arr["ResponseData"]["Buses"]);
$antal_bussar = count($bussar["ResponseData"]["Buses"]);
for ($i =0; $i < $antal_bussar; $i++)
{
echo "Linje: " . $bussar["ResponseData"]["Buses"][$i]["LineNumber"] . " ";
echo "Destination: " . $bussar["ResponseData"]["Buses"][$i]["Destination"] . " ";
echo "Stannar: " . $bussar["ResponseData"]["Buses"][$i]["StopAreaName"] . " ";
echo "Ungefär: " . $bussar["ResponseData"]["Buses"][$i]["ExpectedDateTime"] . "\n";
}
?>
Re: Arduino - Anropa hemsida
Ska testa.
Utan att prova så borde $json.... funka att byta ut till: $json = file_get_contents('http://geekjoan.com/sl_test.html'); ?
Utan att prova så borde $json.... funka att byta ut till: $json = file_get_contents('http://geekjoan.com/sl_test.html'); ?
Re: Arduino - Anropa hemsida
Ändrade lite, But it's a live! http://geekjoan.com/multiscreen/sldata2.php
Tack så mycket Mickecarlsson!
Tack så mycket Mickecarlsson!
- Mickecarlsson
- EF Sponsor
- Inlägg: 4289
- Blev medlem: 15 april 2017, 18:06:15
- Ort: Malmö
- Kontakt:
Re: Arduino - Anropa hemsida
Lika bra jag passar på att fråga när jag har någon som kan.
Använder samma kod men för en annan hållplats där det är mycket mer trafik från olika bussar och tåg etc.
Om jag bara är intresserad av buss 509 hur lägger jag in:
["LineNumber"="509"]?
http://geekjoan.com/multiscreen/sldata_torg.php
Använder samma kod men för en annan hållplats där det är mycket mer trafik från olika bussar och tåg etc.
Om jag bara är intresserad av buss 509 hur lägger jag in:
["LineNumber"="509"]?
http://geekjoan.com/multiscreen/sldata_torg.php
- Mickecarlsson
- EF Sponsor
- Inlägg: 4289
- Blev medlem: 15 april 2017, 18:06:15
- Ort: Malmö
- Kontakt:
Re: Arduino - Anropa hemsida
Kod: Markera allt
$bussar = json_decode($json,true);
$antal_bussar = count($bussar["ResponseData"]["Buses"]);
for ($i =0; $i < $antal_bussar; $i++)
{
if($bussar["ResponseData"]["Buses"][$i]["LineNumber"] == "509")
{
echo "Linje: " . $bussar["ResponseData"]["Buses"][$i]["LineNumber"] . " ";
echo "Destination: " . $bussar["ResponseData"]["Buses"][$i]["Destination"] . " ";
echo "Stannar: " . $bussar["ResponseData"]["Buses"][$i]["StopAreaName"] . " ";
echo "Ungefär: " . $bussar["ResponseData"]["Buses"][$i]["ExpectedDateTime"] . "\n";
}
}
Re: Arduino - Anropa hemsida
Har stött på patrull igen.
Kollar "Deviations" i phpskriptet, och nu när det var något "fel" så blev det knas. Antar att det är dessa tecken som strular till det:
[{"Text":"Förs....
Så istället för att kolla "Deviations" kanske man ska kolla "Text". Men "Text" finns inte med alls om det inte är en försening eller liknande. Så då kommer jag säkert få fel på det.
Osäker på hur man skriver in den kollen?
{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Danderyds sjukhus","JourneyDirection":1,"StopAreaName":"Sundbybergs torg","StopAreaNumber":50242,"StopPointNumber":50242,"StopPointDesignation":"C","TimeTabledDateTime":"2018-04-05T13:36:09","ExpectedDateTime":"2018-04-05T13:36:09","DisplayTime":"8 min","JourneyNumber":21131,"Deviations":[{"Text":"Förseningar pga framkomlighetsproblem","Consequence":"INFORMATION","ImportanceLevel":7}]},
Kollar "Deviations" i phpskriptet, och nu när det var något "fel" så blev det knas. Antar att det är dessa tecken som strular till det:
[{"Text":"Förs....
Så istället för att kolla "Deviations" kanske man ska kolla "Text". Men "Text" finns inte med alls om det inte är en försening eller liknande. Så då kommer jag säkert få fel på det.
Osäker på hur man skriver in den kollen?
{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Danderyds sjukhus","JourneyDirection":1,"StopAreaName":"Sundbybergs torg","StopAreaNumber":50242,"StopPointNumber":50242,"StopPointDesignation":"C","TimeTabledDateTime":"2018-04-05T13:36:09","ExpectedDateTime":"2018-04-05T13:36:09","DisplayTime":"8 min","JourneyNumber":21131,"Deviations":[{"Text":"Förseningar pga framkomlighetsproblem","Consequence":"INFORMATION","ImportanceLevel":7}]},
- Mickecarlsson
- EF Sponsor
- Inlägg: 4289
- Blev medlem: 15 april 2017, 18:06:15
- Ort: Malmö
- Kontakt:
Re: Arduino - Anropa hemsida
Denna kod fungerar. OBS, koden kollar bara första nivån på Deviations
Kod: Markera allt
$bussar = json_decode($json,true);
// var_dump($bussar);
$antal_bussar = count($bussar["ResponseData"]["Buses"]);
for ($i =0; $i < $antal_bussar; $i++)
{
if($bussar["ResponseData"]["Buses"][$i]["LineNumber"] == "509")
{
echo "Linje: " . $bussar["ResponseData"]["Buses"][$i]["LineNumber"] . " ";
echo "Destination: " . $bussar["ResponseData"]["Buses"][$i]["Destination"] . " ";
echo "Stannar: " . $bussar["ResponseData"]["Buses"][$i]["StopAreaName"] . " ";
echo "Ungefär: " . $bussar["ResponseData"]["Buses"][$i]["ExpectedDateTime"] . "\n";
if($bussar["ResponseData"]["Buses"][$i]["Deviations"][0] != NULL) {
echo "Avvikelse: " . $bussar["ResponseData"]["Buses"][$i]["Deviations"][0]["Text"] . "\n";
echo "Orsak: " . $bussar["ResponseData"]["Buses"][$i]["Deviations"][0]["Consequence"] . "\n";
echo "Nivå: " . $bussar["ResponseData"]["Buses"][$i]["Deviations"][0]["ImportanceLevel"] . "\n";
}
}
}