Weerstation ( Ard.. en nu online verder )

Arduino specifieke Software
Berichten: 1
Geregistreerd: 16 Sep 2018, 21:06

Re: Weerstation ( Ard.. en nu online verder )

Berichtdoor tvdwouw » 16 Sep 2018, 21:32

De link naar de nieuwe code staat hier: https://www.hubbit.nl/service/arduino/

Advertisement

Berichten: 1
Geregistreerd: 03 Aug 2020, 17:07

Re: Weerstation ( Ard.. en nu online verder )

Berichtdoor ennovdv » 03 Aug 2020, 17:12

Heeft iemand een werkende oplossing gevonden ? Ik denk dat de suggestie van Ardfun het dichtst bij de oplossing komt, alleen begrijp ik toch nog niet hoe je zo'n SSL certificaat krijgt, en vooral, hoe je dat in de sketch verwerkt. Is het iemand wel gelukt?
Al de aangegeven links naar nieuwe versies van de software werken trouwens niet meer (hubbit.nl bestaat niet meer, ook niet via reshift).

Enno

Gebruikers-avatar
Berichten: 241
Geregistreerd: 22 Jan 2013, 16:40

Re: Weerstation ( Ard.. en nu online verder )

Berichtdoor zuid » 05 Aug 2020, 17:58

Voor buienradar is er een goed alternatief.
Zie: http://weerlive.nl/delen.php

Met de weerlive API kan je maximaal 300x per dag KNMI weergegevens van elke willekeurige plaats opvragen.
(dus ongeveer elke 5 minuten).

Ik heb met behulp van de bibliotheek 'HTTPSRedirect' ook nog geprobeerd buienradar werkend te krijgen maar dat is (nog) niet gelukt.
https://github.com/electronicsguy/ESP8266/tree/master/HTTPSRedirect
Er zou een oplossing mogelijk moeten zijn voor de HTTPS zonder certificaten, dus geen of weinig extra beveiliging.
Dit lijkt mij voor weergegevens ook geen bezwaar.

m.v.g. Nico

Gebruikers-avatar
Berichten: 241
Geregistreerd: 22 Jan 2013, 16:40

Re: Weerstation ( Ard.. en nu online verder )

Berichtdoor zuid » 06 Aug 2020, 18:12

Het xml file van buienradar is verplaatst naar https://data.buienradar.nl/1.0/feed/xml
De header van de oorspronkelijke url geeft de verplaatsing aan, echter daarbij worden andere veldnamen gebruikt dan de bibliotheek 'HTTPSRedirect' verwacht.
Een oplossing via die bibliotheek is dus (nog) niet mogelijk.

Een andere oplossing is het gebruik van de bibliotheek '<WiFiClientSecureBearSSL.h>' ZONDER certificaat door de instructie:
Code: Alles selecteren
client->setInsecure();

Zie voorbeeld code hieronder.

Nadeel van de xml van buienradar blijft dat er veel data geleverd wordt (ALLE weerstations) er kan pas bij ontvangst een weerstation worden geselecteerd.

m.v.g. Nico


Code voorbeeld, (gewijzigd standaardvoorbeeld -> BasicHttpsClient)
Code: Alles selecteren
/**
   BasicHTTPSClient.ino

    Created on: 20.08.2018

*/

#include <Arduino.h>

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>

#include <ESP8266HTTPClient.h>

#include <WiFiClientSecureBearSSL.h>
// Fingerprint for demo URL, expires on June 2, 2021, needs to be updated well before this date
//const uint8_t fingerprint[20] = {0x40, 0xaf, 0x00, 0x6b, 0xec, 0x90, 0x22, 0x41, 0x8e, 0xa3, 0xad, 0xfa, 0x1a, 0xe8, 0x25, 0x41, 0x1d, 0x1a, 0x54, 0xb3};
const uint8_t fingerprint[20] = "";
ESP8266WiFiMulti WiFiMulti;

void setup() {

  Serial.begin(115200);
  // Serial.setDebugOutput(true);

  Serial.println();
  Serial.println();
  Serial.println();

  for (uint8_t t = 4; t > 0; t--) {
    Serial.printf("[SETUP] WAIT %d...\n", t);
    Serial.flush();
    delay(1000);
  }

  WiFi.mode(WIFI_STA);
  WiFiMulti.addAP("SSID", "Password");
}

void loop() {
  // wait for WiFi connection
  if ((WiFiMulti.run() == WL_CONNECTED)) {

    std::unique_ptr<BearSSL::WiFiClientSecure>client(new BearSSL::WiFiClientSecure);

    //client->setFingerprint(fingerprint);
    client->setInsecure();
    HTTPClient https;

    Serial.print("[HTTPS] begin...\n");
    //if (https.begin(*client, "https://jigsaw.w3.org/HTTP/connection.html")) {  // HTTPS
if (https.begin(*client, "https://data.buienradar.nl/1.0/feed/xml")) {  // HTTPS

      Serial.print("[HTTPS] GET...\n");
      // start connection and send HTTP header
      int httpCode = https.GET();

      // httpCode will be negative on error
      if (httpCode > 0) {
        // HTTP header has been send and Server response header has been handled
        Serial.printf("[HTTPS] GET... code: %d\n", httpCode);

        // file found at server
        if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
          String payload = https.getString();
          Serial.println(payload);
        }
      } else {
        Serial.printf("[HTTPS] GET... failed, error: %s\n", https.errorToString(httpCode).c_str());
      }

      https.end();
    } else {
      Serial.printf("[HTTPS] Unable to connect\n");
    }
  }

  Serial.println("Wait 10s before next round...");
  delay(10000);
}

Vorige

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 19 gasten