syftet är att bygga en knapplåda med en arduino och en ESP8266 som via wifi och socket connect ska få kontakt med en
raspberry pi.
men ack...
har fått igång allt mha exempelprogrammet nedan:
fungerar mot raspen, den kopplar upp och hämtar index.html och skickar ut det på serieporten i klartext.
men efterssom jag även vill ha en webserver på raspen vill jag använda en annan port, t.e.x. 23
som ju är standard telnet...
så jag byter 80 till 23 i koden...
där tar det stopp,
den kopplar upp och allt som den ska men allt den skriver ut är typ:
WiFi connected
IP address:
192.168.10.171
Connected to server
ÿý�ÿý ÿý#ÿý'
ovan är taget från ett likadant problem på nätet där det inte fanns någon lösning på problemet...
min hade inte exakt samma tecken. typ upp och nervända ?
och sedan inget..
vad jag än skickar till raspen kommer inget svar ö.h.t.
jag vill ju ha loginprompt?
för att kunna koppla och typ skicka/ta emot data...
inte säkert mot port 23 och telnet utan en egen socket server...
fast telnet skulle funka för att köra script på raspen att göra det man vill.
vad har jag förbisett?
det funkar givetvis att telnetta in mha en vanlig dator och telnet och att logga in, hur bra som helst,
men icke från ESP8266an...
är det ett teckenkodningsproblem i telnetservern?
då borde det inte gå att telnetta in på port 80 och skicka en GET request som då skriver ut index.html.
vad är det för skillnad mellan socket connects mellan portarna 80 och 23 som jag inte lyckas hitta svar på?
Kod: Markera allt
/*
* This sketch sends data via HTTP GET requests to data.sparkfun.com service.
*
* You need to get streamId and privateKey at data.sparkfun.com and paste them
* below. Or just customize this script to talk to other HTTP servers.
*
*/
#include <ESP8266WiFi.h>
const char* ssid = "your-ssid";
const char* password = "your-password";
const char* host = "data.sparkfun.com";
const char* streamId = "....................";
const char* privateKey = "....................";
void setup() {
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
int value = 0;
void loop() {
delay(5000);
++value;
Serial.print("connecting to ");
Serial.println(host);
// Use WiFiClient class to create TCP connections
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
Serial.println("connection failed");
return;
}
// We now create a URI for the request
String url = "/input/";
url += streamId;
url += "?private_key=";
url += privateKey;
url += "&value=";
url += value;
Serial.print("Requesting URL: ");
Serial.println(url);
// This will send the request to the server
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
// Read all the lines of the reply from server and print them to Serial
while(client.available()){
String line = client.readStringUntil('\r');
Serial.print(line);
}
Serial.println();
Serial.println("closing connection");
}