added more spaghetticode
parent
58fe757a56
commit
848bd58266
137
app.py
137
app.py
|
|
@ -2,23 +2,93 @@ import requests, random, hashlib, json, os
|
||||||
from esplistener.esplistener import *
|
from esplistener.esplistener import *
|
||||||
from flask import session, Flask, request, render_template, url_for, redirect
|
from flask import session, Flask, request, render_template, url_for, redirect
|
||||||
|
|
||||||
initialize_data = initialize()
|
|
||||||
|
|
||||||
socket, data = initialize_data[0], initialize_data[1]
|
|
||||||
|
#initialize_data = initialize()
|
||||||
|
|
||||||
|
#socket, data = initialize_data[0], initialize_data[1]
|
||||||
|
|
||||||
#get_smth(socket, "Temperature")
|
#get_smth(socket, "Temperature")
|
||||||
#send_command(socket, "Temperature", "GetValue")
|
#send_command(socket, "Temperature", "GetValue")
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
app.secret_key = '%TGHUI8uyFGHI(*&^5rUIO9i*&^TRfvgbHNJKLKJnhgfDE3WedFGhjKOlIuyTRe4567ioP:liuytr56&8()IuGTfrEdsXcghuy6'
|
app.secret_key = '%TGHUI8uyFGHI(*&^5rUIO9i*&^TRfvgbHNJKLKJnhgfDE3WedFGhjKOlIuyTRe4567ioP:liuytr56&8()IuGTfrEdsXcghuy6'
|
||||||
|
cdata = {}
|
||||||
|
def get_data():
|
||||||
|
global cdata
|
||||||
|
if open('data.json', 'r').read() != "":
|
||||||
|
with open('data.json', 'r') as w:
|
||||||
|
cdata = json.load(w)
|
||||||
|
print("get from json")
|
||||||
|
|
||||||
|
else:
|
||||||
|
if not(cdata):
|
||||||
|
# if session['loggedin']:
|
||||||
|
sensors = ['pozhar', 'pozharolikv', 'soundstatus','soundlikv', 'doorst', 'gaz', 'gazolikv']
|
||||||
|
cdata = {'1': {},
|
||||||
|
'2': {},
|
||||||
|
'3': {},
|
||||||
|
'potok': 100,
|
||||||
|
'earthquake': 1,
|
||||||
|
'techka': 1,
|
||||||
|
'tok': 100,
|
||||||
|
'nasostoggle': 1,
|
||||||
|
'lightst':1
|
||||||
|
}
|
||||||
|
for i in range(1,4):
|
||||||
|
for j in sensors:
|
||||||
|
if j in ['earthquake', 'techka', 'nasostoggle', 'pozhar', 'soundstatus', 'gazolikv', 'pozharolikv', 'gaz','soundlikv']:
|
||||||
|
cdata[str(i)][j+str(i)] = random.randint(1,1)
|
||||||
|
else:
|
||||||
|
cdata[str(i)][j+str(i)] = random.randint(50, 50)
|
||||||
|
with open("data.json", 'w') as f:
|
||||||
|
json.dump(cdata, f, indent=4)
|
||||||
|
|
||||||
|
return cdata
|
||||||
|
else:
|
||||||
|
with open("data.json", 'w') as f:
|
||||||
|
json.dump(cdata, f, indent=4)
|
||||||
|
|
||||||
|
print("not created")
|
||||||
|
return cdata
|
||||||
|
|
||||||
|
def get_value(sensorid):
|
||||||
|
global cdata
|
||||||
|
if sensorid in cdata.keys():
|
||||||
|
return cdata[sensorid]
|
||||||
|
else:
|
||||||
|
for i in cdata.keys():
|
||||||
|
try:
|
||||||
|
if sensorid in cdata[str(i)].keys():
|
||||||
|
return cdata[str(i)][sensorid]
|
||||||
|
except:
|
||||||
|
break
|
||||||
|
|
||||||
|
def change_data(sensorid, value):
|
||||||
|
global cdata
|
||||||
|
if sensorid in cdata.keys():
|
||||||
|
cdata[sensorid] = value
|
||||||
|
with open('data.json', 'w') as r:
|
||||||
|
json.dump(cdata, r, indent=4)
|
||||||
|
print("unluck")
|
||||||
|
else:
|
||||||
|
for i in cdata.keys():
|
||||||
|
try:
|
||||||
|
if sensorid in cdata[str(i)].keys():
|
||||||
|
cdata[str(i)][sensorid] = value
|
||||||
|
with open('data.json', 'w') as r:
|
||||||
|
json.dump(cdata, r, indent=4)
|
||||||
|
print("unluck")
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
break
|
||||||
|
return '1'
|
||||||
|
cdata = {}
|
||||||
def hash_data(data):
|
def hash_data(data):
|
||||||
hashpass = hashlib.sha256()
|
hashpass = hashlib.sha256()
|
||||||
hashpass.update(bytes(data, encoding='utf8'))
|
hashpass.update(bytes(data, encoding='utf8'))
|
||||||
passw = hashpass.hexdigest()
|
passw = hashpass.hexdigest()
|
||||||
return passw
|
return passw
|
||||||
|
|
||||||
def create_account(login, password):
|
def create_account(login, password):
|
||||||
login, password = str(login), str(password)
|
login, password = str(login), str(password)
|
||||||
if not os.path.exists('accounts.json'):
|
if not os.path.exists('accounts.json'):
|
||||||
|
|
@ -60,11 +130,10 @@ def define_session(session):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def get_cur_speed(session):
|
|
||||||
if session['loggedin']:
|
|
||||||
return random.randint(1, 100)
|
|
||||||
return "no rights"
|
|
||||||
#return int(requests.post("http://"+ip+"/get_speed"))
|
|
||||||
#Основные страницы, индекс, и страницы лабораторий, авторизация
|
#Основные страницы, индекс, и страницы лабораторий, авторизация
|
||||||
@app.route("/", methods = ["GET", "POST"])
|
@app.route("/", methods = ["GET", "POST"])
|
||||||
def index():
|
def index():
|
||||||
|
|
@ -107,27 +176,47 @@ def login():
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#Общение с ЕSP
|
|
||||||
|
|
||||||
|
#Общение с ЕSP
|
||||||
|
@app.route("/change_value", methods = ["POST"])
|
||||||
|
def ch_value():
|
||||||
|
if session["loggedin"]:
|
||||||
|
sensorid = request.values.get("id")
|
||||||
|
value = request.values.get("value")
|
||||||
|
change_value(sensorid, value)
|
||||||
|
print(cdata)
|
||||||
|
else:
|
||||||
|
return 'No rights'
|
||||||
|
|
||||||
|
|
||||||
|
@app.route("/send_command", methods = ["POST"])
|
||||||
|
def change():
|
||||||
|
if session["loggedin"]:
|
||||||
|
k = request.values.get('comm_id')
|
||||||
|
if 'alert' in k:
|
||||||
|
k = k.replace('alert', '')
|
||||||
|
|
||||||
|
if k in ["lightst", "nasostoggle", "doorst1", "doorst2", "doorst3", "nasostoggle", "lightst", "pozharolikv1", "pozharolikv2","pozharolikv3","gazolikv1","gazolikv2","gazolikv3", "soundstatus1", "soundstatus2", "soundstatus3"]:
|
||||||
|
z = get_value(k)
|
||||||
|
print(k, z)
|
||||||
|
change_data(k, int(not(z)))
|
||||||
|
print(get_value(k), "lalka")
|
||||||
|
return '1'
|
||||||
|
else:
|
||||||
|
print("lol", k)
|
||||||
|
print(request.data)
|
||||||
|
print(request.args.keys())
|
||||||
|
print(cdata)
|
||||||
|
return '0'
|
||||||
|
else:
|
||||||
|
return '0'
|
||||||
@app.route("/get_data", methods = ["POST"])
|
@app.route("/get_data", methods = ["POST"])
|
||||||
def return_data():
|
def return_data():
|
||||||
if 1:
|
if session["loggedin"]:
|
||||||
# if session['loggedin']:
|
cdata = get_data()
|
||||||
sensors = ['earthquake', 'techka', 'pozhar', 'soundstatus', 'tok', 'potok', 'nasostoggle', 'nasosspeed','lightst', 'lightpower', 'gaz']
|
return json.dumps(cdata)
|
||||||
data = {'1': {},
|
|
||||||
'2': {},
|
|
||||||
'3': {}}
|
|
||||||
for i in range(1,4):
|
|
||||||
for j in sensors:
|
|
||||||
if j in ['earthquake', 'techka', 'nasostoggle', 'pozhar', 'soundstatus', 'lighst', 'onfire', 'gaz']:
|
|
||||||
data[str(i)][j] = random.randint(0,1)
|
|
||||||
else:
|
|
||||||
data[str(i)][j] = random.randint(0, 100)
|
|
||||||
print(data)
|
|
||||||
return json.dumps(data)
|
|
||||||
return 'no_rights'
|
return 'no_rights'
|
||||||
|
|
||||||
|
|
||||||
@app.route("/sos_check", methods = ["POST"])
|
@app.route("/sos_check", methods = ["POST"])
|
||||||
def sos_check():
|
def sos_check():
|
||||||
if random.randint(0,1):
|
if random.randint(0,1):
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,305 @@
|
||||||
|
from aiogram import Bot, Dispatcher, executor, types
|
||||||
|
from aiogram.types import ChatType, ReplyKeyboardRemove, ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton
|
||||||
|
import socket, json
|
||||||
|
|
||||||
|
chat_id = -1001710050337
|
||||||
|
|
||||||
|
API_TOKEN = '7074773527:AAFlDwOONJtLoeQXpRpOCjdpEFRHh_YIyHw'
|
||||||
|
bot = Bot(token=API_TOKEN)
|
||||||
|
dp = Dispatcher(bot)
|
||||||
|
|
||||||
|
users = {
|
||||||
|
"1":[],
|
||||||
|
"2":[],
|
||||||
|
"3":[]
|
||||||
|
}
|
||||||
|
cdata = {}
|
||||||
|
def get_data():
|
||||||
|
global cdata
|
||||||
|
if open('data.json', 'r').read() != "{}":
|
||||||
|
with open('data.json', 'r') as w:
|
||||||
|
cdata = json.load(w)
|
||||||
|
print("GOT FROM FILE")
|
||||||
|
else:
|
||||||
|
if not(cdata):
|
||||||
|
# if session['loggedin']:
|
||||||
|
sensors = ['pozhar', 'pozharolikv', 'soundstatus','soundlikv', 'doorst', 'gaz', 'gazolikv']
|
||||||
|
cdata = {'1': {},
|
||||||
|
'2': {},
|
||||||
|
'3': {},
|
||||||
|
'potok': 100,
|
||||||
|
'earthquake': 1,
|
||||||
|
'techka': 1,
|
||||||
|
'tok': 100,
|
||||||
|
'nasostoggle': 1,
|
||||||
|
'lightst':1
|
||||||
|
}
|
||||||
|
for i in range(1,4):
|
||||||
|
for j in sensors:
|
||||||
|
if j in ['earthquake', 'techka', 'nasostoggle', 'pozhar', 'soundstatus', 'gazolikv', 'pozharolikv', 'gaz','soundlikv']:
|
||||||
|
cdata[str(i)][j+str(i)] = random.randint(1,1)
|
||||||
|
else:
|
||||||
|
cdata[str(i)][j+str(i)] = random.randint(50, 50)
|
||||||
|
with open("data.json", 'w') as f:
|
||||||
|
json.dump(cdata, f, indent=4)
|
||||||
|
|
||||||
|
return cdata
|
||||||
|
else:
|
||||||
|
with open("data.json", 'w') as f:
|
||||||
|
json.dump(cdata, f, indent=4)
|
||||||
|
|
||||||
|
print("not created")
|
||||||
|
return cdata
|
||||||
|
|
||||||
|
cdata = get_data()
|
||||||
|
|
||||||
|
def get_value(sensorid):
|
||||||
|
global cdata
|
||||||
|
if sensorid in cdata.keys():
|
||||||
|
return cdata[sensorid]
|
||||||
|
else:
|
||||||
|
for i in cdata.keys():
|
||||||
|
try:
|
||||||
|
if sensorid in cdata[str(i)].keys():
|
||||||
|
return cdata[str(i)][sensorid]
|
||||||
|
except:
|
||||||
|
break
|
||||||
|
|
||||||
|
def change_data(sensorid, value):
|
||||||
|
global cdata
|
||||||
|
if sensorid in cdata.keys():
|
||||||
|
cdata[sensorid] = value
|
||||||
|
with open('data.json', 'w') as r:
|
||||||
|
json.dump(cdata, r)
|
||||||
|
print("changed", sensorid, value)
|
||||||
|
else:
|
||||||
|
for i in cdata.keys():
|
||||||
|
try:
|
||||||
|
if sensorid in cdata[str(i)].keys():
|
||||||
|
cdata[str(i)][sensorid] = value
|
||||||
|
print("chengci", sensorid, value)
|
||||||
|
with open('data.json', 'w') as r:
|
||||||
|
json.dump(cdata, r)
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
break
|
||||||
|
return '1'
|
||||||
|
@dp.message_handler(commands=['start'])
|
||||||
|
async def start(message: types.Message):
|
||||||
|
tt = message.from_user.id
|
||||||
|
k=1
|
||||||
|
for i in users.keys():
|
||||||
|
if tt in users[i]:
|
||||||
|
k = 0
|
||||||
|
if k:
|
||||||
|
keyboard = InlineKeyboardMarkup()
|
||||||
|
keyboard.add(
|
||||||
|
InlineKeyboardButton(text="1", callback_data="1"),
|
||||||
|
InlineKeyboardButton(text="2", callback_data="2"),
|
||||||
|
InlineKeyboardButton(text="3", callback_data="3")
|
||||||
|
)
|
||||||
|
await message.answer("В каком подъезде вы живёте?", reply_markup=keyboard)
|
||||||
|
else:
|
||||||
|
await message.answer("Вы уже зарегистрированы")
|
||||||
|
|
||||||
|
@dp.callback_query_handler(lambda query: query.data in ['1', '2', '3'])
|
||||||
|
async def process_callback(callback_query: types.CallbackQuery):
|
||||||
|
user_id = callback_query.from_user.id
|
||||||
|
users[callback_query.data].append(user_id)
|
||||||
|
await bot.delete_message(chat_id=callback_query.from_user.id, message_id=callback_query.message.message_id)
|
||||||
|
await bot.send_message(user_id, f"Вы добавлены в подъезд {callback_query.data}")
|
||||||
|
|
||||||
|
@dp.message_handler(content_types=types.ContentTypes.NEW_CHAT_MEMBERS)
|
||||||
|
async def add_chat_members(message: types.Message):
|
||||||
|
for member in message.new_chat_members:
|
||||||
|
user_id = member.id
|
||||||
|
if user_id not in users:
|
||||||
|
await message.answer(f"Пользователь {member.full_name}, зарегистрируйтесь у меня для работы с умным домом")
|
||||||
|
|
||||||
|
@dp.message_handler(lambda message: message.text == "Открыть дверь")
|
||||||
|
async def open_the_door(message: types.Message):
|
||||||
|
k = ''
|
||||||
|
for i in users.keys():
|
||||||
|
if message.from_user.id in users[i]:
|
||||||
|
k = i
|
||||||
|
change_data("doorst"+k, 0)
|
||||||
|
print(cdata[k]["doorst"+k])
|
||||||
|
data = get_data()
|
||||||
|
k = ''
|
||||||
|
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
|
||||||
|
button_open = types.KeyboardButton("Открыть дверь")
|
||||||
|
button_toggle = types.KeyboardButton("Включить освещение")
|
||||||
|
button_untoggle = types.KeyboardButton("Выключить освещение")
|
||||||
|
button_close = types.KeyboardButton("Закрыть дверь")
|
||||||
|
button_clear_snow = types.KeyboardButton("Очистка снега")
|
||||||
|
button_doctor = types.KeyboardButton("Врач")
|
||||||
|
keyboard.add(button_clear_snow, button_doctor)
|
||||||
|
if get_value("lightst"):
|
||||||
|
keyboard.add(button_untoggle)
|
||||||
|
else:
|
||||||
|
keyboard.add(button_toggle)
|
||||||
|
if not(get_value("doorst"+k)):
|
||||||
|
print("opened")
|
||||||
|
keyboard.add(button_close)
|
||||||
|
else:
|
||||||
|
print("closed")
|
||||||
|
keyboard.add(button_open)
|
||||||
|
|
||||||
|
await message.answer("Вы открыли дверь" + cdata,reply_markup=keyboard)
|
||||||
|
|
||||||
|
@dp.message_handler(lambda message: message.text == "Закрыть дверь")
|
||||||
|
async def close_the_door(message: types.Message):
|
||||||
|
k = ''
|
||||||
|
for i in users.keys():
|
||||||
|
if message.from_user.id in users[i]:
|
||||||
|
k = i
|
||||||
|
change_data("doorst"+k, 1)
|
||||||
|
print(cdata[k]["doorst"+k])
|
||||||
|
data = get_data()
|
||||||
|
k = ''
|
||||||
|
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
|
||||||
|
button_open = types.KeyboardButton("Открыть дверь")
|
||||||
|
button_toggle = types.KeyboardButton("Включить освещение")
|
||||||
|
button_untoggle = types.KeyboardButton("Выключить освещение")
|
||||||
|
button_close = types.KeyboardButton("Закрыть дверь")
|
||||||
|
button_clear_snow = types.KeyboardButton("Очистка снега")
|
||||||
|
button_doctor = types.KeyboardButton("Врач")
|
||||||
|
keyboard.add(button_clear_snow, button_doctor)
|
||||||
|
if get_value("lightst"):
|
||||||
|
keyboard.add(button_untoggle)
|
||||||
|
else:
|
||||||
|
keyboard.add(button_toggle)
|
||||||
|
if not(get_value("doorst"+k)):
|
||||||
|
print("opened")
|
||||||
|
keyboard.add(button_close)
|
||||||
|
else:
|
||||||
|
keyboard.add(button_open)
|
||||||
|
|
||||||
|
await message.answer("Вы закрыли дверь",reply_markup=keyboard)
|
||||||
|
|
||||||
|
@dp.message_handler(lambda message: message.text == "Включить освещение")
|
||||||
|
async def turn_on_light(message: types.Message):
|
||||||
|
for i in users.keys():
|
||||||
|
if message.from_user.id in users[i]:
|
||||||
|
k = i
|
||||||
|
change_data("lightst", 1)
|
||||||
|
data = get_data()
|
||||||
|
k = ''
|
||||||
|
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
|
||||||
|
button_open = types.KeyboardButton("Открыть дверь")
|
||||||
|
button_toggle = types.KeyboardButton("Включить освещение")
|
||||||
|
button_untoggle = types.KeyboardButton("Выключить освещение")
|
||||||
|
button_close = types.KeyboardButton("Закрыть дверь")
|
||||||
|
button_clear_snow = types.KeyboardButton("Очистка снега")
|
||||||
|
button_doctor = types.KeyboardButton("Врач")
|
||||||
|
keyboard.add(button_clear_snow, button_doctor)
|
||||||
|
if get_value("lightst"):
|
||||||
|
keyboard.add(button_untoggle)
|
||||||
|
else:
|
||||||
|
keyboard.add(button_toggle)
|
||||||
|
if not(get_value("doorst"+k)):
|
||||||
|
print("opened")
|
||||||
|
keyboard.add(button_close)
|
||||||
|
else:
|
||||||
|
keyboard.add(button_open)
|
||||||
|
|
||||||
|
print(cdata["lightst"])
|
||||||
|
await message.answer("Вы включили свет",reply_markup=keyboard)
|
||||||
|
|
||||||
|
|
||||||
|
@dp.message_handler(lambda message: message.text == "Выключить освещение")
|
||||||
|
async def turn_off_light(message: types.Message):
|
||||||
|
for i in users.keys():
|
||||||
|
if message.from_user.id in users[i]:
|
||||||
|
k = i
|
||||||
|
change_data("lightst", 0)
|
||||||
|
print(cdata["lightst"])
|
||||||
|
data = get_data()
|
||||||
|
k = ''
|
||||||
|
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
|
||||||
|
button_open = types.KeyboardButton("Открыть дверь")
|
||||||
|
button_toggle = types.KeyboardButton("Включить освещение")
|
||||||
|
button_untoggle = types.KeyboardButton("Выключить освещение")
|
||||||
|
button_close = types.KeyboardButton("Закрыть дверь")
|
||||||
|
button_clear_snow = types.KeyboardButton("Очистка снега")
|
||||||
|
button_doctor = types.KeyboardButton("Врач")
|
||||||
|
keyboard.add(button_clear_snow, button_doctor)
|
||||||
|
if get_value("lightst"):
|
||||||
|
keyboard.add(button_untoggle)
|
||||||
|
else:
|
||||||
|
keyboard.add(button_toggle)
|
||||||
|
if not(get_value("doorst"+k)):
|
||||||
|
keyboard.add(button_close)
|
||||||
|
else:
|
||||||
|
keyboard.add(button_open)
|
||||||
|
|
||||||
|
await message.answer("Вы выключили свет",reply_markup=keyboard)
|
||||||
|
|
||||||
|
|
||||||
|
@dp.message_handler(lambda message: message.text == "Очистка снега")
|
||||||
|
async def clear_snow(message: types.Message):
|
||||||
|
for i in users.keys():
|
||||||
|
if message.from_user.id in users[i]:
|
||||||
|
k = i
|
||||||
|
await message.answer("Вы вызвали очистку снега",reply_markup=keyboard)
|
||||||
|
|
||||||
|
@dp.message_handler(lambda message: message.text == "Врач")
|
||||||
|
async def call_doctor(message: types.Message):
|
||||||
|
for i in users.keys():
|
||||||
|
if message.from_user.id in users[i]:
|
||||||
|
k = i
|
||||||
|
await message.answer("Вы вызвали врача",reply_markup=keyboard)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@dp.message_handler(lambda message: message.chat.type == ChatType.PRIVATE)
|
||||||
|
async def private_chat(message: types.Message):
|
||||||
|
data = get_data()
|
||||||
|
k = ''
|
||||||
|
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
|
||||||
|
button_open = types.KeyboardButton("Открыть дверь")
|
||||||
|
button_toggle = types.KeyboardButton("Включить освещение")
|
||||||
|
button_untoggle = types.KeyboardButton("Выключить освещение")
|
||||||
|
button_close = types.KeyboardButton("Закрыть дверь")
|
||||||
|
button_clear_snow = types.KeyboardButton("Очистка снега")
|
||||||
|
button_doctor = types.KeyboardButton("Врач")
|
||||||
|
for i in users.keys():
|
||||||
|
if message.from_user.id in users[i]:
|
||||||
|
k = i
|
||||||
|
|
||||||
|
keyboard.add(button_clear_snow, button_doctor)
|
||||||
|
if get_value("lightst"):
|
||||||
|
keyboard.add(button_untoggle)
|
||||||
|
else:
|
||||||
|
keyboard.add(button_toggle)
|
||||||
|
if not(get_value("doorst"+k)):
|
||||||
|
keyboard.add(button_close)
|
||||||
|
else:
|
||||||
|
keyboard.add(button_open)
|
||||||
|
await message.answer("Выберите действие:", reply_markup=keyboard)
|
||||||
|
|
||||||
|
async def udp_listener():
|
||||||
|
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
|
||||||
|
sock.bind(('0.0.0.0', 9876))
|
||||||
|
while True:
|
||||||
|
data, addr = sock.recvfrom(1024)
|
||||||
|
message = data.decode('utf-8')
|
||||||
|
try:
|
||||||
|
lst = message.split(',')
|
||||||
|
if lst[1] == 'pozhar':
|
||||||
|
await bot.send_message(chat_id, f"У вас пожар")
|
||||||
|
if lst[1] == 'sound':
|
||||||
|
for user in users[lst[0]]:
|
||||||
|
await bot.send_message(user, f"У вас слишком громкий звук")
|
||||||
|
if lst[1] == 'gaz':
|
||||||
|
await bot.send_message(chat_id, f"У вас утечка газа")
|
||||||
|
if lst[1] == 'protechka':
|
||||||
|
await bot.send_message(chat_id, f"У вас протечка")
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
executor.start_polling(dp, skip_updates=True)
|
||||||
|
executor.start(udp_listener())
|
||||||
|
|
@ -1 +1 @@
|
||||||
{}
|
{"1": {"pozhar1": 1, "pozharolikv1": 1, "soundstatus1": 1, "soundlikv1": 1, "doorst1": 1, "gaz1": 1, "gazolikv1": 1}, "2": {"pozhar2": 1, "pozharolikv2": 1, "soundstatus2": 1, "soundlikv2": 1, "doorst2": 1, "gaz2": 1, "gazolikv2": 1}, "3": {"pozhar3": 1, "pozharolikv3": 1, "soundstatus3": 1, "soundlikv3": 1, "doorst3": 0, "gaz3": 1, "gazolikv3": 1}, "potok": 100, "earthquake": 1, "techka": 1, "tok": 100, "nasostoggle": 1, "lightst": 1}
|
||||||
|
|
@ -0,0 +1,136 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Mashinka Control</title>
|
||||||
|
|
||||||
|
<!-- Font Awesome -->
|
||||||
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
|
||||||
|
<!-- Google Fonts -->
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet">
|
||||||
|
<!-- MDB -->
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<!-- Navbar -->
|
||||||
|
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||||
|
<div class="container">
|
||||||
|
<a class="navbar-brand" href="#">Seal Team</a>
|
||||||
|
<span class="navbar-text">
|
||||||
|
Демонстрационный режим
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="alertContainer" id="alertcontainer"></div>
|
||||||
|
<div class="homeData" id="homeData"></div>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- MDB -->
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
||||||
|
<!--Script-->
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||||
|
<script>
|
||||||
|
function callHomeData() {
|
||||||
|
setInterval(function() {
|
||||||
|
$.ajax({
|
||||||
|
url: '/get_data',
|
||||||
|
method: 'POST',
|
||||||
|
success: function(kk) {
|
||||||
|
if (kk) {
|
||||||
|
data = JSON.parse(kk);
|
||||||
|
console.log(data);
|
||||||
|
var html = '<div class="container"><div class="row">';
|
||||||
|
var alertMessages = [];
|
||||||
|
console.log(typeof(data));
|
||||||
|
["1","2","3"].forEach(function(alertt) {
|
||||||
|
console.log(alertt);
|
||||||
|
html += '<div class="col">';
|
||||||
|
Object.keys(data[alertt]).forEach(function(key) {
|
||||||
|
let value = Number(data[alertt][key]);
|
||||||
|
switch (key) {
|
||||||
|
case 'pozhar'+alertt:
|
||||||
|
html += `<div class="indicator ${value ? 'red' : 'green'}">Пожар</div>`;
|
||||||
|
if(data[alertt]["pozhar"] == 1) html += `<button type="button" class="btn btn-primary btn-sm" id="pozhar${alertt}">Включить систему пожаротушения</button>`;
|
||||||
|
break;
|
||||||
|
case 'soundstatus'+alertt:
|
||||||
|
html += `<div class="indicator ${value ? 'red' : 'green'}">Лишний шум</div>`;
|
||||||
|
if(data[alertt]['soundstatus'] == 1) html += `<p><button type="button" class="btn btn-primary btn-sm" id="soundstatus${alertt}">Отправить уведомление</button></p>`
|
||||||
|
break;
|
||||||
|
case 'gaz'+alertt:
|
||||||
|
html += `<button type="button" class="btn btn-primary btn-sm" id="gaz${alertt}">Включить систему очистки воздуха</button>`;
|
||||||
|
break;
|
||||||
|
case 'doorstatus'+alertt:
|
||||||
|
html += `<div class="indicator ${value ? 'red' : 'green'}"> Статус двери</div>`;
|
||||||
|
html += `<p><button type="button" class="btn btn-primary btn-sm" id="dooropen${alertt}">Открыть дверь</button></p>`;
|
||||||
|
html += `<p><button type="button" class="btn btn-primary btn-sm" id="doorclose${alertt}">Закрыть дверь</button></p>`;
|
||||||
|
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
html += '</div>';
|
||||||
|
});
|
||||||
|
html += '</div></div>';
|
||||||
|
html += `<div>Сила тока: ${data['tok']}</div>`;
|
||||||
|
html += `<div>Сила потока: ${data['potok']}</div>`;
|
||||||
|
html += `<div class="indicator ${data['techka'] ? 'red' : 'green'}">Протечка</div>`;
|
||||||
|
html += `<div class="indicator ${data['earthquake'] ? 'red' : 'green'}">Землетрясение</div>`;
|
||||||
|
html += `Насос <input type="checkbox" ${data['nasostoggle'] ? 'checked' : ''}><br>`;
|
||||||
|
html += `<input type="range" min="0" max="100" value="${data['nasosspeed']}" oninput="this.nextElementSibling.value = this.value"> <p>Сила работы насоса: <output>${data['nasosspeed']}</output></p>`;
|
||||||
|
html += `<input type="checkbox" ${data["lightst"] ? 'checked' : ''}> Уличное освещение<br>`;
|
||||||
|
if(data["lightst"] == 1) html += `<input type="range" min="0" max="100" value="${data["lightpower"]}" oninput="this.nextElementSibling.value = this.value"> <p>Яркость освещения: <output>${data["lightpower"]}</output></p>`;
|
||||||
|
var x = document.getElementById("homeData");
|
||||||
|
x.innerHTML = html;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 3000);
|
||||||
|
}
|
||||||
|
callHomeData();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function callSOSCheckEndpoint() {
|
||||||
|
setInterval(function() {
|
||||||
|
$.ajax({
|
||||||
|
url: '/sos_check',
|
||||||
|
method: 'POST',
|
||||||
|
success: function(data) {
|
||||||
|
if (data) {
|
||||||
|
data = JSON.parse(data);
|
||||||
|
console.log(data);
|
||||||
|
var alertHTML = '<div class="alert alert-success alert-dismissible fade show" role="alert">';
|
||||||
|
var alertMessages = [];
|
||||||
|
|
||||||
|
// Iterate over the returned data
|
||||||
|
data.forEach(function(alertt) {
|
||||||
|
var statname = alertt["stationName"];
|
||||||
|
var sosAlertType = alertt["alertType"];
|
||||||
|
var alertMessage = 'SOS ALERT ON THIS STATIONS: ' + statname + ':' + sosAlertType;
|
||||||
|
alertMessages.push(alertMessage);
|
||||||
|
});
|
||||||
|
alertMessages.forEach(function(alertMessage) {
|
||||||
|
alertHTML += '<div class="alert alert-warning">' + alertMessage + '</div>';
|
||||||
|
});
|
||||||
|
alertHTML += '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>'
|
||||||
|
var x = document.getElementById("alertcontainer");
|
||||||
|
x.innerHTML = alertHTML;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 10000);
|
||||||
|
}
|
||||||
|
callSOSCheckEndpoint();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
@ -1,139 +1,134 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
<head>
|
||||||
<head>
|
<meta charset="UTF-8">
|
||||||
<meta charset="UTF-8">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<title>
|
||||||
<title>Mashinka Control</title>
|
Статистика
|
||||||
|
</title>
|
||||||
<!-- Font Awesome -->
|
<!-- Font Awesome -->
|
||||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"
|
||||||
<!-- Google Fonts -->
|
rel="stylesheet">
|
||||||
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" rel="stylesheet">
|
<!-- Google Fonts -->
|
||||||
<!-- MDB -->
|
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
rel="stylesheet">
|
||||||
</head>
|
<!-- MDB -->
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css"
|
||||||
<body>
|
rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM"
|
||||||
<!-- Navbar -->
|
crossorigin="anonymous">
|
||||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
</head>
|
||||||
<div class="container">
|
<body>
|
||||||
<a class="navbar-brand" href="#">Seal Team</a>
|
<!-- Navbar -->
|
||||||
<span class="navbar-text">
|
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||||
Демонстрационный режим
|
<div class="container">
|
||||||
</span>
|
<a class="navbar-brand" href="#">
|
||||||
</div>
|
Seal Team
|
||||||
</nav>
|
</a>
|
||||||
|
<span class="navbar-text">
|
||||||
<div class="alertContainer" id="alertcontainer"></div>
|
Демонстрационный режим
|
||||||
<div class="homeData" id="homeData"></div>
|
</span>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
<!-- MDB -->
|
<div class="alertContainer" id="alertcontainer">
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
</div>
|
||||||
<!--Script-->
|
<center><h1>Данные по подъездам</h1></center>
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
|
<div class="homeData" id="homeData">
|
||||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
</div>
|
||||||
<script>
|
<!-- MDB -->
|
||||||
function callHomeData() {
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"
|
||||||
setInterval(function() {
|
integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz"
|
||||||
|
crossorigin="anonymous">
|
||||||
|
</script>
|
||||||
|
<!--Script-->
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">
|
||||||
|
</script>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/chart.js">
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
function homedata() {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '/get_data',
|
url: '/get_data',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
success: function(kk) {
|
success: function(kk) {
|
||||||
if (kk) {
|
if (kk) {
|
||||||
data = JSON.parse(kk);
|
data = JSON.parse(kk);
|
||||||
console.log(data);
|
console.log(data);
|
||||||
var html = '<div class="container"><div class="row">';
|
var html = '<div class="container"><div class="row">';
|
||||||
var alertMessages = [];
|
var alertMessages = [];
|
||||||
console.log(typeof(data));
|
console.log(typeof(data));
|
||||||
Object.keys(data).forEach(function(alertt) {
|
|
||||||
html += '<div class="col">';
|
var alerthtml = '<div class="alert alert-success alert-dismissible fade show" role="alert">';
|
||||||
Object.keys(data[alertt]).forEach(function(key) {
|
["1", "2", "3"].forEach(function(alertt) {
|
||||||
let value = Number(data[alertt][key]);
|
console.log(alertt);
|
||||||
switch (key) {
|
|
||||||
case 'pozhar':
|
html += '<div class="col">';
|
||||||
html += `<div class="indicator ${value ? 'red' : 'green'}">Пожар</div>`;
|
|
||||||
if(data[alertt]["pozhar"] == 1) html += `<button type="button" class="btn btn-primary btn-sm">Включить систему пожаротушения</button>`;
|
|
||||||
break;
|
|
||||||
case 'soundstatus':
|
|
||||||
html += `<div class="indicator ${value ? 'red' : 'green'}">Лишний шум</div>`;
|
|
||||||
if(data[alertt]['soundstatus'] == 1) html += `<p><button type="button" class="btn btn-primary btn-sm">Отправить уведомление</button></p>`
|
|
||||||
break;
|
|
||||||
case 'gaz':
|
|
||||||
html += `<button type="button" class="btn btn-primary btn-sm">Включить систему очистки воздуха</button>`;
|
|
||||||
break;
|
|
||||||
case 'doorst':
|
|
||||||
html += `<div class="indicator ${value ? 'red' : 'green'}" Статус двери`;
|
|
||||||
html += `<p><button type="button" class="btn btn-primary btn-sm">Открыть дверь</button></p>`;
|
|
||||||
html += `<p><button type="button" class="btn btn-primary btn-sm">Закрыть дверь</button></p>`;
|
|
||||||
|
|
||||||
|
|
||||||
default:
|
Object.keys(data[alertt]).forEach(function(key) {
|
||||||
break;
|
let value = Number(data[alertt][key]);
|
||||||
|
switch (key) {
|
||||||
|
case 'pozhar' + alertt:
|
||||||
|
html += `<div>Пожар ${value ? "<i class='fa-solid fa-triangle-exclamation'></i>" : "<i class='fa-solid fa-check'></i>"}</div>`;
|
||||||
|
html += `<input type="checkbox" id="pozharotush${alertt}" class="btn-check" ${data[alertt]['pozharolikv'+alertt] ? 'checked' : ''}><label class="btn btn-outline-primary" for="pozharotush${alertt}" id="pozharolikv${alertt}" onclick="sendCommand(this.id)">Система пожаротушения</label><br>`;
|
||||||
|
if(value == 1) alerthtml += `<div class="alert alert-warning">В подъезде ${alertt} пожар <button type="button" class="btn btn-sm" data-bs-dismiss="alert" id="pozharolikvalert${alertt}" onclick="sendCommand(this.id)">Запустить систему пожаротушения</button></div>`
|
||||||
|
break;
|
||||||
|
case 'soundstatus' + alertt:
|
||||||
|
html += `<div>Лишний шум ${value ? "<i class='fa-solid fa-triangle-exclamation'></i>" : "<i class='fa-solid fa-check'></i>"}</div>`;
|
||||||
|
html += `<input type="checkbox" id="soundstatuso${alertt}" class="btn-check" ${data[alertt]['soundstatus'+alertt] ? 'checked' : ''}><label class="btn btn-outline-primary" for="soundstatuso${alertt}" id="soundstatus${alertt}" onclick="sendCommand(this.id)">Уведомление о громком шуме</label><br>`;
|
||||||
|
if (data[alertt]['soundstatus' + alertt] == 1) alerthtml += `<div class="alert alert-warning">В подъезде ${alertt} слишком громко <button type="button" class="btn btn-sm" data-bs-dismiss="alert" id="soundstatusalert${alertt}" onclick="sendCommand(this.id)">Отправить уведомление о шуме</button></div>`;
|
||||||
|
break;
|
||||||
|
case 'gaz' + alertt:
|
||||||
|
html += `<input type="checkbox" id="gazochistka${alertt}" class="btn-check" ${data[alertt]['gazolikv'+alertt] ? 'checked' : ''}><label class="btn btn-outline-primary" for="gazochistka${alertt}" id="gazolikv${alertt}" onclick="sendCommand(this.id)">Система очистки воздуха</label><br>`;
|
||||||
|
if(value == 1) alerthtml += `<div class="alert alert-warning">В подъезде ${alertt} повышенная концентрация газа<button type="button" class="btn btn-sm" data-bs-dismiss="alert" id="gazolikvalert${alertt}" onclick="sendCommand(this.id)">Запустить систему очистки воздуха</button></div>`
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'doorst' + alertt:
|
||||||
|
html += `<div>Статус двери ${value ? "<i class='fa-solid fa-xmark'></i>" : "<i class='fa-solid fa-check'></i>"}</div>`;
|
||||||
|
html += value ? `<p><button type="button" class="btn btn-primary btn-sm" id="doorst${alertt}" onclick="sendCommand(this.id)">Открыть дверь</button></p>` : `<p><button type="button" class="btn btn-primary btn-sm" id="doorst${alertt}" onclick="sendCommand(this.id)">Закрыть дверь</button> </p>`;
|
||||||
|
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
html += '</div>';
|
||||||
|
});
|
||||||
|
html += '</div></div><center>';
|
||||||
|
for (let i = 0; i < 3; i++)
|
||||||
|
html += "<p></p>";
|
||||||
|
html += `<div>Сила тока: ${data['tok']}</div>`;
|
||||||
|
html += `<div>Сила потока: ${data['potok']}</div>`;
|
||||||
|
html += `<div> Протечка ${data['techka'] ? "<i class='fa-solid fa-triangle-exclamation'></i>" : "<i class='fa-solid fa-check'></i>"}</div>`;
|
||||||
|
html += `<div> Землетрясение ${data['earthquake'] ? "<i class='fa-solid fa-triangle-exclamation'></i>" : "<i class='fa-solid fa-check'></i>"}</div>`;
|
||||||
|
html += `<input type="checkbox" id="nasostog" class="btn-check" ${data['nasostoggle'] == 1 ? 'checked' : ''}><label class="btn btn-outline-primary" for="nasostog" id="nasostoggle" onclick="sendCommand(this.id)">Насос</label><br>`;
|
||||||
|
html += `<input type="checkbox" id="lightstate" class="btn-check"${data["lightst"] == 1 ? 'checked' : ''}> <label class="btn btn-outline-primary" id="lightst" onclick="sendCommand(this.id)" for="lightstate">Уличное освещение</label><br>`;
|
||||||
|
html += '</center>';
|
||||||
|
var x = document.getElementById("homeData");
|
||||||
|
var t = document.getElementById("alertcontainer");
|
||||||
|
x.innerHTML = html;
|
||||||
|
t.innerHTML = alerthtml;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
homedata();
|
||||||
|
function sendCommand(id) {
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: "/send_command",
|
||||||
|
data: { comm_id: id },
|
||||||
|
success: function(response) {
|
||||||
|
homedata();
|
||||||
|
console.log("Button ID sent successfully: " + id);
|
||||||
|
},
|
||||||
|
error: function(xhr, status, error) {
|
||||||
|
console.error("Error sending button ID: " + error);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
html += '</div>';
|
|
||||||
|
|
||||||
});
|
|
||||||
html += '</div></div>';
|
|
||||||
html += `<div>Сила тока: ${data['tok']}</div>`;
|
|
||||||
html += `<div>Сила потока: ${data['potok']}</div>`;
|
|
||||||
html += `<div class="indicator ${data['techka'] ? 'red' : 'green'}">Протечка</div>`;
|
|
||||||
html += `<div class="indicator ${data['earthquake'] ? 'red' : 'green'}">Землетрясение</div>`;
|
|
||||||
html += `Насос <input type="checkbox" ${data['nasostoggle'] ? 'checked' : ''}><br>`;
|
|
||||||
html += `<input type="range" min="0" max="100" value="${data['nasosspeed']}" oninput="this.nextElementSibling.value = this.value"> <p>Сила работы насоса: <output>${data['nasosspeed']}</output></p>`;
|
|
||||||
html += `<input type="checkbox" ${data["lightst"] ? 'checked' : ''}> Уличное освещение<br>`;
|
|
||||||
if(data["lightst"] == 1) html += `<input type="range" min="0" max="100" value="${data["lightpower"]} oninput="this.nextElementSibling.value = this.value"> <p>Яркость освещения: <output>${data["lightpower"]}</output></p>`;
|
|
||||||
var x = document.getElementById("homeData");
|
|
||||||
x.innerHTML = html;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, 3000);
|
|
||||||
}
|
}
|
||||||
callHomeData();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<script>
|
setInterval(homedata, 3000);
|
||||||
function callSOSCheckEndpoint() {
|
</script>
|
||||||
setInterval(function() {
|
</body>
|
||||||
$.ajax({
|
|
||||||
url: '/sos_check',
|
|
||||||
method: 'POST',
|
|
||||||
success: function(data) {
|
|
||||||
if (data) {
|
|
||||||
data = JSON.parse(data);
|
|
||||||
console.log(data);
|
|
||||||
var alertHTML = '<div class="alert alert-success alert-dismissible fade show" role="alert">';
|
|
||||||
var alertMessages = [];
|
|
||||||
|
|
||||||
// Iterate over the returned data
|
|
||||||
data.forEach(function(alertt) {
|
|
||||||
var statname = alertt["stationName"];
|
|
||||||
var sosAlertType = alertt["alertType"];
|
|
||||||
var alertMessage = 'SOS ALERT ON THIS STATIONS: ' + statname + ':' + sosAlertType;
|
|
||||||
alertMessages.push(alertMessage);
|
|
||||||
});
|
|
||||||
alertMessages.forEach(function(alertMessage) {
|
|
||||||
alertHTML += '<div class="alert alert-warning">' + alertMessage + '</div>';
|
|
||||||
});
|
|
||||||
alertHTML += '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>'
|
|
||||||
var x = document.getElementById("alertcontainer");
|
|
||||||
x.innerHTML = alertHTML;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, 10000);
|
|
||||||
}
|
|
||||||
callSOSCheckEndpoint();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue