API (mit Token) abfragen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • keineahnung
    Extension Master
    • 05.03.2023
    • 197

    #1

    API (mit Token) abfragen

    Moin,
    ich habe gestern (versucht) herauszufinden, wie und ob ich mit dem Miniserver gen2 einen API (mit Token) abfragen kann. Bisher habe ich gelesen, dass Loxone bei den virtuellen Eingängen keinen header für den Token mitsenden kann. Demnach ist eine Abfrage der API nicht möglich.

    Aber vielleicht habt ihr ja noch einen Tipp für mich.

    Gruß

  • Xenobiologist
    Lox Guru
    • 15.01.2016
    • 1125

    #2
    Was genau ist denn dein Ziel? Willst du so etwas wie Loxone-Nodes in Node-RED in anderer Technologie nachbauen? Webserviceaufrufe machen?
    Node-RED mit influxDB und Grafana - z.B. Statistiken auslagern:
    https://www.loxforum.com/forum/germa...d-grafana-visu
    Mit Loxone einen Windows-PC steuern:
    https://www.loxforum.com/forum/faqs-...indows-steuern

    Kommentar

    • keineahnung
      Extension Master
      • 05.03.2023
      • 197

      #3
      Hallo,
      Ich möchte für meine PV-Anlage die Ertagsprognosse von einem Exterm Anbieter (solcast) per API abrufen und in der Loxone App anzeigen.

      Gruß

      Kommentar

      • AlexAn
        Lebende Foren Legende
        • 25.08.2015
        • 4456

        #4
        Dafür gibt es ein Plugin im Loxberry:
        Grüße Alex

        Kommentar

        • keineahnung
          Extension Master
          • 05.03.2023
          • 197

          #5
          Moin Alex,
          danke für den Hinweis. Das Plugin habe ich schon gefunden. Ich wollte es aber vermeiden, dass ich noch einen Raspberry laufen lassen muss.

          Gruß

          Kommentar


          • <Andreas>
            <Andreas> kommentierte
            Kommentar bearbeiten
            musst du nicht, kannst den Loxberry auch in der VM oder auf einen anderen Gerät laufen lassen

            Wenn dir das immer noch zu viel Leistung ist, mit node-red bekommst auch fix eine Solcast Abfrage hin ohne viel gebastel
        • keineahnung
          Extension Master
          • 05.03.2023
          • 197

          #6
          Was ist denn node-red? Das habe ich noch nie gehört.

          Kommentar


          • AlexAn
            AlexAn kommentierte
            Kommentar bearbeiten
            NodeRed ist ein Serverdienst wie HA, IOBroker usw.
            Wenn du aber keinen zusätzlichen Server (Raspberry, VM usw.) laufen lassen möchtest dann ist das für dich nicht relevant.

          • <Andreas>
            <Andreas> kommentierte
            Kommentar bearbeiten
            Iot dings mit den du mit Linien ziehen und ein wenig Javascript recht einfach Schnittstellen herstellen kannst (ist weit verbeitet, sogar in der Industrie und Forschung)

            Du hast ja nicht noch ein Rasberry geschrieben deswegen bin ich ausgegangen du hast minderstens einen, oder vielleicht irgendwo Platz für ne Docker Instanz

            Und wenn du es doch selber machen willst warum nicht einfach per UDP oder HTTP?
        • Tico
          Lox Guru
          • 31.08.2016
          • 1035

          #7
          Die virtuelle HTTP-Anfrage funktioniert in der Config problemlos. Sie müssen nur die folgenden Angaben durch die für Ihre Installation relevanten Angaben ersetzen -

          Code:
          https://api.solcast.com.au/pv_power/forecasts?longitude=115.888&latitude=31.999&capacity=12290&tilt=28&azimuth=-25&loss_factor=0.94&api_key=Your_API_Key&format=json
          longitude
          latitude
          capacity (watts)
          tilt (Grad von der Horizontalen)
          azimuth
          api_key

          Alle Angaben finden Sie in den API-Dokumenten -
          Code:
          https://docs.solcast.com.au/?_ga=2.208470482.152291433.1682120029-1536284197.1682119945
          Die Befehlserkennung ist
          Code:
          "pv_estimate":\v
          Code:
          "pv_estimate":\i"pv_estimate":\i\v
          Code:
          "pv_estimate":\i"pv_estimate":\i\i"pv_estimate":\i\v
          Fügen Sie einfach eine zusätzliche
          Code:
          \i"pv_estimate":\i
          für jede gewünschte sequenzielle Schätzung hinzu
          Zuletzt geändert von Tico; 22.04.2023, 03:42.
          Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

          Kommentar

          • keineahnung
            Extension Master
            • 05.03.2023
            • 197

            #8
            Zitat von Tico
            Die virtuelle HTTP-Anfrage funktioniert in der Config problemlos. Sie müssen nur die folgenden Angaben durch die für Ihre Installation relevanten Angaben ersetzen -

            Code:
            https://api.solcast.com.au/pv_power/forecasts?longitude=115.888&latitude=31.999&capacity=12290&tilt=28&azimuth=-25&loss_factor=0.94&api_key=Your_API_Key&format=json
            longitude
            latitude
            capacity (watts)
            tilt (Grad von der Horizontalen)
            azimuth
            api_key

            Alle Angaben finden Sie in den API-Dokumenten -
            Code:
            https://docs.solcast.com.au/?_ga=2.208470482.152291433.1682120029-1536284197.1682119945
            Die Befehlserkennung ist
            Code:
            "pv_estimate":\v
            Code:
            "pv_estimate":\i"pv_estimate":\i\v
            Code:
            "pv_estimate":\i"pv_estimate":\i\i"pv_estimate":\i\v
            Fügen Sie einfach eine zusätzliche
            Code:
            \i"pv_estimate":\i
            für jede gewünschte sequenzielle Schätzung hinzu
            Hallo Tico,
            danke für deine Antwort.

            Der Code funktioniert.
            Code:
            https://api.solcast.com.au/pv_power/forecasts?longitude=115.888&latitude=31.999&capacity=12290&tilt=28&azimuth=-25&loss_factor=0.94&api_key=Your_API_Key&format=json
            Ich habe einen Virtuellen Eingang angelegt und die code aus dem Webinterface genutzt.
            Code:
            https://api.solcast.com.au/rooftop_sites/OBJECTID/forecasts?api_key=API-KEY&format=json
            hier muss man die UUID von "seinem" Objekt nehmen.

            Leider darf man bei solcast in der kostenlosen Version nur 10 Anfragen am Tag stellen. Ein Virtueller Eingang liefert von die 96 Werten ja nur 1. Kann man die Antwort von Server (json) auf dem Miniserver (möglichst SD-Karten schonend) zwischen speichern?
            Dann könnte man im Anschluss die Werte so oft man möchte lokal "auswerten". Und wie lässt sich mit den Werten dann ein Diagramm erstellen?

            Gruß


            Kommentar

            • Tico
              Lox Guru
              • 31.08.2016
              • 1035

              #9
              Ja, mit der folgenden Logik funktioniert es einwandfrei. Ein virtueller Ausgang wird mit einer HTTP-Anfrage erstellt. Dieser wird mit einem Schedule-Block abgefragt. In meinem Fall hatte ich 20 freie Anfragen, als ich das Solcast-Konto einrichtete. Eine Abfrage pro Stunde ab Sonnenaufgang ist ausreichend.

              Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Virtual Output.png Ansichten: 0 Größe: 7,7 KB ID: 388488
              Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Schedule.png Ansichten: 0 Größe: 31,3 KB ID: 388489

              Der virtuelle Ausgang unterscheidet sich geringfügig von dem, den Sie für den virtuellen Eingang verwendet haben.

              Die virtuelle Ausgangsadresse hat den Anfangsteil der URL -​


              Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Address.png Ansichten: 0 Größe: 12,1 KB ID: 388490


              Der Rest enthält die folgenden Einstellungen (beachten Sie die Option "Save HTTP Reply"). Der Befehl für ON enthält den Rest der zuvor verwendeten URL.


              Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Command for ON.png Ansichten: 0 Größe: 34,4 KB ID: 388491

              Wenn der Scheduler Zeit hatte, den virtuellen Ausgang mindestens einmal zu aktivieren, navigieren Sie mit einem Browser zur folgenden URL (beachten Sie, dass Benutzername und Passwort die Zugangsdaten für den Miniserver sind. Vergessen Sie nicht den Port nach der IP-Adresse)

              Code:
              http://Username:Password@Your_miniserver_IP_address:Port/solcast_pv_forecast.html
              z.B.
              Code:
              http://Me:MyPassword@192.168.2.1:50123/solcast_pv_forecast.html

              Damit wird bestätigt, dass die Datei auf dem Miniserver gespeichert wurde.

              Lassen Sie es mich wissen, wenn Sie bisher Erfolg hatten. Weitere werden folgen.​
              Zuletzt geändert von Tico; 22.04.2023, 10:26.
              Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

              Kommentar

              • keineahnung
                Extension Master
                • 05.03.2023
                • 197

                #10
                Hallo Tico,
                danke für die SUPER Anleitung! Davon könnte sich loxon ein ihrer Doku etwas abschneiden.

                Ich habe noch ein "Problem" bei der Auswertung der Datei. Bei dem JSON steht die Zeit nach dem abzurufenden Wert.

                Code:
                {
                  "forecasts": [
                    {
                      "pv_estimate": 0.8791,
                      "pv_estimate10": 0.6736,
                      "pv_estimate90": 1.4697,
                      "period_end": "2023-04-23T14:00:00.0000000Z",
                      "period": "PT30M"
                    },​
                Wie komme ich mit der Befehlserkennung an die richtigen Wert? Und im nächten Schritt wie komme ich an die zweiten Werte des Zeitraums?

                Code:
                    {
                      "pv_estimate": 0.7163,
                      "pv_estimate10": 0.1169,
                      "pv_estimate90": 2.3502,
                      "period_end": "2023-04-24T14:30:00.0000000Z",
                      "period": "PT30M"
                    },​
                Ich hoffe, du kannst mir nochmal helfen.

                Gruß

                PS ich habe es mit XML versucht, da bekomme ich aber die Meldung "only HTTP headers, no content data." Ich vermutte es liegt daran, dass in der xml-Datei die Werte nicht in " stehen.

                Kommentar

                • Tico
                  Lox Guru
                  • 31.08.2016
                  • 1035

                  #11
                  Die beigefügte Datei Solcast.loxone enthält die Logik, um eine Vielzahl von Zeiträumen (die nächsten 8 Stunden, die nächsten 16 Stunden, die nächsten 24 Stunden) zu erfassen.

                  Leider werden die virtuellen Eingaben nicht übernommen, so dass Sie sie selbst erstellen müssen. Diese virtuellen Eingänge fragen die interne Datei ab, die auf dem Miniserver gespeichert ist.

                  Die Adresse des virtuellen HTTP-Eingangs hat die folgenden URL-Einstellungen

                  Code:
                  http://Username:Password@MiniserverIP:Port/dev/fsget/user/common/solcast_pv_forecast.html
                  z.B..
                  Code:
                  http://Me:MyPassword@192.168.2.1:50123/dev/fsget/user/common/solcast_pv_forecast.html
                  Der Abfragezyklus kann auf 3600 Sekunden (30 Minuten) eingestellt werden. Ich gehe davon aus, dass Sie die interne Datei tagsüber jede Stunde aktualisieren lassen. Timeout 4000ms und erlaubte Timeouts 10.

                  Nun müssen Sie 48 Befehle erstellen.... und jeder Befehl muss ein zusätzliches \i"pv_estimate"\i als der vorherige Befehl haben.

                  Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Command recognition.png Ansichten: 0 Größe: 28,4 KB ID: 388697 Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Periods.png Ansichten: 0 Größe: 7,8 KB ID: 388698

                  Hier ist das Beispiel für die ersten paar Befehle und den 48. Wenn Sie bei Punkt 48 angelangt sind, kopieren Sie Ihren Befehl neben diesen und überprüfen Sie, dass Sie keinen Fehler in der Länge haben.

                  Code:
                  \i"pv_estimate":\i\v
                  Code:
                  \i"pv_estimate"\i\i"pv_estimate":\i\v
                  Code:
                  \i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate":\i\v
                  Code:
                  \i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate"\i\i"pv_estimate":\i\v
                  Natürlich können Sie Ihre gewünschte Vorausschau mit zusätzlicher Logik variieren, z. B. die nächsten 3 Stunden usw. Denken Sie daran, dass der Zeitstempel unerheblich ist. Periode 1 wird immer die nächste rollierende +30 Minuten sein. Zeitraum 2 sind die nächsten gleitenden +30 bis +60 Minuten usw.
                  Angehängte Dateien
                  Zuletzt geändert von Tico; 24.04.2023, 06:34.
                  Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                  Kommentar

                  • keineahnung
                    Extension Master
                    • 05.03.2023
                    • 197

                    #12
                    Hallo,
                    Tico nachmals DANKE für deine Hilfe und guten Anregungen!!!

                    Ich habe es ein bisschen anderes gemacht. Bin aber noch am Testen.

                    Mit
                    Code:
                    03:00:00Z</PeriodEnd><PvEstimate>\v
                    suche ich den ersten Eintrag (bei mit geht die Sonne nie vor 4:58 Uhr auf).

                    Die Einträge für +24 suche ich mit
                    Code:
                    T00:00:00Z</PeriodEnd>\i11:00:00Z</PeriodEnd><PvEstimate>\i\v
                    Um dann nur die noch wichtigen Daten auszuwerten, überprüfe ich mit einem Formelbaustein ob der Eintrag in der Vergangenheit liegt und passen es auf kWh an.
                    Code:
                    IF(I1>I2;0;(I3+I4)/2)
                    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Prognose.jpg
Ansichten: 1278
Größe: 55,3 KB
ID: 389134

                    Zum Schuss alles Zusammenrechnen und fertig

                    Kommentar


                    • Tico
                      Tico kommentierte
                      Kommentar bearbeiten
                      Ich habe die Solcast-Logik vor ein paar Jahren in ein Skript auf einem Raspberry Pi ausgelagert (als ich einen alten Miniserver Gen 1 hatte und mir die Ressourcen ausgingen). Ich denke darüber nach, sie wieder an Bord zu holen. Die neue IF-Anweisung im Formula-Block bietet eine Menge Vielseitigkeit.
                  • Triple-M
                    LoxBus Spammer
                    • 17.12.2018
                    • 316

                    #13
                    Ich würde auch gerne die PV Vorhersage ohne zusätzliche Hardware in Form von Rasberry oder Ähnliches abrufen. Gibt es eine aktuelle Beispiel Config wie das mit Solcast klappen kann?

                    Tico
                    Du wolltest deine Logik zurückholen, hast du das evtl. Bereits gemacht und würdest deine Logik teilen?

                    Kommentar

                    • Tico
                      Lox Guru
                      • 31.08.2016
                      • 1035

                      #14
                      ​Es sind viele Endpunkte von Solcast verfügbar. Der wahrscheinlich einfachste ist der folgende in einem virtuellen Ausgang -

                      Adresse.
                      Code:
                      https://api.solcast.com.au
                      Verbindung nach dem Senden schließen - angehakt
                      Befehl für ON -
                      Code:
                      /rooftop_sites/Ihre_Resource_ID_hier/forecasts?api_key=Ihre_API_Key_hier&format=xml
                      HTTP-Methode für ON - GET
                      HTTP-Antwort speichern -
                      Code:
                      /user/common/solcast_pv_forecast.xml
                      Als digitalen Ausgang verwenden - angekreuzt.

                      Auslösung durch einen Zeitplan mit den verfügbaren Anfragen über die Tagesstunden verteilt.

                      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Schedule2.png Ansichten: 0 Größe: 37,4 KB ID: 411116

                      Erstellen Sie dann virtuelle Eingänge -
                      URL -
                      Code:
                      http://Username:Password@MiniserverIP:Port/dev/fsget/user/common/solcast_pv_forecast.xml
                      d.h..
                      Code:
                      http://admin:Secret@10.1.1.5:7777/dev/fsget/user/common/solcast_pv_forecast.xml
                      Abfrage-Zyklus - 300

                      Erste Befehlserkennung (beachten Sie, dass ich UTC+8 bin, dies entspricht der Morgendämmerung um 5 Uhr) -
                      Code:
                      21:00:00Z</PeriodEnd><PvEstimate>\v
                      Zweite Befehlserkennung
                      Code:
                      21:30:00Z</PeriodEnd><PvEstimate>\v
                      usw.

                      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Daylight hours.png Ansichten: 0 Größe: 30,9 KB ID: 411117


                      Verwenden Sie die Formel, die keineahnung oben gepostet hat. Erstellen Sie so viele virtuelle Eingänge wie nötig, um die Tageslichtstunden abzudecken. Addieren Sie die Ergebnisse für eine fortlaufende Produktionszählung (kWh) für die verbleibenden Stunden des Tages.

                      Sie können auch den Spotpreis-Optimierer verwenden, um eine visuelle Darstellung der prognostizierten Tagesproduktion zu erhalten.​


                      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Spot Price Optimizer.png Ansichten: 0 Größe: 59,5 KB ID: 411118
                      Zuletzt geändert von Tico; 18.11.2023, 10:03.
                      Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                      Kommentar

                      • Triple-M
                        LoxBus Spammer
                        • 17.12.2018
                        • 316

                        #15
                        Tico
                        keineahnung

                        Ich habe die virtuellen Ausgänge (ich habe 2 Hausseiten) angelegt und auch überprüft das zwei separate Dateien gespeichert werden. Das klappt alles soweit. Ich verstehe aber noch nicht wie ich dann weiter vorgehen soll/muss mit den virtuellen Eingängen? Welche und wieviele muss ich dazu jetzt erstellen?

                        Kommentar

                        Lädt...