Ik wil vanaf een arduino uiteindelijk een rss xml-bestand vanaf een willekeurige server lezen, Google of nu.nl. Om te beginnen eerst maar een simpele html-pagina dacht ik. Dit is wat ik geprobeerd heb in talloze variaties;
client.println("GET / HTTP/1.2");
client.println("Host: www.nu.nl");
client.println("Connection: close");
client.println("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3");
client.println("Accept: text/xml,text/html,text/plain,image/png,image/jpeg,image/gif");
client.println("Accept-Language: en-us");
client.println("Accept-Charset: ISO-8859-1,utf-8");
client.println();In sommige variaties lukt het om een html-bestand terug te krijgen "301" temporarily moved, terwijl de pagina via de browser gewoon benaderbaar is. Ook Google.com en Google.nl geprobeerdmet verschillende resultaten, maar niet wat je wilt nl. de index-pagina. Verschillende bronnen beweren toch dat dit de juiste syntax zou moeten zijn. Wie o wie ziet de fout?
Gr.
Erik
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Als je een 301 terugkrijgt, dan betekent dat de server daarmee de nieuwe pagina locatie doorgeeft. Die moet je dan er uit zien te peuteren, en dan nogmaals een pagina opvragen.
Je browser doet dat ook. Die stuurt gewoon vanzelf die nieuwe URL en displayed die dan.
Met geen van de dingen die ik heb geprobeerd krijg ik iets bruikbaars terug, terwijl de specifieke pagina in de browser wel bestaat.
Ik weet dat je om een specifieke pagina op een server op te roepen deze regel moet aanpassen;
client.println("GET / HTTP/1.2");
client.println("Host: www.nu.nl");naar bijvoorbeeld dit
client.println("GET /rss/Algemeen HTTP/1.2");
client.println("Host: www.nu.nl");;
Om de een of andere reden werkt het wel in de browser, niet met Arduino...
Gr.
Erik
Roches
Domoticz en ESP8266, goede combo!!!
Je vraagt een http-pagina, maar www.nu.nl is een https-pagina.
Misschien zit het daar in?
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Begin eens bij een eenvoudige pagina.
Omdat enige tijd geleden is gebleken dat de NSA een groot deel van de on-versleutelde internet bewegingen in de gaten houdt, wordt door diverse partijen gepromoot dat iedereen op HTTPS overstapt.
Als je direct een concrete URL had genoemd dan had ik die op kunnen vragen. Roches heeft waarschijnlijk gelijk: als je naar de hoofdpagina van nu.nl (http://www.nu.nl/) gaat krijg je een 301 naar de secure versie (https://www.nu.nl/).
Als 1 van de weinige sites die vind dat je dat zelf moet beslissen accepteert mijn site, http://www.bitwizard.nl/ , nog steeds http. Mag je mee testen.
P.S. Hier geeft die RSS feed ook een 302:
assurancetourix:~> wget http://www.nu.nl/rss/Algemeen
--2017-09-16 21:49:50-- http://www.nu.nl/rss/Algemeen
Resolving www.nu.nl (www.nu.nl)... 54.192.44.81, 54.192.44.242, 54.192.44.172, ...
Connecting to www.nu.nl (www.nu.nl)|54.192.44.81|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://www.nu.nl/rss/Algemeen [following]
--2017-09-16 21:49:50-- https://www.nu.nl/rss/Algemeen
Connecting to www.nu.nl (www.nu.nl)|54.192.44.81|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12003 (12K) [application/rss+xml]
Saving to: ‘Algemeen’
Algemeen 100%[===================>] 11.72K --.-KB/s in 0s
2017-09-16 21:49:51 (569 MB/s) - ‘Algemeen’ saved [12003/12003]
[Bericht gewijzigd door rew op (40%)]
Sjoerd Kreyns
Golden Member
SMD weerstandjes zoeken in grijze vloerbedekking is ook een uitdaging ... 8*1=255 ... Het nadeel van ruimte: Als je het hebt, staat het binnen de kortste keren weer vol.
Als je de arduino ide en ook de libraries upgrade naar de laatste versie staat daar een voorbeeld in waar je de http(s) code kan afvangen, zag ik laatst.
Is wel ESP8266 .....
/**
* BasicHTTPClient.ino
*
* Created on: 24.05.2015
*
*/
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#define USE_SERIAL Serial
ESP8266WiFiMulti WiFiMulti;
void setup() {
USE_SERIAL.begin(115200);
// USE_SERIAL.setDebugOutput(true);
USE_SERIAL.println();
USE_SERIAL.println();
USE_SERIAL.println();
for(uint8_t t = 4; t > 0; t--) {
USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
USE_SERIAL.flush();
delay(1000);
}
WiFiMulti.addAP("SSID", "PASSWORD");
}
void loop() {
// wait for WiFi connection
if((WiFiMulti.run() == WL_CONNECTED)) {
HTTPClient http;
USE_SERIAL.print("[HTTP] begin...\n");
// configure traged server and url
//http.begin("https://192.168.1.12/test.html", "7a 9c f4 db 40 d3 62 5a 6e 21 bc 5c cc 66 c8 3e a1 45 59 38"); //HTTPS
http.begin("http://192.168.1.12/test.html"); //HTTP
USE_SERIAL.print("[HTTP] GET...\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if(httpCode > 0) {
// HTTP header has been send and Server response header has been handled
USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if(httpCode == HTTP_CODE_OK) {
String payload = http.getString();
USE_SERIAL.println(payload);
}
} else {
USE_SERIAL.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
}
delay(10000);
}
Eens met bovenstaande de 301 verwijst naar de https versie.
Begin met een heel simpele site/server.
Er zijn ook wel services zoals feedburner (als ze nog bestaan) waarbij je rss kan filteren, samenstellen of van de https af bent.
Mannen, ik ga deze week met de suggesties aan de slag. Dank is groot. Ik laat het resultaat weten. Uiteindelijke doel is om de nieuwsheadlines op een schermpje te toveren.
Gr.
Erik
Bitwizard.nl werkt zoals je zou verwachten, keurig komt er html code terug, probleem zit 'm dus inderdaad in https. Zoektocht op Google leverde niets op om met een Ethernetshield https aan te kunnen.
Ben bang dat ik me dan toch moet gaan verdiepen in de ESP8266, alhoewel ik me afvraag of dat uberhaupt kan werken. Allerlei mensen beweren dat een Arduino te weinig rekenkracht zou hebben om https aan te kunnen.
Gr.
Erik
maartenbakker
Golden Member
www.elba-elektro.nl | "The mind is a funny thing. Sometimes it needs a good whack on the side of the head to jar things loose."
Tsja, die https-manie is een beetje door Google opgelegd. Als het inderdaad zoveel meer rekenkracht vraagt dan het normale zippen van webpagina's, dan is het wereldwijd bezien ook niet echt lekker voor het milieu. Bitwizard lost het keurig netjes op (mensen die het nodig hebben gebruiken het, de rest hoeft niet), denk dat ik dat bij klanten ook maar zo moet doen eigenlijk.
Op 18 september 2017 13:53:01 schreef maartenbakker:
Tsja, die https-manie is een beetje door Google opgelegd. Als het inderdaad zoveel meer rekenkracht vraagt dan het normale zippen ....
Ach ik denk dat die rekenkracht verwaarloosbaar is vergeleken met de beschikbaarheid, onderhoud (patches), filters (firewall spam) etc etc.
Het blijft natuurlijk een hellend vlak. Het wachtwoord 'moet' natuurlijk beveiligd, maar de inhoud van een PM bericht op een forum of je zoekopdrachten kunnen misschien toch wat gevoelig liggen en onderschept worden door huisgenoten, collega's, de beheerder van de wifi in de kroeg etc.
@erik1234: Ik kan je van harde een 'aggregator' aanbevelen. Je kan dan zelf RSS feeds samenstellen en samenvoegenin 1 feed. Dit artikel vond ik:
https://www.lifewire.com/rss-aggregator-tools-3486469
Je kan dan 'vanaf de bank' je mix samenstellen. Misschien wil je een filter op bepaalde woorden of een bepaald levensduur van berichten. Ze zullen vast niet allemaal https:// afdwingen (terwijl je bronnen rss feeds met https wel ondersteund worden).
Even snel gekeken; http://www.rssmix.com lijkt te werken, een gewone http pagina als resultaat. Met dit soort oplossing weet je nooit hoe lang het blijft bestaan, of dat ze binnenkort ook overschakelen naar https. Binnenkort ga ik hiermee aan de slag!
Gr.
Erik
henri62
1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
Om https te kunnen accessen moet je een (open)ssl library hebben. Dat is nou net niet echt een compact stuk software. Kortom gaat je waarschijnlijk niet echt lukken om dat in je controller te krijgen.
De esp heeft wel een stuk meer ruimte dus daar is nog een gerede kans dat alles past maar zal behoorlijk wat effort kosten om het er in te krijgen.
Wat ook de zaak nog compliceert is dat je nog (als je pech hebt) een handvol certificaten moet hebben om het certificaat van de site zelf te checken. Alhoewel je natuurlijk en niet matchend certificaat gewoon kunt negeren scheelt weer code size.
rew
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Op 18 september 2017 13:17:07 schreef erik1234:
Ben bang dat ik me dan toch moet gaan verdiepen in de ESP8266, alhoewel ik me afvraag of dat uberhaupt kan werken. Allerlei mensen beweren dat een Arduino te weinig rekenkracht zou hebben om https aan te kunnen.
Ik ben het met die mensen eens. Een Arduino heeft te weinig rekenkracht voor https.... Maar.... Al het https gebeuren kan door de ESP8266 gedaan worden. Heb je op de arduino geen last van. 
2 avonden zitten studeren op de ESP8266, die ESP is weer een studie op zich! Was al blij dat ik Arduino een beetje aankon. Had nog een Ethernetshield rondslingeren. https-probleem en veel-data-parsen-probleem opgelost door Thingsspeak. Geweldige site voor hobbyisten met mijn kennisniveau!
Gr.
Erik
[Bericht gewijzigd door erik1234 op (13%)]