|
@@ -0,0 +1,198 @@
|
|
|
|
|
+#include <ArduinoJson.h>
|
|
|
|
|
+
|
|
|
|
|
+#include <AsyncEventSource.h>
|
|
|
|
|
+#include <AsyncJson.h>
|
|
|
|
|
+#include <AsyncWebSocket.h>
|
|
|
|
|
+#include <AsyncWebSynchronization.h>
|
|
|
|
|
+#include <ESPAsyncWebServer.h>
|
|
|
|
|
+#include <StringArray.h>
|
|
|
|
|
+#include <WebAuthentication.h>
|
|
|
|
|
+#include <WebHandlerImpl.h>
|
|
|
|
|
+#include <WebResponseImpl.h>
|
|
|
|
|
+
|
|
|
|
|
+#include <AsyncEventSource.h>
|
|
|
|
|
+#include <AsyncJson.h>
|
|
|
|
|
+#include <AsyncWebSocket.h>
|
|
|
|
|
+#include <AsyncWebSynchronization.h>
|
|
|
|
|
+#include <ESPAsyncWebServer.h>
|
|
|
|
|
+#include <StringArray.h>
|
|
|
|
|
+#include <WebAuthentication.h>
|
|
|
|
|
+#include <WebHandlerImpl.h>
|
|
|
|
|
+#include <WebResponseImpl.h>
|
|
|
|
|
+
|
|
|
|
|
+#include <ArduinoWiFiServer.h>
|
|
|
|
|
+#include <BearSSLHelpers.h>
|
|
|
|
|
+#include <CertStoreBearSSL.h>
|
|
|
|
|
+#include <ESP8266WiFi.h>
|
|
|
|
|
+#include <ESP8266WiFiAP.h>
|
|
|
|
|
+#include <ESP8266WiFiGeneric.h>
|
|
|
|
|
+#include <ESP8266WiFiGratuitous.h>
|
|
|
|
|
+#include <ESP8266WiFiMulti.h>
|
|
|
|
|
+#include <ESP8266WiFiScan.h>
|
|
|
|
|
+#include <ESP8266WiFiSTA.h>
|
|
|
|
|
+#include <ESP8266WiFiType.h>
|
|
|
|
|
+#include <WiFiClient.h>
|
|
|
|
|
+#include <WiFiClientSecure.h>
|
|
|
|
|
+#include <WiFiClientSecureBearSSL.h>
|
|
|
|
|
+#include <WiFiServer.h>
|
|
|
|
|
+#include <WiFiServerSecure.h>
|
|
|
|
|
+#include <WiFiServerSecureBearSSL.h>
|
|
|
|
|
+#include <WiFiUdp.h>
|
|
|
|
|
+
|
|
|
|
|
+static const uint8_t D1 = 5;
|
|
|
|
|
+static const uint8_t D2 = 4;
|
|
|
|
|
+static const char* ssid = "MINOLTA_REMOTE_CONTROL";
|
|
|
|
|
+static const char* password = "12345678";
|
|
|
|
|
+bool isFocusPressed = false;
|
|
|
|
|
+IPAddress local_IP(192,168,1,200);
|
|
|
|
|
+IPAddress gateway(192,168,1,1);
|
|
|
|
|
+IPAddress subnet(255,255,255,0);
|
|
|
|
|
+AsyncWebServer server(80);
|
|
|
|
|
+
|
|
|
|
|
+void setup() {
|
|
|
|
|
+ // put your setup code here, to run once:
|
|
|
|
|
+ Serial.begin(115200);
|
|
|
|
|
+ pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output
|
|
|
|
|
+ pinMode(D1, OUTPUT);
|
|
|
|
|
+ pinMode(D2, OUTPUT);
|
|
|
|
|
+ digitalWrite(LED_BUILTIN, LOW);
|
|
|
|
|
+ digitalWrite(D1, LOW);
|
|
|
|
|
+ digitalWrite(D2, LOW);
|
|
|
|
|
+ if (!WiFi.softAPConfig (local_IP, gateway, subnet))
|
|
|
|
|
+ {
|
|
|
|
|
+ Serial.println("Failed to config IP");
|
|
|
|
|
+ }
|
|
|
|
|
+ WiFi.softAP(ssid, password);
|
|
|
|
|
+ Serial.println(WiFi.softAPIP());
|
|
|
|
|
+ Serial.println("Waiting for connect");
|
|
|
|
|
+ /*while(WiFi.status() != WL_CONNECTED)
|
|
|
|
|
+ {
|
|
|
|
|
+ digitalWrite(LED_BUILTIN, HIGH);
|
|
|
|
|
+ delay(500);
|
|
|
|
|
+ Serial.print(".");
|
|
|
|
|
+ Serial.print(WiFi.status());
|
|
|
|
|
+ digitalWrite(LED_BUILTIN, LOW);
|
|
|
|
|
+ }*/
|
|
|
|
|
+ Serial.println("Client connected");
|
|
|
|
|
+
|
|
|
|
|
+ server.on("/api/focus",HTTP_GET, [](AsyncWebServerRequest *request)
|
|
|
|
|
+ {
|
|
|
|
|
+ Serial.println("api/focus");
|
|
|
|
|
+ digitalWrite(LED_BUILTIN, HIGH);
|
|
|
|
|
+ halfPress();
|
|
|
|
|
+ digitalWrite(LED_BUILTIN, LOW);
|
|
|
|
|
+ request->send(200,"application/json","{\"result\":\"true\"}");
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ server.on("/api/takePhoto",HTTP_GET, [](AsyncWebServerRequest *request)
|
|
|
|
|
+ {
|
|
|
|
|
+ Serial.println("api/takePhoto");
|
|
|
|
|
+ digitalWrite(LED_BUILTIN, HIGH);
|
|
|
|
|
+ if (request->hasParam("msec"))
|
|
|
|
|
+ {
|
|
|
|
|
+ int ms = request->getParam("msec")->value().toInt();
|
|
|
|
|
+ }
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ pressFullWithDelay(1000);
|
|
|
|
|
+ }
|
|
|
|
|
+ digitalWrite(LED_BUILTIN, LOW);
|
|
|
|
|
+ request->send(200,"application/json","{\"result\":\"true\"}");
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ server.on("/api/reset",HTTP_GET, [](AsyncWebServerRequest *request)
|
|
|
|
|
+ {
|
|
|
|
|
+ Serial.println("api/reset");
|
|
|
|
|
+ digitalWrite(LED_BUILTIN, HIGH);
|
|
|
|
|
+ unPress();
|
|
|
|
|
+ digitalWrite(LED_BUILTIN, LOW);
|
|
|
|
|
+ request->send(200,"application/json","{\"result\":\"true\"}");
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ server.on("/api/multiple",HTTP_GET, [](AsyncWebServerRequest *request)
|
|
|
|
|
+ {
|
|
|
|
|
+ Serial.println("api/multiple");
|
|
|
|
|
+ digitalWrite(LED_BUILTIN, HIGH);
|
|
|
|
|
+ if (request->hasParam("count") && request->hasParam("delay"))
|
|
|
|
|
+ {
|
|
|
|
|
+ int ms = 1000;
|
|
|
|
|
+ int count = request->getParam("count")->value().toInt();
|
|
|
|
|
+ int delayMs = request->getParam("delay")->value().toInt();
|
|
|
|
|
+ if (request->hasParam("msec"))
|
|
|
|
|
+ {
|
|
|
|
|
+ ms = request->getParam("msec")->value().toInt();
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!isFocusPressed)
|
|
|
|
|
+ {
|
|
|
|
|
+ halfPress();
|
|
|
|
|
+ delay(1000);
|
|
|
|
|
+ }
|
|
|
|
|
+ while (count>0)
|
|
|
|
|
+ {
|
|
|
|
|
+ fullPress();
|
|
|
|
|
+ delay(ms);
|
|
|
|
|
+ digitalWrite(D2, LOW);
|
|
|
|
|
+ count--;
|
|
|
|
|
+ delay(delayMs);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ digitalWrite(LED_BUILTIN, LOW);
|
|
|
|
|
+ request->send(200,"application/json","{\"result\":\"true\"}");
|
|
|
|
|
+ });
|
|
|
|
|
+ server.on("/get", HTTP_GET, [](AsyncWebServerRequest *request){ request->send(200, "text/plain", "Is working"); });
|
|
|
|
|
+ server.begin();
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void halfPress()
|
|
|
|
|
+{
|
|
|
|
|
+ digitalWrite(D1, HIGH);
|
|
|
|
|
+ isFocusPressed = true;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void fullPress()
|
|
|
|
|
+{
|
|
|
|
|
+ if (!isFocusPressed)
|
|
|
|
|
+ {
|
|
|
|
|
+ halfPress();
|
|
|
|
|
+ delay(1000);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ digitalWrite(D2, HIGH);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void pressFullWithDelay(int ms)
|
|
|
|
|
+{
|
|
|
|
|
+ fullPress();
|
|
|
|
|
+ delay(ms);
|
|
|
|
|
+ unPress();
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void unPress()
|
|
|
|
|
+{
|
|
|
|
|
+ digitalWrite(D2, LOW);
|
|
|
|
|
+ digitalWrite(D1, LOW);
|
|
|
|
|
+ isFocusPressed = false;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void multipleShoot(int ms, int count, int delayMs)
|
|
|
|
|
+{
|
|
|
|
|
+ if (!isFocusPressed)
|
|
|
|
|
+ {
|
|
|
|
|
+ halfPress();
|
|
|
|
|
+ delay(1000);
|
|
|
|
|
+ }
|
|
|
|
|
+ while (count>0)
|
|
|
|
|
+ {
|
|
|
|
|
+ fullPress();
|
|
|
|
|
+ delay(ms);
|
|
|
|
|
+ digitalWrite(D2, LOW);
|
|
|
|
|
+ count--;
|
|
|
|
|
+ delay(delayMs);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+void loop() {
|
|
|
|
|
+ // put your main code here, to run repeatedly:
|
|
|
|
|
+
|
|
|
|
|
+}
|