Re: Arduino - Anropa hemsida
Postat: 9 april 2018, 20:31:34
Detta är nog vad du vill ha. Modifiera efter behov.
Jag har blandat php och html, inte snyggt, men otroligt funktionellt
Jag har blandat php och html, inte snyggt, men otroligt funktionellt

Kod: Markera allt
<!--
/*
* Exempelkod skriven av Mikael Carlsson för att parsa JSON från API levererad av Sveriges Radio
* Jag skrev denna kod till geekjoan på Elektronikforumet och insåg att den fungerar så bra att
* jag kommer att använda den i min egen miljö här hemma för att se trafiken innan jag kör till jobb
* Licens: public domain
* Version 0.1 - första release
* Version 0.2 - gjorde om till html
* version 0.3 - fler orter
* Version 0.4 - hack med html :-)
*/
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Din titel här</title>
<style>
td{font-family: verdana; font-size: 12px; color: #FFFFFF}
</style>
</head>
<body bcolor="#FFFFFF" leftmargin="1" topmargin="1">
<table border="0" cellspacing="1" cellpadding="1">
<?php
// Orter som ska kollas
$orter = array("uppland", "stockholm");
// Kategorierna och prioriteterna kommer från SR's hemsida:
// http://sverigesradio.se/api/documentation/v2/metoder/trafik.html
$kategorier = array("Vägtrafik", "Kollektivtrafik", "Planerad störning", "Övrigt");
$prioritet = array("Mycket allvarlig händelse", "Stor händelse", "Störning", "Information", "Mindre störning");
// Hämta trafikinformation från Sveriges Radio API-sida
$antal_orter = count($orter);
for ($o = 0; $o < $antal_orter; $o++)
{
$json = file_get_contents('http://api.sr.se/api/v2/traffic/messages?format=json&trafficareaname=' . $orter[$o]);
// Dekoda det som en array
$trafik = json_decode($json,true);
// Ta bort denna remark för att dumpa ut det i råformat, hjälper vid debug
//var_dump($trafik);
// Antal meddelanden
$antal_meddelanden = count($trafik["messages"]);
// Rubrikerna i tabellen
echo '<tr bgcolor="#444444">';
echo '<td>' . $antal_meddelanden . " " . $orter[$o] . '</td>';
echo '<td>Titel</td>';
echo '<td>Beskrivning</td>';
echo '<td>Sub</td>';
echo '<td>Kategori</td>';
echo '<td>Prioritet</td>';
echo '</tr>';
// Loopa igenom alla meddelanden
for ($i =0; $i < $antal_meddelanden; $i++)
{
echo '<tr bgcolor="#222222">';
// Bearbeta datumsträngen för att rätta till formatet, därav preg_match
preg_match( "#/Date\((\d{10})\d{3}(.*?)\)/#", $trafik["messages"][$i]["createddate"], $tiden );
// Skriv ut datum och tid i RFC 2822 format, ändra enligt php date() för att få annat format
echo '<td style="width: 90px" valign="top">' . date( "d M H:i", $tiden[1] ) . '</td>';
// Skriv ut titeln
echo '<td style="width: 300px" valign="top">' . $trafik["messages"][$i]["title"] . '</td>';
// Skriv ut trafikstörningen
echo '<td style="width: 700px" valign="top">' . $trafik["messages"][$i]["description"] . '</td>';
// Här kommer vad som orsakar störningen
echo '<td style="width: 90px" valign="top">' . $trafik["messages"][$i]["subcategory"] . '</td>';
// Skriv ut vilken kategori det är (i klartext)
echo '<td style="width: 90px" valign="top">' . $kategorier[$trafik["messages"][$i]["category"]] . '</td>';
// Prioritet
echo '<td style="width: 90px" valign="top">' . $kategorier[$trafik["messages"][$i]["ptiority"]] . '</td>';
echo '</tr>';
} // for $antal_meddelanden
} // for antal_orter
echo '</html>';
?>