Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Accuweather - stündliche Werte nicht komplett

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Accuweather - stündliche Werte nicht komplett

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      ThomKast @mickym last edited by ThomKast

      @mickym
      Hallo Micky, habe mir die Infos zu Forecast.Solar und SolarWetter angeschaut. Komme leider mit beidem nicht weiter...

      Bei Forcast.Solar finde ich keinen releasten Adapter und kenne mich mit script zu wenig aus, um es eigenständig umsetzen zu können.

      SolarWetter bietet eigentlich genau das was ich suche. Allerdings finde ich beim Anbieter keine Möglichkeit Zugangsdaten zu generieren. Und ohne diese läuft der Adapter nicht. Auch ist mir nicht klar wie oft die Daten aktualisiert werden.

      Dann habe ich noch bei OpenWeather geschaut. Dort liefert die One Call API die gewünschten Werte. Auch wäre der Free-Account mit 1.000 calls/day bei weitem ausreichend.
      Es existiert zwar ein Adapter im iob für OpenWeather, aber dieser stellt die hourly-Werte nicht zur Verfügung.
      Den Request für nur "hourly-Werte" konnte ich mir auch noch erarbeiten:
      https://api.openweathermap.org/data/2.5/onecall?lat=xxxxx&lon=yyyyy&exclude=minutely,current,daily,alerts&appid=zzzzz&units=metric&lang=de
      Allerdings habe ich keinen Plan, wie ich den response im iob als Datenpunkte abbilden kann. Dazu fehlen mir einfach die Denkanstöße 🙂

      mickym 2 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @ThomKast last edited by

        @thomkast sagte in Accuweather - stündliche Werte nicht komplett:

        Bei Forcast.Solar finde ich keinen releasten Adapter und kenne mich mit script zu wenig aus, um es eigenständig umsetzen zu können

        Wie gesagt - wenn Du den NodeRed Adapter nutzen willst, dann kann ich Dich gerne hier unterstützen und beschreiben, was Du tun musst und wir machen das entweder mit ForecastSolar oder der OneCallAPI und erstellen Dir die Datenpunkte.

        Bei dem ForcastSolar musst Du eigentlich nur Deinen Längen und Breitengrad im Browser eingeben und
        590f9876-5904-434f-9607-8e0674ccb344-image.png

        Die nächsten 3 Zahlen sind
        in dem Aufruf

        178a2ea2-fea4-4f72-ad34-08c332c95ae9-image.png

        Neigung (dec), Ausrichtung (az) und kW der Panele.

        Wenn Du mit einem Openweather API Key die Daten im Browser bekommst dann kann ich Dir ebenfalls helfen, die mit Hilfe von NodeRed in Datenpunkte zu schreiben.

        Du musst halt immer nur testen, ob Du im Browser richtige Daten bekommst. Wenn Du den OneCall von Openweather im Browser machst musst halt Deinen API Key hinten dran hängen.

        805f31c1-f1be-4f78-a517-bdb3bff03190-image.png

        1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @ThomKast last edited by mickym

          @thomkast sagte in Accuweather - stündliche Werte nicht komplett:

          https://api.openweathermap.org/data/2.5/onecall?lat=xxxxxxxxxxx&lon=xxxxxxxxxxxxx&exclude=minutely,current,daily,alerts&appid=XXXXXXXXXXXXXXXXXXX&units=metric&lang=de

          Ich hab den mal benutzt und mit einem ganz einfachen Node-Red Flow bekommst Du die Daten aus Deinem Aufruf als Datenpunkte in den iobroker.

          3af438ba-b651-4ed6-b366-8755b570a476-image.png

          Für die fehlenden Objekte lassen wir dann auch noch ein Skript drüber laufen.

          Das sieht dann im iobroker so aus:

          64cbb693-f64f-4083-8fdb-2c5bef4eb804-image.png

          Außerdem hast Du Post (PN 😉 )

          Also wenn Du das so wie oben haben willst, dann installiere Dir mal den NodeRed Adapter im iobroker. In der Konfiguration des Adapters

          51f39d9d-9ebd-4bbc-b8ae-b40ad7f3f665-image.png

          machst Du die Konvertierung in Zeichenkette raus und lässt die Erstellung von Fremdobkjekten zu.

          T 2 Replies Last reply Reply Quote 0
          • T
            ThomKast @mickym last edited by

            @mickym

            So, da bin ich wieder... Habe noch 2 zwei-beinige-Projekte, die zu erst zur Ruhe kommen wollen 😁

            Mit node-red wollte ich mich eh mal beschäftigen. Dann scheint wohl jetzt eine guter Moment zu sein 😉 . Arbeite mich anhand Deiner Infos voran und melde mich dann.

            ... schon mal wieder vielen Dank vorab!

            1 Reply Last reply Reply Quote 0
            • T
              ThomKast @mickym last edited by

              @mickym

              @mickym sagte in Accuweather - stündliche Werte nicht komplett:

              @thomkast sagte in Accuweather - stündliche Werte nicht komplett:

              https://api.openweathermap.org/data/2.5/onecall?lat=xxxxxxxxxxx&lon=xxxxxxxxxxxxx&exclude=minutely,current,daily,alerts&appid=XXXXXXXXXXXXXXXXXXX&units=metric&lang=de

              Ich hab den mal benutzt und mit einem ganz einfachen Node-Red Flow bekommst Du die Daten aus Deinem Aufruf als Datenpunkte in den iobroker.

              3af438ba-b651-4ed6-b366-8755b570a476-image.png

              Für die fehlenden Objekte lassen wir dann auch noch ein Skript drüber laufen.

              Das sieht dann im iobroker so aus:

              64cbb693-f64f-4083-8fdb-2c5bef4eb804-image.png

              Außerdem hast Du Post (PN 😉 )

              Also wenn Du das so wie oben haben willst, dann installiere Dir mal den NodeRed Adapter im iobroker. In der Konfiguration des Adapters

              51f39d9d-9ebd-4bbc-b8ae-b40ad7f3f665-image.png

              machst Du die Konvertierung in Zeichenkette raus und lässt die Erstellung von Fremdobkjekten zu.

              Also der node-red-Adapter läuft und die nötigen Nodes habe ich auch schon zusammengeklickt...
              c7cc021f-cf5c-4f9b-8e5e-4b135187cf09-image.png
              Aber da fehlen doch noch die ganzen Definition dazu...Oder?

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @ThomKast last edited by mickym

                @thomkast Wenn Du die NodeRed-Adaptereinstellungen gemacht hast, dann brauchst Dir keine Nodes zusammensuchen, sondern importierst den Flow einfach:

                Openweather One Call.json

                Falls Du im Chrome auf die Datei klickst wird der Text aufgemacht dann mit rechter Maustaste mit "Speichern unter " irgendwo lokal abspeichern.

                Anschließend gehst Du in das rechte Menü und klickst auf Import:

                2b7a2918-0970-4948-b4ed-b5482314304a-image.png

                Klickst in dem Fenster auf Datei importieren und wählst die OPenweather One Call.json Datei aus.

                Über die Zwischenablage gehts dieses Mal nicht, da irgendein Apostroph den Import verhindert.

                In der Inject Node änderst Du wieder Deine Geodaten und Deinen API Key.

                644d417f-25f8-4e1c-8892-914476a401dc-image.png

                In der msg.top Node - kannst Du noch einen anderen Namen angeben, unter dem Du die Datenpunkte unter 0_userdata.0 anlegen willst. Ich habs halt mal openweather genannt. 😉

                41a3bcfd-3c20-4031-87cb-b7fe72883590-image.png

                Wenn das alles soweit geht, feuerst Du die Inject Node ab und DU solltest die Datenpunkte alle haben und dann müssen wir das seit dem admin5 noch fein schleifen. 😉

                T 1 Reply Last reply Reply Quote 0
                • T
                  ThomKast @mickym last edited by

                  @mickym
                  Import ist erledigt. Im inject habe ich die URL komplettiert.
                  msg.top sieht nun so aus.
                  2e49d426-a43e-49e7-ba6d-410df70c32bd-image.png
                  Rest habe ich nur angeschaut und nichts geändert...

                  Allerdings finde ich keine neue Gruppe und auch keine Datenpunkte in 0_userdata..?..?

                  mickym 1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @ThomKast last edited by mickym

                    @thomkast

                    1. Hast Du den Flow übernommen
                      6b3aeba2-30ad-47cb-934f-cec883d1d5b0-image.png darf nicht so rot sein, sondern muss grau sein.

                    2. Hast Du dem NodeRed Adapter erlaubt Objekte zu erstellen
                      c87eda93-5287-470a-a03b-be1695808aea-image.png

                    3. Hast Du den Flow auch über die Inject Node gestartet?

                    a2af70b8-64d2-42bf-abbf-83ecdb03801b-image.png

                    habs Dir mal markiert wie Du den Flow startest. 😉

                    Wenn alles geklappt hat, dann hast Du

                    e45ad474-45b2-4aca-a4cc-e72499872bec-image.png

                    unter 0_userdata => 0 => openweather => hourly => und dann 48 Unterordner.

                    Wenn nicht müssen wir halt über debug Nodes schauen, wo der Fehler liegt.

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      ThomKast @mickym last edited by

                      @mickym
                      Ja, glaubt man es denn... Kaum macht man es richtig, schon funktionierts.
                      Ok, das sind echt die ersten Schritte. Und den inject zu starten hat ich nicht auf der Schnur.
                      Schaue mir jetzt mal die Werte an.

                      mickym T 2 Replies Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @ThomKast last edited by

                        @thomkast Helf Dir gleich weiter. Mach noch einen Flow für Dich. 😉

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

                          @thomkast
                          Keine Hektik 👍

                          Die 47 Folder ergeben sich offensichtlich aus den Daten. Allerdings ist die Uhrzeit nicht als DATE darstellbar. Die Werte stehen dann auf 1970... Daher weiß ich jetzt nicht welche zeit der Folder 0h enthält.
                          74da854a-76f1-4f92-8a13-0452f5d44e6a-image.png
                          Könnte der Wert als reguläres Datum dargestellt werden?

                          mickym 1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @ThomKast last edited by mickym

                            @thomkast Das ist gleich mein 2. Flow für Dich - wie willst Du den Datumspunkt gerne genannt haben, habs gerade

                            a498de2b-c005-4bc3-b719-4c77930b7c04-image.png

                            forcastTime genannt - aber such Dir gerne was anderes aus, dann ändere ich das noch schnell in dem Flow.

                            Normalerweise darf da aber gar kein Datum drin stehen, sondern nur eine Zahl

                            66010d28-d04f-437c-8e6b-8b03b4f792cd-image.png

                            T 2 Replies Last reply Reply Quote 0
                            • T
                              ThomKast @mickym last edited by

                              @mickym
                              Alles bestens, ist doch ein guter Vorschlag.
                              Habe das UNIX-Datum mal umgerechnet. 0h bedeutet die aktuelle Stunde - also 2200.

                              1 Reply Last reply Reply Quote 0
                              • T
                                ThomKast @mickym last edited by

                                @mickym sagte in Accuweather - stündliche Werte nicht komplett:

                                @thomkast Das ist gleich mein 2. Flow für Dich - wie willst Du den Datumspunkt gerne genannt haben, habs gerade

                                a498de2b-c005-4bc3-b719-4c77930b7c04-image.png

                                forcastTime genannt - aber such Dir gerne was anderes aus, dann ändere ich das noch schnell in dem Flow.

                                Normalerweise darf da aber gar kein Datum drin stehen, sondern nur eine Zahl

                                66010d28-d04f-437c-8e6b-8b03b4f792cd-image.png

                                Ja klar. Ich habe die Rolle manuell auf DATE geändert. Dachte es wird dann direkt korrekt dargestellt. Als Rolle STATE steht dann das UNIX UTC Datum/Uhrzeit als Zahl drin.

                                mickym 3 Replies Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @ThomKast last edited by mickym

                                  @thomkast So wenn Du in Deinen bestehenden Flow noch folgende Nodes importierst, dann wird das um neue Datenpunkte mit ausgeschriebenem Datum ergänzt:

                                  ba98d939-8405-4847-83d4-68001e535641-image.png

                                  Dieses Mal kannst Du den Code direkt über die Zwischenablage importieren:

                                  [
                                     {
                                         "id": "4d65b9d.07b0148",
                                         "type": "ioBroker in",
                                         "z": "918d8a88.bb7cf8",
                                         "name": "",
                                         "topic": "0_userdata.0.openweather.hourly.*.dt",
                                         "payloadType": "value",
                                         "onlyack": "",
                                         "func": "all",
                                         "gap": "",
                                         "fireOnStart": "false",
                                         "x": 490,
                                         "y": 180,
                                         "wires": [
                                             [
                                                 "2fb2b1d1.03df6e"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "2fb2b1d1.03df6e",
                                         "type": "change",
                                         "z": "918d8a88.bb7cf8",
                                         "name": "",
                                         "rules": [
                                             {
                                                 "t": "change",
                                                 "p": "topic",
                                                 "pt": "msg",
                                                 "from": "(.*)\\/dt",
                                                 "fromt": "re",
                                                 "to": "$1",
                                                 "tot": "str"
                                             },
                                             {
                                                 "t": "change",
                                                 "p": "topic",
                                                 "pt": "msg",
                                                 "from": "/",
                                                 "fromt": "str",
                                                 "to": ".",
                                                 "tot": "str"
                                             },
                                             {
                                                 "t": "set",
                                                 "p": "topic",
                                                 "pt": "msg",
                                                 "to": "topic & '.forcastTime'",
                                                 "tot": "jsonata"
                                             }
                                         ],
                                         "action": "",
                                         "property": "",
                                         "from": "",
                                         "to": "",
                                         "reg": false,
                                         "x": 770,
                                         "y": 180,
                                         "wires": [
                                             [
                                                 "a732a96b.a95798"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "a732a96b.a95798",
                                         "type": "change",
                                         "z": "918d8a88.bb7cf8",
                                         "name": "",
                                         "rules": [
                                             {
                                                 "t": "set",
                                                 "p": "payload",
                                                 "pt": "msg",
                                                 "to": "$moment((payload)*1000).locale(\"de\").tz('Europe/Berlin').format('DD.MM.YY [um] HH:mm')",
                                                 "tot": "jsonata"
                                             }
                                         ],
                                         "action": "",
                                         "property": "",
                                         "from": "",
                                         "to": "",
                                         "reg": false,
                                         "x": 990,
                                         "y": 180,
                                         "wires": [
                                             [
                                                 "5014a26.bf5065c"
                                             ]
                                         ]
                                     },
                                     {
                                         "id": "5014a26.bf5065c",
                                         "type": "ioBroker out",
                                         "z": "918d8a88.bb7cf8",
                                         "name": "",
                                         "topic": "",
                                         "ack": "true",
                                         "autoCreate": "true",
                                         "stateName": "",
                                         "role": "",
                                         "payloadType": "string",
                                         "readonly": "false",
                                         "stateUnit": "",
                                         "stateMin": "",
                                         "stateMax": "",
                                         "x": 1200,
                                         "y": 180,
                                         "wires": []
                                     }
                                  ]
                                  

                                  Dann bekommst Du die folgenden Nodes noch dazu:

                                  659ab3ae-2b23-4f99-8eb9-3d8e458e5565-image.png

                                  Eigentlich müsste es ja forecastTime heißen:

                                  Musst halt hier nochmal ändern:

                                  ddb5be3d-68ee-44d8-9343-fca5b0ad100b-image.png

                                  T 1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @ThomKast last edited by

                                    @thomkast So nun noch ein paar Ergänzungen - weil seit dem admin5 sich einiges geändert hat und in NodeRed hat man das bei den iobroker-out Nodes nicht mitberücksichtigt.

                                    Bei den ganzen Ordnern fehlen leider die Objekte (rot markiert):

                                    fc2212fb-098c-4f2c-a10b-87bd030e93d9-image.png

                                    Deshalb bitte folgendes Skript im Javascript Adapter als Javascript importieren:

                                    /**
                                    * Zweck:       Korrigiert übergeordnete Ordnerstrukturen eines Datenpunkts
                                    * Datum:      07.08.2021
                                    * Autor:       @fastfoot
                                    */
                                     
                                    //              In den Settings der Javascript-Instanz muss setObject erlaubt sein!!!
                                     
                                    let arr = [],
                                       id = '';
                                     
                                    const ids = $('0_userdata.0.*');
                                    ids.each(idTmp => {
                                       arr=idTmp.split('.');
                                       arr.splice(arr.length-1);
                                       id=arr.join('.');
                                       if(arr[0] === '0_userdata' || arr[0] === 'alias' || arr[0] === 'mqtt' || arr[0] === 'javascript'){
                                           correctObject(id, arr);
                                       }
                                    })
                                     
                                    function correctObject(id,arr){
                                       if(arr.length === 2) return;
                                       if(!existsObject(id)){
                                           let obj = {};
                                           obj = {
                                               type: 'folder',
                                               common:{
                                                   name: arr[arr.length - 1]
                                               }
                                           }
                                           extendObject(id, obj, e => {
                                               if (e) log('Fehler beim Schreiben des Objektes: '+ id + ' ' + e);
                                           })
                                       }
                                       arr.splice(arr.length - 1);
                                       id = arr.join('.');
                                       correctObject(id, arr);
                                    }
                                    

                                    Dieses Skript musst Du einmal Laufen lassen und immer dann - wenn Du mal den ganzen Openweather Ast löscht.

                                    43effdba-1509-458c-954a-534a52bc4f8f-image.png

                                    Sobald das Skript einmal gelaufen ist, dann sind das wieder saubere Folder Objekte:

                                    5b04b5af-20b3-409e-beeb-a45a9d50a244-image.png

                                    1 Reply Last reply Reply Quote 0
                                    • T
                                      ThomKast @mickym last edited by

                                      @mickym
                                      Also, Du machst mich vollends sprachlos....

                                      Klappt perfekt und die Daten sehen gut aus. Damit kann ich erst mal meine weiteren Überlegungen anstellen.

                                      Müsste jetzt nicht noch der inject per CRON automatisiert werden?
                                      Hattest Du bei OW gelesen wie oft die Daten aktualisiert werden?

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @ThomKast last edited by

                                        @thomkast Und damit Du wenn alles klappt nicht immer auf die Inject - Node drücken musst - öffnest Du die Inject Node einfach und gibst unten an, in welchen Zeitintervallen die Openweather API aufgerufen werden soll:

                                        69d62f01-9077-42ee-b9c9-7fb56d64a9c2-image.png

                                        T 1 Reply Last reply Reply Quote 0
                                        • mickym
                                          mickym Most Active @ThomKast last edited by mickym

                                          @thomkast sagte in Accuweather - stündliche Werte nicht komplett:

                                          @mickym
                                          Also, Du machst mich vollends sprachlos....

                                          Klappt perfekt und die Daten sehen gut aus. Damit kann ich erst mal meine weiteren Überlegungen anstellen.

                                          Müsste jetzt nicht noch der inject per CRON automatisiert werden?
                                          Hattest Du bei OW gelesen wie oft die Daten aktualisiert werden?

                                          Hab ich Dir gerade geschrieben, in der Inject-Node kannst Du selbst das Intervall bestimmen, wie oft dieses automatisch abruft. Ich machs alle 10 Minuten - aber bei 1000 Aufrufen/Tag solltest Du nun keine Probleme mehr haben. 😉

                                          1 Reply Last reply Reply Quote 0
                                          • T
                                            ThomKast @mickym last edited by

                                            @mickym
                                            Oh cool! Sogar mit "Intervall zwischen Uhrzeiten".

                                            Vielleicht noch den eigentlichen UseCase zum Ende der Umsetzung 🤦‍♂️ ...

                                            Wir haben eine Wärmepumpe erhalten, die über SGready den Wasserspeicher um 5K überhitzen kann. Wenn also viel PV-Überschuss zur Verfügung steht, kann der Speicher zusätzlich aufgeheizt werden und damit bei späterer Nutzung Energie gespart werden.
                                            Das Problem ist nur, wenn ich vom reinen Einspeisewert ausgehe, dann kommt es vor, dass die Einspeisemenge einbricht, die Wärmepumpe aber dennoch mind. 10 Minuten läuft und und für diese Dauer dann Strom zugekauft werden muss.
                                            Sofern die OpenWeather-UVindex-Werte einigermaßen passen, könnte erst ab einem entsprechend hohen Wert das SGready-Signal Verwendung finden.

                                            Vielleicht hilft Deine Umsetzung ja auch noch anderen der Community. Mir hast Du auf alle perfekt weitergeholfen.
                                            Schaue mir die Tage mal node-red und Deine Umsetzung tiefer an. Dann würde ich mich vielleicht gerne noch mal bei Dir melden.

                                            Für heute meinen herzlichen Dank für Deine Hilfe. 🎆

                                            mickym 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            811
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            accuweather hourly datenpunkte
                                            2
                                            33
                                            1526
                                            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