Hallo,
Modul für den OilFox, Füllstandsmessung für Öltanks und Zisternen.
Über Anregungen und Verbesserungen würde ich mich freuen.
Name des Moduls im SVN: 12_OilFox.pm
Grüße
Stephan
Hallo Stephan,
Könnte ich Dich dazu überreden Dein Modul auf packages um zu stellen?
Es ist ja relativ klein, da sollte es schnell und übersichtlich möglich sein.
packages FHEM::OilFox
Grüße
Marko
Kann man den auch kaufen, ohne sich an einen Anbieter zu binden? Hab jetzt auf die schnelle nichts gefunden.
Hallo Marco,
Modul auf package FHEM::OilFox umgestellt.
Grüße
Stephan
Hallo Darkmann,
kaufen kann man den OilFox z.B. bei:
https://www.suedwestenergie.de/heizoelsorten/oilfox/
Macht aber Sinn den OilFox bei deinem lokalen Anbieter zu kaufen der dich auch mit Heizöl beliefert.
Grüße
Stephan
Hi
Schaut sehr interessant aus der Oilfox. Kannte ich bisher nicht.
Mein Heizöllieferant bietet den jedenfalls nicht an. Die Preise beim Kauf liegen zwischen 89,- € bei Mobene.de und 249,-€ bei Südwestenergie (jeweils Oilfox2)
Wie greift das Modul auf die Daten zu? Über eine Cloud? Bei wem ist die Cloud?
Danke und Gruß Michael
Hallo Michael,
Ja nur Cloud. Die Cloud ist beim Hersteller des OilFox das ist die LIV-T GmbH in München.
Grüße
Stephan
Hallo Stephan,
vielen Dank für die Entwicklung des OilFox Moduls. Ich habe das gleich eingerichtet und es hat super funktioniert.
Allerdings habe ich seit die fhem zugreift keine Aktualisierung der Daten mehr bekommen.
Wenn ich den OilFox über die App neu einrichten will bekomme ich einen WLAN-Fehler. Das WLAN hat aber schon mehrere Monate treu und ohne Ausfall funktioniert.
Kann es sein, dass der fhem Zugriff die Synchronisierung sperrt?
Gruß Harald
Hallo Harald,
das konnte ich so bei mir nicht feststellen. Synchronisierung funktioniert in meiner App noch.
Die WLAN-Fehler haben eigentlich ja auch nichts mit dem OilFox FHEM Modul zu tun.
Falls du auch im FHEM Log Fehler des Modules erhalten solltest würde mich das interessieren.
Grüße
Stephan
Hallo zusammen
im Raum Paderborn/Höxter etc ist hier auch ein Anbieter
zur zeit mit Sonderpreis
https://www.keck-energie.de/oilfox.html (https://www.keck-energie.de/oilfox.html)
Gruss Tagedieb
Hallo Stephan,
ich hab den OilFox wieder online und er funktioniert mit deinem Modul wieder perfekt. Das Problem lag im OilFox und an dem User davor.
Danke dir.
Gruß Harald
auch ich habe dasselbe Problem wie Harald, dass keine neuen Daten mehr kommen.
Was war die genaue Lösung ?
Beste Grüße
Thomas
Hallo Thomas,
Ich habe den Oilfox zurückgesetzt und neu verbunden. Dann hat es wieder funktioniert.
Reset: sehr lange den Taster drücken.
Inzwischen funktioniert es perfekt.
Gruß Harald
danke, hat auch bei mir geholfen ..
die GPlot-Darstellung läuft damit auch.
Gibt es eigenlich auch ne Möglichkeit, die in der Db-abgelegten Ereeignis als Tabelle darzustennen? z.B. so
Datum /Urzeit Füllstand im mm Füllstand in ltr
....
.....
Erstmal Danke für Dein Modul.
Wäre es möglich, das das Login Passwort nicht im Klartext angezeigt wird?
Gruß
kann ich gerne beim nächsten Release berücksichtigen.
Grüße
Stephan
Moin,
habe auch ein OilFox daliegen.
Gibts inzwischen eine Möglichkeit ohne die Cloud? Es ist ja ein ESPRESSIF ESP-WROOM-32D verbaut.
Ich habe eine Stelle, da gibts zwar LAN aber kein Internet.... Und die Cloud ist nur für 3 Jahre bezahlt.
Grüße
eine alternative firmware ohne cloud ist mir nicht bekannt.
Grüße
Stephan
Hallo,
ja, schade.
Falls sich hier jemand daran versuchen möchte, ich spendiere meins zu "Forschungszwecken". Ich finde, die Bauform inkl. Batteriestromversorgung sind super gelöst. Das Ganze dann eventuell mir MQTT und es ist für den Preis eine tolle Sache.
Liebe Grüße
Hallo eisler,
ich habe heute den OilFox2 installiert und das Modul in FHEM eingerichtet.
Es hat anfangs ein wenig gedauert aber nun sind die Daten angekommen.
Vielen Dank für das tolle Modul!
Gruß
Daniel
ich habe den Oilfox ebenfalls erhalten. Auf dem Lieferschein steht Oilfox Wifi-Connect, auf dem Gerät selber aber NB_ioT. Haben die mir den falschen eingepackt oder kann der beides ? WLAN und NB-ioT ?
OilFox 2.0 gibts mit WLAN, Sigfox, LoRa und NB-IoT. Könnte funktionieren aber am besten beim Händler nachfragen oder direkt bei LIV-T.
Grüße
Stephan
vielleicht kann ja ein WLAN-Oilfox-Besitzer mal auf sein Gerät hinten schauen.
Es muss halt nur mit FHEM funktionieren. Dies kann ich mir aber mit einem NB-IoT nicht vorstellen.
Schön wäre es, wenn das Gerät nur im WLAN läuft und per FW-Regel vom Internet getrennt werden kann. Für Updates o.ä. könnte man die Regel kurzfristig aufheben.
Der Oilfox braucht schon eine Verbindung in´s Internet. Das Modul holt dann die Daten aus der "Oilfox-Datenbank".
Eine direkte Auswertung der Daten des Oilfox Senders mit FHEM ist meines Wissens nach nicht möglich.
Gruß
Danny
man kann ihn nicht über das lokale Netzwerk abrufen ? Wie kommuniziert der Oilfox übers WLAN durch das Netzwerk ?
Zitat von: Butzel am 26 Juli 2020, 20:25:27
man kann ihn nicht über das lokale Netzwerk abrufen ? Wie kommuniziert der Oilfox übers WLAN durch das Netzwerk ?
Also das klingt jetzt wahrscheinlich komisch, aber so wie jedes andere Gerät, das über WLAN in´s Internet kommuniziert.
Ich fürchte du musst deine Frage etwas präzisieren. :-[
Gruß
Danny
Zitatman kann ihn nicht über das lokale Netzwerk abrufen ? Wie kommuniziert der Oilfox übers WLAN durch das Netzwerk ?
Wenn das Angebot von FHEM-User22 noch steht, könnt ich mich mal versuchen dem Oilfox die Cloud abzugewöhnen. 8) ;)
(das Abgewöhnen ist einfach z.B. per pi-hole. Die Daten lokal abgreifen erfordern einen "nachgebauten" Server)
Grüße Markus
Hallo Markus,
klar, das Angebot steht. Gib mir Deine Adresse und ich schick ihn Dir.
Lg aus Grimma
Hallo Stephan,
Gibt es mit dem Modul momentan Probleme?
Seit ein paar Tagen wird nichts mehr aktualisiert...
Bis dahin lief das Modul super! Klasse Arbeit!
Gruß
Daniel
Zitat von: DoubleD am 30 August 2020, 20:37:06
Hallo Markus,
Gibt es mit dem Modul momentan Probleme?
Seit ein paar Tagen wird nichts mehr aktualisiert...
Bis dahin lief das Modul super! Klasse Arbeit!
Gruß
Daniel
stimmt .. habe das Problem auch - In der App/Cloud sind die Daten korrekt vorhanden
Da ich zur zeit leider keinen zugriff auf einen OilFox wäre ein Auszug aus dem logfile hilfreich.
Grüße
Stephan
Zitat von: eisler am 01 September 2020, 20:16:38
Da ich zur zeit leider keinen zugriff auf einen OilFox wäre ein Auszug aus dem logfile hilfreich.
Grüße
Stephan
Hallo Stephan
2020.09.02 05:58:25 5: OilFox (HeizoelBruck) - Notify: $VAR1 = [
'ATTR HeizoelBruck verbose 5'
];
2020.09.02 05:58:33 3: HeizoelBruck: set called with update
2020.09.02 05:58:33 3: HeizoelBruck: set update
2020.09.02 05:58:33 5: doUpdate() called.
2020.09.02 05:58:33 2: LOGIN TOKEN MISSING OR EXPIRED
2020.09.02 05:58:33 5: OilFox (HeizoelBruck) - Notify: $VAR1 = [
'state: disconnected'
];
2020.09.02 05:58:33 3: Reconnecting...
2020.09.02 05:58:34 2: {"token_type":"Bearer",....DIyIn0.7nqjlnjfwYmqfvVOs...."}
2020.09.02 05:58:34 5: OilFox (HeizoelBruck) - Notify: $VAR1 = [
'token: ....NZeTspjVssNgvTZVIXC_1JPGOzyCMai9wOlywf1_kKaHUNIGnkA....',
'expires: 2020-09-02 06:03:34'
];
2020.09.02 05:58:34 5: OilFox (HeizoelBruck) - Notify: $VAR1 = [
'state: authenticated'
];
2020.09.02 05:58:34 5: OilFox(s) found
2020.09.02 05:58:34 5: <!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1></body></html>
2020.09.02 05:58:34 2: - JSON error while request: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<!doctype html><html...") at ./FHEM/12_OilFox.pm line 435.
Ich habe teile vom token gelöscht. Sollte der wichtig sein sag bitte bescheid dann bekommst ihn per PN.
Danke fürs anschauen!
Gruß
Daniel
Hallo Stephan,
ich hab mal etwas weiter getestet, es scheint so als sei die API-Url nicht mehr gültig/erreichbar.
Echtl hat der Hersteller diese geändert.
Wie könnte man die neue URL herausfinden. In der Android-App muss die ja drin stecken weil diese funktioniert...
Gruß
Daniel
Hallo Daniel,
"HTTP Status 404 – Not Found" sieht genau danach aus.
Wenn du die URL herausfinden kannst kann man das einfach testen.
Grüße
Stephan
Zitat von: eisler am 02 September 2020, 22:29:45
Hallo Daniel,
"HTTP Status 404 – Not Found" sieht genau danach aus.
Wenn du die URL herausfinden kannst kann man das einfach testen.
Grüße
Stephan
Wie bekommt man die URL raus? Woher hattest du sie bei der Erstellung des Modules?
https://api.oilfox.io/v4/summary ? Wäre zu testen.
danke amenomade das sieht gut aus.
Ich schaue mal ob ich diese Woche noch zeit finde das Modul anzupassen.
Grüße
Stephan
Hallo
mit diesem diff funktioniert das Modul wieder
*** 12_OilFox_DD.pm 2020-09-07 19:39:44.219672100 +0200
--- 12_OilFox.pm 2020-09-07 19:41:10.554729200 +0200
***************
*** 34,42 ****
use Data::Dumper;
use GPUtils qw(GP_Import);
! use constant API => "https://api.oilfox.io/";
! #use constant API => "https://api.oilfox.io/v3/";
! #use constant API => "https://api.oilfox.io/v4/";
BEGIN {
GP_Import(
--- 34,40 ----
use Data::Dumper;
use GPUtils qw(GP_Import);
! use constant API => "https://api.oilfox.io/v3/";
BEGIN {
GP_Import(
***************
*** 296,302 ****
}';
HttpUtils_NonblockingGet({
! url => API . "v3/login",
timeout => 5,
hash => $hash,
method => "POST",
--- 294,300 ----
}';
HttpUtils_NonblockingGet({
! url => API . "login",
timeout => 5,
hash => $hash,
method => "POST",
***************
*** 401,407 ****
my $header = "Content-Type: application/json\r\nAccept: application/json\r\nAuthorization: Bearer " . $token;
HttpUtils_NonblockingGet({
! url => API . "v4/summary",
timeout => 5,
hash => $hash,
method => "GET",
--- 399,405 ----
my $header = "Content-Type: application/json\r\nAccept: application/json\r\nAuthorization: Bearer " . $token;
HttpUtils_NonblockingGet({
! url => API . "user/summary",
timeout => 5,
hash => $hash,
method => "GET",
***************
*** 417,423 ****
my ($param, $err, $data) = @_;
my $hash = $param->{hash};
my $name = $hash->{NAME};
!
if($err ne "") {
Log3 $name, 2, "error while requesting ".$param->{url}." - $err";
--- 415,421 ----
my ($param, $err, $data) = @_;
my $hash = $param->{hash};
my $name = $hash->{NAME};
!
if($err ne "") {
Log3 $name, 2, "error while requesting ".$param->{url}." - $err";
***************
*** 435,441 ****
Log3 $name, 5, $data;
my $result = eval { decode_json($data) };
-
if ($@) {
Log3( $name, 2, " - JSON error while request: $@");
return;
--- 433,438 ----
***************
*** 448,458 ****
$hash->{OilFox}->{oilfox_name} = $myoilfox->{'name'};
$hash->{OilFox}->{oilfox_hwid} = $myoilfox->{'hwid'};
$hash->{OilFox}->{oilfox_tankVolume} = $myoilfox->{'tankVolume'};
! $hash->{OilFox}->{oilfox_metering_value} = $myoilfox->{'lastMetering'}->{'value'};
! $hash->{OilFox}->{oilfox_metering_fillingPercentage} = $myoilfox->{'lastMetering'}->{'fillingPercentage'};
! $hash->{OilFox}->{oilfox_metering_liters} = $myoilfox->{'lastMetering'}->{'liters'};
! $hash->{OilFox}->{oilfox_metering_currentOilHeight} = $myoilfox->{'lastMetering'}->{'currentOilHeight'};
! $hash->{OilFox}->{oilfox_metering_battery} = $myoilfox->{'lastMetering'}->{'battery'};
CONNECTED($hash,'connected');
--- 445,455 ----
$hash->{OilFox}->{oilfox_name} = $myoilfox->{'name'};
$hash->{OilFox}->{oilfox_hwid} = $myoilfox->{'hwid'};
$hash->{OilFox}->{oilfox_tankVolume} = $myoilfox->{'tankVolume'};
! $hash->{OilFox}->{oilfox_metering_value} = $myoilfox->{'metering'}->{'value'};
! $hash->{OilFox}->{oilfox_metering_fillingPercentage} = $myoilfox->{'metering'}->{'fillingPercentage'};
! $hash->{OilFox}->{oilfox_metering_liters} = $myoilfox->{'metering'}->{'liters'};
! $hash->{OilFox}->{oilfox_metering_currentOilHeight} = $myoilfox->{'metering'}->{'currentOilHeight'};
! $hash->{OilFox}->{oilfox_metering_battery} = $myoilfox->{'metering'}->{'battery'};
CONNECTED($hash,'connected');
Dateien 12_OilFox_DD.pm und 12_OilFox.pm sind verschieden.
37,39c37
< use constant API => "https://api.oilfox.io/";
< #use constant API => "https://api.oilfox.io/v3/";
< #use constant API => "https://api.oilfox.io/v4/";
---
> use constant API => "https://api.oilfox.io/v3/";
299c297
< url => API . "v3/login",
---
> url => API . "login",
404c402
< url => API . "v4/summary",
---
> url => API . "user/summary",
420c418
<
---
>
438d435
<
451,455c448,452
< $hash->{OilFox}->{oilfox_metering_value} = $myoilfox->{'lastMetering'}->{'value'};
< $hash->{OilFox}->{oilfox_metering_fillingPercentage} = $myoilfox->{'lastMetering'}->{'fillingPercentage'};
< $hash->{OilFox}->{oilfox_metering_liters} = $myoilfox->{'lastMetering'}->{'liters'};
< $hash->{OilFox}->{oilfox_metering_currentOilHeight} = $myoilfox->{'lastMetering'}->{'currentOilHeight'};
< $hash->{OilFox}->{oilfox_metering_battery} = $myoilfox->{'lastMetering'}->{'battery'};
---
> $hash->{OilFox}->{oilfox_metering_value} = $myoilfox->{'metering'}->{'value'};
> $hash->{OilFox}->{oilfox_metering_fillingPercentage} = $myoilfox->{'metering'}->{'fillingPercentage'};
> $hash->{OilFox}->{oilfox_metering_liters} = $myoilfox->{'metering'}->{'liters'};
> $hash->{OilFox}->{oilfox_metering_currentOilHeight} = $myoilfox->{'metering'}->{'currentOilHeight'};
> $hash->{OilFox}->{oilfox_metering_battery} = $myoilfox->{'metering'}->{'battery'};
Login läuft noch über v3 aber das summary über v4.
JSON aus metering wurde lastMetering
Gruß
DD
habe ich so übernommen.
https://svn.fhem.de/trac/changeset/22745/trunk/fhem
Danke und Grüße
Stephan
Wird hier noch weiter entwickelt? Weil momentan scheint es nicht mehr zu gehen.
Gruß
bei mir läuft es noch. Gerade heute geprüft.
Hi,
ich hatte es erst alexa-fhem in verdacht, aber Oilfox spammt das Logfile voll.
2021.01.18 19:08:15 2: LOGIN TOKEN MISSING OR EXPIRED
2021.01.18 19:08:15 3: Reconnecting...
2021.01.18 19:08:15 2: {"token_type":"Bearer","access_token":"iJKV1..........gekürzt...............JuNF_d6CNbMzeQ","refresh_token":"iJKV1............gekürzt..................RFd4gg"}
Kommt alle 5 Minuten wenn er einen refresh macht
Gruß
ich lasse einen Eintrag nur bei Änderung zu. Minimiert das Logfile ungemein....
ich schaue mal was ich machen kann.
Grüße
Stephan
Hallo zusammen,
kann es sein, dass eine wesentliche Änderung durchgeführt wurde ? Mein Oilfox ist seit 2 Tagen disconnected und lässt sich nicht mehr zur Zusammenarbeit bewegen. Die App zeigt zwar noch an, aber die api scheint nicht mehr zu reagieren. Ich bin ratlos. Hat jemand nähere Infos ?
Selbiges bei mir.
Das Log gibt nur ein
2022.03.27 19:52:31 2: LOGIN TOKEN MISSING OR EXPIRED
her.
Gruß
Danny
Da hat sich scheinbar die Oilfox API geändert. Leider komme ich nicht dazu das anzupassen.
Wenn das jemand übernehmen möchte kann ich gerne unterstützen.
Grüße
Stephan
Da scheint tatsächlich wieder an der API rumgedreht worden zu sein.
Ich habe das hier gefunden:
https://github.com/foxinsights/customer-api/tree/main/docs/v1 (https://github.com/foxinsights/customer-api/tree/main/docs/v1)
Mit dem anpassen der URL Pfade bekomme ich nach einem FHEM Neustart auch wieder den Status "connected", aber die Readings werden noch nicht passend befüllt.
Ist für mich halt "try and errror" vorgehen. :)
Evtl. findet sich doch jemand mit passenden Kenntnissen. 8)
Gruß
Danny
die api ist schon öfters verändert worden. Zuletzt war es meines Wissens nach https://api.oilfox.io/v3/login
aktuell:
/customer-api/v1/login
Daten via:
/customer-api/v1/device
in der Struktur der Daten hat sich noch was geändert.
Wie gesagt wenn das jemand übernehmen möchte kann ich gerne unterstützen.
ich würde Dich unterstützen, wenn und soweit ich wüsste wie. Meine Kenntnisse in diesem Bereich sind leider nicht ausreichend. Ich finde nicht mal die URL in meinem Modul ::)
Ich hab mal was zusammengefrickelt, dass zumindest bei mir funktioniert und wieder Werte abholt.
Wer möchte kann´s benutzen - auf eigene Gefahr - bis evtl. was offizielles erscheint.
Nicht vergessen dann im global-Device "12_OilFox.pm" im "exclude_from_update" Attribut einzutragen, sonst ist das ganze nicht von Dauer.
In der Device-Hilfe sind die neuen Readings erklärt. Werden alte Readings nicht mehr aktualisiert, werden sie durch die neue API nicht mehr unterstützt.
Gruß
Danny
Edit 19.04.2022: Typo für global Device gefixt
pm getauscht, Ausnahme eingetragen, neu gestartet. Bleibt leider disconnected.
Habe ich was vergessen ? Die alte pm habe ich vorerst in pm.OLD umbenannt.
Hallo Danny,
bei mir hat es einwandfrei funktioniert..
Danke dir für deine schnelle Hilfe.
Gruß Harald
Harald, kannst Du erläutern, was Du genau gemacht hast ?
Zitat von: Butzel am 04 April 2022, 07:49:42
Harald, kannst Du erläutern, was Du genau gemacht hast ?
Ich habe die alte Datei umbenannt, die neue reinkopiert.
Danach aktualisiert und es hat funktioniert.
genau das habe ich auch gemacht. Bekomme aber keinen Connect mehr hin seit dem 23.03.2022.
Was könnte ich noch prüfen oder konfigurieren ?
Setze doch mal verbose 5 im Device und poste mal das Log bei einem Updateversuch.
Bei mir hat es nur in folgender Reihenfolge funktioniert:
- 12_Oilfox.pm austauschen
- fhem neustart, dann kam erst der connected Status -> reload 12_Oilfox.pm und ein set <device> update haben nicht funktioniert
- set <device> update
Gruß
Danny
genau so habe ich es gemacht. Nur ein Reading ist neu, das "state disconnected".
Sonst macht er keine Anstalten. Im Eventmonitor sehe ich auch nur das set <device> Update
ZitatSetze doch mal verbose 5 im Device und poste mal das Log bei einem Updateversuch.
Eventmonitor ist nicht gleich Logfile!
Gruß
Danny
mittlerweile wurde das Log erneuert und dank Danny bin ich etwas weiter.
Ein Connect kommt trotzdem nicht zustande.
Log wirft nun
"2022.04.07 19:55:59 3: myOilFox: set called with update
2022.04.07 19:55:59 3: myOilFox: set update
2022.04.07 19:55:59 5: doUpdate() called.
2022.04.07 19:55:59 2: LOGIN TOKEN MISSING OR EXPIRED
2022.04.07 19:55:59 5: OilFox (myOilFox) - Notify:"
aus.
Irgendwo habe ich mal ein Thema zum Erneuern des Token gesehen aber nicht mehr gefunden. Hat das noch jemand parat ?
folgendes habe ich noch gefunden. Vielleicht kann damit jemand etwas anfangen.
ZitatWir haben ein neues Login-Verfahren eingeführt, das auf Basis der OpenID Connect-Spezifikation und JWT funktioniert (mehr Infos dazu hier: https://auth0.com/docs/jwt). Wir hoffen mit diesem Verfahren die Sicherheit des Systems (und damit der Daten unserer Nutzer) verbessern zu können. Deshalb müssen Sie für den Login jetzt einen neuen Endpunkt benutzen:
POST https://api.oilfox.io/v3/login
Content-Type: application/json
{"email":"email@host", "password":"********"}
In der Antwort darauf erhalten Sie Ihren "access_token", der 15 Minuten lang gültig ist und mit dem alle bisherigen Anfragen getätigt werden können. Die Gültigkeitsdauer wird u.A. auch im Token gespeichert (zum decodieren siehe https://jwt.io/).
Verwendet wird er in jeder weiteren Anfrage (z.B. beim GET https://api.oilfox.io/v3/user/summary) im Authorization-Header:
Authorization: Bearer eyJ0eXAiO...
Außerdem erhalten Sie beim Login einen "refresh_token", mit dem Sie einen neuen access_token abrufen können, ohne dass Sie das Passwort des Nutzers im Klartext speichern und verwenden müssen. Der refresh_token ist 30 Tage lang gültig, bis er einmal benutzt wird. Damit erhalten Sie ein neues token-Paar:
POST https://api.oilfox.io/v3/token
Content-Type: application/x-www-form-urlencoded
refresh_token=eyJ0eXAiO...
Noch eine Bitte: Wenn Sie als User-Agent den Namen Ihres Plugins setzen (z.B. ioBroker.oilfox), fällt es uns leichter die Anfragen von anderen Clients zu unterscheiden und Probleme leichter zu erkennen.
neues Login-Verfahren
Wir haben ein neues Login-Verfahren eingeführt, das auf Basis der OpenID Connect-Spezifikation und JWT funktioniert (mehr Infos dazu hier: https://auth0.com/docs/jwt). Wir hoffen mit diesem Verfahren die Sicherheit des Systems (und damit der Daten unserer Nutzer) verbessern zu können. Deshalb müssen Sie für den Login jetzt einen neuen Endpunkt benutzen:
POST https://api.oilfox.io/v3/login
Content-Type: application/json
das scheint der Knackpunkt zu sein, dass das FHEM-Modul keinen Connect mehr herstellen kann.
@Modulersteller
Muss das im Modul geändert werden?
Herzliche Grüße
Thomas
Ich denke mal das sind alte Angaben zum Login.
Zur Zeit werden die Angaben vom Customer API- Version 1 - 2021-11-08 genommen und die funktionieren bei mir.
https://github.com/foxinsights/customer-api/tree/main/docs/v1 (https://github.com/foxinsights/customer-api/tree/main/docs/v1)
Falls jemand aus diesem Post https://forum.fhem.de/index.php/topic,109102.msg1215721.html#msg1215721 (https://forum.fhem.de/index.php/topic,109102.msg1215721.html#msg1215721) einfach etwas rauskopiert hat, dann bitte noch mal das "exclude-from-update" Attribut überprüfen!
Gruß
Danny
Hallo,
bei mir tut das Oilfox auch nichts mehr, egal was ich ausprobiere.
Unter Windows mit:
curl -X POST https://api.oilfox.io/customer-api/v1/login -H "Content-Type: application/json" -d "{\"password\":\"XXXXXXXXXXXXX\",\"email\":\"xxxxxx@xxxxxxx.xx\"}"
bekomme ich die richtige Antwort mit den Token.
Im FHEM mit dem originalen und auch mit dem im Post geänderten 12_OilFox.pm (17.39 kB - runtergeladen 12 Mal.)
kommt im LogFile bei Level 5 die folgenden Einträge und es bleibt auf disconnect:
2022.04.30 10:09:24 3: OelDev: set called with update
2022.04.30 10:09:24 3: OelDev: set update
2022.04.30 10:09:24 5: doUpdate() called.
2022.04.30 10:09:24 2: LOGIN TOKEN MISSING OR EXPIRED
Schade, ich werfe es nun raus und hoffe irgendwann wird sich ein netter Mensch finden und das Modul wieder zum laufen bekommen.
Grüße
Jörg
Kaum habe ich es verzweifelt hier reingeschrieben, funktioniert es nun nach dem Xten reboot und reinkopieren, neuanlegen etc....
Danke
Änderungen von Danny mit aufgenommen:
https://svn.fhem.de/trac/changeset/26015/trunk/fhem
Damit sollte es wieder funktionieren.
Grüße
Stephan
hallo,
gibt es eine Anleitung, wie man das Modul von Grund auf neu einrichtet.
Vielen Dank
Thomas
Hab das mal schnell aus der Modulhilfe rauskopiert:
ZitatDefine
define <name> OilFox
Example:
define myOilFox OilFox
attr myOilFox email YOUR_EMAIL
attr myOilFox password YOUR_PASSWORD
You must set both attributes email and password. These are the same that you use to login via the OilFox App.
Attributes
username - Email that is used in OilFox App
password - Password that is used in OilFox App
Optional attributes
oilfox - ID of OilFox, if more that one is registered. Default: 0
interval - Time in seconds that is used to get new data from OilFox Cloud. Default: 300
Gruß
Danny
perfekt :-)
danke sehr!!
Hi,
ich setzt gerade alle neu auf. Gibt es beim OilFox irgendwelche Probleme oder hab ich noch was anderes übersehen?
2022.12.22 13:13:31 2: {"statusCode":404,"errorCode":"GENERIC__NOT_FOUND"}
2022.12.22 13:13:31 1: PERL WARNING: Use of uninitialized value $token in concatenation (.) or string at ./FHEM/12_OilFox.pm line 405.
2022.12.22 13:13:32 2: - JSON error while request: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<!doctype html><html...") at ./FHEM/12_OilFox.pm line 441.
Zitat von: Darkmann am 22 Dezember 2022, 13:16:53
Hi,
ich setzt gerade alle neu auf. Gibt es beim OilFox irgendwelche Probleme oder hab ich noch was anderes übersehen?
2022.12.22 13:13:31 2: {"statusCode":404,"errorCode":"GENERIC__NOT_FOUND"}
2022.12.22 13:13:31 1: PERL WARNING: Use of uninitialized value $token in concatenation (.) or string at ./FHEM/12_OilFox.pm line 405.
2022.12.22 13:13:32 2: - JSON error while request: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<!doctype html><html...") at ./FHEM/12_OilFox.pm line 441.
habe die Fehlermeldungen auch; solange alles gelesen wird für mich ok
Das Problem bei mir ist leider das nichts gelesen wird.
Zitat von: Darkmann am 22 Dezember 2022, 20:32:36
Das Problem bei mir ist leider das nichts gelesen wird.
da vermisse das "token", das wurde meines Wissens neu eingeführt und kommt aus der App
Zitat von: thburkhart am 23 Dezember 2022, 11:04:36
da vermisse das "token", das wurde meines Wissens neu eingeführt und kommt aus der App
Das heisst?
Kann bzw muss ich das irgendwo eintragen?
Gruß
Hallo
Bei mir läuft nach über einem Jahr das Modul plötzlich nicht mehr.
Im Log kann ich aber nichts relevantes finde, auch bei verbose 5.
Der validationError dürfte irrelevant sein, der ist von 2023.
Der Token wurde nach einem Neustart des FHEM erneuert, aber es läuft trotzdem nicht.
Mein Modul sieht so aus:
Internals:
FUUID 639486d7-f33f-5588-62aa-b2e74a5c2888e913
NAME OilFox
NOTIFYDEV global,OilFox
NR 412
NTFY_ORDER 50-OilFox
STATE 2084 L 73%
TYPE OilFox
eventCount 72
OilFox:
CONNECTED disconnected
access_token_expires 1707769608
email xxxxxxxxx@t-online.de
expires 1707769912
interval 600
oilfox 0
oilfox_currentMeteringAt
oilfox_daysReach 0
oilfox_hwid
oilfox_id
oilfox_metering_battery 0
oilfox_metering_currentOilHeight 0
oilfox_metering_fillingPercentage 0
oilfox_metering_liters 0
oilfox_metering_value 0
oilfox_name
oilfox_nextMeteringAt
oilfox_quantityUnit
oilfox_tankVolume 0
password xxxxxxxxxxxx
token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJkYTYyZWMwNi1lNjkyLTRlMDktODU3NC0wN2ZjZWFlYmY3YjIiLCJwZXJtaXNzaW9ucyI6Int9Iiwic2NvcGUiOiJDVVNUT01FUl9BUEkiLCJpc3MiOiJvaWxmb3guaW8iLCJleHAiOjE3MDc3NzA1MTIsImp0aSI6Ijc2MzZhMGRkLWYxNmYtNGM2Zi04OWUzLWNjYTFkM2JlODdlNSIsImVtYWlsIjoibm9fd2VyYnVuZ0B0LW9ubGluZS5kZSJ9.SyflstaCRbVHW2PRRczpWV0TC4SL4d_Yzr_HRB4LTVdfmld0QJFXJIq0Nu3OUVXC25jf_tOrA7viE3bJxya-cQ
updateStartTime 1708021608
validationError
READINGS:
2024-02-12 21:26:52 access_token_expires 2024-02-12 21:31:52
2024-02-09 11:03:26 oilfox_currentMeteringAt 2024-02-09T08:00:54.768Z
2024-02-09 11:03:26 oilfox_daysReach 617
2024-02-09 11:03:26 oilfox_hwid ON0422154509
2024-02-09 11:03:26 oilfox_metering_battery FULL
2024-02-09 11:03:26 oilfox_metering_fillingPercentage 73
2024-02-09 11:03:26 oilfox_metering_liters 2084
2024-02-09 11:03:26 oilfox_nextMeteringAt 2024-02-10T08:00:54.768Z
2024-02-09 11:03:26 oilfox_quantityUnit L
2024-02-12 21:36:48 state disconnected
2024-02-12 21:26:52 token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJkYTYyZWMwNi1lNjkyLTRlMDktODU3NC0wN2ZjZWFlYmY3YjIiLCJwZXJtaXNzaW9ucyI6Int9Iiwic2NvcGUiOiJDVVNUT01FUl9BUEkiLCJpc3MiOiJvaWxmb3guaW8iLCJleHAiOjE3MDc3NzA1MTIsImp0aSI6Ijc2MzZhMGRkLWYxNmYtNGM2Zi04OWUzLWNjYTFkM2JlODdlNSIsImVtYWlsIjoibm9fd2VyYnVuZ0B0LW9ubGluZS5kZSJ9.SyflstaCRbVHW2PRRczpWV0TC4SL4d_Yzr_HRB4LTVdfmld0QJFXJIq0Nu3OUVXC25jf_tOrA7viE3bJxya-cQ
2023-10-31 09:24:25 validationError ABOVE_STORAGE_MAX
updateDispatch:
Attributes:
DbLogExclude .*
email xxxxxxxxxxx@t-online.de
event-min-interval oilfox_metering_liters:1800
event-on-change-reading oilfox_metering_liters
interval 600
password xxxxxxxxxxxxx
room Heizung
stateFormat oilfox_metering_liters L oilfox_metering_fillingPercentage%
verb
Hi,
habe ebenfalls Probleme und mal in anderen Automationsforen geschaut.
Könnte sein, dass es lediglich ein Timeout Problem bei der Abfrage der Daten ist.
Ich habe mal in Zeile 303 und 409 den timeout Wert auf 45 hoch gesetzt und bin am testen ob das wirkt.
Falls du das ebenfalls probieren willst, dann nach den Änderungen das System mal neu durchstarten und im global Device das Attribut "exclude-from-update" mit "12_OilFox.pm" setzen, bis es etwas offizielles gibt.
Gruß
Danny
Dank für die Antwort
Ich habe die Timeouts mal geändert.
Allerding ohne wirklichen Erfolgt.
READINGS:
2024-02-16 13:30:48 access_token_expires 2024-02-16 13:35:48
2024-02-09 11:03:26 oilfox_currentMeteringAt 2024-02-09T08:00:54.768Z
2024-02-09 11:03:26 oilfox_daysReach 617
2024-02-09 11:03:26 oilfox_hwid ON0422154509
2024-02-09 11:03:26 oilfox_metering_battery FULL
2024-02-09 11:03:26 oilfox_metering_fillingPercentage 73
2024-02-09 11:03:26 oilfox_metering_liters 2084
2024-02-09 11:03:26 oilfox_nextMeteringAt 2024-02-10T08:00:54.768Z
2024-02-09 11:03:26 oilfox_quantityUnit L
2024-02-16 13:30:48 state authenticated
2024-02-16 13:30:48 token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJkYTYyZWMwNi1lNjkyLTRlMDktODU3NC0wN2ZjZWFlYmY3YjIiLCJwZXJtaXNzaW9ucyI6Int9Iiwic2NvcGUiOiJDVVNUT01FUl9BUEkiLCJpc3MiOiJvaWxmb3guaW8iLCJleHAiOjE3MDgwODc1NDcsImp0aSI6ImQ4MzViYmFmLTU5YjMtNDdjMC04MDlmLWM2ODExZTg0MDY5ZSIsImVtYWlsIjoibm9fd2VyYnVuZ0B0LW9ubGluZS5kZSJ9._0hY1gCDJ7SLTVLMn5SvHceGqAzN6q3CbkOxyxlEpyi0WYRtA9RXYCDPP192quD5MLqvIhWX2zx0Oq_b5ijaYg
2023-10-31 09:24:25 validationError ABOVE_STORAGE_MAX
Der wesentliche Unterschied ist der state "authenticated" statt "disconnected", aber die "oilfox_*"-Readings werden nicht aktualisiert.
Gruß Ron
ZitatDer wesentliche Unterschied ist der state "authenticated" statt "disconnected", aber die "oilfox_*"-Readings werden nicht aktualisiert.
Ne, leider doch nicht. Inzwischen ist der state wieder aus "disconnected" gegangen :(
ich reihe mich mal da mit ein...bei mir tuts auch schon einige Zeit nicht mehr....
ganz selten schaffe ich es mal durch wiederholtes manuelles Update einen Wert zu bekommen, aber meistens klappts nicht und automatisch gar nicht mehr.
Ich habe mal versucht nachzuvollziehen was das Modul tut.
Nach einem Neustart oder defmod wird eine Verbindung zu https://api.oilfox.io aufgebaut.
Das klappt offenbar auch und der state wechselt auf "authenticatet". Der token wird offenbar erneuert.
Allerdings wenn man auf "set ... update" klickt passiert garnix ???
Wenn ich den Quellcode richtig interpretiere muss der status dazu auf "connected" stehen.
Wann das passiert bzw. das nicht der Fall ist habe ich nicht raus bekommen.
Gruß Ron
Hab´s jetzt mal eine Zeit lang mit den erhöhten timeouts am laufen gehabt und es funktionierte.
@sky64: Ich glaube (bin halt auch kein Programmierer) wichtig ist nichts anderes auszulösen, wenn sich das Modul gerade im Updatevorgang befindet. Und da können 45 Sekunden schon lang sein. Bei mir läuft es grundsätzlich mit einem Aktualisierungintervall von 14400 Sekunden und um halb sieben abends gibt es ein "set oilfox update" wenn die tägliche Messung vom Oilfox übertragen wurde und ausgewertet wird. Die Aktualisierungen/Tokenerneuerung alle 4 Stunden kann ich im Log nachvollziehen und der Zustand ist dauerhaft "connected".
Ich habe den Maintainer angeschrieben, um die Änderungen in die offizielle Version aufzunehmen.
Gruß
Danny
Vielen Dank für die Infos.
Leider funktioniert es bei mir nicht.
Ich komme nicht über den Status "authenticated" hinaus.
Somit bekomme ich auch keine neuen Daten.
Nach 5min ist der Token dann abgelaufen und beim nächsten "set update" wechselt der Status auf "disconnected" :(
Das lässt sich nur mit eiem defmod oder Neustart beheben.
Leider gibt das Modul auch mit Verbose 5 keine weiteren Meldungen aus.
Bei mir hat es geholfen, ich habe das Timeout auf 60 gesetzt an den beiden Stellen und ein Doif mit Start um 17 Uhr welches ein set oilfox update durchführt und die Werte wurden aktualisiert!
;D
Nachtrag....nun aktualisiert es sich regelmäßig
Dany hat mich gebeten, das Modul mit dem o.g. timeout zu erweitern, da der eigentliche Maintainer nicht reagiert hat.
Das habe ich mit einem Attribut, Voreinstellung ist 45.
FHEM update sollte ab morgen verfuegbar sein.
Achtung: ich kann das Modul nicht testen, deswegen bin ich auf Feedback angewiesen.
Hey, kurzes Feedback von mir.
Ich habe ebenfalls einen OilFox im Einsatz, der funktioniert dank der Überarbeitung jetzt seit 10 Tagen. (Mit interval=60)
FHEM wurde komplett neu aufgesetzt.
Im Log taucht eben alle 5 Min diese Meldung auf:
2025.03.01 01:09:41 2: LOGIN TOKEN MISSING OR EXPIRED
2025.03.01 01:09:41 3: Reconnecting...
2025.03.01 01:09:41 2: {"token_type":"Bearer","access_token":"xxxxxxxxx","refresh_token":"yyyyyyyw"}
2025.03.01 01:14:42 2: LOGIN TOKEN MISSING OR EXPIRED
2025.03.01 01:14:42 3: Reconnecting...
2025.03.01 01:14:42 2: {"token_type":"Bearer","access_token":"xxxxxxxxx","refresh_token":"yyyyyy"}
2025.03.01 01:19:43 2: LOGIN TOKEN MISSING OR EXPIRED
Mit verbose = 1 isses weg :)
Edith: doch nicht - seit ich das Ding nochmal angefasst habe und stateFormat hinzugefügt hab komme ich nur noch von "authenticated" in "disconnected". Auch defmod oder delete und Neuanlage funktioniert nicht mehr :-( Schade.