Iam trying to make an application which will receive data from tcp server and display realtime data in webpage using flask python.
When iam running the code, iam getting {} as response in Console and no output in webpage
from flask import Flask, jsonify, render_template
import threading
import socket
import json
import time
app = Flask(__name__)
data = {}
@app.route('/sensor_data')
def index():
global data
print(data)
return render_template('sensor_data.html', data=data)
# return jsonify(data)
def update_data(data):
global sock
while True:
# read data from the TCP socket
sock.send('A\n'.encode())
data_str = sock.recv(1024).decode()
data_str = {'Temperature': data_str[33:38], 'Humidity': data_str[52:57]}
data_str = json.dumps(data_str)
# decode JSON data
new_data = json.loads(data_str)
# update the data on the webpage
data.update(new_data)
print(data)
# wait for 1 second
time.sleep(1)
if __name__ == '__main__':
# establish TCP socket connection
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('192.168.56.1', 35000))
# start updating data
update_data_thread = threading.Thread(target=update_data, args=(data,))
update_data_thread.start()
# start the Flask server
app.run(debug=True)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SocketIO Data</title>
</head>
<body>
<h1>SocketIO Data</h1>
<p>Temperature: {{ data.Temperature }} *C</p>
<p>Humidity: {{ data.Humidity }} %H</p>
</body>
</html>