Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. Heizöl24 - MEX

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    481

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

Heizöl24 - MEX

Geplant Angeheftet Gesperrt Verschoben Hardware
adapteroilfoxheizöltank
37 Beiträge 12 Kommentatoren 8.3k Aufrufe 12 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • spicerS spicer

    Hab mir auch so ein Teil bestellt.
    Wenn die irgendwann eine API schreiben, wird man den Sensor auch noch nutzen können, wenn die Firma den Support einstellt ^^

    Auf jeden Fall ist die MEX Lösung mit Abstand die günstigste.... zumindest in der Schweiz.
    Für Oilfox2 wollen die hier glatt über das 3.5 fache als in DE. Und DE Firmen verkaufen nicht in die Schweiz :(
    Das ist bei vielen Produkten so. Eine abgesprochene Sache, Kartellgesetz hin oder her.

    C Offline
    C Offline
    cainam
    schrieb am zuletzt editiert von
    #6

    @spicer said in Heizöl24 - MEX:

    t die MEX Lösung

    wobei die software ist müll und die übersicht schlecht... API ist zwingend sonst naja....

    spicerS 1 Antwort Letzte Antwort
    0
    • C cainam

      @spicer said in Heizöl24 - MEX:

      t die MEX Lösung

      wobei die software ist müll und die übersicht schlecht... API ist zwingend sonst naja....

      spicerS Offline
      spicerS Offline
      spicer
      schrieb am zuletzt editiert von
      #7

      @cainam
      API gibt's ja noch nicht, oder?

      Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
      (Murphys Gesetz)

      TRMT 1 Antwort Letzte Antwort
      0
      • spicerS spicer

        @cainam
        API gibt's ja noch nicht, oder?

        TRMT Offline
        TRMT Offline
        TRM
        schrieb am zuletzt editiert von
        #8

        @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.

        xadoxX 1 Antwort Letzte Antwort
        0
        • TRMT TRM

          @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.

          xadoxX Offline
          xadoxX Offline
          xadox
          schrieb am zuletzt editiert von
          #9

          @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.

          TRMT 1 Antwort Letzte Antwort
          0
          • xadoxX xadox

            @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.

            TRMT Offline
            TRMT Offline
            TRM
            schrieb am zuletzt editiert von
            #10

            @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 Antwort Letzte Antwort
            0
            • TRMT TRM

              @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 Offline
              G Offline
              gjo
              schrieb am zuletzt editiert von
              #11

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

              G 1 Antwort Letzte Antwort
              0
              • G gjo

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

                G Offline
                G Offline
                gjo
                schrieb am zuletzt editiert von
                #12

                @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 Antwort Letzte Antwort
                0
                • G gjo

                  @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 Offline
                  T Offline
                  tueftler17
                  schrieb am zuletzt editiert von
                  #13

                  @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 Antwort Letzte Antwort
                  0
                  • T tueftler17

                    @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 Offline
                    G Offline
                    gjo
                    schrieb am zuletzt editiert von gjo
                    #14

                    @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 Antwort Letzte Antwort
                    0
                    • G 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 Offline
                      T Offline
                      tueftler17
                      schrieb am zuletzt editiert von
                      #15

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

                      G 2 Antworten Letzte Antwort
                      0
                      • T tueftler17

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

                        G Offline
                        G Offline
                        gjo
                        schrieb am zuletzt editiert von gjo
                        #16

                        @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 Antwort Letzte Antwort
                        0
                        • T tueftler17

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

                          G Offline
                          G Offline
                          gjo
                          schrieb am zuletzt editiert von
                          #17

                          @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 Antwort Letzte Antwort
                          0
                          • G 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 Offline
                            T Offline
                            tueftler17
                            schrieb am zuletzt editiert von
                            #18

                            @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!

                            cleexC 1 Antwort Letzte Antwort
                            0
                            • T tueftler17

                              @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!

                              cleexC Offline
                              cleexC Offline
                              cleex
                              schrieb am zuletzt editiert von
                              #19

                              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 Antwort Letzte Antwort
                              0
                              • cleexC cleex

                                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 Offline
                                C Offline
                                cainam
                                schrieb am zuletzt editiert von
                                #20

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

                                spicerS 1 Antwort Letzte Antwort
                                0
                                • C cainam

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

                                  spicerS Offline
                                  spicerS Offline
                                  spicer
                                  schrieb am zuletzt editiert von
                                  #21

                                  @cainam
                                  Habe leider auch noch nichts gehört :(

                                  Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
                                  (Murphys Gesetz)

                                  1 Antwort Letzte Antwort
                                  0
                                  • 2 Offline
                                    2 Offline
                                    2radtax
                                    schrieb am zuletzt editiert von
                                    #22

                                    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

                                    spicerS 1 Antwort Letzte Antwort
                                    0
                                    • 2 2radtax

                                      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

                                      spicerS Offline
                                      spicerS Offline
                                      spicer
                                      schrieb am zuletzt editiert von
                                      #23

                                      @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."

                                      Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
                                      (Murphys Gesetz)

                                      1 Antwort Letzte Antwort
                                      0
                                      • spicerS Offline
                                        spicerS Offline
                                        spicer
                                        schrieb am zuletzt editiert von spicer
                                        #24

                                        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

                                        Wenn es mehrere Möglichkeiten gibt, eine Aufgabe zu erledigen, und eine davon in einer Katastrophe endet oder sonstwie unerwünschte Konsequenzen nach sich zieht, dann wird es jemand genau so machen. Alles, was schiefgehen kann, wird auch schiefgehen.
                                        (Murphys Gesetz)

                                        G 1 Antwort Letzte Antwort
                                        0
                                        • spicerS 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 Offline
                                          G Offline
                                          gjo
                                          schrieb am zuletzt editiert von
                                          #25

                                          @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 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          340

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe