http Eingang - JSON REST API und die Befehlserkennung am Limit - AhoyDTU mit Hoymiles

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • ChrisF
    Dumb Home'r
    • 18.06.2017
    • 26

    #1

    http Eingang - JSON REST API und die Befehlserkennung am Limit - AhoyDTU mit Hoymiles

    Moin zusammen,

    ich habe hier ein recht spanndes Thema, bei dem Loxone mal wieder an seine Grenzen kommt.

    Mit der Befehlserkennung würde ich gerne die Werte einer REST API einlesen. Das Problem ist, dass die jeweilige Variable in ihrer Nachkommastelle schwankt. Ein einfaches auslesen, beispielsweise mit \s18 am Beispiel der Frequenz
    Code:
    "ch"\s18\v
    ist somit leider nicht möglich, denn ändert sich beispielsweise die Spannung um 0,01V hat der gelesene String eine Stelle mehr. Machmal geht der Strom auf NULL, die API liefert dann eine 0 anstelle einer 0.00 dementsprechend habe ich manchmal auch weniger Stellen.

    Anbei ein Auszug aus dem String der aktuell empfangen wird:
    "ch":[[233.5,0.27,62.8,50.02,0.947,13.2
    Ideal wäre es, einfach auf die Kommata zu reagieren, diese zu zählen und an die entsprechende Stelle zu springen. Laut Loxone Support ist das nicht möglich.

    Wenn ich mir die Daten im Browser im JSON Format ansehe, bekomme ich eine reativ saubere Formatierung hin, um an die entsprechende Stelle zu springen.

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: JSON.jpg
Ansichten: 600
Größe: 24,1 KB
ID: 423608

    Habt ihr nen Tipp, wie man die Zeichenkette auslesen kann, oder eine Idee, wie ich die Daten für Loxone lesbar mache?

    Danke im voraus!
  • romildo
    Lebende Foren Legende
    • 25.08.2015
    • 5144

    #2
    Hallo, so wie ich das sehe, sind die Werte über das Zeichen "," getrennt. Somit würde ich nach Komma suchen.
    Beispiel Befehlserkennung:
    Wert 1 = "ch":[[\v
    Wert 2 = "ch"\i,\i\v
    Wert 3 = "ch"\i,\i\i,\i\v
    usw.
    lg Romildo

    Kommentar

    • ChrisF
      Dumb Home'r
      • 18.06.2017
      • 26

      #3
      Hallo Romildo,

      vielen Dank für deine rasche Antwort!

      Genau das war auch meine Idee. Wie gesagt Loxone Support sagte es geht nicht, allerdings machen wir es bei der Telenot RS232 Schittstelle genauso \.\.\. usw...

      Dein Beispiel Funktioniert, allerdings nur bis Wert 2, danach klappt es nicht mehr. Ich dachte jetzt im ersten Schritt, es fehlt ein Komma bei dir, aber das war es nicht.
      Statt: Wert 3 = "ch"\i,\i\i,\i\v dachte ich "ch":[[\i,\i,\i,\i\v
      Egal wie viele \i, ich einfüge, Loxone bleibt in der Live View auf Wert 2 stehen

      Kommentar


      • romildo
        romildo kommentierte
        Kommentar bearbeiten
        Falsch: "ch":[[\i,\i,\i,\i\v
        Richtig: "ch":[[\i,\i\i,\i\i,\i\v
    • darkrain
      MS Profi
      • 25.08.2015
      • 553

      #4
      Guck dir mal bitte die Beispiele auf der Loxoneseite an, wie welche Zeichen übersprungen werden. \iText\i = Springe zu 'Text'

      Kommentar

      • AlexAn
        Lebende Foren Legende
        • 25.08.2015
        • 4300

        #5
        sehe keinen Grund warum das nicht klappen sollte:
        "ch":\i,\i\i,\i\i,\i\i,\i\i,\i\v

        Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 31,8 KB ID: 423633
        Grüße Alex

        Kommentar

        • ChrisF
          Dumb Home'r
          • 18.06.2017
          • 26

          #6
          Alles klar, Befehlserkennung verstanden, danke!
          Ändert aber nichts an der Tatsache, dass er nur bis Wert 2 ausliest und da stehen bleibt.
          Den Grund, warum er am zweiten Wert kleben bleibt, sehe ich auch nicht

          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Befehlserkennung.jpg
Ansichten: 444
Größe: 193,6 KB
ID: 423659

          Kommentar

          • AlexAn
            Lebende Foren Legende
            • 25.08.2015
            • 4300

            #7
            kannst du mal den ganzen String hier als "Code" posten genau so wie er ausgegeben wird!
            falls sich da ein Leerzeichen nach dem letzten , befindet ist es schon vorbei
            Zuletzt geändert von AlexAn; 19.02.2024, 16:19.
            Grüße Alex

            Kommentar

            • darkrain
              MS Profi
              • 25.08.2015
              • 553

              #8
              Eventuell mal noch in das DebugLog schauen ob da was steht, nicht das der String zu lang ist. Reine Vermutung hab jetzt auf die schnelle nichts über eine Zeichenbegrenzung gefunden.

              Kommentar

              • romildo
                Lebende Foren Legende
                • 25.08.2015
                • 5144

                #9
                Sofern die Befehlserkennun stimmt, sollten die Werte schon in der richtigen Reihenfolge ausgelesen werden.
                Wenn es keine Nachkommastellen gibt, dann wird jedoch der folgende Wert nach dem Komma leider als Nachkommastellenwert genommen, was in diesem Fall natürlich falsch ist.
                Egal ob das Dezimaltrennzeichen ein Komma oder ein Punkt ist.

                Klicke auf die Grafik für eine vergrößerte Ansicht

Name: BefehlserkennungKomma.png
Ansichten: 463
Größe: 276,9 KB
ID: 423677
                lg Romildo

                Kommentar


                • darkrain
                  darkrain kommentierte
                  Kommentar bearbeiten
                  Danke auch was gelernt. Entweder was mit PicoC bauen oder mal nen FeatureRequest bei Loxone eröffnen.
              • Noschvie
                LoxBus Spammer
                • 24.09.2018
                • 480

                #10
                Oder einfach Node-Red verwenden… damit sind solche Operationen richtig einfach.

                Kommentar

                • ChrisF
                  Dumb Home'r
                  • 18.06.2017
                  • 26

                  #11
                  Erstmal großes Lob und DANKE an ALLE, die sich hier einbringen! Das habe ich nicht erwartet. Der nächste Döner von romildo und AlexAn geht offensichtlich auf mich

                  Anbei der komplette String von heute Mittag:
                  Code:
                  {"id":0,"enabled":true,"name":"Balkonmühle","serial":"116180219146","version":"10018","power_limit_read":100,"power_limit_ack":false,"max_pwr":1500,"ts_last_success":1708343944,"generation":1,"status":2,"alarm_cnt":8,"rssi":-75,"ch":[[235.3,0.19,45.6,50.02,0.904,13.2,0.128,130,48.1,94.802,21.6,108.5],[41.4,0.59,24.3,66,0.063,8.836,57.7],[41.4,0.57,23.7,64,0.066,8.618,56.5],[2.3,0.02,0.1,0,0.001,0.036,0.1],[2.3,0.01,0,0,-0.001,0,0.1]],"ch_name":["AC","Links 1.1","Links 1.2","Rechts 2.1","Rechts 2.2"],"ch_max_pwr":[null,275,275,275,275]}
                  Und der Code von heute Nacht. Leider fallen die Hoymühlen ohne PV Spannung in einen deep sleep Mode:
                  Code:
                  {"id":0,"enabled":true,"name":"Balkonmühle","serial":"116180219146","version":"0","power_limit_read":65535,"power_limit_ack":false,"max_pwr":0,"ts_last_success":0,"generation":1,"status":0,"alarm_cnt":0,"rssi":-127,"ch":[[0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]],"ch_name":["AC","Links 1.1","Links 1.2","Rechts 2.1","Rechts 2.2"],"ch_max_pwr":[null,275,275,275,275]}
                  Ich komme gerade aus dem Krankenhaus und der Witz ist, das Loxone in der Live View immer noch 0,19 in der Variablen hat, wie in Beitrag #6 gescreenshottet, obwohl ja jetzt in der Nacht im String alles nach "ch":[[ auf ........0,0,0,0....... steht.
                  Versteh einer die \iText\i = Springe zu 'Text' Befehlserkennung, das macht alles überhaupt keinen Sinn.

                  Ansicht von heute Nacht:
                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Befehlserkennung 2.jpg
Ansichten: 646
Größe: 57,3 KB
ID: 423717

                  Zufällig habe ich die Temperatur Variable noch mit dem erst angedachten \s12\v Erkennungsbefehl. Der liest zwar an der falschen Stelle, funktioniert aber wenigstens. Hilft mir aber auch nicht weiter :/

                  Im Debug Monitor sieht der String identisch aus, wie wenn ich ihn mit dem Browser abfrage. Ich sehe jedenfalls keine Unterschiede und Leerzeichen erkenne ich auch keine.
                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Debug.jpg
Ansichten: 412
Größe: 566,4 KB
ID: 423718

                  Noschvie Mit nodeRed habe ich noch nicht wirklich was gemacht, habe allerdings ein DietPi Loxberry in einer Hyper-V Maschine am laufen. Wenn ich es recht lese, gibt es eine Library die direkt an Loxone angebunden ist ( node-red-contrib-loxone ). Würdest du damit die Daten aus der REST API auslesen und dann per msg-payload an Loxone weiter senden?
                  Ich glaube ich habe ein ganz gutes Video dazu gefunden https://www.youtube.com/watch?v=dZiqRg0o01E

                  Lie
                  ber wäre es mir allerdings wenn die Daten direkt in Loxone gelesen werden könnten.
                  Der Umweg wäre schon übel: Hoymiles WR --> AhoyDTU --> NodeRed --> Loxone --> influxDB --> Grafana

                  Und das alles für ein fu***ing Balkonkraftwerk... oh man


                  Kommentar


                  • romildo
                    romildo kommentierte
                    Kommentar bearbeiten
                    Wenn da immer 0.19 angezeigt wird, ist das ein Zeichen dafür, dass dieser Eingang gar nicht eingelesen und somit der letzte Wert beibehalten wird.
                    Daher sei mir die Frage erlaubt: Du hast nach der Änderung aber schon jedesmal auch die Änderung in den Miniserver gespeichert

                    Nachtrag:
                    Wenn ich bei mir den angezeigten Code sende, dann funktioniert das auch mit den Nullen.

                    und noch ein Nachtrag:
                    Klick doch mal bei verbundenem Miniserver ganz rechts auf die Befehlserkennung
                    Zuletzt geändert von romildo; 20.02.2024, 09:13.

                  • ChrisF
                    ChrisF kommentierte
                    Kommentar bearbeiten
                    Die Frage sei dir absolut gestattet Als Silver Partner ist mir die Funktion "In Miniserver speichern" doch sehr geläufig. Ich kenne auch schon die Funktion "Gerätestatus--> Gerät neu starten" und die "Hardreset per Kabel/Sicherung". Manchmal auch die "Lösche den Baustein und mach neu dann gehts wieder" Funktion. Und viele andere Österreichische Eigenarten, wie wir sie nennen. Die Funktion: Fäustel in Miniserver werfen ist mir bekannt, habe ich aber noch nicht ausprobiert, das dürfen nur Gold Partner Wobei wenn man letztere als Silver sehr häufig einsetzt, dann wird man ja quasi automatisch Gold...
                    Da Familie und Mitarbeiter Krank muss Projekt Balkonmühle waren bis zum Wochenende und Tageslicht. Ich werde berichten. Danke für den Support!
                • AlexAn
                  Lebende Foren Legende
                  • 25.08.2015
                  • 4300

                  #12
                  "ch":[[\v
                  "ch":[[\i,\i\v
                  "ch":[[\i,\i\i,\i\v
                  "ch":[[\i,\i\i,\i\i,\i\v


                  hier kommt das Problem mit den . und , Kommas zum tragen wie romildo oben es beschrieben hat:
                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 495
Größe: 54,1 KB
ID: 423743

                  in deinem Fall ist es vermutlich egal da ohnehin nur 0 im ganzen Datenstring steht
                  NodeRed ist hier völlig übertrieben und nur eine zusätzliche Fehlerquelle


                  Anbei eine Funktion in der Config die noch nicht so genutzt wird wie sie sollte:
                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 505
Größe: 238,5 KB
ID: 423744
                  Grüße Alex

                  Kommentar


                  • ChrisF
                    ChrisF kommentierte
                    Kommentar bearbeiten
                    Sehr coole Funktion, kannte ich auch noch nicht! Man klickt leider viel zu selten auf die drei Punkte ... Schaue ich mir bei Tageslicht mal genauer an, wenn die Hoymühle wieder Daten sendet.
                • Noschvie
                  LoxBus Spammer
                  • 24.09.2018
                  • 480

                  #13
                  ChrisF warum machst du das so kompliziert? Nutze MQTT und den LoxBerry: Hoymiles WR --> AhoyDTU --> (MQTT) LoxBerry --> Loxone

                  Kommentar


                  • AlexAn
                    AlexAn kommentierte
                    Kommentar bearbeiten
                    weil er es vermutlich ohne Serverdienst betreiben möchte!

                  • ChrisF
                    ChrisF kommentierte
                    Kommentar bearbeiten
                    Das wäre ne Notoption aber wie AlexAn schon sagt, mein HyperV-DietPi-Loxberry-VM läuft in der Firma und steuert den Showroom. Das ist zwar alles per VPN vernetzt, jedoch gibt es immer mal wieder Probleme mit dem VPN reconnect nach der Provider Zwangstrennung. Auch aus Finanzamttechnischen Gründen wäre es toll, wenn private Basteleien zu Hause bleiben und ich nicht nur für ein paar Wert ein zweiten Loxby zu Hause aufsetzen und betreiben muss.
                    Die Daten kommen ja rein und dann triggert es meinen inneren Monk doch irgendwie das hin zu bekommen.
                    Zuletzt geändert von ChrisF; 21.02.2024, 03:10.
                • ChrisF
                  Dumb Home'r
                  • 18.06.2017
                  • 26

                  #14
                  Moin zusammen,

                  ich habe das Thema vom Tisch, nun funktioniert es wie gewünscht. Zunächst nochmals vielen Dank an alle für den Support.

                  Ich habe alles gelöscht und neu angelegt über den "Befehlserkennung bearbeiten" Befehl (3 Punkte ...) wie von AlexAn beschrieben und siehe da, alle Österreichischen Eigenarten haben sich von selbst erledigt. Man kann in dem Erkennungsmonitor schön sehen wie der grüne cursor mit Eingabe der Befehlserkennung Wert für Wert weiter springt. Wirklich tolles tool! Werde ich definitiv nur noch so nutzen, denn man kann den abgefragten Datenstring live mitverfolgen.

                  Der Befehl für HZ lautet ch":[[\i,\i\i,\i\i,\i\v also genau wie vorher von euch auch getestet.

                  Den Grund verstehe ich wirklich nicht, es ist genau dasselbe wie ohne "Befehlserkennung bearbeiten" aber gut, einfach nicht hinterfragen.

                  Werde dazu ein Video Tutorial auf Youtube hochladen.



                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Befehlserkennung bearbeiten.jpg
Ansichten: 390
Größe: 69,5 KB
ID: 424139

                  Kommentar


                  • AlexAn
                    AlexAn kommentierte
                    Kommentar bearbeiten
                    Vorsicht ich bin Österreicher

                  • ChrisF
                    ChrisF kommentierte
                    Kommentar bearbeiten
                    Oh sorry! Einigen wir uns auf Loxonsche Eigenarten? :P
                • ChrisF
                  Dumb Home'r
                  • 18.06.2017
                  • 26

                  #15
                  Damit nicht noch jemand seine Lebenszeit verbrennen muss, anbei die Templates für die AhoyDTU mit einem Wechselrichter.
                  Um ein zweiten Wechselrichter hinzuzufügen, einfach die Vorlage ein zweites Mal verwenden und die URL umstellen auf http://IP-ADRESSE/api/inverter/id/1

                  Da man hier übers Forum keine XML Datein hochladen darf, müsst ihr nach dem herunterladen der beiden Vorlagen noch die Dateiendung.txt austauschen gegen .xml um sie in Loxone verwenden zu können.

                  Viel Spaß damit!
                  Angehängte Dateien
                  Zuletzt geändert von ChrisF; 24.02.2024, 12:30.

                  Kommentar

                  Lädt...