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
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]
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.
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.