Arduino - Anropa hemsida

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Arduino - Anropa hemsida

Inlägg av GeekJoan »

Håller på med en liten display som talar om när nästa buss kommer. Har skaffat nycklar och grejer till SL's API så jag kan anropa och få rätt tider etc. Men eftersom jag har ett begränsat antal anrop per timme så vill jag inte jobba mot sl's hemsida. Så jag kopierade resultatet och la det på min egna sida som en statisk sida http://geekjoan.com/sl_test.html

Mitt problem just nu är att jag får det inte att funka.
Resultat:
connecting...
connected
HTTP/1.1 301 Moved Permanently
Date: Wed, 14 Mar 2018 09:03:25 GMT
Server: Apache/2.4.25 (Debian)
Location: http://buggfix.se/
Content-Length: 306
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://buggfix.se/">here</a>.</p>
<hr>
<address>Apache/2.4.25 (Debian) Server at http://www.google.com Port 80</address>
</body></html>

disconnecting.


Exempelkod:

Kod: Markera allt

#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[] = { 0x90, 0xA2, 0xDA, 0x00, 0x3C, 0xA4 };
// 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[] = "geekjoan.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(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // 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 /sl_test.html HTTP/1.1");
    client.println("Host: www.google.com");
    client.println("Connection: close");
    client.println();
  } else {
    // if 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);
  }
}
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino - Anropa hemsida

Inlägg av GeekJoan »

Om jag ändrar till SL's adress så får jag ut följande:

connecting...
connected
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.5
server: Microsoft-IIS/8.5
x-aspnet-version: 4.0.30319
x-powered-by: ASP.NET
X-Powered-By: ASP.NET
Date: Wed, 14 Mar 2018 10:22:32 GMT
Connection: close
Content-Length: 1670

{"StatusCode":0,"Message":null,"ExecutionTime":42,"ResponseData":{"LatestUpdate":"2018-03-14T11:22:26","DataAge":6,"Metros":[],"Buses":[{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Brommaplan","JourneyDirection":2,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50214,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-14T11:24:32","ExpectedDateTime":"2018-03-14T11:24:11","DisplayTime":"1 min","JourneyNumber":20874,"Deviations":null},{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Danderyds sjukhus","JourneyDirection":1,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50213,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-14T11:33:06","ExpectedDateTime":"2018-03-14T11:33:06","DisplayTime":"10 min","JourneyNumber":20850,"Deviations":null},{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Brommaplan","JourneyDirection":2,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50214,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-14T11:39:32","ExpectedDateTime":"2018-03-14T11:39:32","DisplayTime":"17 min","JourneyNumber":20907,"Deviations":null},{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Danderyds sjukhus","JourneyDirection":1,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50213,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-14T11:48:06","ExpectedDateTime":"2018-03-14T11:48:06","DisplayTime":"25 min","JourneyNumber":20875,"Deviations":null}],"Trains":[],"Trams":[],"Ships":[],"StopPointDeviations":[]}}
disconnecting.
Kulla
Inlägg: 1264
Blev medlem: 7 januari 2010, 10:06:11
Ort: Sandared
Kontakt:

Re: Arduino - Anropa hemsida

Inlägg av Kulla »

I svaret från SL du får json tillbaka med rätt data verkar som. Vad funkar inte exakt?

Du får array av bussar som kommer så du bara behöver ta ExpectedDateTime och eventuellt någon annan variabel du behöver.

Kod: Markera allt

        "Buses": [{
            "GroupOfLine": null,
            "TransportMode": "BUS",
            "LineNumber": "509",
            "Destination": "Brommaplan",
            "JourneyDirection": 2,
            "StopAreaName": "Rosenborgsgatan",
            "StopAreaNumber": 50213,
            "StopPointNumber": 50214,
            "StopPointDesignation": null,
            "TimeTabledDateTime": "2018-03-14T11:24:32",
            "ExpectedDateTime": "2018-03-14T11:24:11",
            "DisplayTime": "1 min",
            "JourneyNumber": 20874,
            "Deviations": null
        }, {
            "GroupOfLine": null,
            "TransportMode": "BUS",
            "LineNumber": "509",
            "Destination": "Danderyds sjukhus",
            "JourneyDirection": 1,
            "StopAreaName": "Rosenborgsgatan",
            "StopAreaNumber": 50213,
            "StopPointNumber": 50213,
            "StopPointDesignation": null,
            "TimeTabledDateTime": "2018-03-14T11:33:06",
            "ExpectedDateTime": "2018-03-14T11:33:06",
            "DisplayTime": "10 min",
            "JourneyNumber": 20850,
            "Deviations": null
        }, {
            "GroupOfLine": null,
            "TransportMode": "BUS",
            "LineNumber": "509",
            "Destination": "Brommaplan",
            "JourneyDirection": 2,
            "StopAreaName": "Rosenborgsgatan",
            "StopAreaNumber": 50213,
            "StopPointNumber": 50214,
            "StopPointDesignation": null,
            "TimeTabledDateTime": "2018-03-14T11:39:32",
            "ExpectedDateTime": "2018-03-14T11:39:32",
            "DisplayTime": "17 min",
            "JourneyNumber": 20907,
            "Deviations": null
        }, {
            "GroupOfLine": null,
            "TransportMode": "BUS",
            "LineNumber": "509",
            "Destination": "Danderyds sjukhus",
            "JourneyDirection": 1,
            "StopAreaName": "Rosenborgsgatan",
            "StopAreaNumber": 50213,
            "StopPointNumber": 50213,
            "StopPointDesignation": null,
            "TimeTabledDateTime": "2018-03-14T11:48:06",
            "ExpectedDateTime": "2018-03-14T11:48:06",
            "DisplayTime": "25 min",
            "JourneyNumber": 20875,
            "Deviations": null
        }],
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Arduino - Anropa hemsida

Inlägg av johano »

Problemet är att du skickar fel Hostheader (www.google.com), prova med att skicka "geekjoan.com" där istället så funkar det.

/j
Kulla
Inlägg: 1264
Blev medlem: 7 januari 2010, 10:06:11
Ort: Sandared
Kontakt:

Re: Arduino - Anropa hemsida

Inlägg av Kulla »

Host header är oviktigt eftersom han får svar från API.
simply
Inlägg: 497
Blev medlem: 19 januari 2006, 11:27:36
Ort: sthlm
Kontakt:

Re: Arduino - Anropa hemsida

Inlägg av simply »

Inte när han testar mot sin egen server... där nämns ju även google i felmeddelandet:
"Apache/2.4.25 (Debian) Server at http://www.google.com Port 80"
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino - Anropa hemsida

Inlägg av GeekJoan »

Japp, där var problemet. Tack!
Kulla
Inlägg: 1264
Blev medlem: 7 januari 2010, 10:06:11
Ort: Sandared
Kontakt:

Re: Arduino - Anropa hemsida

Inlägg av Kulla »

simply skrev:Inte när han testar mot sin egen server... där nämns ju även google i felmeddelandet:
"Apache/2.4.25 (Debian) Server at http://www.google.com Port 80"
Ah, det stämmer, jag var mer fokuserad på SL server :D
Användarvisningsbild
GeekJoan
Admin
Inlägg: 10642
Blev medlem: 26 maj 2003, 15:59:27
Ort: Solna

Re: Arduino - Anropa hemsida

Inlägg av GeekJoan »

OK, nu till nästa "problem" (JA, jag är helt grön på detta)

Nu när jag väl får ut data från hemsidan så vill jag så klart leta efter rätt sak.
Vad jag är intresserad av är så klart NÄR nästa buss kommer.

Men jag får det inte att funka. Har testat följande:

Kod: Markera allt

void loop() {
  if (client.available()) {
    
    char c = client.read();   // Läser hemsidan och stoppar det i c
    String SLData = String(c);    // Stoppar in det jag läser i strängen SLData
    Serial.print(SLData);    // Printar ut det som är i SLData

    char r = SLData.indexOf("DisplayTime", 1);  // Här vet i fan om jag är på rätt spår, 
    Serial.print(r);  // Om denna raden är med så blir det bara blaj av texten.
  }

Om denna raden är med så blir det bara blaj av texten: Serial.print(r);

Kod: Markera allt

connecting...
connected
H⸮T⸮T⸮P⸮/⸮1⸮.⸮1⸮ ⸮2⸮0⸮0⸮ ⸮O⸮K⸮
⸮
⸮D⸮a⸮t⸮e⸮:⸮ ⸮M⸮o⸮n⸮,⸮ ⸮1⸮9⸮ ⸮M⸮a⸮r⸮ ⸮2⸮0⸮1⸮8⸮ ⸮2⸮1⸮:⸮4⸮1⸮:⸮3⸮2⸮ ⸮G⸮M⸮T⸮
⸮
⸮S⸮e⸮r⸮v⸮e⸮r⸮:⸮ ⸮A⸮p⸮a⸮c⸮h⸮e⸮/⸮2⸮.⸮4⸮.⸮2⸮5⸮ ⸮(⸮D⸮e⸮b⸮i⸮a⸮n⸮)⸮
⸮
⸮L⸮a⸮s⸮t⸮-⸮M⸮o⸮d⸮i⸮f⸮i⸮e⸮d⸮:⸮ ⸮T⸮u⸮e⸮,⸮ ⸮1⸮3⸮ ⸮M⸮a⸮r⸮ ⸮2⸮0⸮1⸮8⸮ ⸮1⸮9⸮:⸮1⸮8⸮:⸮3⸮3⸮ ⸮G⸮M⸮T⸮
⸮
⸮E⸮T⸮a⸮g⸮:⸮ ⸮"⸮5⸮8⸮a⸮-⸮5⸮6⸮7⸮5⸮0⸮1⸮f⸮d⸮a⸮5⸮4⸮4⸮0⸮"⸮
⸮
⸮A⸮c⸮c⸮e⸮p⸮t⸮-⸮R⸮a⸮n⸮g⸮e⸮s⸮:⸮ ⸮b⸮y⸮t⸮e⸮s⸮
⸮
⸮C⸮o⸮n⸮t⸮e⸮n⸮t⸮-⸮L⸮e⸮n⸮g⸮t⸮h⸮:⸮ ⸮1⸮4⸮1⸮8⸮
⸮
⸮C⸮o⸮n⸮n⸮e⸮c⸮t⸮i⸮o⸮n⸮:⸮ ⸮c⸮l⸮o⸮s⸮e⸮
⸮
⸮C⸮o⸮n⸮t⸮e⸮n⸮t⸮-⸮T⸮y⸮p⸮e⸮:⸮ ⸮t⸮e⸮x⸮t⸮/⸮h⸮t⸮m⸮l⸮
⸮
⸮
⸮
⸮⸮⸮⸮⸮⸮⸮<⸮h⸮t⸮m⸮l⸮>⸮
⸮<⸮h⸮e⸮a⸮d⸮>⸮<⸮/⸮h⸮e⸮a⸮d⸮>⸮
⸮<⸮b⸮o⸮d⸮y⸮>⸮
⸮<⸮p⸮r⸮e⸮ ⸮s⸮t⸮y⸮l⸮e⸮=⸮"⸮w⸮o⸮r⸮d⸮-⸮w⸮r⸮a⸮p⸮:⸮ ⸮b⸮r⸮e⸮a⸮k⸮-⸮w⸮o⸮r⸮d⸮;⸮ ⸮w⸮h⸮i⸮t⸮e⸮-⸮s⸮p⸮a⸮c⸮e⸮:⸮ ⸮p⸮r⸮e⸮-⸮w⸮r⸮a⸮p⸮;⸮"⸮>⸮{⸮"⸮S⸮t⸮a⸮t⸮u⸮s⸮C⸮o⸮d⸮e⸮"⸮:⸮0⸮,⸮"⸮M⸮e⸮s⸮s⸮a⸮g⸮e⸮"⸮:⸮n⸮u⸮l⸮l⸮,⸮"⸮E⸮x⸮e⸮c⸮u⸮t⸮i⸮o⸮n⸮T⸮i⸮m⸮e⸮"⸮:⸮2⸮9⸮,⸮"⸮R⸮e⸮s⸮p⸮o⸮n⸮s⸮e⸮D⸮a⸮t⸮a⸮"⸮:⸮{⸮"⸮L⸮a⸮t⸮e⸮s⸮t⸮U⸮p⸮d⸮a⸮t⸮e⸮"⸮:⸮"⸮2⸮0⸮1⸮8⸮-⸮0⸮3⸮-⸮1⸮3⸮T⸮2⸮0⸮:⸮1⸮4⸮:⸮2⸮1⸮"⸮,⸮"⸮D⸮a⸮t⸮a⸮A⸮g⸮e⸮"⸮:⸮1⸮1⸮,⸮"⸮M⸮e⸮t⸮r⸮o⸮s⸮"⸮:⸮[⸮]⸮,⸮"⸮B⸮u⸮s⸮e⸮s⸮"⸮:⸮[⸮{⸮"⸮G⸮r⸮o⸮u⸮p⸮O⸮f⸮L⸮i⸮n⸮e⸮"⸮:⸮n⸮u⸮l⸮l⸮,⸮"⸮T⸮r⸮a⸮n⸮s⸮p⸮o⸮r⸮t⸮M⸮o⸮d⸮e⸮"⸮:⸮"⸮B⸮U⸮S⸮"⸮,⸮"⸮L⸮i⸮n⸮e⸮N⸮u⸮m⸮b⸮e⸮r⸮"⸮:⸮"⸮5⸮0⸮9⸮"⸮,⸮"⸮D⸮e⸮s⸮t⸮i⸮n⸮a⸮t⸮i⸮o⸮n⸮"⸮:⸮"⸮D⸮a⸮n⸮d⸮e⸮r⸮y⸮d⸮s⸮ ⸮s⸮j⸮u⸮k⸮h⸮u⸮s⸮"⸮,⸮"⸮J⸮o⸮u⸮r⸮n⸮e⸮y⸮D⸮i⸮r⸮e⸮c⸮t⸮i⸮o⸮n⸮"⸮:⸮1⸮,⸮"⸮S⸮t⸮o⸮p⸮A⸮r⸮e⸮a⸮N⸮a⸮m⸮e⸮"⸮:⸮"⸮R⸮o⸮s⸮e⸮n⸮b⸮o⸮r⸮g⸮s⸮g⸮a⸮t⸮a⸮n⸮"⸮,⸮"⸮S⸮t⸮o⸮p⸮A⸮r⸮e⸮a⸮N⸮u⸮m⸮b⸮e⸮r⸮"⸮:⸮5⸮0⸮2⸮1⸮3⸮,⸮"⸮S⸮t⸮o⸮p⸮P⸮o⸮i⸮n⸮t⸮N⸮u⸮m⸮b⸮e⸮r⸮"⸮:⸮5⸮0⸮2⸮1⸮3⸮,⸮"⸮S⸮t⸮o⸮p⸮P⸮o⸮i⸮n⸮t⸮D⸮e⸮s⸮i⸮g⸮n⸮a⸮t⸮i⸮o⸮n⸮"⸮:⸮n⸮u⸮l⸮l⸮,⸮"⸮T⸮i⸮m⸮e⸮T⸮a⸮b⸮l⸮e⸮d⸮D⸮a⸮t⸮e⸮T⸮i⸮m⸮e⸮"⸮:⸮"⸮2⸮0⸮1⸮8⸮-⸮0⸮3⸮-⸮1⸮3⸮T⸮2⸮0⸮:⸮1⸮7⸮:⸮3⸮9⸮"⸮,⸮"⸮E⸮x⸮p⸮e⸮c⸮t⸮e⸮d⸮D⸮a⸮t⸮e⸮T⸮i⸮m⸮e⸮"⸮:⸮"⸮2⸮0⸮1⸮8⸮-⸮0⸮3⸮-⸮1⸮3⸮T⸮2⸮0⸮:⸮2⸮1⸮:⸮1⸮1⸮"⸮,⸮"⸮D⸮i⸮s⸮p⸮l⸮a⸮y⸮T⸮i⸮m⸮e⸮"⸮:⸮"⸮6⸮ ⸮m⸮i⸮n⸮"⸮,⸮"⸮J⸮o⸮u⸮r⸮n⸮e⸮y⸮N⸮u⸮m⸮b⸮e⸮r⸮"⸮:⸮2⸮2⸮0⸮5⸮6⸮,⸮"⸮D⸮e⸮v⸮i⸮a⸮t⸮i⸮o⸮n⸮s⸮"⸮:⸮n⸮u⸮l⸮l⸮}⸮,⸮{⸮"⸮G⸮r⸮o⸮u⸮p⸮O⸮f⸮L⸮i⸮n⸮e⸮"⸮:⸮n⸮u⸮l⸮l⸮,⸮"⸮T⸮r⸮a⸮n⸮s⸮p⸮o⸮r⸮t⸮M⸮o⸮d⸮e⸮"⸮:⸮"⸮B⸮U⸮S⸮"⸮,⸮"⸮L⸮i⸮n⸮e⸮N⸮u⸮m⸮b⸮e⸮r⸮"⸮:⸮"⸮5⸮0⸮9⸮"⸮,⸮"⸮D⸮e⸮s⸮t⸮i⸮n⸮a⸮t⸮i⸮o⸮n⸮"⸮:⸮"⸮D⸮a⸮n⸮d⸮e⸮r⸮y⸮d⸮s⸮ ⸮s⸮j⸮u⸮k⸮h⸮u⸮s⸮"⸮,⸮"⸮J⸮o⸮u⸮r⸮n⸮e⸮y⸮D⸮i⸮r⸮e⸮c⸮t⸮i⸮o⸮n⸮"⸮:⸮1⸮,⸮"⸮S⸮t⸮o⸮p⸮A⸮r⸮e⸮a⸮N⸮a⸮m⸮e⸮"⸮:⸮"⸮R⸮o⸮s⸮e⸮n⸮b⸮o⸮r⸮g⸮s⸮g⸮a⸮t⸮a⸮n⸮"⸮,⸮"⸮S⸮t⸮o⸮p⸮A⸮r⸮e⸮a⸮N⸮u⸮m⸮b⸮e⸮r⸮"⸮:⸮5⸮0⸮2⸮1⸮3⸮,⸮"⸮S⸮t⸮o⸮p⸮P⸮o⸮i⸮n⸮t⸮N⸮u⸮m⸮b⸮e⸮r⸮"⸮:⸮5⸮0⸮2⸮1⸮3⸮,⸮"⸮S⸮t⸮o⸮p⸮P⸮o⸮i⸮n⸮t⸮D⸮e⸮s⸮i⸮g⸮n⸮a⸮t⸮i⸮o⸮n⸮"⸮:⸮n⸮u⸮l⸮l⸮,⸮"⸮T⸮i⸮m⸮e⸮T⸮a⸮b⸮l⸮e⸮d⸮D⸮a⸮t⸮e⸮T⸮i⸮m⸮e⸮"⸮:⸮"⸮2⸮0⸮1⸮8⸮-⸮0⸮3⸮-⸮1⸮3⸮T⸮2⸮0⸮:⸮3⸮2⸮:⸮3⸮9⸮"⸮,⸮"⸮E⸮x⸮p⸮e⸮c⸮t⸮e⸮d⸮D⸮a⸮t⸮e⸮T⸮i⸮m⸮e⸮"⸮:⸮"⸮2⸮0⸮1⸮8⸮-⸮0⸮3⸮-⸮1⸮3⸮T⸮2⸮0⸮:⸮3⸮4⸮:⸮2⸮7⸮"⸮,⸮"⸮D⸮i⸮s⸮p⸮l⸮a⸮y⸮T⸮i⸮m⸮e⸮"⸮:⸮"⸮1⸮9⸮ ⸮m⸮i⸮n⸮"⸮,⸮"⸮J⸮o⸮u⸮r⸮n⸮e⸮y⸮N⸮u⸮m⸮b⸮e⸮r⸮"⸮:⸮2⸮2⸮0⸮7⸮9⸮,⸮"⸮D⸮e⸮v⸮i⸮a⸮t⸮i⸮o⸮n⸮s⸮"⸮:⸮n⸮u⸮l⸮l⸮}⸮,⸮{⸮"⸮G⸮r⸮o⸮u⸮p⸮O⸮f⸮L⸮i⸮n⸮e⸮"⸮:⸮n⸮u⸮l⸮l⸮,⸮"⸮T⸮r⸮a⸮n⸮s⸮p⸮o⸮r⸮t⸮M⸮o⸮d⸮e⸮"⸮:⸮"⸮B⸮U⸮S⸮"⸮,⸮"⸮L⸮i⸮n⸮e⸮N⸮u⸮m⸮b⸮e⸮r⸮"⸮:⸮"⸮5⸮0⸮9⸮"⸮,⸮"⸮D⸮e⸮s⸮t⸮i⸮n⸮a⸮t⸮i⸮o⸮n⸮"⸮:⸮"⸮B⸮r⸮o⸮m⸮m⸮a⸮p⸮l⸮a⸮n⸮"⸮,⸮"⸮J⸮o⸮u⸮r⸮n⸮e⸮y⸮D⸮i⸮r⸮e⸮c⸮t⸮i⸮o⸮n⸮"⸮:⸮2⸮,⸮"⸮S⸮t⸮o⸮p⸮A⸮r⸮e⸮a⸮N⸮a⸮m⸮e⸮"⸮:⸮"⸮R⸮o⸮s⸮e⸮n⸮b⸮o⸮r⸮g⸮s⸮g⸮a⸮t⸮a⸮n⸮"⸮,⸮"⸮S⸮t⸮o⸮p⸮A⸮r⸮e⸮a⸮N⸮u⸮m⸮b⸮e⸮r⸮"⸮:⸮5⸮0⸮2⸮1⸮3⸮,⸮"⸮S⸮t⸮o⸮p⸮P⸮o⸮i⸮n⸮t⸮N⸮u⸮m⸮b⸮e⸮r⸮"⸮:⸮5⸮0⸮2⸮1⸮4⸮,⸮"⸮S⸮t⸮o⸮p⸮P⸮o⸮i⸮n⸮t⸮D⸮e⸮s⸮i⸮g⸮n⸮a⸮t⸮i⸮o⸮n⸮"⸮:⸮n⸮u⸮l⸮l⸮,⸮"⸮T⸮i⸮m⸮e⸮T⸮a⸮b⸮l⸮e⸮d⸮D⸮a⸮t⸮e⸮T⸮i⸮m⸮e⸮"⸮:⸮"⸮2⸮0⸮1⸮8⸮-⸮0⸮3⸮-⸮1⸮3⸮T⸮2⸮0⸮:⸮4⸮0⸮:⸮0⸮5⸮"⸮,⸮"⸮E⸮x⸮p⸮e⸮c⸮t⸮e⸮d⸮D⸮a⸮t⸮e⸮T⸮i⸮m⸮e⸮"⸮:⸮"⸮2⸮0⸮1⸮8⸮-⸮0⸮3⸮-⸮1⸮3⸮T⸮2⸮0⸮:⸮4⸮0⸮:⸮0⸮5⸮"⸮,⸮"⸮D⸮i⸮s⸮p⸮l⸮a⸮y⸮T⸮i⸮m⸮e⸮"⸮:⸮"⸮2⸮0⸮:⸮4⸮0⸮"⸮,⸮"⸮J⸮o⸮u⸮r⸮n⸮e⸮y⸮N⸮u⸮m⸮b⸮e⸮r⸮"⸮:⸮2⸮2⸮1⸮1⸮9⸮,⸮"⸮D⸮e⸮v⸮i⸮a⸮t⸮i⸮o⸮n⸮s⸮"⸮:⸮n⸮u⸮l⸮l⸮}⸮]⸮,⸮"⸮T⸮r⸮a⸮i⸮n⸮s⸮"⸮:⸮[⸮]⸮,⸮"⸮T⸮r⸮a⸮m⸮s⸮"⸮:⸮[⸮]⸮,⸮"⸮S⸮h⸮i⸮p⸮s⸮"⸮:⸮[⸮]⸮,⸮"⸮S⸮t⸮o⸮p⸮P⸮o⸮i⸮n⸮t⸮D⸮e⸮v⸮i⸮a⸮t⸮i⸮o⸮n⸮s⸮"⸮:⸮[⸮]⸮}⸮}⸮<⸮/⸮p⸮r⸮e⸮>⸮
⸮<⸮/⸮b⸮o⸮d⸮y⸮>⸮
⸮<⸮/⸮h⸮t⸮m⸮l⸮>⸮
⸮
disconnecting.

Tycker det borde bli rätt först och sen komma blaj om det nu är helt fel på min syntax?
Fortran
EF Sponsor
Inlägg: 1310
Blev medlem: 5 december 2011, 04:18:29
Ort: Åland

Re: Arduino - Anropa hemsida

Inlägg av Fortran »

Helt blaj är det väl inte? :humm:
Plockar du bort alla ⸮ så blir det ju rätt.
Så nånting i din loop spottar ur sig något extra varje varv.

Det kan inte va så simpelt att du behöver specificera datatyp typ Serial.print(r, DEC); ?

Kod: Markera allt

connecting...
connected
HTTP/1.1 200 OK

Date: Mon, 19 Mar 2018 21:41:32 GMT

Server: Apache/2.4.25 (Debian)

Last-Modified: Tue, 13 Mar 2018 19:18:33 GMT

ETag: "58a-567501fda5440"

Accept-Ranges: bytes

Content-Length: 1418

Connection: close

Content-Type: text/html



<html>
<head></head>
<body>
<pre style="word-wrap: break-word; white-space: pre-wrap;">{"StatusCode":0,"Message":null,"ExecutionTime":29,"ResponseData":{"LatestUpdate":"2018-03-13T20:14:21","DataAge":11,"Metros":[],"Buses":[{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Danderyds sjukhus","JourneyDirection":1,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50213,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-13T20:17:39","ExpectedDateTime":"2018-03-13T20:21:11","DisplayTime":"6 min","JourneyNumber":22056,"Deviations":null},{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Danderyds sjukhus","JourneyDirection":1,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50213,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-13T20:32:39","ExpectedDateTime":"2018-03-13T20:34:27","DisplayTime":"19 min","JourneyNumber":22079,"Deviations":null},{"GroupOfLine":null,"TransportMode":"BUS","LineNumber":"509","Destination":"Brommaplan","JourneyDirection":2,"StopAreaName":"Rosenborgsgatan","StopAreaNumber":50213,"StopPointNumber":50214,"StopPointDesignation":null,"TimeTabledDateTime":"2018-03-13T20:40:05","ExpectedDateTime":"2018-03-13T20:40:05","DisplayTime":"20:40","JourneyNumber":22119,"Deviations":null}],"Trains":[],"Trams":[],"Ships":[],"StopPointDeviations":[]}}</pre>
</body>
</html>
Användarvisningsbild
rvl
Inlägg: 5719
Blev medlem: 5 april 2016, 14:58:53
Ort: Helsingfors

Re: Arduino - Anropa hemsida

Inlägg av rvl »

Kod: Markera allt

String SLData = String(c);    // Stoppar in det jag läser i strängen SLData
"Stoppar in" stämmer för det är just det som brutalt sker, vill du däremot bygga up din sträng i en buffer så måste instoppningspositionen stegas framåt. Sen först när hela strängen är klar blir det dags att söka i den och printa ut, i stället för att skriva ett tecken (+ skräp) varje varv.
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Arduino - Anropa hemsida

Inlägg av Mr Andersson »

Vi kan gå igenom programmet rad för rad. Indata är "HTTP ..."
char c = client.read(); Läs ett tecken ('H') till c
String SLData = String(c); Bygg en sträng av c, dvs "H"
Serial.print(SLData); Skriv ut "H"
char r = SLData.indexOf("DisplayTime", 1); Testa om "H" innehåller "DisplayTime". Det gör det inte, r = -1
Serial.print(r); Skriv ut -1 som ASCII, terminalen vet inte hur den ska tolka det och skriver ?
Sen fortsätt tecken för tecken genom hela texten.

Testa om det här fungerar bättre (otestad kod)

Kod: Markera allt

void loop() {
	String SLData;
	while (client.available()) {
		SLData += client.read();
	}

	if (SLData.length() > 0) {
		Serial.print(SLData);

		int r = SLData.indexOf("DisplayTime", 1);
		if (r >= 0) {
			Serial.print("DisplayTime finns på position ");
			Serial.print(r);
		}
	}
}
Användarvisningsbild
Jan Almqvist
Inlägg: 1580
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Arduino - Anropa hemsida

Inlägg av Jan Almqvist »

Det kommer väl nästan 2000 tecken, jag undrar om minnet kommer att räcka?

Kod: Markera allt

   String SLData;
   while (client.available()) {
      SLData += client.read();
   }
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Arduino - Anropa hemsida

Inlägg av Mr Andersson »

Jo det är sant, glömde bort hur lite minne det finns.

Man måste nog göra någon egen strängsökfunktion som bara sparar en lite del av texten åt gången.
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Arduino - Anropa hemsida

Inlägg av johano »

Om man nu inte kan trimma ner det data som hamnar på den egna servern till att endast innehålla det relevanta?
Alternativt bygger en liten "tjänst" som kan "strippa ner" data vid requesttillfället.

Parse:a (potentiellt stora) strängar låter inte som ett perfekt jobb för en Arduino

/j
Skriv svar