Hallo Leute,
ich habe gestern einmal mit einen Kollegen ein bisschen mit der Api von Oilfox gespielt.
... und zwar haben wir uns das Github Projekt von Codeking zum Beispiel genommen, der ein Modul für Symcon gebaut hat.
Ich habe dann einige Aufrufe von der Konsole gemacht. Was das war, zeige ich weiter unten.
Momentan läuft es bei mit jetzt mit dem parser.io vom iobroker, der lokal einfach eine txt-Datei ausliest. Diese befülle ich einfach mit dem curl Aufruf. Dieser Aufruf wird alle 24h mit dem cron aufgerufen und das Ergebnis in meine Textdatei geschrieben.
Ist zwar mit der Brust ins Auge, aber ich habe meine Ergebnisse schon einmal im System.
Jetzt wäre es natürlich toll, wenn einer von Euch, der programmieren kann, einfach diese Informationen nehmen könnte und für den ioBroker ein schönes Modul backen könnte.
Hier meine Textergebnisse, die ich über meinen Kollegen bekommen habe:
Benötigt wird der Account mit Name und Passwort, um sich beim Oilfox konto zu legitimieren.
token=`curl -d '{"email":"<USER>","password":"<PASSWD>"}' -H "Content-Type: application/json -H "Connection: Keep-Alive" -H "User-Agent: okhttp/3.2.0" -X POST https://api.oilfox.io/v2/backoffice/session | tail -2 | head -1 | cut -d '"' -f4`;curl -H "X-Auth-Token: $token" -H "Connection: Keep-Alive" -H "User-Agent: okhttp/3.2.0" -H "Content-Type: application/json" https://api.oilfox.io/v2/user/summary
Diese Ausgabe liefert alle Daten eines Users (Ich habe die Daten etwas in der Ausgabe gekürzt.). Aber das Muster der Datenbank ist klar zu erkennen. Er liefert alle Ölstände und Ölpreise der letzten Monate, inklusive eines Forecasts, wie lange unter dem aktuellen Verbrauch der Tankinhalt noch ausreicht.
{
"id": „<ID>",
"firstName": „<VORNAME> ",
"lastName": „<NAME>",
"email": „<USER>",
"country": "DE",
"zipCode": „<PLZ>",
"devices": [
{
"id": „<ID>„,
"hwid": „<OILFOXHWID>„,
"name": "Mein Tank",
"tankShape": "SQUARED",
"tankHeight": 155,
"tankVolume": 7500,
"tankOffset": 0,
"tankIsUsableVolume": true,
"tankUsableVolume": 7500,
"productId": "ce49beb2-3b00-8fdf-b817-6f468e7f9036",
"notificationInfoEnabled": false,
"notificationInfoPercentage": 13,
"notificationAlertEnabled": true,
"notificationAlertPercentage": 5,
"address": {
"id": „<KundenID>",
"country": "DE",
"zipCode": „<PLZ>„
},
"partner": {
"id": "ac669376-3709-11e7-a919-92ebcb67fe33",
"name": "Neukunden",
"termsOfInstallation": "Datenschutzerklärung für die mobene OilFox-App\nBei der Nutzung der mobene OilFox-App („App") werden personenbezogene Daten erhoben, gespeichert und verarbeitet. Hier informieren wir Sie zum Datenschutz und unserem Umgang mit Ihren
….
und die wir Ihnen in Zukunft mitteilen werden. Wenn Sie weitere Informationen wünschen, wenden Sie sich bitte an die Ihnen bekannten Ansprechpartner, an unsere Zentrale oder an unseren Datenschutzbeauftragten. Diese helfen Ihnen gerne weiter.\n",
"legalLink": "https://www.mobene.de/oilfox/rechtliches",
"backgroundColor": "#4a84b5",
"logoUrl": "https://s3.eu-central-1.amazonaws.com/oilfox-files/mobene_logo.png",
"minimumLiters": 500,
"isOrderingEnabled": true,
"htmlTermsOrder": "Ich habe die [Widerrufsbelehrung](https://www.mobene.de/agb/widerrufsrecht.html) zum Heizölverkauf im Fernabsatz zur Kenntnis genommen und akzeptiere die [allgemeinen Verkaufs- und Lieferbedingungen](https://www.mobene.de/agb.html)",
"country": "DE",
"phone": "0800/1861861",
"fontPrimaryColor": "#ffffff",
"fontSecondaryColor": "#2c4f6c",
"priceHistoryFontColor": "#000000",
"iconHighlightColor": "#92b5d2",
"primaryProducts": [
{
"id": "ce49beb2-3b00-8fdf-b817-6f468e7f9036",
"name": "Heizöl Mobene Group",
"measurementInterval": 1440
}
]
},
"measurementIntervalInSeconds": 86400,
"metering": {
"value": 143,
"fillingPercentage": 4,
"liters": 300,
"currentOilHeight": 12,
"serverDate": 1534454691900,
"battery": 100
},
"chartData": {
"consumptionData": [
{
"year": 2017,
"month": 9,
"fillingPercentage": 0,
"liters": 0
},
...
{
"year": 2018,
"month": 8,
"fillingPercentage": 4,
"liters": 300
}
],
"priceData": [
{
"price": 57.72601,
"year": 2017,
"month": 9
},
...
{
"price": 69.5006,
"year": 2018,
"month": 7
},
{
"price": 70.81,
"year": 2018,
"month": 8
}
],
"forecastData": [
{
"year": 2018,
"month": 9,
"fillingPercentage": 1,
"liters": 148
}
],
"emptyAt": 1538265600000
}
}
]
Alles anzeigen
Das bedeutet, man kann sogar, wie in der App den aktuellen Ölpreis in der Tabelle mit anzeigen.
Mein Vorgehen ist im Moment wie oben beschrieben.
1. Der cron ruft einmal am Tag meine Datei oilfox auf mit folgendem Befehl
token=`curl -d '{"email":"<USER>","password":"<PASSWD>"}' -H "Content-Type: application/json -H "Connection: Keep-Alive" -H "User-Agent: okhttp/3.2.0" -X POST https://api.oilfox.io/v2/backoffice/session | tail -2 | head -1 | cut -d '"' -f4`;curl -H "X-Auth-Token: $token" -H "Connection: Keep-Alive" -H "User-Agent: okhttp/3.2.0" -H "Content-Type: application/json" https://api.oilfox.io/v2/user/summary | grep liters | tail -2 | head -1 | cut -d ":" -f2 | sed -e "s/ //g" > /<PATH>/oilliter.txt
damit steht die aktuelle Literzahl meines Tanke in der Datei oilliter.
2. Diese Datei parse ich über das parser.io Modul vom iobroker und habe dann den Wert entsprechend in meinem System.
Mein Dank geht an meinen Arbeitskollegen, der mir diesen einfach Weg aufgezeigt und erstellt hat. Vielen Dank nochmal ...
Man kann das zwar so jetzt in dieser Form weiterführen und alle Werte entsprechend aufbereiten, aber es ist ein wenig umständlich.
Ich denke mit diesen Informationen sollte in diesem Forum doch einer zu finden sein, der das in ein ordentliches iobroker Modul umbauen kann.
Für eine Erwähnung wäre ich natürlich dankbar und würde auch gerne meine Ideen mit einbringen