Flask SocketIO Arduino ESP - PullRequest
       48

Flask SocketIO Arduino ESP

0 голосов
/ 28 апреля 2020

У меня есть веб-сервер flask socketIO, возможно ли подключить Esp8266 к socketIO ??? Потому что я пытаюсь, но безуспешно. Я получаю эту ошибку

192.168.1.237 - - [28 / Apr / 2020 17:19:33] "GET /socket.io/?EIO=3&transport=polling&t=N71H8Tv&sid=40ecc87b0bb84bc99a465165b281da8f HTTP / 1.1" 400 -

main.py

from flask import Flask, render_template
from flask_socketio import SocketIO, send
import os


app = Flask(__name__)
app.config['SECRET-KEY'] = os.urandom(24).hex()
socketio = SocketIO(app)

@app.route('/')
def index():
    return render_template('index.html')

@socketio.on('message')
def handle_maessage(msg):
    send(msg, broadcast=True)

if __name__ == '__main__':
    socketio.run(app, host='192.168.1.113', port=5000)

index. html

<!DOCTYPE html>
<html>
<head>
<title>Chat Room</title>
<script type="text/javascript" src="{{ url_for('static', filename = 'socket.io.min.js') }}"></script>
<script src="{{ url_for('static', filename = 'jquery.min.js') }}"></script>
</head>


<body>
<script type="text/javascript">
$(document).ready(function() {

    var socket = io.connect('http://192.168.1.113:5000');

    socket.on('connect', function() {
        socket.send('User has connected!');
    });

    socket.on('message', function(msg) {
        $("#messages").append('<li>'+msg+'</li>');
        console.log('Received message');
    });

    $('#sendbutton').on('click', function() {
        socket.send($('#myMessage').val());
        $('#myMessage').val('');
    });

});
</script>
<ul id="messages"></ul>
<input type="text" id="myMessage">
<button id="sendbutton">Send</button>
</body>
</html>

Esp.ino

#include <ESP8266WiFi.h>
#include <WebSocketClient.h>

const char* arduino_id = "00000000"; // I gave the board an  id
const char* ssid = "ssid";
const char* password =  "password";
char path[] = "/socket.io/?EIO=3&transport=polling&t=N71H8Tv&sid=40ecc87b0bb84bc99a465165b281da8f";
char host[] = "192.168.1.113";

WebSocketClient webSocketClient;

// Use WiFiClient class to create TCP connections
WiFiClient client;

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());

  // Connect to the websocket server
  if (client.connect(host, 5000)) 
  {
    Serial.println("Connected to server");
  } 
  else 
  {
    Serial.println("Connection failed.");

  }

  // Handshake with the server
  webSocketClient.path = path;
  webSocketClient.host = host;
  if (webSocketClient.handshake(client)) 
  {
    Serial.println("Handshake successful");
  } else 
  {
    Serial.println("Handshake failed.");
  }

}

void loop() 
{
  Serial.println("got in to loop");
  String data;

  if (client.connected()) 
  {
    webSocketClient.getData(data);
    if (data.length() > 0) 
    {
      Serial.print("Received data: ");
      Serial.println(data);

    }

    webSocketClient.sendData(data);

  } 
  else 
  {
    Serial.println("Client disconnected.");
  }

  // wait to fully let the client disconnect
  delay(3000);

}

...