So, I decided that I would expand on this past experiment:
Woods WiOn Indoor Wi-Fi Outlet Modification (Amazon Echo Too!)
***NOTE*** This is a work in progress, and who knows where it will go as it is just BSing around.
I wrote a different program, utilizing the Arduino IDE, that would allow my TI-99/4A to make a connection to this device, utilizing
Stuart's Web Browser.
WiOn_TI99 ESP8266 Arduino Code:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
const char* ssid = "FrogFi";
const char* password = "**********";
ESP8266WebServer server(80);
const int relay = 15;
void handleRoot() {
Serial.println("test");
server.send(200, "text/html", "<99ml><p>TEST</p></99ml>");
}
void handleNotFound(){
digitalWrite(relay, 1);
String message = "<99ml><p>File Not Found</p></99ml>";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET)?"GET":"POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i=0; i<server.args(); i++){
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
server.send(404, "text/plain", message);
digitalWrite(relay, 0);
}
void setup(void){
pinMode(relay, OUTPUT);
digitalWrite(relay, 0);
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
if (MDNS.begin("esp8266")) {
Serial.println("MDNS responder started");
}
server.on("/", handleRoot);
server.on("/on", [](){
server.send(200, "text/html", "<99ml><p>ON</p></99ml>");
digitalWrite(relay, 1);
});
server.on("/off", [](){
server.send(200, "text/plain", "<99ml><p>OFF</p></99ml>");
digitalWrite(relay, 0);
});
server.onNotFound(handleNotFound);
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient();
}
|
I did run into some problems, that I am still working through. This little web-server not being kind to the older & slower TI.
I figured this out by utilizing telnet. I would telnet into port 80, on the device, and I noticed that it didn't give very much time to issue HTTP commands like: [GET / HTTP/1.1]
I have been working though the timing by messing with ESP8266WebServer.h, that is part of the esp8266/Arduino libraries.
ESP8266WebServer.h
...
#define HTTP_DOWNLOAD_UNIT_SIZE 1460
#define HTTP_UPLOAD_BUFLEN 2048
#define HTTP_MAX_DATA_WAIT 1000 //ms to wait for the client to send the request
#define HTTP_MAX_POST_WAIT 1000 //ms to wait for POST data to arrive
#define HTTP_MAX_CLOSE_WAIT 200 //ms to wait for the client to close the connection
...
|
HTTP_MAX_DATA_WAIT is the value that seems to give the TI some time.
I noticed the ESP8266WebServer.h out in the GitHub project has some more timing settings:
I may want to upgrade the packages that I am using.
The good news is, I was able to turn a lamp on, from my TI-99/4A. :)
It is probably a better idea to have a modern server talk to the ESP8266 devices, and have the TI go through that. That would allow more devices, and a centralized website created for all of them. It would also eliminate having to play around with the timing on these.