Go Down

Topic: Gegevens lezen van een site met ESP (Read 411 times) previous topic - next topic

proximuis

Beste

ik heb een site verkregen waar enkel een getal opstaat, dit getal wil ik gaan uitlezen met een esp en gaan tonen op een 4-digit display. onbelangrijk maar het getal is het aantal bezoekers op mijn site.

Hoe kan ik hieraan beginnen?

Vriendelijke groet,

MAS3

Hoi proximuis, welkom.

Jouw vraag is mij niet geheel duidelijk.
Wel wat je wil, maar niet de omstandigheden.

Heb jij de volledige controle over die site met dat nummer ?
En is dat werkelijk het enige dat er op die site staat (dus in pure tekst), of is dat getal mooi opgemaakt en mogelijk grafisch aangekleed ?
Wanneer het alleen tekst is, kun je dat gewoon binnen halen als ASCII waarden.
Die ASCII waarden kun je dan omzetten naar een getal.

Maar wanneer het getal is aangekleed, moet je weten waar op die pagina het echte getal staat tussen de opmaak rond dat getal.
Dan word het een stukje lastiger maar moet nog steeds te doen zijn.
Alleen als de pagina steeds verandert met verschillende opmaak mogelijkheden en andere opsmuk, kan het echt lastig worden.
Ik vraag me ook af of je moet inloggen om op jouw pagina te komen, want dat maakt het er ook niet gemakkelijker op.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

proximuis

#2
Nov 23, 2020, 05:36 pm Last Edit: Nov 23, 2020, 05:38 pm by proximuis
MAS3

Bedankt voor jou antwoord, Het is een URL waar enkel een 4 cijferig getal op komt te staan. Maar mijn vraag was vooral hoe ik dit getal/ met welke code ik dit kan lezen met een arduino?
Ik heb de volledige controle over deze site.
Inloggen is niet nodig het staat op een subdomein van de website.

Ik heb een arduino, een 4 digit display tm1637 en een ESP-015 heb ik hiervoor nog meer nodig?

Ps. Zoals je al ziet ben ik nieuw in het arduino leven en heb een duwtje in de juiste richting nodig om dit uit te lezen ik heb nog nooit met een esp gewerkt het mag ook een tutorial zijn waar ze het principe van een site uitlezen uitleggen :).

thx!

GijKieken

Ik meen eens iets te hebben lezen.
Jeremy Blum Exploring Arduino Wifi and the cloud ,
het ging over data ophalen ivm een weerstation.
Ben het niet meer zeker,,, 

proximuis


MAS3

Hoi proxymuis.

Ik stelde die vragen omdat een website veel meer info kan bevatten dan wat je ziet.
Het getal kan bijvoorbeeld zijn opgebouwd uit een aantal afbeeldingen in plaats van cijfers, om een mooi geheel te krijgen.
Ook kleurtjes of een bepaald font voor de getoonde teksten staan ergens in de webpagina beschreven.
Je kunt dat bij sommige browsers tevoorschijn halen door in de menu's naar "paginabron" te zoeken.

Maar wanneer er alleen een "getal" staat zonder enige opmaak, dan is het vrij eenvoudig.
Een getal kan niet als zodanig op een site gezet worden en dan getoond worden aan een bezoeker, daarom staat dat woord hierboven ook tussen aanhalingstekens.
Daarom word het getal een stukje tekst; een verzameling ASCII karakters die door de mens leesbaar zijn (dat zijn niet alle ASCII karakters).

1234 is voor jouw browser iets anders als de twaalfhonderdvierendertig die het voor jou is.
Voor je browser is het een 49 (0x31), een 50 (0x32), een 51 (0x33) en een 52 (0x34) die achter elkaar staan.
Dat is dan ook wat je binnenhaalt als je dat getal wil lezen.
En nou is het aan jou om dat weer om te bouwen naar cijfers die samen een getal vormen.
Je moet dus heel goed na gaan denken hoe zo'n getal dan eigenlijk is opgebouwd, want in de praktijk denk je daar helemaal niet bij na.
Maar heel erg ingewikkeld is het niet om van een verzameling ASCII karakters een getal te bouwen.
Met dat getal kun je dan weer verder.
Ietsje ingewikkelder word het wanneer bijvoorbeeld de 1e gebruiker geteld word.
Want staat er dan 0001 op jouw site, of staat er 1 ?

Zou er toch meer in die pagina zitten dan die 4 karakters, dan moet je dus gaan onderzoeken waar je de betreffende ASCII karakters in je pagina zult aantreffen, en of dat altijd op dezelfde plaats staat (en dus betrouwbaar terug te halen is).
Tot aan die karakters die je hebben wil, moet je wel alles binnen halen, maar wat je niet nodig hebt kun je dan meteen weer weggooien.


Zoals je ziet, zul je goed moeten onderzoeken hoe een en andere nou eigenlijk precies in elkaar steekt.
Ook dingen waar je voor jezelf helemaal niet bij stilstaat.
Zodra je dat weet kun je er mee aan de slag gaan.
Voor het 4 cijferige display zijn er ongetwijfeld voorbeeld codes beschikbaar, en kun je daar op verder bouwen zodra je eenmaal weet wat je wil afbeelden.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

ArdLab_Gent

Als je de website zelf beheert (en ook het device dat de website host) dan denk ik dat het gemakkelijker/efficiënter zal zijn om de data te hosten op je site en ook apart naar het display te sturen.

Bijkomend voordeel is dat wijzigingen aan de opmaak van de website geen invloed zullen hebben op de werking van je display.
ArdLab geeft Arduino workshops voor beginners.
ArdLab is lid van de STEM-Academie.
http://www.ardlab.gent - http://www.stem-academie.be/

proximuis

Kan ik met de ESP-015 en een arduino ook gegevens van een site lezen? Met welke code doe ik dit? heb je een voorbeeldcode hiervan?

MAS3

Hoi.

Ik heb de pagina met het getal inmiddels gezien, en dat is inderdaad alleen 4 ASCII karakters die het getal vormen.
Dat maakt het dus een stuk gemakkelijker.
Ik heb me nog nooit bezig gehouden met mijn ESP boardjes (die heb ik hier wel ergens paraat liggen) of het ophalen van internet gegevens.
Maar ik heb wel een servertje draaien die niets anders doet dan het uitlezen van de analoge poorten van de Uno waar die op draait.
Dat puur omdat ik benieuwd was of en hoe dat dan werkt.

Dus heb ik via de library manager de ethernet library geïnstalleerd.
En daar krijg je voorbeelden bij.
Geen idee of dat ook zo is bij whatever je moet installeren om je ESP boardjes te kunnen benaderen met de IDE.
Het servertje dat ik heb draaien is gebaseerd op het WebServer voorbeeld dat daarbij zit, maar er is ook een WebClient voorbeeld sketch.
Mij is het vrij duidelijk wat daar gebeurt, en dus zou ik je willen aanraden om eens die sketch te bekijken.

Om het jou wat gemakkelijker te maken, zet ik die sketch hier onder neer.
Let er op dat de sketch er dus van uitgaat dat je de betreffende library hebt geïnstalleerd, en het daarom zo kan zijn dat ie voor jou niet zal werken als je dat niet doet.
Er staat behoorlijk wat //commentaar in de sketch, dus ik denk dat het leerzaam is dat eens te bekijken en de doorgronden.

Dit is die sketch :

Code: [Select]

/*
  Web client

 This sketch connects to a website (http://www.google.com)
 using an Arduino Wiznet Ethernet shield.

 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13

 created 18 Dec 2009
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe, based on work by Adrian McEwen

 */

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// if you don't want to use DNS (and reduce your sketch size)
// use the numeric IP instead of the name for the server:
//IPAddress server(74,125,232,128);  // numeric IP for Google (no DNS)
char server[] = "www.google.com";    // name address for Google (using DNS)

// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192, 168, 0, 177);

// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    // try to congifure using IP address instead of DHCP:
    Ethernet.begin(mac, ip);
  }
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.1");
    client.println("Host: www.google.com");
    client.println("Connection: close");
    client.println();
  }
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    while (true);
  }
}

Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

MAS3

Zojuist ook gezien dat er geen 0000 komt te staan op de site, maar 0.
Dat betekent dat je daar ook nog op een slimme manier mee om moet gaan, zodat je de juiste weergave krijgt op je schermpje, tenzij je links uitgelijnd ook wel OK vind.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

proximuis

Zojuist ook gezien dat er geen 0000 komt te staan op de site, maar 0.
Dat betekent dat je daar ook nog op een slimme manier mee om moet gaan, zodat je de juiste weergave krijgt op je schermpje, tenzij je links uitgelijnd ook wel OK vind.

Het is al ok als het al gaat werken binnenkort! :p

proximuis

#11
Nov 29, 2020, 01:16 pm Last Edit: Nov 29, 2020, 01:17 pm by proximuis
Ik ben wat wijzer geworden i.v.m. de ESP8266. Nu heb ik volgende code:

Code: [Select]

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
 
const char* ssid = "yourNetworkName";
const char* password = "yourNetworkPassword";
 
void setup () {
 
Serial.begin(115200);
WiFi.begin(ssid, password);
 
while (WiFi.status() != WL_CONNECTED) {
 
delay(1000);
Serial.print("Connecting..");
 
}
 
}
 
void loop() {
 
if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status
 
HTTPClient http;  //Declare an object of class HTTPClient
 
http.begin("http://jsonplaceholder.typicode.com/users/1");  //Specify request destination
int httpCode = http.GET();                                                                  //Send the request
 
if (httpCode > 0) { //Check the returning code
 
String payload = http.getString();   //Get the request response payload
Serial.println(payload);                     //Print the response payload
 
}
 
http.end();   //Close connection
 
}
 
delay(30000);    //Send a request every 30 seconds
 
}


De API en wifi instellingen zouden juist moeten staan ( Ik hen deze niet ingevuld omdat ze privé zijn :)). Nu krijg ik steeds deze foutmelding:

---------------------------------
In file included from C:\Users\j\Desktop\arduino-nightly\libraries\ESP8266WiFi\src/ESP8266WiFi.h:33:0,
                 from C:\Users\j\Desktop\uitlezen_site\uitlezen_site.ino:2:
C:\Users\j\Desktop\arduino-nightly\libraries\ESP8266WiFi\src/ESP8266WiFiType.h:26:10: fatal error: queue.h: No such file or directory
 #include <queue.h>
          ^~~~~~~~~
compilation terminated.
exit status 1
Fout bij het compileren voor board Arduino Uno


--------------------------------------------------

De include staat ook niet in het groen, nu heb ik alle bibliotheken toegevoegd die ik kon vinden van de esp maar dit blijkt niet te werken.


MIJN VRAAG:

Welke bibliotheek moet ik nu toevoegen en waar doe ik dat het best? Moet ik ook nog ergens een Json toevoeging doen? Op het internet stond van wel maar is dit ook het geval met een API uitlezing van thingspeak?

MAS3

Hoi.

Deze link (klik !) leidt je naar een handleiding.
Het 1e wat daar in staat, is dat je inderdaad een .json moet toevoegen, er staat ook waar je dat moet doen.
Dat functioneert als een link naar een library-achtig iets, niet van de officiële Arduino bron afkomstig en die in  dit geval een ander dan Arduino board toevoegt.

Lees die hele pagina een of 2 keer door voor je überhaupt ergens aan begint, dan heb je namelijk alle stappen al een keer gezien en kun je ongeveer weten wat er gaat komen.

Je hebt nu niet goed en/of niet compleet de ondersteuning voor je ESP board geïnstalleerd en daarom gaat het nu fout.


Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

proximuis

Ik heb alles toegevoegd maar ik blijf de foutmelding krijgen dat ik niet het juiste board geselecteerd heb. Welk board moet ik selecteren als ik een arduino uno gebruik en een esp chip aan de juiste aansluitingen aansluit? Ik heb nu het board arduino uno geselecteerd maar dit is niet juist geeft hij aan?

foutcode:

In file included from C:\Users\jensm\Desktop\arduino-nightly\libraries\ESP8266WiFi\src/ESP8266WiFi.h:33:0,
                 from C:\Users\jensm\AppData\Local\Temp\Rar$DIa3016.6587\smart_config\smart_config.ino:1:
C:\Users\jensm\Desktop\arduino-nightly\libraries\ESP8266WiFi\src/ESP8266WiFiType.h:26:10: fatal error: queue.h: No such file or directory
 #include <queue.h>
          ^~~~~~~~~
compilation terminated.
exit status 1
Fout bij het compileren voor board Arduino Uno

MAS3

Hoi.

Je hebt al 2 keer eerder laten zien dat je een Arduino wil gebruiken die gekoppeld is met een ESP boardje.
Maar dat heb ik gemist.
Je wil een Uno gebruiken die communiceert met een ESP boardje.
Dat zag ik pas in je laatste bericht, en ik dacht dus dat je met alleen een ESP boardje aan de gang was.

De ESP heeft een veel krachtiger chip aan boord dan de Uno, alleen al de klok is 5 maal sneller.
Met de tips die ik je in mijn vorige berichten gaf, maak je de Arduino IDE geschikt om een ESP chip te programmeren.
Queue.h is onderdeel van die ondersteuning voor de ESP chip.
Je Uno kan daar helemaal niets mee.

Het boardje wat je genoemd hebt, kun je aan de seriële poort van de Arduino aansluiten op pins 0 en 1.
En het heeft 3.3 volt nodig.
Dat boardje blijkt ook maar 8 aansluitpinnen te hebben, dus veel meer dan seriële communicatie kun je er ook niet mee,.

Met je laatste sketch, ga je een code voor de ESP naar de Uno sturen, dus dat werkt niet.
Ik heb werkelijk geen idee hoe je de ESP kunt laten weten welke site ie moet bezoeken.

Nu is het te laat om daar werk van te maken, ik ga eerst slapen en misschien vind ik van 't weekend wel tijd om daar eens naar te kijken.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Go Up