Giter VIP home page Giter VIP logo

rundesballi / tankersparnis Goto Github PK

View Code? Open in Web Editor NEW
10.0 2.0 1.0 1.81 MB

:de::fuelpump: Tankersparnis Portal zur einfachen Berechnung des gesparten Geldes beim Tanken von Gas gegenüber herkömmlichen Kraftstoffen.

Home Page: https://tankersparnis.net

PHP 97.11% CSS 2.31% Smarty 0.34% JavaScript 0.23%
tanken benzin gasoline gas sparen geld euro tankersparnis tankerkoenig tankerkoenig-api

tankersparnis's Introduction

Tankersparnis.net ist ein Portal zur einfachen Berechnung des gesparten Geldes beim Tanken von Gas gegenüber herkömmlichen Kraftstoffen.
💡 Empfohlen vom YouTuber Sascha Fahrnünftig auf dem "Eure Videos Fahrnünftig"-YouTube-Kanal in den Folgen 185 und 222.

Berechnung

Der Heizwert des getankten Gases wird auf den Heizwert von Benzin oder Diesel umgerechnet. Die Menge an fossilem Kraftstoff, wird dann mit aktuellen Spritpreisen (wahlweise standortabhängig oder deutschlandweit) gegengerechnet. Die aktuellen Spritpreise bekommen wir von der Tankerkönig-API. Daraus ergibt sich dann die Ersparnis. Durch diese Berechnung werden Mehrverbräuche (z.B. durch Autobahnfahrten) berücksichtigt. Interessierte und Programmierer können sich die genaue Berechnung hier ansehen.

Simpel, übersichtlich

Formular zum Hinzufügen eines Eintrages:

Eintragen

Statistiken

Beispielwerte!
Monatswerte
Gesamtwerte

Danke

Danke an meinen Freund NullDev für die GeoLocation Funktion, danke an meinen Freund Soldiermelly für das Logo und die Banner und danke an Tankerkönig für die Spritpreis-API.

tankersparnis's People

Contributors

rundesballi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

grapefruit89

tankersparnis's Issues

Reichweite

Hallo, bin auch hier durch Saschas neueste Erwähnung in Folge 255 bei min 9:08.

Finde die Seite sehr schön, habe nur ein "Problem" mit dem Eintrag Reichweite, bzw. vielleicht auch nur ein Verständnisproblem.
Wenn ich tanke, dann kenne ich meine Reichweite doch noch gar nicht? Ich kann die Reichweite doch immer nur von der letzten Tankung ablesen?
Ich persönlich würde es sogar bevorzugen den Gesamt-km-Stand eintragen zu können, denn ab und zu vergesse ich oder meine Frau es auch mal den Trip-km-Zähler zu nullen. Daher schreibe ich mir immer den aktuellen km-Stand (den man nicht nullen kann) auf und errechne dann anhand der km-Differenz zum letzten Tanken die Reichweite der letzten Tankung.

Vergleichskraftstoff mit 0€

Wenn die nächstgelegene Tankstelle den Vergleichskraftstoff nicht führt, dann rechnet das Portal mit einem Vergleichswert von 0,00.

Es wird eine Prüfung durchgeführt:

  • ob die nächstgelegene Tankstelle diesen Krafststoff anbietet
  • ob die Tankstelle geöffnet ist
  • wenn bei der gesamten Liste der Tankstellen keine Tankstelle geöffnet hat oder den Kraftstoff führt, wird der bundesweite Median genommen.

Vergleichspreis selbst eintragen und Radius selbst wählen

if(!empty($_POST['geo']) AND preg_match('/^(-?\d{1,3}\.\d+);(-?\d{1,3}\.\d+)$/', defuse($_POST['geo']), $matches) === 1) {
/**
* Wenn ein Geo Punkt übergeben wurde, wird dieser an die API übergeben und die Tankstellen im Umkreis werden abgerufen.
*/
$response = apiCall(
"https://creativecommons.tankerkoenig.de/json/list.php",
array(
'lat' => floatval($matches[1]),
'lng' => floatval($matches[2]),
'rad' => 10,
'type' => $row['symbol'],
'sort' => 'price'
)
);
/**
* Preisfindung anhand der nächstgelegenen Tankstelle. Sofern keine Tankstelle geöffnet hat oder keine Tankstelle in der Umgebung
* den Vergleichskraftstoff führt, wird kein Vergleichspreis gespeichert und der bundesweite Median wird genommen.
*/
if(!empty($response) AND is_array($response['stations']) AND $response['ok'] === TRUE) {
foreach($response['stations'] AS $key => $val) {
$content.= "<div class='row'>".
"<div class='col-s-0 col-l-0'>".var_export($val, TRUE)."</div>".
"</div>";
if($val['isOpen'] === TRUE AND $val['price'] !== NULL) {
$priceCompare = $val['price'];
$pricing = $val;
break;
}
}
}
}
if(empty($priceCompare)) {
/**
* Geo Auswertung wurde nicht übergeben oder konnte nicht erfolgen. Nehme bundesweiten Durchschnittspreis.
*/
$response = apiCall(
"https://creativecommons.tankerkoenig.de/api/v4/stats",
NULL
);
if($response !== FALSE) {
$response = array_change_key_case($response, CASE_LOWER);
$priceCompare = $response[$row['symbol']]['median'];
$pricing = $response[$row['symbol']];
} else {
$ok = 0;
}
}

$content.= "<form action='/addEntry' method='post' autocomplete='off'>";
$content.= "<input type='hidden' name='token' value='".$sessionhash."'>";
if(mysqli_num_rows($result) == 1) {
$row = mysqli_fetch_assoc($result);
$content.= "<input type='hidden' name='car' value='".output($row['id'])."'>";
$cars = output($row['name'])." - ".output($row['fuel']);
} else {
$cars = "<select name='car' id='car' tabindex='".$tabindex++."' required><option value='' selected disabled hidden>-- Bitte auswählen --</option>";
while($row = mysqli_fetch_assoc($result)) {
$cars.= "<option value='".output($row['id'])."'>".output($row['name'])." - ".output($row['fuel'])."</option>";
}
$cars.= "</select>";
}
$content.= "<section>";
$content.= "<div class='row'>".
"<div class='col-s-12 col-l-3'><label for='car'>Fahrzeug</label></div>".
"<div class='col-s-12 col-l-9'>".$cars."</div>".
"</div>";
$content.= "<div class='row'>".
"<div class='col-s-12 col-l-3'><label for='fuel'>Gas Liter/kg</label></div>".
"<div class='col-s-12 col-l-9'><input type='number' name='fuel' id='fuel' step='0.01' min='0.01' tabindex='".$tabindex++."' required placeholder='Getankte Menge Gas'></div>".
"</div>";
$content.= "<div class='row'>".
"<div class='col-s-12 col-l-3'><label for='range'>Reichweite</label></div>".
"<div class='col-s-12 col-l-9'><input type='number' name='range' id='range' step='0.1' min='0.1' tabindex='".$tabindex++."' required placeholder='Gefahrene Kilometer'></div>".
"</div>";
$content.= "<div class='row'>".
"<div class='col-s-12 col-l-3'><label for='cost'>Kosten in €</label></div>".
"<div class='col-s-12 col-l-9'><input type='number' name='cost' id='cost' step='0.01' min='0.01' tabindex='".$tabindex++."' required placeholder='Für diesen Tankvorgang bezahlt'></div>".
"</div>";
$content.= "<div class='row'>".
"<div class='col-s-12 col-l-3'><label for='geoButton'>Standort<br><span class='small'>Optional</span></label></div>".
"<div class='col-s-12 col-l-9'><input type='button' id='geoButton' value='Standort ermitteln' tabindex='".$tabindex++."'><br><span class='small'>Dein genauer Standort wird nicht gespeichert, sondern nur die Tankstelle im Umkreis von 15km, die am günstigsten ist.<br>Dein Standort wird ohne Zuweisung zu deiner Person an unseren Kraftstoffpreis Dienstleister <a href='https://creativecommons.tankerkoenig.de/' target='_blank' rel='noopener'>Tankerkönig</a> gesendet.</span></div>".
"</div>";
$content.= "<script type='text/javascript' src='/src/geolocation.js'></script>";
$content.= "<input type='hidden' name='geo' id='geo' value=''>";
$content.= "<div class='row'>".
"<div class='col-s-12 col-l-3'><label for='submit'>Hinzufügen</label></div>".
"<div class='col-s-12 col-l-9'><input type='submit' id='submit' name='submit' value='Hinzufügen' tabindex='".$tabindex++."'></div>".
"</div>";
$content.= "</section>";
$content.= "</form>";

Per Mail kam der Vorschlag, dass es gut wäre, wenn man einen Vergleichspreis selbst eintragen und/oder den Radius der Vergleichstankstellen im Umkreis selbst wählen könnte.

Ich mache mir darüber mal Gedanken, wie man das im Frontend schön umsetzen kann, damit es möglichst wenig für Verwirrung sorgt.

E10 als Vergleichskraftstoff hinzufügen

Moin!
Wäre es vielleicht möglich, die Ersparnisse zwischen E10 und E5 mit ein zu pflegen?
Mich würde Interessieren, ob man mit E10 Geld sparen kann.

Danke im Vorraum.

p.s. Habe dich bei Sascha entdeckt.

LPG + Benzin tanken

Wäre es möglich die Menge an getanktem Benzin ebefalls zu erfassen?

Mein Auto hat eine Direkteinspritzung und meine Prins LPG Anlage/Steuergerät macht eine automatische Beimischung von 3% Benzin zum LPG.
Dazu kommt auch, dass das Prins Steuergerät erst ab einer Verdampfertemperatur von 35°C auf Gasbetrieb umschaltet. Bei den Temperaturen jetzt im Sommer ist das nicht einmal ein Kilometer, im Winter kann das aber schon ein wenig dauern, bis der Verdampfer durch den inneren Kühlkreislauf soweit erwärmt wurde, dass auf Gasbetrieb umgeschaltet wird.
Ich muss also immer auch etwas Benzin tanken und würde mich freuen, wenn ich auch die getanke Benzinmenge erfassen könnte.
Wenn das auch noch in die Ersparnisberechnung mit einfließen könnte, wäre es natürlich klasse.

Elektrooooo

Geiles Projekt! Überlege dir evtl. auch Strom für die ganzen E-Autos hinzuzufügen. Strompreis von öffentlichen Ladern sowie auch Eingenproduktion (PV/BHKW etc.)
P.S.: Deine 'Werbung' beim Sascha-Abspann entdeckt.

Import aus "mehr-tanken"-App

Der Export aus der Mehr-Tanken-App ist in einem unbekannten Format kodiert. Eine Testdatei kann ich leider nicht bereitstellen, da der einzige User, der einen solchen Import haben wollte, mir natürlich seine Daten geschickt hat und ich die nicht preisgeben kann/will.

Wer also einen Export der App hat und weiß wie man die Daten extrahiert, darf sich gerne melden, dann baue ich einen Import.

Danke!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.