Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. Heizöl24 - MEX

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Heizöl24 - MEX

    This topic has been deleted. Only users with topic management privileges can see it.
    • TRM
      TRM @spicer last edited by

      @spicer
      Aktueller Stand ist, dass die API (leider) immer noch in Entwicklung ist (sowie eine Desktop Software).

      Der Sensor ist recht erschwinglich und funktioniert gut, nur sehne ich mich wirklich nach einer Integration um es im VIS darstellen zu können.

      xadox 1 Reply Last reply Reply Quote 0
      • xadox
        xadox @TRM last edited by

        @trm Ok überlegte auch mir das Teil zu kaufen. Aber die reine APP nutzung schreckt mich echt ab.
        Gibt es da ggf. alternativen zu? Oilfox ja aber auch dieser möchte in die Cloud speichern.

        TRM 1 Reply Last reply Reply Quote 0
        • TRM
          TRM @xadox last edited by

          @xadox said in Heizöl24 - MEX:

          @trm Ok überlegte auch mir das Teil zu kaufen. Aber die reine APP nutzung schreckt mich echt ab.
          Gibt es da ggf. alternativen zu? Oilfox ja aber auch dieser möchte in die Cloud speichern.

          Habe bislang keine Alternative gefunden und vermute auch, dass die API mittelfristig nicht kommen wird, egal ob Oilfox oder MEX. Das Ding hätte ansich echt Potential und misst bei mir auch zuverlässig.

          Ich musste allerdings, obwohl der Accesspoint (Unifi) einen Raum weiter ist (gleiches Stockwerk wie die Heizöltanks) selbst bei geöffneter Heizraumtüre, den MEX modifizieren und eine externe Antenne anbringen, da der WLAN Empfang sehr(!) miserabel ist.

          G 1 Reply Last reply Reply Quote 0
          • G
            gjo @TRM last edited by

            @trm Hallo, gibt es da evtl. ein positives Update um über die API auf die Daten
            zuzugreifen?

            G 1 Reply Last reply Reply Quote 0
            • G
              gjo @gjo last edited by

              @gjo Hier die Antwort vom Support ...

              "Guten Tag,
              derzeit ist die Bedienung sowie die Datenübertragung ausschließlich über die HeizOel24 | meX App möglich. Eine Schnittstellenanbindung sowie eine Desktop Version ist für unser meX Produkt geplant und wird derzeit noch entwickelt. Sobald es zur Verfügung steht werden Sie über unsere HeizOel24 Website informiert.
              Mit freundlichen Grüßen
              Ihr HeizOel24 | meX Team
              meX Support


              HeizOel24.de, interaid GmbH | Ullsteinstraße 120 | 12109 Berlin | HRB 108295, AG Charlottenburg GF: Marc Lorbeer, Oliver Klapschus | UST-IdNr: DE255080062 | Tel: +49 (0)800 22 3 22 40 | Fax: +49 (0)30 701 712 19 | E-Mail: info@heizoel24.de "

              T 1 Reply Last reply Reply Quote 0
              • T
                tueftler17 @gjo last edited by

                @gjo Das Gerät ist mir auch schon vor einiger Zeit in die Augen gefallen. Nachdem ich die Kommunikation meines Batterie-Speichers und der Desktop-App kapiert habe (habe auch einen Adapter dazu veröffentlicht) würde mich dieses Gadget interessieren. Hast Du denn mal versucht den WLAN-Verkehr mitzuschneiden? Vielleicht ist es ja nicht verschlüsselt und kann leicht an den Füllstand herankommen, mehr möchte man ja dann doch nicht...

                G 1 Reply Last reply Reply Quote 0
                • G
                  gjo @tueftler17 last edited by gjo

                  @tueftler17 hatte das mal mit wireshark versucht und dem MEX zuvor eine feste IP zugewiesen ... aus dem was aufgezeichnet wurde bin ich nicht schlau geworden.

                  Wenn es da eine bessere Vorgehnesweise gibt gerne melden... ich tüftle dann weiter.

                  T 1 Reply Last reply Reply Quote 0
                  • T
                    tueftler17 @gjo last edited by

                    @gjo Das würde ich genau so machen. Magst Du mir den Dump schicken? Dann schaue ich mit rein.

                    G 2 Replies Last reply Reply Quote 0
                    • G
                      gjo @tueftler17 last edited by gjo

                      @tueftler1 habe den dump via router erschnüffelt ... da stand letztendlich mehr drin.

                      MAX Transfer 2x Datenübertragung_2.pcap

                      Enthalten sind die Pakete von 2 Datenübertragungen des MAX ins Internet. Übertragen um ~09:00 mit Tankstand 3657l / 98% Füllstand. Durchschnitt etc wird auf der APP noch nicht angezeigt, sprich das wird dann wohl im Netz errechnet (Vermutung).

                      T 1 Reply Last reply Reply Quote 0
                      • G
                        gjo @tueftler17 last edited by

                        @tueftler17 der MEX Sensor ist ja ein in Wahrheit ein Tekelek Sensor:
                        Dann könnte das doch von Interesse sein ... https://github.com/seamus-rochford/Tekelek-TcpListener

                        1 Reply Last reply Reply Quote 0
                        • T
                          tueftler17 @gjo last edited by

                          @gjo Danke! Leider sind verschlüsselte Daten, wohl als JSON, enthalten. Ich hätte akut keine Idee wie man diese entschlüsseln sollte. Daher habe ich keine Idee wie man an die Kommunikation zwischen MEX und der remote-IP herankommen könnte.
                          Alternativ sehe ich nur noch regelmäßig die Webseite mit den Messwerten abzrufufen und dort irgendwie die Daten herauszusuchen. Das wäre aber in meinen Augen eine never ending story, da müsste man bei jeder Änderung der Webseite erneut rangehen und da würde ich bei regelmäßigen Änderungen ohne Vorwarnung schnell den Spaß dran verlieren. Das ist mir zu riskant um es in einen Adapter zu stecken und dann vernünftig zu supporten.
                          Schade!

                          cleex 1 Reply Last reply Reply Quote 0
                          • cleex
                            cleex @tueftler17 last edited by

                            Hab das Ding mal aufgeschaubt und da ist ein Atmel SAM D20 drin. Pinout müsste folgendes sein:
                            8f6fea60-eb66-4405-883e-56bc18c1afc7-grafik.png

                            Denke das einfachste ist versuchen die Firmware zu ersetzen oder anzupassen, habe aber da leider zu wenig Erfahrung.

                            C 1 Reply Last reply Reply Quote 0
                            • C
                              cainam @cleex last edited by

                              ist hier jemand weiter gekommen oder gibt es den adapter oder ein api inzwischen?

                              spicer 1 Reply Last reply Reply Quote 0
                              • spicer
                                spicer @cainam last edited by

                                @cainam
                                Habe leider auch noch nichts gehört 😞

                                1 Reply Last reply Reply Quote 0
                                • 2
                                  2radtax last edited by

                                  Hallo zusammen,

                                  ich würde ebenso lieber die Daten meines Mex Sensors direkt abfragen und bin bei der Suche auf diesen Forums-thread gekommen. Was eine API Umsetzung seitens des Herstellers angeht, sehe ich da keine Hoffnung mehr.

                                  Hardware technisch gibt es das (vermutlich) gleiche Teil auch bei anderen Herstellern:

                                  • TEK 750 Wi-Fi Ultrasonic
                                  • Proteus EcoFrog WLAN

                                  Proteus listet auf der Produktseite sogar "API Schnittstelle" als Feature, wobei daraus nicht hervor geht, ob das lokale Gerät einen API Endpoint stellt oder ob die API in der Cloud liegt.

                                  Ich dachte, ich teile mal meine Recherche-Ergebnisse hier, vielleicht ist ja jemand schon weiter gekommen.

                                  LG

                                  spicer 1 Reply Last reply Reply Quote 0
                                  • spicer
                                    spicer @2radtax last edited by

                                    @2radtax
                                    Habe erst vorletzte Woche mal wieder Heizoel24 wegen dem angeschrieben.
                                    Antwort:
                                    "leider wird es eine solche Option auf absehbare Zeit nicht geben."

                                    Frage um Möglichkeit, ID, Cloud Link usw zu erhalten um selber eine Cloud-Abfrage zu schreiben; Antwort:
                                    "leider gibt es eine solche Möglichkeit noch nicht. Ein entsprechender Featurewunsch wurde allerdings aufgenommen. Ob dieses noch 2024 umgesetzt wird, können wir noch nicht abschätzen."

                                    1 Reply Last reply Reply Quote 0
                                    • spicer
                                      spicer last edited by spicer

                                      Habe hier ein Python Script erstellt, welches funktioniert!
                                      Herzlichen Dank an cpatscheider für seine Unterstützung! ( https://github.com/Secret-Lab-Productions/heizoel24-mex/discussions/2 )
                                      Die Daten sind dann unter mqtt/0/MEX zufinden.
                                      Cronjob (crontab -e):
                                      0 */3 * * * /home/pi/mex.py # Pfad anpassen!

                                      Rechte 754 ( chmod 754 mex.py )

                                      mex.py

                                      #!/usr/bin/python3
                                      
                                      ##################################
                                      #             V1.1               #
                                      # MEX-Daten in ioBroker einlesen #
                                      #    Benötigt den MQTT Adapter   #
                                      #    (C) 2024 Daniel Luginbühl   #
                                      ##################################
                                      
                                      ########################### WICHTIGE INFOS ###############################
                                      #### Dieses Script per Cronjob alle 2 bis 4 Stunden ausführen         ####
                                      
                                      #### Im ioBroker ist der MQTT Broker/Client Adapter zu installieren   ####
                                      #### Einstellungen:                                                   ####
                                      ####    IP: Server/Broker                                             ####
                                      ####    Authentifizierungseinstellungen: Benutzer/Passwort definieren ####
                                      
                                      #### Zu installieren (auf Host, wo dieses Script läuft):              ####
                                      ####    sudo apt install python3-requests                             ####
                                      ####    pip install paho-mqtt                                         ####
                                      ##########################################################################
                                      
                                      #### Hier Einträge anpassen! ####
                                      username = "AAAAA@gmail.com"    # Deine Email Adresse bei Heizoel24
                                      passwort = "BBBBBBBBB"          # Dein Passwort bei Heizoel24
                                      
                                      broker_address = "192.168.1.50" # ioBroker IP, auf welchem der MQTT (Server) Adapter läuft
                                      mqtt_user = "uuuuuu"            # ioBroker MQTT User     (in Authentifizierungseinstellungen definiert)
                                      mqtt_pass = "pppppp"            # ioBroker MQTT Passwort (in Authentifizierungseinstellungen definiert)
                                      
                                      debug = False                   # True = Debug Infos auf die Konsole
                                      
                                      ##########################################################################
                                      
                                      import requests
                                      import time
                                      import json
                                      import paho.mqtt.client as mqtt
                                      
                                      def mqtt_send(client, topic, wert):
                                          client.publish("MEX/" + topic, wert)
                                      
                                      def login():
                                          if debug:
                                              print('Login in...')
                                          global session_id
                                          global logged_in
                                          url = "https://api.heizoel24.de/app/api/app/Login"
                                          newHeaders = {'Content-type': 'application/json'}
                                          reply = requests.post(url, json = { "Password" : passwort, "Username" : username}, headers=newHeaders)
                                      
                                          if reply.status_code == 200:
                                              if debug:
                                                  print("Login OK")
                                              reply_json = json.loads(reply.text)
                                              if reply_json['ResultCode'] == 0:
                                                  session_id = reply_json['SessionId']
                                                  if debug:
                                                      print('Session ID: ' + session_id)
                                                  logged_in = True
                                          else:
                                              print('Login nicht OK! Heizoel24 Login Status Code: ' + str(reply.status_code))
                                      
                                      def mex():  
                                          login()
                                          if debug:
                                              print('Refresh sensor data cache...')
                                          url = 'https://api.heizoel24.de/app/api/app/GetDashboardData/'+ session_id + '/1/1/False'
                                          reply = requests.get(url)     
                                          if reply.status_code == 200:
                                              if debug:
                                                  print("Daten wurden empfangen")
                                              sensor_data = reply
                                          else:
                                              if debug:
                                                  print('Heizoel24 GetDashboardData Status Code: ' + str(reply.status_code))
                                              sensor_data = "error"   # Fehler. Keine Daten empfangen.
                                          return sensor_data
                                      
                                      def main():
                                          daten = mex()
                                          if daten == "error":
                                              print("Fehler. Keine Daten empfangen.")
                                              return
                                          daten = daten.json()
                                          if debug:
                                              print(daten)
                                      
                                          topic1 = ['SensorId', 'IsMain', 'CurrentVolumePercentage', 'CurrentVolume', 'NotifyAtLowLevel', 'NotifyAtAlmostEmptyLevel', 'NotificationsEnabled', 'Usage', 'RemainsUntil', 'MaxVolume', 'ZipCode', 'MexName', 'LastMeasurementTimeStamp', 'LastMeasurementWithDifferentValue', 'BatteryPercentage', 'Battery', 'LitresPerCentimeter', 'LastMeasurementWasSuccessfully', 'SensorTypeId', 'HasMeasurements', 'MeasuredDaysCount', 'LastMeasurementWasTooHigh', 'YearlyOilUsage', 'RemainingDays', 'LastOrderPrice', 'ResultCode', 'ResultMessage']
                                      
                                          topic2 = ['LastOrderPrice', 'PriceComparedToYesterdayPercentage', 'PriceForecastPercentage', 'HasMultipleMexDevices', 'DashboardViewMode', 'ShowComparedToYesterday', 'ShowForecast', 'ResultCode', 'ResultMessage']
                                      
                                          RemainsUntilCombined = ['MonthAndYear', 'RemainsValue', 'RemainsUnit']
                                      
                                          client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1, "MEX")
                                          client.username_pw_set(mqtt_user, mqtt_pass)
                                          client.connect(broker_address)
                                      
                                          if debug:
                                              print("---------------------")
                                          for n in range(len(topic2)):
                                              if debug:
                                                  print(topic2[n] + ":", daten[topic2[n]])
                                              mqtt_send(client, "PricingForecast/" + topic2[n], daten[topic2[n]])
                                      
                                          daten = daten["Items"]
                                          daten = daten[0]
                                      
                                          if debug:
                                              print("---------------------")
                                          for n in range(len(topic1)):
                                              if debug:
                                                  print(topic1[n] + ":", daten[topic1[n]])
                                              mqtt_send(client, "Items/" + topic1[n], daten[topic1[n]])
                                      
                                          daten3 = daten['RemainsUntilCombined']
                                      
                                          if debug:
                                              print("---------------------")
                                              print('RemainsUntilCombined:')
                                          for n in range(len(RemainsUntilCombined)):
                                              if debug:
                                                  print(RemainsUntilCombined[n] + ":", daten3[RemainsUntilCombined[n]])
                                              mqtt_send(client, "RemainsUntilCombined/" + RemainsUntilCombined[n], daten3[RemainsUntilCombined[n]])
                                      
                                          client.disconnect()
                                      
                                      #### Beispiel Ausgaben. Diese können dann natürlich auch in Datenpunkte geschrieben werden. ####
                                      #    print()
                                      #    print("SensorId:                 ", daten["SensorId"])
                                      #    print("Aktueller Inhalt in %:    ", daten["CurrentVolumePercentage"])
                                      #    print("Aktueller Inhalt in Liter:", daten["CurrentVolume"])
                                      #    print("Max Tankinhalt in Liter:  ", daten["MaxVolume"])
                                      #    print("MEX Batterie in %:        ", daten["BatteryPercentage"])
                                      #    print("Letzte Messung in Ordnung:", daten["LastMeasurementWasSuccessfully"])
                                      #    print("Letzte Messung war am:    ", daten["LastMeasurementTimeStamp"])
                                      #    print("Reicht noch für Tage:     ", daten["RemainingDays"])        
                                      
                                      
                                      if __name__ == '__main__':   
                                          main()
                                      
                                      

                                      Auch hier zufinden: https://github.com/ltspicer/iobroker.mex

                                      G 1 Reply Last reply Reply Quote 1
                                      • G
                                        gjo @spicer last edited by

                                        @spicer
                                        sehr sehr cool .... vielen Dank dafür!!!

                                        eine Frage zu einer Fehlermedung die ich erhalte:

                                        root@DietPi:/home/script# python3 /home/script/mex.py
                                        Traceback (most recent call last):
                                          File "/home/script/mex.py", line 141, in <module>
                                            main()
                                          File "/home/script/mex.py", line 95, in main
                                            client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1, "MEX")
                                        AttributeError: module 'paho.mqtt.client' has no attribute 'CallbackAPIVersion'
                                        
                                        

                                        Was könnte da falsch laufen?

                                        1 Reply Last reply Reply Quote 0
                                        • spicer
                                          spicer last edited by spicer

                                          @gjo editiere Zeile 95 nach:
                                          client = mqtt.Client("MEX")

                                          Ich vermute, dass Du mqtt Version < 2.0 hast.
                                          Werde das beim nächsten Update abfangen.

                                          G 1 Reply Last reply Reply Quote 0
                                          • G
                                            gjo @spicer last edited by

                                            @spicer

                                            das war auch meine Vermutung.

                                            heidenei ... nach:

                                            root@DietPi:/home/script# pip install paho-mqtt --upgrade
                                            Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple/
                                            Requirement already satisfied: paho-mqtt in /usr/local/lib/python3.7/dist-packages (1.6.1)
                                            Collecting paho-mqtt
                                             Downloading https://www.piwheels.org/simple/paho-mqtt/paho_mqtt-2.0.0-py3-none-any.whl (66 kB)
                                                ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.9/66.9 kB 746.1 kB/s eta 0:00:00
                                            Installing collected packages: paho-mqtt
                                             Attempting uninstall: paho-mqtt
                                               Found existing installation: paho-mqtt 1.6.1
                                               Uninstalling paho-mqtt-1.6.1:
                                                 Successfully uninstalled paho-mqtt-1.6.1
                                            Successfully installed paho-mqtt-2.0.0
                                            WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
                                            
                                            [notice] A new release of pip is available: 23.3.2 -> 24.0
                                            [notice] To update, run: python3 -m pip install --upgrade pip
                                            
                                            

                                            kommt jetzt:

                                            root@DietPi:/home/script# python3 /home/script/mex.py
                                            Traceback (most recent call last):
                                              File "/usr/local/lib/python3.7/dist-packages/paho/mqtt/client.py", line 49, in <module>
                                                from typing import Literal
                                            ImportError: cannot import name 'Literal' from 'typing' (/usr/lib/python3.7/typing.py)
                                            
                                            During handling of the above exception, another exception occurred:
                                            
                                            Traceback (most recent call last):
                                              File "/home/script/mex.py", line 38, in <module>
                                                import paho.mqtt.client as mqtt
                                              File "/usr/local/lib/python3.7/dist-packages/paho/mqtt/client.py", line 51, in <module>
                                                from typing_extensions import Literal  # type: ignore
                                            ModuleNotFoundError: No module named 'typing_extensions'
                                            root@DietPi:/home/script#
                                            
                                            

                                            also via:

                                            root@DietPi:/home/script# pip install typing-extensions
                                            
                                            Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple/
                                            Collecting typing-extensions
                                              Downloading https://www.piwheels.org/simple/typing-extensions/typing_extensions-4.7.1-py3-none-any.whl (33 kB)
                                            Installing collected packages: typing-extensions
                                            Successfully installed typing-extensions-4.7.1
                                            
                                            
                                            

                                            nachinstalliert. dann mit folgendem Ergebnis:

                                            root@DietPi:/home/script# python3 /home/script/mex.py
                                            /home/script/mex.py:95: DeprecationWarning: Callback API version 1 is deprecated, update to latest version
                                              client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1, "MEX")
                                            
                                            
                                            spicer 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            adapter heizöltank oilfox
                                            12
                                            37
                                            6310
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo