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.
    • mickym
      mickym Most Active @ThomKast last edited by mickym

      @thomkast Ach und falls der HIntergrund eher eine Solaranlage mit Forecast ist - da gibt es wesentlich bessere Alternativen.

      Schau mal: https://forum.iobroker.net/topic/16481/täglich-zu-erwartende-sonnenstunden-mit-iobroker-adaptern/3?_=1635801983160

      Mit Forecast Solar kannst dann sogar die Anordnung Deiner Solarmodule konfigurieren.

      T 1 Reply Last reply Reply Quote 0
      • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

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