Ankündigung

Einklappen
Keine Ankündigung bisher.

Weathermap API LBS

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

    Weathermap API LBS

    Hallo zusammen,

    nach einer API-Änderung von Openweathermap konnte ich den LBS 19000828 von maques nicht mehr nutzen. Nach ein paar Anpassungen funktiert die Abfrage aktueller Wetterdaten wieder und ich möchte den entsprechenden Code teilen.

    Für die Nutzung wird ein kostenfreier API-Code benötigt, der auf der Website erstellt werden kann. Kostenlos sind damit 1.000 Abfragen von Wind, Temperaturen, Sonnenaufgang und -untergang sowie der allgemeinen Wetterlage pro Tag möglich, Wochenvorhersagen und extravagante Infos (UV-, Pollenbelastung) benötigen einen bezahlten API-Code.

    MfG Max


    Code:
    ##[DEF]###
    [name        = Openweathermap API ]
    
    [e#1 Trigger     = Trigger            ]
    [e#2 important    = APIKey #init=c6349fc6f993XXXXXXXXXXXXXXXX       ]
    [e#3 important    = Längengrad  #init=11.091     ]
    [e#4 important    = Breitengrad #init=49.245   ]
    [e#5 important    = lang   #init=de        ]
    [e#6 important    = units   #init=metric     ]
    [e#7 important    = Zeitraum   #init=current]
    [e#8 optional    = Stundenvorhersage #init=all  ]
    [e#9 optional    = Datumsformat #init=%a, %d.%b %Y %H:%M ]
    [e#10 optional    = Zeitformat #init=%H:%M ]
    [e#11 important    = Cache-Zeit #init=2700 ]
    [e#12 important    = Trenner #init=|]
    [e#13 important    = debug  #init=8       ]
    
    [a#1    = last Update    ]
    [a#2    = Datum        ]
    [a#3    = Sunrise]
    [a#4    = Sunset    ]
    [a#5    = Aktuelle Temperatur    ]
    [a#6    = max Temperatur    ]
    [a#7    = min Temperatur    ]
    [a#8    = gefühlte aktuelle Temperatur ]
    [a#9    = Luftfeuchte            ]
    [a#10    = Luftdruck]
    [a#11    = Wind m/s    ]
    [a#12    = Windrichtung in °            ]
    [a#13    = Windrichtung Text            ]
    [a#14    = Windboe    ]
    [a#15    = Bewölkung %]
    [a#16    = Sicht in meter ]
    [a#17    = Weatherlage ID    ]
    [a#18    = Wetterlage]
    [a#19    = Weather Beschreibung    ]
    [a#20    = Weather Icon    ]
    [a#21    = Weather Openweather Font Icon    ]
    [a#22    = Wetterereignis Quelle    ]
    [a#23    = Wetterereignis Event    ]
    [a#24    = Wetterereignis Start    ]
    [a#25    = Wetterereignis Ende    ]
    [a#26    = Wetterereignis Beschreibung    ]
    [a#27    = Openweather JSON-String    ]
    [a#28    = Error    ]
      
    [v#1        = 1.0                    ] (Version)
    [v#2        = LBS ]
    [v#3        = "Openweathermap API" ]
    
    
    ###[/DEF]###
    
    ###[HELP]###
    Der Baustein implementiert die Weather Api von Openweathermap  <b><a href="https://openweathermap.org/api" target="_blank">https://openweathermap.org/api</a></b>.
    
    Der kostenfreie API-KEY kann nach einer Registrierung hier https://openweathermap.org/price beantragt werden. Dieser Key lässt aktuell 1.000 Abrufe je Tag (Also ca. alle 1,5 Minuten) zu.
    
    Der Baustein cached das Ergebnis in einer Datei in /tmp auch dann, wenn mehrere Instanzen des Bausteins angelegt und genutzt werden, um die Anzahl der Abrufe zu optimieren.
    
    e1: Startet den Baustein bzw. Triggert eine Abfrage, ob die Cache-time überschritten wurde.
    e2: APIKey - Kann hier <a href="https://home.openweathermap.org/users/sign_up" target="_blank">https://home.openweathermap.org/users/sign_up</a> beantragt werden
    e3: Längengrad
    e4: Breitengrad
    e5: Sprache -  <a href="https://openweathermap.org/api/one-call-api#multi" target="_blank">https://openweathermap.org/api/one-call-api#multi</a>
    e6: Einheit -  standard, metric, imperial
    e7: Zeitraum - current, daily, hourly, minutely
    e8: Zeitraum  Stundenvorhersage - all, today, tomorrow
    e9: Datumsformat  - <a href="https://www.php.net/manual/de/function.strftime.php" target="_blank">PHP datetime.formats</a>
    e10: Zeitformat - <a href="https://www.php.net/manual/de/function.strftime.php" target="_blank">PHP datetime.formats</a>
    e11: Zeitraum, in dem die Daten lokal gecached werden in Seckunden
    e12: Feldtrenner
    
    e13 debug 0,1
    
    
    <b>Um die Koordinaten (Breitengrad und Längengrad) für e3 und e4 zu ermitteln:</b>
    
    - Navigieren zum gewünschten Ort in der Karte z.B. durch Eingabe einer Adresse
    - In der Adressleiste des Browsers sollten an der URL die Koordinaten angefügt sein, im Beispiel:
        https://www.openstreetmap.org/search?query=......#map=19/<b>48.20877/16.36358</b>
    - Die letzten beiden Angaben definieren Längengrad (hier: 16.36358) und Breitengrad (hier: 48.20877)
    
    
    a1:    Letzte Aktualisierung
    a2: Datum/Uhrzeit
    a3: Sonnenaufgang
    a4: Sonnenuntergang
    a5: Aktuelle Temperatur - default: kelvin, metric: Celsius, imperial: Fahrenheit
    a6: HöchstTemperatur im Zeitraum
    a7: TiefstTemperatur im Zeitraum
    a8: gefühlte aktuelle Temperatur Tag/Stunde
    a9: Luftfeuchtigkeit in %
    a10: Luftdruck in hPa
    a11: Wind default: metre/sec, metric: metre/sec, imperial: miles/hour
    a12: Windrichtung in &deg;
    a13: Windrichtung Text
    a14: Windboe - default: metre/sec, metric: metre/sec, imperial: miles/hour
    a15: Bewölkung %
    a16: Sicht in meter
    a17: Wetterlage    - <a href="https://openweathermap.org/weather-conditions#Weather-Condition-Codes-2" target="_blank">https://openweathermap.org/weather-conditions#Weather-Condition-Codes-2</a>
    a18: Wetterlage Text
    a19: Wetter Beschreibung - <a href="https://openweathermap.org/weather-conditions#Weather-Condition-Codes-2" target="_blank">https://openweathermap.org/weather-conditions#Weather-Condition-Codes-2</a>
    a20: Wetter Icon - <a href="https://openweathermap.org/weather-conditions#How-to-get-icon-URL" target="_blank">https://openweathermap.org/weather-conditions#How-to-get-icon-URL</a>
    a21: Position des Wetter Icons im Openweather Font - <a href="https://websygen.github.io/owfont/" target="_blank">https://websygen.github.io/owfont/</a>
    a22: Wetterereignis Quelle z.B. DWD
    a23: Wetterereignis Event
    a24: Wetterereignis Startin Epoch
    a25: Wetterereignis Ende in Epoch
    a26: Wetterereignis Beschreibung
    a27: Das komplette Ergebnis der Abfrage als JSON - String
    a28: Error
    
    
    Changes:
    
    1.0 - Initiale Version (adaptiert von LBS19000828 von maque
    
    ###[/HELP]###
    
    
    ###[LBS]###
    <?
    function LB_LBSID($id) {
        if ($E=getLogicEingangDataAll($id)) {
            if ($E[1]['refresh']==1) {
                callLogicFunctionExec(LBSID,$id);
            }
        }
    }
    ?>
    ###[/LBS]###
    
    
    ###[EXEC]###
    <?
    
    function debugFunction ($logName, $logLevel, $logMessage) {
        writeToCustomLog($logName, $logLevel, $logMessage);
    }
    
    function exception_error_handler($errno, $errstr, $errfile, $errline ) {
        global $lbs_name, $id, $errorNo;
        debugFunction ($lbs_name, 0, __FUNCTION__. ": $errstr: Line: $errline, No: $errno, File: $errfile");
        setLogicLinkAusgang($id, $errorNo, "$errstr: Line: $errline, No: $errno, File: $errfile");
    }
    
    function deg2txt($deg) {
        global $debug, $lbs_name;
    
        if (($deg > 348.75 && $deg <= 360) || ($deg >= 0 && $deg <= 11.25))
            $ret = 'N';
        elseif ($deg > 11.25 && $deg <= 33.75)
            $ret = 'NNO';
        elseif ($deg > 33.75 && $deg <= 56.25)
            $ret = 'NO';
        elseif ($deg > 56.25 && $deg <= 78.75)
            $ret = 'ONO';
        elseif ($deg > 78.75 && $deg <= 101.25)
            $ret = 'O';
        elseif ($deg > 101.25 && $deg <= 123.75)
            $ret = 'OSO';
        elseif ($deg > 123.75 && $deg <= 146.25)
            $ret = 'SO';
        elseif ($deg > 146.25 && $deg <= 168.75)
            $ret = 'SSO';
        elseif ($deg > 168.75 && $deg <= 191.25)
            $ret = 'S';
        elseif ($deg > 191.25 && $deg <= 213.75)
            $ret = 'SSW';
        elseif ($deg > 213.75 && $deg <= 236.25)
            $ret = 'SW';
        elseif ($deg > 236.25 && $deg <= 258.75)
            $ret = 'WSW';
        elseif ($deg > 258.75 && $deg <= 281.25)
            $ret = 'W';
        elseif ($deg > 281.25 && $deg <= 303.75)
            $ret = 'WNW';
        elseif ($deg > 303.75 && $deg <= 326.25)
            $ret = 'NW';
        elseif ($deg > 326.25 && $deg <= 348.75)
            $ret = 'NNW';
    
        if ($debug>5)
            debugFunction ($lbs_name, 0, __FUNCTION__. " $deg Grad = $ret");
    
        return $ret;
    }
    
    
    function checkToday($epoch) {
        global $debug, $lbs_name;
    
        if(strtotime("tomorrow") > $epoch)
        {
            //echo 'today';
            $rc = 1;
        }
        else
            $rc = 2;
    
        if ($debug>2)
            debugFunction ($lbs_name, 0, __FUNCTION__. "RC=$rc");
    
        return $rc;
    
    }
    
    require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
    
    global $id;
    
    sql_connect();
    
    set_error_handler("exception_error_handler", E_ALL);
    
    if ($E=getLogicEingangDataAll($id)) {
        $api = $E[2]['value'];
        $lon = $E[3]['value'];
        $lat = $E[4]['value'];
        $lang = $E[5]['value'];
        $units = $E[6]['value'];
        $period = $E[7]['value'];
        $periodHourlyforecast = $E[8]['value'];
        $dateformat = $E[9]['value'];
        $timeformat = $E[10]['value'];
        $cache = $E[11]['value'];
        $delimiter= $E[12]['value'];
        $debug = $E[13]['value'];
    }
    
    $cachefile="/tmp/EDOMI_" . logic_getVar($id, 2) . ".json";
    $lbs_name = logic_getVar($id, 2) . " - " .  logic_getVar($id, 3);
    $error="";
    $errorNo=41;
    
    if ($debug>0)
        debugFunction ($lbs_name, 0, __FUNCTION__. "openweather Exec -> gestartet");
    
    if (!file_exists($cachefile) || (time() - filemtime($cachefile))>$cache) {
        $url = "https://api.openweathermap.org/data/2.5/weather?lon=$lon&lat=$lat&units=$units&lang=$lang&appid=$api";
        $cached=0;
        $lastUpdate=time();
        if ($debug>0)
            debugFunction ($lbs_name, 0, "File $cachefile not existing or to old, fetching data...");
    }
    
    else {
        $url = $cachefile;
        $lastUpdate=filemtime($cachefile);
        $cached=1;
            if ($debug>0) debugFunction ($lbs_name, 0, "File $cachefile exists and is not expired, fetching data from file...");
    }
    
    try {
        $opts = array('http' =>
            array(
                'method' => 'GET',
                'max_redirects' => '0',
                'ignore_errors' => '1'
            )
        );
    
        $context = stream_context_create($opts);
    
        if ($json = file_get_contents($url, false, $context)) {
    
            $data = json_decode($json, true);
    
            if (json_last_error() == JSON_ERROR_NONE) {
                $datum="";
                $sunrise="";
                $sunset="";
                $tempCurr="";
                $FtempCurr="";
                $tempDay="";
                $tempMax="";
                $tempMin="";
                $tempNight="";
                $tempEvening="";
                $tempMorning="";
                $FtempDay="";
                $FtempNight="";
                $FtempEvening="";
                $FtempMorning="";
                $humidity="";
                $pressure="";
                $dewpoint="";
                $windspeed="";
                $windgust="";
                $winddirection="";
                $winddirectiont="";
                $clouds="";
                $pop="";
                $uvi="";
                $visibility="";
                $rain="";
                $snow="";
                $weatherId="";
                $weatherIdFont="";
                $weatherMain="";
                $weatherDesc="";
                $weatherIcon="";
                $sender_name = "";
                $event="";
                $start = "";
                $end = "";
                $description = "";
    
    
    
                try {
                    if($period == "current") {
                        if ($dateformat == "")
                            $datum = $data["dt"];
                        else
                            $datum = strftime( $dateformat, $data["dt"]);
    
                        if ($timeformat == "") {
                            $sunrise = $data["sys"]["sunrise"];
                            $sunset = $data["sys"]["sunset"];
                        }
                        else {
                            $sunrise = strftime( $timeformat, $data["sys"]["sunrise"]);
                            $sunset = strftime( $timeformat, $data["sys"]["sunset"]);
                        }
    
                        $tempCurr = $data["main"]["temp"];
                        $FtempCurr = $data["main"]["feels_like"];
                        $pressure = number_format($data["main"]["pressure"] , 0, "." , "");
                        $humidity = $data["main"]["humidity"];
                        $visibility = $data["visibility"];
                        $windspeed = $data["wind"]["speed"];
                        $winddirection = number_format($data["wind"]["deg"],0);
    
                        $winddirectiont = deg2txt($data["wind"]["deg"]);
                        $windgust = $data["wind"]["gust"];
                        $clouds = $data["clouds"]["all"];
    
                        $weatherId = $data["weather"]["0"]["id"];
                        $weatherIdFont = dechex($weatherId + 60000);
                        $weatherMain = $data["weather"]["0"]["main"];
                        $weatherDesc = $data["weather"]["0"]["description"];
                        $weatherIcon = $data["weather"]["0"]["icon"];
    }
                    }
    
                catch (exception $e) {
                    debugFunction("$lbs_name", 0, "Error: Unvalid period $period");
                    setLogicLinkAusgang($id, $errorNo, "Error: Unvalid period $period");
                }
    
                setLogicLinkAusgang($id, 1, strftime( "%d.%m.%Y %H:%M", $lastUpdate));
    
                if ($period != "alerts") {
    
                    setLogicLinkAusgang($id, 2, rtrim($datum, $delimiter));
                    setLogicLinkAusgang($id, 3, rtrim($sunrise, $delimiter));
                    setLogicLinkAusgang($id, 4, rtrim($sunset, $delimiter));
                    setLogicLinkAusgang($id, 5, $tempCurr);
                    setLogicLinkAusgang($id, 6, rtrim($tempDay, $delimiter));
                    setLogicLinkAusgang($id, 7, rtrim($tempMax, $delimiter));
                    setLogicLinkAusgang($id, 8, rtrim($tempMin, $delimiter));
                    setLogicLinkAusgang($id, 9, rtrim($tempNight, $delimiter));
                    setLogicLinkAusgang($id, 10, rtrim($tempMorning, $delimiter));
                    setLogicLinkAusgang($id, 11, rtrim($tempEvening, $delimiter));
                    setLogicLinkAusgang($id, 12, $FtempCurr);
                    setLogicLinkAusgang($id, 13, rtrim($FtempDay, $delimiter));
                    setLogicLinkAusgang($id, 14, rtrim($FtempNight, $delimiter));
                    setLogicLinkAusgang($id, 15, rtrim($FtempMorning, $delimiter));
                    setLogicLinkAusgang($id, 16, rtrim($FtempEvening, $delimiter));
                    setLogicLinkAusgang($id, 17, rtrim($humidity, $delimiter));
                    setLogicLinkAusgang($id, 18, rtrim($pressure, $delimiter));
                    setLogicLinkAusgang($id, 19, rtrim($dewpoint, $delimiter));
                    setLogicLinkAusgang($id, 20, rtrim($windspeed, $delimiter));
                    setLogicLinkAusgang($id, 21, rtrim($winddirection), $delimiter);
                    setLogicLinkAusgang($id, 22, rtrim($winddirectiont, $delimiter));
                    setLogicLinkAusgang($id, 23, rtrim($windgust, $delimiter));
                    setLogicLinkAusgang($id, 24, rtrim($clouds, $delimiter));
                    setLogicLinkAusgang($id, 25, rtrim($pop, $delimiter));
                    setLogicLinkAusgang($id, 26, rtrim($rain, $delimiter));
                    setLogicLinkAusgang($id, 27, rtrim($snow, $delimiter));
                    setLogicLinkAusgang($id, 28, rtrim($uvi, $delimiter));
                    setLogicLinkAusgang($id, 29, rtrim($visibility, $delimiter));
                    setLogicLinkAusgang($id, 30, rtrim($weatherId, $delimiter));
                    setLogicLinkAusgang($id, 31, rtrim($weatherMain, $delimiter));
                    setLogicLinkAusgang($id, 32, rtrim($weatherDesc, $delimiter));
                    setLogicLinkAusgang($id, 33, rtrim($weatherIcon, $delimiter));
                    setLogicLinkAusgang($id, 34, rtrim($weatherIdFont, $delimiter));
                }
    
                setLogicLinkAusgang($id, 35, rtrim($sender_name, $delimiter));
                setLogicLinkAusgang($id, 36, rtrim($event, $delimiter));
                setLogicLinkAusgang($id, 37, rtrim($start, $delimiter));
                setLogicLinkAusgang($id, 38, rtrim($end, $delimiter));
                setLogicLinkAusgang($id, 39, rtrim($description, $delimiter));
                setLogicLinkAusgang($id, 40, json_encode($data));
                setLogicLinkAusgang($id, $errorNo, $error);
    
    
                if (!$cached) {
                    $fp=fopen($cachefile,"w");
                    fwrite($fp,$json);
                    fclose($fp);
                }
    
                            
            }
            else {
                debugFunction("$lbs_name", 0, "Error reading JSON: " . json_last_error());
                setLogicLinkAusgang($id, $errorNo, "Error reading JSON: " . json_last_error());
            }
    
        }
    }
    catch (exception $e) {
        debugFunction("$lbs_name", 0, "Error fetching $url: $e");
    }
    
    
    setLogicElementStatus($id,0);
    
    sql_disconnect();
    
    
    ?>
    ###[/EXEC]###​
    MfG Max

    #2
    Hallo Max,

    der LBS ist von mir. Bei mir läuft der noch wie bisher. Was heißt nicht mehr nutzen? Hattest Du einen neuen Key erstellen müssen? Ich habe den Baustein auch schon mit der V3 der API gestestet und wollte den sowieso demnächst aktualisieren.

    Grüße
    Matthias

    Kommentar


      #3
      Hallo Matthias,

      ich habe noch einmal nachgeforscht und herausgefunden, woran es liegt. Openweather bietet zwei unterschiedliche API-keys an, die nicht kompatibel sind:
      1. Die "Call by Call"-Subscription, für die man Zahlungsinformationen hinterlegen muss, 1.000 Calls pro Tag sind kostenfrei
      2. Die "Professional collections"-Subscription, die man ohne Zahlungsinformationen aktivieren kann. (1.000.000 calls pro Monat sind kostenfrei)

      1. erlaubt die Abfrage von:
      • Current weather
      • Minute forecast for 1 hour
      • Hourly forecast for 48 hours
      • Daily forecast for 8 days
      • National weather alerts
      • Historical weather data for 40+ years back (since January 1, 1979)
      in einem einzelnen API-call. Die Abfrage erfolgt über ​https://api.openweathermap.org/data/2.5/onecall?XXX und benötigt einen "Call-by-Call"-key

      ​2. erlaubt die Abfrage von:

      grafik.png
      mit jeweils einem seperaten Call pro Funktion. Die Abfrage erfolgt über https://api.openweathermap.org/data/2.5/weather?​XXX, https://api.openweathermap.org/data/2.5/forecast​?XXX, usw.. Dafür benötigt man den "Professional->free"-key

      Mich hat die Eingabe von Rechnungsinformationen abgeschreckt und daher habe ich den Professional-Api-Key erstellt, in der damaligen Annahme, dass die Keys beliebig eingesetzt werden können. Mit dem falschen Key gibt das Log deines Bausteins aber nur:
      2023-04-20 10:42:00 363135 26332 0 openweather Exec -> gestartet
      2023-04-20 10:42:00 363764 26332 0 File /tmp/EDOMI_LBS19000828.json not existing or to old, fetching data...
      2023-04-20 10:42:00 454773 26332 0 exception_error_handler: Undefined index: current: Line: 226, No: 8, File: /usr/local/edomi/www/data/liveproject/lbs/EXE19000829.php
      2023-04-20 10:42:00 455703 26332 0 exception_error_handler: Undefined index: current: Line: 227, No: 8, File: /usr/local/edomi/www/data/liveproject/lbs/EXE19000829.php
      2023-04-20 10:42:00 456130 26332 0 exception_error_handler: Undefined index: current: Line: 228, No: 8, File: /usr/local/edomi/www/data/liveproject/lbs/EXE19000829.php
      2023-04-20 10:42:00 456496 26332 0 exception_error_handler: Undefined index: daily: Line: 230, No: 8, File: /usr/local/edomi/www/data/liveproject/lbs/EXE19000829.php
      2023-04-20 10:42:00 456860 26332 0 exception_error_handler: Invalid argument supplied for foreach(): Line: 230, No: 2, File: /usr/local/edomi/www/data/liveproject/lbs/EXE19000829.php
      ​aus. Macht ja auch Sinn, da der https-Request nur

      {"cod":401, "message": "Invalid API key. Please see https://openweathermap.org/faq#error401 for more info."}

      zurückliefert. Durch Google bin ich damals dann auf die API https://api.openweathermap.org/data/2.5/weather?​ gestoßen. Da dort entsprechende Daten kamen habe ich den LBS umgeschrieben und hier hochgeladen.

      Somit Revision der Aussage oben: Der LBS funktioniert, man benötigt nur den korrekten Key. Gerne kann meine Version als Alternative zur Wetterabfrage mit der anderen API als neuer Baustein genutzt oder in den bestehenden LBS integriert werden. Eventuell lässt sich auch die API-Antwort (401) durch den LBS abfangen und eine Error-Nachricht im Log ausgeben?

      Mit freundlichen Grüßen
      Max
      Angehängte Dateien
      MfG Max

      Kommentar


        #4
        Mal ne Frage zu dem LBS.
        Wenn ich z.B. den Wert vom Sonnenuntergang (Sunset) anschaue, dann bekommt man den Wert "21:16|21:17|21:18|21:19|21:20|21:21|21:23|21: 24".
        Wie kann ich da jetzt die Zeit von heute, also nur die "21:16" rausfiltern und einem iKO zuweisen?
        Ciao Jochen

        Kommentar


          #5
          Zitat von McEgg Beitrag anzeigen
          Wie kann ich da jetzt die Zeit von heute, also nur die "21:16" rausfiltern und einem iKO zuweisen?
          In dem du z.B. den Standard LBS18000003 "String zerteilen" nimmst. Für den Separator wäre | anzuwenden. Das Ergebnis "21:16" kannst du dann am Ausgang String1 abgreifen und eine normale Ausgangsbox nachschalten mit gewünschten iKO.

          Kommentar


            #6
            s0kr4tz
            Perfekt. Danke.
            Ciao Jochen

            Kommentar


              #7
              Zitat von Gadder Beitrag anzeigen
              Somit Revision der Aussage oben: Der LBS funktioniert, man benötigt nur den korrekten Key. Gerne kann meine Version als Alternative zur Wetterabfrage mit der anderen API als neuer Baustein genutzt oder in den bestehenden LBS integriert werden. Eventuell lässt sich auch die API-Antwort (401) durch den LBS abfangen und eine Error-Nachricht im Log ausgeben?

              Mit freundlichen Grüßen
              Max
              Moin Gadder , ich bin auf selbiges "Problem" gestoßen und störe mich auch etwas an der Hinterlegung meiner Zahlungsdaten. Jetzt wollte ich deinen Code kopieren und einen neuen LBS erstellen / hochladen. Allerdings bekomme ich dann immer die Fehlermeldung, dass der LBS nicht eingelesen werden kann. Hast du eine Idee, woran dies liegen könnte?
              image.png

              LG, vielen Dank und schöne Weihnachtstage allen
              Sascha
              Zuletzt geändert von Sascha aus H; 29.01.2024, 19:37.

              Kommentar


                #8
                Hallo Matthias,
                ich habe Deinen LBS19000828 in der Vorgängerversion funktionsfähig mit Dank eingesetzt. Dank der von Dir bereit gestellten Version 1.2 für die One Call API 3.0 wollte ich nun den LBS updaten, was auch technisch gelungen zu seien scheint, da im Logikeditor die aktuelle Bausteinversion angezeigt wird. Nach einer Aktivierung des Edomi-Projektes kommen nun aber leider keine Daten mehr über den Baustein an.
                Ich nutze CentOS7 mit dem Kernel 3.10.0-1160.108.1.el7.x86_64 und Edomi 2.03.
                Über Tipps würde ich mich sehr freuen. Mein nächster Versuche wäre ein Downgrade des LBS auf die Vorgängerversion. zz0.060odjfw0piwzz
                Zuletzt geändert von Snert; 03.05.2024, 07:51. Grund: Ich bin im falschen Thread - Entschuldigung

                Kommentar


                  #9
                  Hallo Sascha aus H , sorry ich war eine Weile nicht mehr im Forum unterwegs. Bei mir läuft der Baustein noch immer ohne Probleme, hast du eventuell mehr Informationen zu den beiden Fehlern, die beim Import auftreten, falls aktuell noch Interesse besteht?

                  Bei mir läuft der Baustein in Edomi 2.03.

                  Freundliche Grüße
                  Max

                  MfG Max

                  Kommentar


                    #10
                    Ich habe jetzt mit der Version 1.2.1 die Fehlerbehandlung verbessert. Wenn der API nicht passt, kommt der entsprechende Fehler von Openweathermap Fehler an A41.

                    Gruesse
                    Matthias

                    Kommentar


                      #11
                      Hallo zusammen,

                      ich suche nach einem Weg, um die mit der „daily“- oder „hourly“-Parametrierung übergebenen Werte in einem Diagramm (z. B. Temperaturvorhersage über 4 Tage) darzustellen. Bislang kenne ich nur die Lösung für die DWD-Daten mittels dem LBS 19000936.

                      Gibt es einen Lösungsweg mit dem EDOMI-Standard bzw. bestehenden LBS’en, für eine Diagrammdarstellung der OpenWeather-Werte, die über die API mittels LBS 19000828 bereit gestellt werde?

                      ​Freundliche Grüße Michael

                      Kommentar


                        #12
                        Hallo Michael,

                        ich verstehe Deine Frage nicht ganz. Du kannst doch die Ausgaben von meinem LBS einfach in ein Archiv schreiben und dann das Archiv als Diagramm darstellen. Oder habe ich etwas falsch verstanden?

                        Viele Gruesse
                        Matthias

                        Kommentar


                          #13
                          Hallo Matthias,
                          ich habe das „Transferproblem“, wie ich die Werte aus Deinem Baustein in ein Archiv schreibe, da es sich um getrennte Ausgänge für Temperaturwerte (z. B. A6) und die ihnen zugehörigen Datumswerte (A2) handelt, wo mir dann noch die jeweilige Bezugsstunde zum Temperaturwert fehlt.
                          Die Werte werden als Liste (String) mit Trennzeichen ausgegeben. Diese könnte ich mir zwar zerlege und in iKO‘s oder ein Archiv schreiben. Mir fehlt aber die Idee, wie in diesem Archiv dann die zukunftsgerichteten Datums- und Uhrzeitwerte zum eigentlichen Temperaturprognosewert zugeordnet werden. Bislang kenne ich die Speicherung eines an ein Archiv übergebenen Wertes nur mit dem zum Übergabeevent gültigen Zeitstempel, den das Archiv selber zusortiert.
                          An dieser Stelle fehlt mir leider der richtige Ansatz, gerne mit EDOMI-Boardmitteln.
                          Vielen Dank schon mal für die Geduld!
                          Grüße Michael​

                          Kommentar


                            #14
                            Ich habe mal eine Frage zu dem API Key und der Anzahl Abfragen pro Stunde. Zählt jeder übertragene Wert als eine Abfrage, oder werden alle Wetterwerte pro Abfrage als eine Abfrage gewertet? Und reichen im ersteren Fall tatsächlich die 1000 kostenlosen Abfragen pro Tag? Welche der beiden Varianten (One Call Api 3.0 / Pay as you call) habt ihr genommen? Kamt ihr schon mal über die Freigrenze?

                            grafik.png

                            Kommentar


                              #15
                              Es werden alle Werte auf einmal geladen, daher auch OneCall - API. Von daher reichen die 1000 locker aus.

                              Viele Gruesse
                              Matthias

                              Kommentar

                              Lädt...
                              X