-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
- <title>Petter Reinholdtsen: Litt informasjon om Bitfactors Bensinpris-API</title>
- <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/style.css" />
- <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/vim.css" />
- </head>
- <body>
- <div class="title">
- <h1>
- <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
-
- </h1>
-
-</div>
-
-
- <div class="entry">
- <div class="title">Litt informasjon om Bitfactors Bensinpris-API</div>
- <div class="date"> 9th December 2011</div>
- <div class="body"><p>For noen måneder siden lanserte Bitfactory en
-<a href="http://www.bitfactory.no/bensinpris.html">mobilapp for å få
-tilgang til bensinpriser</a> på landets bensinstasjoner.
-Informasjonen appens brukere har samlet inn har så langt kun vært
-tilgjengelig for brukerne av app-ene, og API for å hente ut
-informasjonen fra andre plattformer har ikke vært publisert. Da
-løsningen kom spurte jeg utviklerne om de kunne publisere
-API-dokumentasjon og de skulle se på saken, men det har ikke skjedd så
-langt.</p>
-
-<p>Utrolig nok er det i følge
-<ahref="http://www.dn.no/energi/article2194526.ece">Dagens
-Næringsliv</a> og
-<ahref="http://www.finnmarkdagblad.no/nyheter/article5323140.ece">Finnmark
-Dagbladet</a> bensinstasjoner som nekter å oppgi prisene sine på
-telefon, slik at det ikke finnes en fornuftig måte å få tak i prisene
-på uten å samle dem inn på stedet. Flere har dugnader på gang for å
-samle inn prisinformasjon om bensin, men så vidt jeg kan se er det kun
-<ahref="http://www.dinside.no/php/oko/bensin/vis_prisliste.php">dinside.no</a>
-og Bitfactorys App som får regelmessige oppdateringer. Dinsides
-oversikt er tilgjengelig på web for de som vil følge med, mens
-bitfactorys informasjon er ikke enkelt tilgjengelig.<p>
-
-<p>Jeg tok meg derfor litt tid for å revers-utvikle protokollen for
-Bitfactorys mobilapp for å gjøre den innsamlede informasjonen
-tilgjengelig for flere. Protokollen bruker HTTP og normal
-forms-notasjon for POST. Her er API-kallene jeg har identifisert så
-langt.</p>
-
-<b>stasjonsDatabaseUpdateStamp</b>
-
-<p><tt>GET http://www.bitfactory.no/Bensin/ver1.1.stasjonsDatabaseUpdateStamp</tt></p>
-
-<p>Vet ikke helt hva dette API-kallet gjør, men navnet gjør at jeg
-tror den rapporterer når listen over stasjoner sist ble endret.
-Returverdien er et tall som pr. nå er 1319145491. Mitt gjett er at
-dette er sekunder siden 1. januar 1970 som kan konverteres til en
-leselig dato med <tt>perl -e 'print scalar(localtime(1319145491)),
-"\n"'</tt>. Dagens verdi konverterer da til "Thu Oct 20 23:18:11
-2011".</p>
-
-<b>GetXMLDatabase</b>
-
-<p><tt>echo password=X43uP9KS_3ZqR | POST http://www.bitfactory.no/Bensin/GetXMLDatabase.php
-
-<p>Henter ned listen med stasjoner på XML-format. Argumentet er
-password som muligens følger med i programpakken og eventuelt
-genereres av app-en. Nedlasting med samme passord flere ganger ser
-ikke ut til å fungere. Selve listen ser slik ut (klippet):</p>
-
-<pre>
-<?xml version="1.0" encoding="UTF-8"?>
-<STASJONSDATABASE>
-<STASJON>
-<NAME></NAME>
-<ADDRESS></ADDRESS>
-<ID>0</ID>
-<LATITUDE>0.000000</LATITUDE>
-<LONGITUDE>0.000000</LONGITUDE>
-<COMPANY></COMPANY>
-</STASJON>
-<STASJON>
-<NAME>Statoil Best Eidsvoll Verk</NAME>
-<ADDRESS>Gamle Trondheimsvei 339 2074 Eidsvoll Verk</ADDRESS>
-<ID>1</ID>
-<LATITUDE>60.303902</LATITUDE>
-<LONGITUDE>11.168100</LONGITUDE>
-<COMPANY>Best</COMPANY>
-</STASJON>
-[...]
-<STASJON>
-<NAME>Esso Andenes</NAME>
-<ADDRESS>Falcksgate 9, 8480 Andenes</ADDRESS>
-<ID>1822</ID>
-<LATITUDE>69.320999</LATITUDE>
-<LONGITUDE>16.118700</LONGITUDE>
-<COMPANY>Esso</COMPANY>
-</STASJON>
-</STASJONSDATABASE>
-</pre>
-
-<b>GetBanStatus</b>
-
-<p><tt>echo UDID=Android-123456789012345 | POST http://www.bitfactory.no/Bensin/ver1.1.GetBanStatus.php</tt></p>
-
-<p>Vet heller ikke helt hva dette API-kallet gjør. Navnet gjør at jeg
-tror den rapporterer om telefonen med UDID oppgitt som argument er
-bannlyst fra tjenesten. Bannlysning gjør antagelig at telefonen ikke
-kan brukes til å registrere bensinpriser, men det er også mulig det
-blokkerer for å se på priser. Eneste POST-argument er UDID, som ser
-ut til å være den unike ID-en til en mobil-enhet. Returnverdi er 'NO'
-for alle UDID-verdier jeg har testet. Gjetter på at alternativ
-returverdi er 'YES', men har ikke sett en slik verdi så langt.</p>
-
-<b>PriserVedStasjoner</b>
-
-<p><tt>echo 'stasjoner=810,364&day=0' | POST http://www.bitfactory.no/Bensin/ver1.1.PriserVedStasjoner.php</tt></p>
-
-<p>Dette kallet henter ut priser registrert på en eller flere
-bensinstasjoner. Den tar to POST-argumenter, "stasjoner" som er
-kommaseparert liste over stasjons-IDer (numeriske), og "day" som bør
-settes til "0" for å få ut informasjon om priser. Usikker på hva
-tallet betyr, men mistenker det har med hvor langt tilbake i tid det
-skal hentes ut informasjon.</p>
-
-<p>Resultatet som kommer tilbake er en kommaseparert liste for hver
-enkelt stasjon, med <br> som skillemarkør mellom hver stasjon.
-Ikke helt sikker på hva alle feltene er. Her er mine gjett:</p>
-
-<table>
-<tr><ht>Felt</ht><ht>Beskrivelse</ht></tr>
-<tr><td>1</td><td>Bensinstasjons-ID</td></tr>
-<tr><td>2</td><td>Pris for blyfri 95 oktan, flyttall med punktum som desimalskille.</td></tr>
-<tr><td>3</td><td>Klokkeslett da prisen ble oppdatert, format HH:MM. </td></tr>
-<tr><td>4</td><td>Telefon-ID på formen Android-123456789012345 eller hex-kodet streng/MD5-sum</td></tr>
-<tr><td>5</td><td>tall, uviss betydning. muligens relatert til day-verdien.</td></tr>
-<tr><td>6</td><td>Pris for blyfri 98-oktan?</td></tr>
-<tr><td>7</td><td>samme som felt 3</td></tr>
-<tr><td>8</td><td>samme som felt 4</td></tr>
-<tr><td>9</td><td>samme som felt 5</td></tr>
-<tr><td>10</td><td>Pris for disel</td></tr>
-<tr><td>11</td><td>Samme som felt 3</td></tr>
-<tr><td>12</td><td>Samme som felt 4</td></tr>
-<tr><td>13</td><td>Samme som felt 5</td></tr>
-</table>
-
-<p>En stasjonsoppføring består dermed av av bensinstasjons-ID og
-deretter tre blokker for 95-oktan bensin, 98-oktan bensin og
-disel.</p>
-
-<b>PriserVedStasjon</b>
-
-<p><tt>echo 'id=736&day=0' | POST http://www.bitfactory.no/Bensin/ver1.1.PriserVedStasjon.php</tt></p>
-
-<p>Ser ut til å returnere informasjon for en enkelt bensinstasjon.
-Formatet er dato på formen "08_12_2011" for 2011-12-08, og noe som ser
-ut som samme format som fra PriserVedStasjoner. For stasjoner der
-intet er registrert returnerer den "NO RESULTS".</p>
-
-<b>AllePriser</b>
-
-<p><tt>echo day=0 | POST http://www.bitfactory.no/Bensin/ver1.1.AllePriser.php</tt></p>
-
-<p>Returnere liste med av alle stasjoner det er registrert oppdaterte
-priser på siste 24 timer. Returnerer "NO RESULTS" når listen er tom.
-Ellers returnerer den en dato på formen "Thursday_08_12_2011" skilt
-med <br> og deretter en liste med stasjoner på samme format som
-PriserVedStasjoner.</p>
-
-<!--
-
-Ide til SQL-skjema for å ta vare på informasjonen.
-CREATE TABLE station (
- integer id,
- text name,
- text group,
- text address,
- text homepageurl,
- gpscoord location,
-);
-
-CREATE TABLE types (
- INTEGER id,
- INTEGER name,
-);
-
-CREATE TABLE pris (
- INTEGER station_id REFERENCES station(id),
- INTEGER type,
- DATETIME when_collected,
- FLOAT price,
-)
-
-INSERT INTO types (id, name) VALUES (1, 'Blyfri95');
-INSERT INTO types (id, name) VALUES (2, 'Disel');
--->
-</div>
-
- <div class="tags">Tags: <a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>.</div>
-
-
- </div>
-
-
-
-
- <div id="sidebar">
-
-
-
-<h2>Archive</h2>
-<ul>
-
-<li>2011
-<ul>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
-
-</ul></li>
-
-<li>2010
-<ul>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
-
-</ul></li>
-
-<li>2009
-<ul>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
-
-</ul></li>
-
-<li>2008
-<ul>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
-
-<li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
-
-</ul></li>
-
-</ul>
-
-
-
-<h2>Tags</h2>
-<ul>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (2)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (12)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (54)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (63)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (7)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (98)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (13)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (12)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (10)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (15)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (8)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (4)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (14)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (141)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (119)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (24)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (46)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (2)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (4)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (23)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (3)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (24)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (2)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (9)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/valg">valg (6)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (22)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (1)</a></li>
-
- <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (17)</a></li>
-
-</ul>
-
-
- </div>
- <p style="text-align: right">
- Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.4</a>
-</p>
-
- </body>
-</html>