Weerstation ( Ard.. en nu online verder )

Arduino specifieke Software
Berichten: 2
Geregistreerd: 12 Jan 2018, 17:46

Weerstation ( Ard.. en nu online verder )

Berichtdoor cbr48 » 12 Jan 2018, 18:02

Hallo, wie kan/wil mij verder helpen.
Pakketje bij Hubbit aangeschaft met de bedoeling meer te leren over Arduino en bijbehorende software.
Bij project3 krijg ik alleen foutmeldingen en begrijp de software niet.
Bedoeling is dat sketch van buienrader een xml doc oproept en een weerstation selecteert om dan vervolgens de meetwaarden ophaalt.

De sketch is als volgt;

// Project 3: Weermonitor
#include <ESP8266WiFi.h>
// Wire.h is nodig voor de I2C-communicatie van het OLED-scherm.
#include <Wire.h>
#include "OLED.h"

// Definieer het OLED-scherm met display(SDA, SCL);
// Op SDA van het scherm sluiten we pin D2 (GPIO4) van de ESP8266 aan.
// Op SCL van het scherm sluiten we pin D1 (GPIO5) van de RSP8266 aan.
OLED display(4, 5); // D2, D1

const int wachttijd = 300000; // 5 minuten

const char* ssid = "cbr2.4";
const char* password = "Rapollo2016";

const char* host = "xml.buienradar.nl";
const int httpPort = 80;
const String url="/";
const String weerstation="6240"; // Meetstation Schiphol

WiFiClient client;

void toon_boodschap(String boodschap, int rij = 0, int kolom = 0) {
char boodschap_char[boodschap.length()+1];
boodschap.toCharArray(boodschap_char, boodschap.length()+1);
display.print(boodschap_char, rij, kolom);
}

void lees_tot_tag(String begin_tag, String einde_tag, String toevoeging = "", int rij = 0, int kolom = 0) {
String inhoud = "";
while(client.available() && inhoud==""){
String regel = client.readStringUntil('\r');
int begin_pos = regel.indexOf(begin_tag);
if(begin_pos != -1) {
int einde_pos = regel.indexOf(einde_tag);
inhoud = regel.substring(begin_pos + begin_tag.length(), einde_pos) + toevoeging;
toon_boodschap(inhoud, rij, kolom);
}
}
}

void setup() {
Serial.begin(115200);

// Verbind met WiFi-netwerk
Serial.println();
Serial.println();
Serial.print("Verbind met ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi verbonden");
Serial.print("IP-adres: ");
Serial.println(WiFi.localIP());
}

void loop() {

int weerstation_gevonden = 0;

display.begin();

Serial.print("Verbind met ");
Serial.println(host);

if (!client.connect(host, httpPort)) {
Serial.println("Verbinding mislukt");
client.stop();
return;
}

Serial.print("Vraag URL op: ");
Serial.println(url);

client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n\r\n");

int timeout = millis() + 5000;
while (client.available() == 0) {
if (timeout - millis() < 0) {
Serial.println("Verbinding mislukt: timeout");
client.stop();
return;
}
}

while(client.available() && weerstation_gevonden==0){
String regel = client.readStringUntil('\r');
if(regel.indexOf("<stationcode>" + weerstation) != -1)
weerstation_gevonden = 1;
}

if(weerstation_gevonden==0) {
toon_boodschap("Weerstation " + weerstation + " niet gevonden");
} else {
lees_tot_tag("<luchtvochtigheid>", "</luchtvochtigheid>", "% vochtigheid");
lees_tot_tag("<temperatuurGC>", "</temperatuurGC>", " graden", 1);
lees_tot_tag("<windsnelheidBF>", "</windsnelheidBF>", " Bft", 2, 4);
lees_tot_tag("<windrichting>", "</windrichting>", "", 2);
lees_tot_tag(" zin=\"", "\">", "", 3);
}

Serial.println();
Serial.println("Verbreek verbinding");
client.stop();
delay(wachttijd);
}

Resultaat is op het display(tje)

"Weerstation 6315 niet gevonden"

Op de seriele monitor krijg ik de meldingen ;

HTTP/1.1 301 Moved Permanently

Server: AkamaiGHost

Content-Length: 0

Location: https://xml.buienradar.nl/

Date: Fri, 12 Jan 2018 16:00:46 GMT

Connection: keep-alive

Access-Control-Max-Age: 86400

Access-Control-Allow-Credentials: false

Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept

Access-Control-Allow-Methods: GET,POST,PUT

Access-Control-Allow-Origin: *


Hetgeen mij niet veel zegt.

B.v.d.

Advertisement

Gebruikers-avatar
Berichten: 1793
Geregistreerd: 06 Aug 2016, 01:03

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

Berichtdoor Koepel » 12 Jan 2018, 18:27

Je krijgt een "301 Moved Permanently" naar locatie: "https://xml.buienradar.nl/".
Dus die informatie is niet meer te vinden via de gewone http, maar alleen nog maar via een beveiligde https.

Is er misschien nog ergens een text bestand dat gewoon opgevraagd kan worden ?

Of probeer eens iets met WiFiClientSecure. Ik weet daar zelf niets van af. Misschien weet iemand anders meer.

Zodra je serieus met internet aan de slag gaat, dan is het handiger om een Raspberry Pi te gebruiken. Dat is een volledige linux computer. Bijvoorbeeld met het commando 'wget' wordt automatisch naar https geschakeld.

Zodra je iets noemt, kun je er dan een link naar geven ? Welk pakket bij hubbit.nl bijvoorbeeld.

P.S.: Maak je wel even een nieuw wachtwoord voor je wifi aan ? Je hebt dit wachtwoord nu gepubliceerd.

Berichten: 2
Geregistreerd: 12 Jan 2018, 17:46

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

Berichtdoor cbr48 » 13 Jan 2018, 16:18

Dank je wel Koepel.
De link naar het bedoelde product is https://www.hubbit.nl/arduino-en-nu-verder-online.html

Berichten: 1
Geregistreerd: 18 Jan 2018, 23:30

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

Berichtdoor Ardfun » 18 Jan 2018, 23:43

Dag, ik heb hetzelfde probleem met dit project en de site van Buienradar. Het punt is inderdaad de recente overgang van HTTP naar HTTPS.
Daarvoor zijn er aanpassingen in de code nodig. De poort moet aangepast worden van 80 naar 443:
const int httpPort = 443;

Maar belangrijker is dat er een SSL-certificaat nodig is. Een (Engelse) uitleg hiervoor vond ik op:
http://www.iotsharing.com/2017/08/how-t ... esp32.html

Ik ben er zelf nog niet aan toegekomen om dit uit te proberen. Als het binnen afzienbare termijn lukt, laat ik dat wel weten.

Mogelijk is er nog een andere site, waar de gegevens wel zonder HTTPS uitgehaald kunnen worden, maar die heb ik tot op heden nog niet gevonden.

Gebruikers-avatar
Berichten: 1793
Geregistreerd: 06 Aug 2016, 01:03

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

Berichtdoor Koepel » 19 Jan 2018, 02:31

Hier (https://www.buienradar.nl/overbuienradar/gratis-weerdata) staat een link naar hier (http://br-gpsgadget-new.azurewebsites.net/data/raintext?lat=51&lon=3) dat nog wel als gewoon http is op te halen. Ik ben toch niet de enige hier die kan internetten :shock: :mrgreen:

Gebruikers-avatar
Berichten: 4877
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

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

Berichtdoor nicoverduin » 19 Jan 2018, 11:33

Nee maar wel diegene die zich als internet opzoek slaaf opwerpt:)
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 1
Geregistreerd: 16 Jan 2018, 12:40

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

Berichtdoor ArdAl » 23 Jan 2018, 12:05

Hubbit heeft zelf de schetsen aangepast naar aanleiding van de overgang van http naar https.
Deze zijn te downloaden via: https://static.webshopapp.com/shops/027 ... -codes.zip

Gebruikers-avatar
Berichten: 1793
Geregistreerd: 06 Aug 2016, 01:03

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

Berichtdoor Koepel » 23 Jan 2018, 12:54

Ze gebruiken een website die de gegevens van buienradar opvraagt, en die het met gewone http op internet zet (http://reshift.nl/weermonitor.php?weerstation=6260). Dat kan natuurlijk ook, zolang het duurt.

Gebruikers-avatar
Berichten: 699
Geregistreerd: 05 Mrt 2012, 21:56
Woonplaats: Appingedam

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

Berichtdoor pjh » 25 Jan 2018, 10:05

https://openweathermap.org is waar ik weerdata pak. Mogelijk alternatief?

Berichten: 1
Geregistreerd: 13 Apr 2018, 12:54

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

Berichtdoor cameleon1950 » 13 Apr 2018, 13:21

Goedenmiddag
Ik ben een beginner op Arduino gebied en heb nav een artikel in Computer Totaal ook dit weerstation gebouwd
met gebruikmaking van de URL zoals gegeven in het artikel van Computer Totaal ( via Reshift.nl) werkt het wel, alleen het display wordt door het ophalen van de info inzake de algehele weersgesteldheid, deels overschreven
Ik zou dus graag de originele sketch willen testen

De de in eerdere berichten aangegeven linken voor de sketch werken echter niet meer ?
Kan niemand mij een werkende link aangeven waar ik de betreffende skjetch voor het weerstation kan ophalen

bvd

Cameleon

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Bing [Bot] en 4 gasten