Добрый день ! если есть возможность опробуйте пожалуйста скрипт скрипт рабоатает по принципу смотрит температуру ну и включает котел имеется три режима работа 1 нормальный режим ( работа днем в выходные и повечерам в не рабочее время ) 2 ночной режим понижает температура на ночь на которую выставите 3 режим когда на работе .. ( мысль была в том что зачем греть когда нас там нет) для изменения температуры по режимам нужно править Код (Python): def applyMode(): if currMode == NORMAL_MODE: ENABLE_THRESHOLD=22.0 DISABLE_THRESHOLD=24.4 return if currMode == NIGHT_MODE: ENABLE_THRESHOLD=20.0 DISABLE_THRESHOLD=22.4 return if currMode == WORK_MODE: ENABLE_THRESHOLD=12.0 DISABLE_THRESHOLD=16.4 для изменения время включения режимов править строки Код (Python): def evaluateMode(): weekday=int(datetime.datetime.today().weekday()) if weekday == 5 or weekday == 6: return NORMAL_MODE hr = int(datetime.datetime.now().hour) if hr >= 11 and hr <= 18: return WORK_MODE if hr > 2 or hr < 8: return NIGHT_MODE return NORMAL_MODE так же в скрипте можно задать режим работы постоянный Код (Bash): ./check_temperature.py -h usage: check_temperature.py [-h] [-m {0,1,2}] optional arguments: -h, --help show this help message and exit -m {0,1,2}, --mode {0,1,2} an integer in the range 0..2(0 - normalMode, 1-nightMode, 2-workMode) ну и сам скрипт Код (Python): #!/usr/bin/python import commands import argparse import datetime ENABLE_THRESHOLD=24 DISABLE_THRESHOLD=22 TEMP_SENSOR_ID=12 NORMAL_MODE=0 NIGHT_MODE=1 WORK_MODE=2 currMode=NORMAL_MODE def getCurrentTemperature(): return float(commands.getstatusoutput("./temp | grep Temp | cut -d ' ' -f3")[1]) def isSensorEnabled(): return int(commands.getstatusoutput("gpio -1 read %d" % (TEMP_SENSOR_ID))[1]) == 0 def enableSensor(): commands.getstatusoutput("gpio -1 write %d 0" % (TEMP_SENSOR_ID)) print "sensor enabled" def disableSensor(): commands.getstatusoutput("gpio -1 write %d 1" % (TEMP_SENSOR_ID)) print "sensor disabled" def evaluateMode(): weekday=int(datetime.datetime.today().weekday()) if weekday == 5 or weekday == 6: return NORMAL_MODE hr = int(datetime.datetime.now().hour) if hr >= 11 and hr <= 18: return WORK_MODE if hr > 2 or hr < 8: return NIGHT_MODE return NORMAL_MODE def printMode(currMode): if currMode == NORMAL_MODE: print "Running in normal mode" return if currMode == NIGHT_MODE: print "Running in night mode" return if currMode == WORK_MODE: print "Running in work mode" return print "Unknown mode:%d" % (currMode) def parseArgs(): parser = argparse.ArgumentParser() parser.add_argument( '-m', '--mode', type=int, choices=range(3), help='an integer in the range 0..2(0 - normalMode, 1-nightMode, 2-workMode)') args = parser.parse_args() global currMode currMode = args.mode if currMode is None: currMode = evaluateMode() printMode(currMode) def applyMode(): global ENABLE_THRESHOLD global DISABLE_THRESHOLD print currMode if currMode == NORMAL_MODE: ENABLE_THRESHOLD=22.0 DISABLE_THRESHOLD=24.4 return if currMode == NIGHT_MODE: ENABLE_THRESHOLD=20.0 DISABLE_THRESHOLD=22.4 return if currMode == WORK_MODE: ENABLE_THRESHOLD=28.8 DISABLE_THRESHOLD=29.0 return print "Unknown mode:%d" % (currMode) if __name__ == "__main__": parseArgs() applyMode() sensorEnabled=isSensorEnabled() currentTemp=getCurrentTemperature() print currentTemp if currentTemp < ENABLE_THRESHOLD and not sensorEnabled: enableSensor() if currentTemp > DISABLE_THRESHOLD and sensorEnabled: disableSensor()
TEMP_SENSOR_ID=12 пин на котором находиться реле включения котла =) определение температуры тут returnfloat(commands.getstatusoutput("./temp | grep Temp | cut -d ' ' -f3")[1]) скорее всего вам придеться подправить по себя у меня датчик dht22 и собраная библиотека dht.c но в принципе показывайте свой вывод пришлю строчку как должна быть у меня библиотека вывод так ./temp Humidity = 36.1 % Temperature = 26.7 *C
запускать лучшее в screen watch -n10 скрипт будет дергать данные каждые 10 сек ну или можно по крону * * * * * root скрипт дергать будет каждую минуту в принципе этого достаточно