def pageUpdate(self, Display=None, Buttons=None): DataFromServer = {} if Display != None: app.config['Display'] = Display DataFromServer['Display'] = Display if Buttons != None: app.config['Buttons'] = Buttons with app.test_request_context(): DataFromServer['ModeButtons'] = render_template(Buttons) if len(DataFromServer) > 0: Transmit(DataFromServer)
def Value(self, value): try: value=int(value) except: value=0 if value<0: value=0 if value>100: value=100 new_P=int((int((value+self.step/2)/self.step))*self.step) # Если изменилось значение мощности, то отправить новое значение клиентам if self._P!=new_P: self._P=new_P Transmit({'Power':[('Нагрев',self._P)], 'DateTime': time.time()})
def Controls(DataControls): '''Обработка нажатий кнопок веб-морды''' #socketio.emit('DataFromServer', {'Display' : 'Нажата кнопка '+DataControls['Button']}, broadcast=False) #return #print() if DataControls['Button'] == 'StartAL': print('Поступила команда запуска автоопределения') from Distiller.processes.autolacation import Autolocation AL = Autolocation() AL.name = 'Autolocation' AL.start() if DataControls['Button'] == 'Wait': print('Поступила команда перейти в режим ожидания команд') if DataControls['Button'] == 'Wash': print('Поступила команда запуска процесса перегона бражки') from Distiller.processes.wash import Wash wash = Wash() wash.name = 'Wash' wash.start() if DataControls['Button'] == 'Crude': print('Поступила команда запуска процесса второго перегона') from Distiller.processes.crude import Crude crude = Crude() crude.name = 'Crude' crude.start() if DataControls['Button'] == 'Abort': print('Команда прерывания процесса') app.config['AB_CON'] = 'Abort' if DataControls['Button'] == 'Next': print('Команда перехода к следующему этапу') app.config['AB_CON'] = 'Next' if DataControls['Button'] == 'End': print('Команда завершения процесса') app.config['Display'] = 'Жду команду' app.config['Buttons'] = 'WAIT.html' Transmit({ 'Display': 'Жду команду', 'ModeButtons': render_template('WAIT.html') }) if DataControls['Button'] == 'Parameters': print('Команда установки параметров') if DataControls['Button'] == 'Shutdown': print("Команда на отключение питания") from os import system # перед вызовом нужно команде shutdown дать права суперпользователя: # sudo chmod +s '/sbin/shutdown' system("/sbin/shutdown -h now")
def run(self): self.__Run = True while self.__Run: # Если флаг готовности температурных данных в БД установлен, # сбросить его if self.ReadyDS18B20.isSet(): self.ReadyDS18B20.clear() # Получаем температурные данные(параметром передаётся таймаут в # секундах) Tlist = Measure(6) # Блокируем другие потоки dbLock.acquire() # Признак изменения температурных данных IsNew = False # Ложим в базу температурные данные for eashT in Tlist: Thrmmtr = models.DS18B20.query.filter_by( IDthermometer=eashT[0]).first() if Thrmmtr == None: #Если в БД не найден термометр с соответствующим ID, #сохраняем новый термометр Thrmmtr = models.DS18B20(IDthermometer=eashT[0], Name='', T=eashT[1], Timestamp=eashT[2]) IsNew = True else: #Если найден, изменяем температуру и время её фиксации if Thrmmtr.T != eashT[1]: IsNew = True Thrmmtr.T = eashT[1] Thrmmtr.Timestamp = eashT[2] models.db.session.add(Thrmmtr) models.db.session.commit() #сохраняем изменения в БД # Разблокируем другие потоки dbLock.release() # Обновление и передача температурных значений только если они отличаются от предыдущих if IsNew: Transmit({ 'Thermometers': self.TlistToClient, 'DateTime': time.time() }) self.GiveTemperatureFromDB() # Вскидываем флаг готовности свежих температурных данных в БД self.ReadyDS18B20.set() return
def Off(self): GPIO.output(self.PIN, GPIO.LOW) if self._State: self._State = False Transmit({'CondState': self._State, 'DateTime': time.time()})
def On(self): GPIO.output(self.PIN, GPIO.HIGH) if not self._State: self._State = True Transmit({'CondState': self._State, 'DateTime': time.time()})
def Off(self): GPIO.output(self.PIN, GPIO.LOW) #print(u'Отключение Dph') if self._State: self._State = False Transmit({'DephState': self._State, 'DateTime': time.time()})
def On(self): GPIO.output(self.PIN, GPIO.HIGH) #print(u'Включение Dph') if not self._State: self._State = True Transmit({'DephState': self._State, 'DateTime': time.time()})