Добавил:
инст: frz.alinkenss Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР3_Организация получения и вывода данных с удаленного оборудования

.docx
Скачиваний:
27
Добавлен:
16.11.2022
Размер:
230.57 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

КАФЕДРА № 42

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

ассистент

Д.О. Шевяков

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №3

ОРГАНИЗАЦИЯ ПОЛУЧЕНИЯ И ВЫВОДА ДАННЫХ С УДАЛЕННОГО ОБОРУДОВАНИЯ

по курсу: ИНТЕРНЕТ ВЕЩЕЙ

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

4021

Фарзалина Алина

фамилия, имя

Санкт-Петербург 2022

Задание

Реализовать эмуляторы вещей для всех классов, созданных в предыдущей лабораторной работе. Модифицировать приложение на Flask таким образом, чтобы к каждой из вещей можно было подключиться и передать данные из эмулятора.

Код классов и приложения

Код классов и их методов в Classes.py:

import abc class EnergyControlUnit: # атрибуты def __init__(self, EnergyIn, EnergyOut, Usefulness, Knowlendges, Stress): self.EnergyIn = EnergyIn self.EnergyOut = EnergyOut self.Usefulness = Usefulness self.Knowlendges = Knowlendges self.Stress = Stress # методы def EnergyCalculation(self,request): self.EnergyIn = request.args.get('EnergyIn', '') print('EnergyIn now is - ' + self.EnergyIn) def ProductivityAnalysis(self,request): self.EnergyOut = request.args.get('EnergyOut', '') print('EnergyOut now is - ' + self.EnergyOut) class HealthControlUnit: # атрибуты def __init__(self, physical, mental): self.physical = physical self.mental = mental print('HealthControlUnit has created') # метод def ControlHealth(self,request): self.mental = request.args.get('mental', '') print('Mental health now is - ' + self.mental) class SmartyBed: def __init__(self, hours, alarm): self.hours = hours self.alarm = alarm print('SmartyBed has created') # метод def Sleeping(self,request): self.hours = request.args.get('hours', '') print('Sleep hours now is - ' + self.hours) class SportyBracelet: #атрибуты def __init__(self, steps, activity, caloriesOut): self.steps = steps self.activity = activity self.caloriesOut = caloriesOut print('SportyBracelet has created') # методы def Walking(self, request): #return 'Walking works' self.steps = request.args.get('steps', '') print('Today steps is - ' + self.steps) def Workout(self, request): #return 'And even Workout works!!!!' self.activity = request.args.get('activity', '') print('Today sport was ' + self.activity) class SocialAnalysisUnit: def __init__(self, family, friend, psychotherapist): self.family = family self.friends = friend self.psychotherapist = psychotherapist print('SocialAnalysisUnit has created') def Communication(self, request): #return 'It is hard to believe but Communication works too!!!!!' self.family = request.args.get('family', '') print('Did you call your mom today - ' + self.family) class ProductivityDiaryRobot: def __init__(self, homeworks, podcasts, books): self.homeworks = homeworks self.podcasts = podcasts self.books = books print('ProductivityDiaryRobot has created') def Study(self, request): #return 'And finally Study works too!!!!!!' self.books = request.args.get('books', '') print('Did you read today? ' + self.books) class NutritionCheckUnit(abc.ABC): #абстрактный класс def __init__(self, caloriesIn, proteinFatCarbs, minerals, vitamins): self.caloriesIn = caloriesIn self.proteinFatCarbs = proteinFatCarbs self.minerals = minerals self.vitamins = vitamins print('abstract NutritionCheckUnit has created') @abc.abstractmethod def Calculating(self, request): print('Calculating in NutritionCheckUnit works') # self.vitamins = request.args.get('vitamins', '') # print('Did you get your vitamins today? ' + self.vitamins) class WaterBalance(NutritionCheckUnit): def __init__(self, title, liter): super().__init__(title, liter) self.title = title self.liter = liter print('WaterBalance has created') def Drinking(self, request): super().Drinking() return 'Drinking works' class FoodBalance(NutritionCheckUnit): def __init__(self, category, portion): super().__init__(category, portion) self.category = category self.portion = portion print('FoodBalance has created') def Eating(self, request): super().Eating() return 'Eating works'

Код страницы эмулятора в emulator.html:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel = "stylesheet" type = "text/css" href="../static/css/main.css"> <script src="http://code.jquery.com/jquery-3.3.1.js"></script> <script src="../static/js/ajaxweb.js"></script> </head> <body> <div id="monitoring_data"> <script>document.write("Current EnergyIn: ");</script> <input type="text" id="EnergyIn" placeholder="Enter value"> <button onclick="send_data()">Send</button> </div> <div id="monitoring_data"> <script>document.write("Current EnergyOut: ");</script> <input type="text" id="EnergyOut" placeholder="Enter value"> <button onclick="send_data_x2()">Send</button> </div> <div id="monitoring_data"> <script>document.write("Current Mental Health: ");</script> <input type="text" id="mental" placeholder="Enter value"> <button onclick="send_data_x3()">Send</button> </div> <div id="monitoring_data"> <script>document.write("Current Sleep Hours: ");</script> <input type="text" id="hours" placeholder="Enter value"> <button onclick="send_data_x4()">Send</button> </div> <div id="monitoring_data"> <script>document.write("Today steps: ");</script> <input type="text" id="steps" placeholder="Enter value"> <button onclick="send_data_x5()">Send</button> </div> <div id="monitoring_data"> <script>document.write("Today sporty activity: ");</script> <input type="text" id="activity" placeholder="Enter value"> <button onclick="send_data_x6()">Send</button> </div> <div id="monitoring_data"> <script>document.write("Did you call your mom today? ");</script> <input type="text" id="family" placeholder="Enter value"> <button onclick="send_data_x7()">Send</button> </div> <div id="monitoring_data"> <script>document.write("Did you read today? ");</script> <input type="text" id="books" placeholder="Enter value"> <button onclick="send_data_x8()">Send</button> </div> <!-- <div id="monitoring_data"> <script>document.write("Did you get your vitamins today? ");</script> <input type="text" id="vitamins" placeholder="Enter value"> <button onclick="send_data_x8()">Send</button> --> </div> </body> </html>

Код ajax-запроса для отправки данных в ajaxweb.js:

function send_data() { $.ajax({ type: 'GET', url: '/EnergyCalculation', dataType: 'json', contentType: 'application/json', data: { "EnergyIn": document.getElementById( "EnergyIn").value, }, success: function(response){ } }); } function send_data_x2() { $.ajax({ type: 'GET', url: '/ProductivityAnalysis', dataType: 'json', contentType: 'application/json', data: { "EnergyOut": document.getElementById( "EnergyOut").value, }, success: function(response){ } }); } function send_data_x3() { $.ajax({ type: 'GET', url: '/ControlHealth', dataType: 'json', contentType: 'application/json', data: { "mental": document.getElementById( "mental").value, }, success: function(response){ } }); } function send_data_x4() { $.ajax({ type: 'GET', url: '/Sleeping', dataType: 'json', contentType: 'application/json', data: { "hours": document.getElementById( "hours").value, }, success: function(response){ } }); } function send_data_x5() { $.ajax({ type: 'GET', url: '/Walking', dataType: 'json', contentType: 'application/json', data: { "steps": document.getElementById( "steps").value, }, success: function(response){ } }); } function send_data_x6() { $.ajax({ type: 'GET', url: '/Workout', dataType: 'json', contentType: 'application/json', data: { "activity": document.getElementById( "activity").value, }, success: function(response){ } }); } function send_data_x7() { $.ajax({ type: 'GET', url: '/Communication', dataType: 'json', contentType: 'application/json', data: { "family": document.getElementById( "family").value, }, success: function(response){ } }); } function send_data_x8() { $.ajax({ type: 'GET', url: '/Study', dataType: 'json', contentType: 'application/json', data: { "books": document.getElementById( "books").value, }, success: function(response){ } }); } /** function send_data_x9() { $.ajax({ type: 'GET', url: '/Calculating', dataType: 'json', contentType: 'application/json', data: { "vitamins": document.getElementById( "vitamins").value, }, success: function(response){ } }); } **/

Код функций в app.py:

from flask import Flask, request, render_template import classes from classes import NutritionCheckUnit app = Flask(__name__) energycontrolunit = classes.EnergyControlUnit(7, 8, 9, 10, 11) healthcontrolunit = classes.HealthControlUnit(2, 4) smartybed = classes.SmartyBed(' ', ' ') sportybracelet = classes.SportyBracelet(' ', ' ', ' ') socialanalysis = classes.SocialAnalysisUnit(' ',' ',' ') productivitydiaryrobot = classes.ProductivityDiaryRobot(' ',' ',' ') #nutritioncheckunit = classes.NutritionCheckUnit(' ',' ',' ', ' ') @app.route('/EnergyCalculation') def EnergyCalculation(): energycontrolunit.EnergyCalculation(request) return {} @app.route('/ProductivityAnalysis') def ProductivityAnalysis(): energycontrolunit.ProductivityAnalysis(request) return {} @app.route('/ControlHealth') def ControlHealth(): healthcontrolunit.ControlHealth(request) return {} @app.route('/Sleeping') def Sleeping(): smartybed.Sleeping(request) return {} @app.route('/Walking') def Walking(): sportybracelet.Walking(request) return {} @app.route('/Workout') def Workout(): sportybracelet.Workout(request) return {} @app.route('/Communication') def Communication(): socialanalysis.Communication(request) return {} @app.route('/Study') def Study(): productivitydiaryrobot.Study(request) return {} #@app.route('/Calculating') #def Study(): # nutritioncheckunit.Calculating(request) # return {} @app.route('/') def hello_world(): return render_template('emulator.html') if __name__ == '__main__': app.run()

Скриншоты

Результаты работы кода приложения представлены на рисунках 1 и 2.

Рисунок 1 – Страница эмулятора

Рисунок 2 – Результат подключения

Выводы

В ходе данной лабораторной работы были изучены GET-запросы и организовано получение данных с удаленного оборудования посредством реализации эмуляторов вещей для классов.