Example #1
0
 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)
Example #2
0
 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()})
Example #3
0
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")
Example #4
0
 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
Example #5
0
 def Off(self):
     GPIO.output(self.PIN, GPIO.LOW)
     if self._State:
         self._State = False
         Transmit({'CondState': self._State, 'DateTime': time.time()})
Example #6
0
 def On(self):
     GPIO.output(self.PIN, GPIO.HIGH)
     if not self._State:
         self._State = True
         Transmit({'CondState': self._State, 'DateTime': time.time()})
Example #7
0
 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()})
Example #8
0
 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()})