[Modul] OilFox Füllstandsmesser

Hallo zusammen,

hier ein Modul, welches die (inoffizielle) API von Oilfox.io anspricht um die Werte des Füllstandmessers (i.d.R. vom Heizöltank) auszulesen. Das Modul hatte ich bereits für die Smarthome Zentrale Homey geschrieben, ein IP-Symcon Nutzer hatte mich darum gebeten ob ich das nicht auch hier bereitstellen bzw. umschreiben kann (von Node zu PHP).

Gesagt, getan und nun bin ich selber am überlegen ob ich nicht auch umsteige :slight_smile:

Modul:
https://github.com/CodeKing/de.codeking.symcon.oilfox

Funktionen

  • auslesen aller OilFox Geräte
  • Variablen für Tankvolumen, aktueller Füllstand, geschätzter Füllstand nächsten Monat, Battriestatus, aktueller Heizölpreis des Vertragspartners, etc

Viele Grüße,

Frank

Hallo Frank,

ich habe mir den Oilfox zugelegt und Dein Modul installiert. Beim Abrufen der Daten werden die Variablen auch aktualisiert aber es erscheint die Meldung:

Habe ich da beim Installieren etwas übersehen.
Mir ist auch noch aufgefallen, dass die Variablenänderungen nicht aufgezeichnet werden obwohl ich das aktiviert habe.

Sonst finde ich die Lösung genial.

LG
Georg

Hier der Screenshot zur oben genannten Meldung:

LG
Georg

ScreenShot006.jpg

Hey Georg,

zieh bitte nochmal ein Update des Moduls, dann sollte es funktionieren. Am besten die Instanz nochmal neu anlegen.
Hatte da einen kleinen Denkfehler beim auslesen der ArchiveControl InstanzID.

Aber eigentlich müsste beim manuellem aktivieren der Logfunktion die Werte auch aufgezeichnet werden. Die Daten werden allerdings nur alle 6 Std. abgerufen, da sich der Füllstand so schnell ja eigentlich nicht ändert. Kann da aber auch noch einen einstellbaren Intervall hinzufügen.

Viele Grüße,

Frank

Hallo Frank,

ich bin jetzt erst dazu gekommen die neue Version zu installieren. Die Fehlermeldung ist weg. Daten werden zuverlässig abgerufen. Vielen Dank für die schnelle Hilfe.

LG
Georg

Durch das heutige Android Update der OilFox App konnte ich mir die Version 2 der API ansehen, die folgende Vorteile bietet:

[ul]
[li]Alle Daten können nur noch über eine Abfrage ausgelesen werden (bisher waren 4 nötig)
[/li][li]Übermittlung des aktuellen Tankinhalts in 10 Liter Schritten (bisher 100 Liter Schritte)
[/li][li]Genauerer aktueller Heizölpreis des Vertragspartners
[/li][/ul]
Das OilFox Modul habe ich auf die neue API umgestellt und kann von euch ebenfalls aktualisiert werden.
Zusätzlich kann man nun auch den Abfrageintervall einstellen (bisher alle 6 Stunden), da das durch die 10-Liter Schritte sicher interessanter wird diesen je nach Verbrauch individuell einzustellen. Default ist hier nun jede Stunde.

Viele Grüße,

Frank

Hallo Frank,

es freut mich, dass Dir unsere neue API gefällt und dass Du sie „entschlüsseln“ konntest.

Wir schicken den Füllstand mittlerweile auf 1 Liter genau.
Das Zeitintervall ist momentan nicht durch den User steuerbar, da die Batterielebensdauer direkt davon abhängt.

In unserem JSON ist zusätzlich ist noch der aktuelle Abstand den der OilFox misst mit „value“ mitgeliefert sowie die aktuelle Ölhöhe mit „currentOilHeight“. Das fragen Kunden bei mir immer wieder nach, vielleicht für Dich auch interessant.

Beste Grüße und viel Spass mit den Daten
Michael vom OilFox Team

Hallo Michael,

vielen lieben Dank für dein Feedback.
Ich habe das Modul eben aktualisiert. Die Tankhöhe, aktuelle Ölhöhe und der aktuelle Abstand werden jetzt mit abgefragt.

Viele Grüße,

Frank

Hallo zusammen,

ich wollte den Code für eine andere Haussteuerungssoftware adaptieren. Leider scheitere ich schon beim Login mit einem errorcode 410. Ist die aktuelle Version noch funktionsfähig, oder hat sich irgendwas verändert.
Über einen Hinweis würde ich mich sehr freuen.
Ich habe seit gestern einen Oilfox von der BayWa, ich denke aber es spielt keine Rolle wer das Gerät vertreibt, oder?

Gruß
Winni

Hast Du es denn mit IP-Symcon ausprobiert? Wenn Du das extern nutzten willst kannst Du Daten auch einfach mit JSONRPC mit anderen Visualisierungen oder Lösungen austauschen.

Nein, ich habe den php-Code für EDOMI verwendet, will aber nicht klappen. Deshalb ja die Frage, ob jemand von den Usern hier die Daten noch einwandfrei abrufen kann, oder ob sich evtl. die API bzw. die URLs geändert haben. Additiv Symcon installieren wollte ich eigentlich nicht.

Gruß
Winni

Must Du ja auch nicht unbedingt dauerhaft, das macht ja nur Sinn wenn Dir das einen zusätzlichen Nutzen bringt. Das selber auszuprobieren ob das Modul funktioniert kannst Du dennoch, dazu must Du einfach die Demo von IP-Symcon und das PHP-Modul installieren und dann mit Deinem Setup testen. Die Frage ob das mit Deinem Gerät funktioniert kannst Du dann eigenständig beantworten. Den Code im Zweifelsfall dann für andere Systeme anzupassen must Du dann aber selber gehen, man weis ja nicht was andere Systeme für Besonderheiten haben.

Hallo und erst mal vielen Dank für das Modul.

Ich bekomme nach beim Einrichten immer die Meldung das die E-Mail und/oder Passwort nicht korrekt seien. Hab alles mehrfach überprüft.

Jemand einen Tipp was ich falsch mache?

Viele Grüße
Stephan

Hi Stephan,

ich habe mal eben nachgesehen und die ersten Erkenntnisse deuten darauf hin, das das Anmeldeverfahren von OilFox verändert wurde. Wenn ich das Modul neu installiere kann ich mich ebenfalls nicht mehr anmelden und bekomme nur den Fehlercode 410 zurück.

Wenn man bereits einmal angemeldet war kommt es zu keinem Fehler. In meinem Produktivsystem werden die Daten jedenfalls weiterhin abgeholt, da hier nur noch über Tokens kommuniziert wird.

Leider habe ich jetzt auf die Schnelle nicht herausfinden können was da genau geändert wurde, da sich die Android App mittlerweile nicht mehr so leicht reverse engineeren und damit die genauen Requests auslesen lassen. Ich schaue mir das aber in den nächsten Tagen nochmal genauer an, ob ich eine Lösung dazu finde.

Viele Grüße,

Frank

Hallo Frank,

über Oilfox
kann man an den token herankommen, mir gelingt es aber leider nicht den curl-request entsprechend aufzubereiten um ein Programm daraus zu machen. Evtl. hilft es dir aber weiter.

Gruß
Winni

Moin Winni,

super, vielen lieben Dank für den Hinweis, die Seite war mir noch nicht bekannt.
Darüber war es dann ein leichtes das Modul anzupassen.

Die Änderungen habe ich gerade in einem Update bereit gestellt, die Anmeldung und das auslesen der Daten funktioniert nun wieder einwandfrei.

Viele Grüße,

Frank

Hallo Frank,

ist es wirklich so einfach nur die URL zu ersetzen? Bei mir geht es nämlich leider noch immer nicht (ich habe kein Symcon).
Könntest du evtl. mal einen kurzen Blick auf die php-Routine werfen:

// login url
$url = ‚https://api.oilfox.io/v2/backoffice/session‘;
// curl options
$curlOptions = array(
CURLOPT_TIMEOUT => 10,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode(array(
‚email‘ => $email,
‚password‘ => $password
)),
CURLOPT_HTTPHEADER => array(
‚Content-Type: application/json‘,
‚Connection: Keep-Alive‘,
‚Accept-Encoding: gzip‘,
‚User-Agent: okhttp/3.2.0‘
)
);

// login
$ch = curl_init($url);
curl_setopt_array($ch, $curlOptions);
$result = curl_exec($ch);
//curl_close($ch);
// extract token
$json = json_decode($result, true);
writeToCustomLog(‚LBS19001420_Oilfox_‘.$id,1,'Ergebnis: '.$result);

Ergebnis ist leider 404 :frowning:

Hallo Winni,

der Fehler 404 kommt nur dann zurück, wenn die Zugangsdaten nicht stimmen.
Habs eben selber nochmal getestet.

Hast du vlt. Sonderzeichen / Umlaute in deinem Passwort? Vlt. müsste man diese vor dem POST maskieren.

Viele Grüße,

Frank

Magst du noch meine PM lesen und mal mit meinem Account testen?

Habe bisher noch keine PM erhalten (ich finde zumindest keine).
Kann es dann aber gerne nochmal mit deinen Zugangsdaten testen.