Ankündigung

Einklappen
Keine Ankündigung bisher.

DWD Wettervorhersage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Eine Alternative wäre, nur EINEN LBS zu verwenden und z.B. 10 DWD-Werte auf 10 Eingängen selbst zu definieren (evtl. mit Zusatz wie sum, max ..) Ich glaube mich zu Erinnern, dies hast Du bei einer der ersten Versionen bereits so vorgesehen ?!
    Zuletzt geändert von ak68; 30.07.2019, 08:22.

    Kommentar


      Naja genau deshalb ist ja die Einzelabfrage entstanden, da jeder andere Infos für jede Messgröße möchte. Die "Standardinfos" gibt es ja schon mit diesem LBS. Das sind Tageswerte, die vom DWD ermittelt werden. Da gibt es also in den Rohdaten des DWD nur einen (oder zwei) Datenpunkte für 24h. (LBS19000937)

      Der LBS für die Einzelabfrage kann die Messgrößen, die "nur" als Stundendaten vorliegen kumulieren (min, max, sum) oder einen spezifischen Stundenwert auslesen. Wenn man den jetzt auf mehrere Größen aufbohren will, bekommt man doppelt so viele Eingänge wie Messgrößen, da zu jeder Messgröße die Kumulation oder die Stunde angegeben werden muss (E4 + E5) x Anzahl der Messgrößen.
      Oder ich nutze ein Trennzeichen, um beides in eine Input-Zelle zu bekommen (z.B. PPPP|max). Aber das ist auch nicht gerade schön.
      Aber das Grundproblem bleibt ja bestehen. Wenn einer dann mal mehr als 10 Einzelabfragen machen will, muss eine zweite Instanz her und dann ist das "Problem" wieder da.

      Ich denke die Kaskadierung ist eine gute Lösung. Vielleicht finde ich noch eine Möglichkeit, dass die Instanzen erkennen, dass bereits eine Instanz läuft und dann wartet. Vielleicht eine art Lock-Datei o. ä. Dann wäre der Nutzer völlig frei von Kaskadierung oder Verzögerung.
      Gruß
      Stefan

      Kommentar


        Lock-Datei wäre doch eine Lösung, oder ein Flag in der DB. Allerdings fände ich nach wie vor die Idee mit dem einzelnen LBS, welcher sich nur um den Download kümmert, am einfachsten und sinnvollsten. Warum sollte das kompliziert sein für den Anwender, viele LBS setzen andere voraus (Beschattung z.B. den Sonnenstand usw.) oder gar die Installation von Linux-Diensten. Hier genügt doch ein deutlicher Hinweis in der Hilfe. Damit hast du die Datei garantiert lokal liegen und das auch nur in dem Rhytmus, der benötigt wird. Prüfung von laufenden Prozessen dagegen sind recht undurchsichtig, wer weiß ob der gerade laufende denn eine Datei lädt und sicher entpackt, evtl. hängt der sich auch einmal auf usw.

        Kommentar


          @MrIcemanLE:

          Für den(LBS19000937) existiert der Ausgang A5 "Stunde".
          Kannst du das mal kurz erklären, was dort genau ausgegeben wird?

          Ich verstehe es aktuell so, dass dort die nächsten 10 Werte der nächsten 10 Stunden ausgegeben werden. Wenn ich also den ersten Wert nehme habe ich den Wert für die aktuelle Stunde.
          Korrekt?

          Kommentar


            Du meinst sicher den *939 Einzelwertabfrage? Denn der 937 hat keinen Stundenausgang.

            Bei der Einzelwertabfage kann man die Daten für einen Tag "zusammenfassen" lassen. Da ja nur ein Wert pro Tag ausgegeben wird, muss man sich bei manchen Werten entscheiden, wie man diesen ermitteln will. Beispiel: Luftfeuchtigkeit. Den einen interessiert das Maximum, den anderen der Wert zu einer bestimmten Uhrzeit etc.

            Wenn man jetzt also das Maximum der Luffeuchtigkeit haben will, liefert der DWD Stundenwerte zurück und der Ausgang enthält dann die Stunde des Tages in der das gesuchte Maximum auftreten wird.

            Noch ein Besipiel ist die Höchsttemperatur. Hier gibt es zwei Möglichkeiten. Zum einen gib es Vorhersagewerte im Stundentakt vom DWD. Da kann man mit der max-Funktion des LBS die "maximale" Stunde ermitteln. Unter einer anderen Messgröße (Tx [glaube ich]) bekommt man vom DWD genau zwei Werte für einen Vorhersagetag. Das Maximum von 18Uhr bis 6Uhr und das Maximum von 6Uhr bis 18Uhr. Diese Werte werden vom DWD immer in die 6Uhr und 18Uhr "Spalte" geschrieben. Daher geht hier die Info über die maximale Stunde verloren. Dafür bekommt man über diesen Weg die maximale vorhergesagte Temperatur. Diese wird in der Regel höher sein, also die die man mit dem maximum der einzelnen Stundenwerte ermitteln könnte.

            Lange Rede kurzer Sinn: A5 gibt die Stunde aus in der das Min/Max am jeweiligen Tag in den Vorhersagedaten gefunden wurde.
            Gruß
            Stefan

            Kommentar


              Würde vielleicht jemand mal ein Beispiel der Logik zeigen, wie man das mit den Wettersymbolen macht?
              Beim DWD bekommt man ja auch Wettericons, welche Dateinamen aus Zahlen besitzen.
              Die vom LBS ausgegebenen Zahlen an A16 enthalten aber z.B. aktuell Zahlen, welche als Wettericon gar nicht vorhanden sind...

              Kommentar


                Zitat von Glotzkowski Beitrag anzeigen
                Die vom LBS ausgegebenen Zahlen an A16 enthalten aber z.B. aktuell Zahlen, welche als Wettericon gar nicht vorhanden sind...
                Schau dir mal diese Tabelle an, dort sollten die Zahlen zu den Icons passen
                Tabellenblatt "Zuordnung von Symbolen"
                Gruß David

                Kommentar


                  Zitat von Glotzkowski Beitrag anzeigen
                  Die vom LBS ausgegebenen Zahlen an A16 enthalten aber z.B. aktuell Zahlen, welche als Wettericon gar nicht vorhanden sind...
                  Ich habe dazu einen Mapping-LBS geschrieben. http://service.knx-user-forum.de/?co...ad&id=19000938
                  Dieser nutzt die Icons, die auch der WU LBS genutzt hat: https://erikflowers.github.io/weather-icons
                  Gruß
                  Stefan

                  Kommentar


                    gibt es auch irgendeinen Wetterdienst ausser Darksky(der ist doch ein bissi ungenau oder?) der auch in Österreich funktioniert? WU war super

                    Kommentar


                      Habe einmal eine Frage. Bei mir ist der Wochentag kurz bei der Vorhersage auf Englisch und bei den Einzelwerten auf Deutsch. Woran liegt dass und wie kann ich es generell auf Deutsch stellen? Danke und Gruß. PS Die Beisteine sind super.
                      deutsch-englisch.png

                      Kommentar


                        Da fehlt ein kleiner Code-Schnipsel. Im Quelltext des LBS müsstest du folgendes ergänzen:
                        Code:
                        ###[LBS]###
                        <?php
                        [COLOR=#c0392b]setlocale(LC_TIME, "de_DE.utf8");[/COLOR]
                        function LB_LBSID($id) {
                        Werde das in der nächsten Version mit ändern.
                        Gruß
                        Stefan

                        Kommentar


                          Zitat von MrIcemanLE Beitrag anzeigen
                          Werde das in der nächsten Version mit ändern.
                          Sollte man sowas nicht nur im EXEC Teil tun und sonst tunlichst unterlassen?

                          Kommentar


                            Zitat von wintermute Beitrag anzeigen
                            Sollte man sowas nicht nur im EXEC Teil tun und sonst tunlichst unterlassen?
                            Das ist ein guter Punkt. Genau das habe ich getan. Aber die Einstellung funktioniert nur, wenn die auch im LBS-Teil verbaut ist.

                            LBS 19000937 Sprache funktioniert nicht:
                            Code:
                            ###[LBS]###
                            <?php
                            function LB_LBSID($id) {
                            if ($E = logic_getInputs($id)) {
                            setLogicElementVar($id, 103, $E[20]['value']);
                            //set loglevel to #VAR 103
                            if (logic_getStateExec($id) == 0) {
                            if ($E[1]['refresh'] == 1 && $E[1]['value'] != 0 && (!isEmpty($E[2]['value']))) {
                            logic_setInputsQueued($id, $E);
                            logic_callExec(LBSID, $id);
                            }
                            } else {
                            logic_setInputsQueued($id, $E);
                            }
                            }
                            }
                            ?>
                            ###[/LBS]###
                            
                            ###[EXEC]###
                            <?php
                            require(dirname(__FILE__) . "/../../../../main/include/php/incl_lbsexec.php");
                            set_time_limit(300);
                            sql_connect();
                            [COLOR=#c0392b]setlocale(LC_TIME, "de_DE.utf8");[/COLOR]
                            LBS 19000939 Sprache funktioniert:
                            Code:
                            ###[LBS]###
                            <?php
                            [COLOR=#c0392b]setlocale(LC_TIME, "de_DE.utf8");[/COLOR]
                            function LB_LBSID($id) {
                            if ($E = logic_getInputs($id)) {
                            setLogicElementVar($id, 103, $E[10]['value']);
                            //set loglevel to #VAR 103
                            if (logic_getStateExec($id) == 0) {
                            if ($E[1]['refresh'] == 1 && $E[1]['value'] != 0 && (!isEmpty($E[2]['value']))) {
                            logic_setInputsQueued($id, $E);
                            setLogicElementVar($id, 1, $E[3]['value']);
                            logic_callExec(LBSID, $id);
                            }
                            } else {
                            logic_setInputsQueued($id, $E);
                            }
                            }
                            }
                            ?>
                            ###[/LBS]###
                            
                            ###[EXEC]###
                            <?php
                            require(dirname(__FILE__) . "/../../../../main/include/php/incl_lbsexec.php");
                            set_time_limit(300);
                            sql_connect();
                            [COLOR=#c0392b]setlocale(LC_TIME, "de_DE.utf8");[/COLOR]
                            Hast du ne Idee, warum das so ist?
                            Gruß
                            Stefan

                            Kommentar


                              Auf Anhieb nicht, ich mache das selbst in einigen LBS so und es hat bisher immer funktioniert...
                              Ich wuerde im Code mal abfangen ob die Locale wirklich auch gesetzt wird und/oder mittels
                              Code:
                              locale -a | grep DE
                              nachgucken ob die Gewuenschte auch wirklich auf dem System installiert ist.

                              Kommentar


                                Danke mricemanle, leider klappt es bei mir auch nicht. Ich Warte einfach auf das Update. aber ich kann ja die deutschen Werte Aus dem Baustein der Einzelabfrage nehmen

                                Kommentar

                                Lädt...
                                X