예제 #1
0
def humidity(request):
    request_result = __checkUser(request)
    if request_result == HTTP_RESULT_SUCCESS:
        humidity_config = config.get_humidity_config()
        if request.method == 'POST':
            if config.KEY_IS_AUTO_CONTROL in request.POST:
                humidity_config.isAutoControl = request.POST.get(config.KEY_IS_AUTO_CONTROL, config.STATE_OFF)
                print('自动湿度控制被设置为 ' + humidity_config.isAutoControl)
            if config.KEY_UPPER_LIMIT in request.POST:
                humidity_config.upperLimit = request.POST.get(config.KEY_UPPER_LIMIT,
                                                              config.DEFAULT_HUMIDITY_UPPER_LIMIT)
                print('自动湿度控制温度上限被设置为 ' + humidity_config.upperLimit)
            if config.KEY_LOWER_LIMIT in request.POST:
                humidity_config.lowerLimit = request.POST.get(config.KEY_LOWER_LIMIT,
                                                              config.DEFAULT_HUMIDITY_LOWER_LIMIT)
                print('自动湿度控制湿度下限被设置为 ' + humidity_config.lowerLimit)
            if config.KEY_UPPER_ACTION in request.POST:
                humidity_config.upperActions = request.POST.get(config.KEY_UPPER_ACTION, config.DEFAULT_ACTIONS)
                print('自动湿度动作上限被设置为 ', humidity_config.upperActions)
            if config.KEY_LOWER_ACTION in request.POST:
                humidity_config.lowerActions = request.POST.get(config.KEY_LOWER_ACTION, config.DEFAULT_ACTIONS)
                print('自动湿度动作下限被设置为 ', humidity_config.upperActions)
            config.set_dumidity_config_obj(humidity_config)
        json_obj = {
            KEY_RESULT: HTTP_RESULT_SUCCESS,
            KEY_TYPE: TYPE_HUMIDITY,
            config.KEY_IS_AUTO_CONTROL: humidity_config.isAutoControl,
            config.KEY_UPPER_LIMIT: humidity_config.upperLimit,
            config.KEY_LOWER_LIMIT: humidity_config.lowerLimit,
            config.KEY_UPPER_ACTION: humidity_config.upperActions,
            config.KEY_LOWER_ACTION: humidity_config.lowerActions,
        }
        return HttpResponse(json.dumps(json_obj))
    else:
        return HttpResponse(DICT_RESULT_CODE.get(request_result, JSON_UNKNOWN_ERROR))
예제 #2
0
 def actionLimit(self, actions):
     # print(actions)
     print('执行任务')
     print(actions)
     for tempAction in json.loads(actions):
         print('循环')
         tempTarget = tempAction['target']
         tempOperation = tempAction['operation']
         if tempTarget == 0: # 温度自动控制
             tempperatureConfig = config.get_temperature_config()
             tempperatureConfig.isAutoControl = int(tempOperation)
             config.set_temperature_config_obj(tempperatureConfig)
         elif tempTarget == 1: # 空气适度自动控制
             humidityConfig = config.get_humidity_config()
             humidityConfig.isAutoControl = int(tempOperation)
             config.set_dumidity_config_obj(humidityConfig)
             pass
         elif tempTarget == 2: # 土壤适度自动控制
             dirtHumidity = config.get_dirt_humidity_config()
             dirtHumidity.isAutoControl = int(tempOperation)
             config.set_dirt_humidity_config_obj(dirtHumidity)
             pass
         elif tempTarget == 3: # 自动施肥
             fertilizationConfig = config.get_fertilization_config()
             config.set_fertilization_config(tempOperation, fertilizationConfig.repeatType, fertilizationConfig.repeatCircle,
                                             fertilizationConfig.hour, fertilizationConfig.minute)
         elif tempTarget == 4: # 自动浇水
             waterConfig = config.get_water_config()
             config.set_water_config(tempOperation, waterConfig.repeatType, waterConfig.repeatCircle,
                                             waterConfig.hour, waterConfig.minute)
         elif tempTarget == 5: # 施肥
             sendCmd('06',self.intToHex(tempOperation))
         elif tempTarget == 6: # 浇水
             sendCmd('07',self.intToHex(tempOperation))
         elif tempTarget == 7: # 风扇
             sendCmd('04',self.intToHex(tempOperation))
         elif tempTarget == 8: # 电热膜
             sendCmd('05',self.intToHex(tempOperation))
         elif tempTarget == 9: # 自定义设备1
             sendCmd('00',self.intToHex(tempOperation))
         elif tempTarget == 10: # 自定义设备2
             sendCmd('01',self.intToHex(tempOperation))
         elif tempTarget == 11: # 自定义设备3
             sendCmd('02',self.intToHex(tempOperation))
         elif tempTarget == 12: # 自定义设备4
             sendCmd('03',self.intToHex(tempOperation))
         elif tempTarget == 13: # 环境光控制
             sendCmd('08',self.intToHex(tempOperation))
         elif tempTarget == 14: # 环境光颜色
             sendCmd('09',self.intToHex(tempOperation))
         elif tempTarget == 15: # 环境光亮度
             sendCmd('0a',self.intToHex(tempOperation))
         print(self.intToHex(tempTarget),'  --  ',self.intToHex(tempOperation))
         # sendCmd(self.intToHex(tempTarget), self.intToHex(tempOperation))
         # sendCmd('00','01')
         # time.sleep(0.05)
         # if tempTarget
         # print('target => ' + str(tempAction['target']) + '      operation => ' + str(tempAction['operation']))
         time.sleep(0.05)
     sendCmdReset()
예제 #3
0
def operation(schedule):
    tempTarget = int(schedule['target'])
    tempOperation = int(schedule['value'])
    print('命令', tempTarget, '值', tempOperation)
    if tempTarget == 0:  # 温度自动控制
        tempperatureConfig = config.get_temperature_config()
        tempperatureConfig.isAutoControl = int(tempOperation)
        config.set_temperature_config_obj(tempperatureConfig)
    elif tempTarget == 1:  # 空气适度自动控制
        humidityConfig = config.get_humidity_config()
        humidityConfig.isAutoControl = int(tempOperation)
        config.set_dumidity_config_obj(humidityConfig)
    elif tempTarget == 2:  # 土壤适度自动控制
        dirtHumidity = config.get_dirt_humidity_config()
        dirtHumidity.isAutoControl = int(tempOperation)
        config.set_dirt_humidity_config_obj(dirtHumidity)
    elif tempTarget == 3:  # 自动施肥
        fertilizationConfig = config.get_fertilization_config()
        config.set_fertilization_config(tempOperation,
                                        fertilizationConfig.repeatType,
                                        fertilizationConfig.repeatCircle,
                                        fertilizationConfig.hour,
                                        fertilizationConfig.minute)
    elif tempTarget == 4:  # 自动浇水
        waterConfig = config.get_water_config()
        config.set_water_config(tempOperation, waterConfig.repeatType,
                                waterConfig.repeatCircle, waterConfig.hour,
                                waterConfig.minute)
    elif tempTarget == 5:  # 施肥
        conn.sendCmd('06', intToHex(tempOperation))
    elif tempTarget == 6:  # 浇水
        conn.sendCmd('07', intToHex(tempOperation))
    elif tempTarget == 7:  # 风扇
        conn.sendCmd('04', intToHex(tempOperation))
    elif tempTarget == 8:  # 电热膜
        conn.sendCmd('05', intToHex(tempOperation))
    elif tempTarget == 9:  # 自定义设备1
        conn.sendCmd('00', intToHex(tempOperation))
    elif tempTarget == 10:  # 自定义设备2
        conn.sendCmd('01', intToHex(tempOperation))
    elif tempTarget == 11:  # 自定义设备3
        conn.sendCmd('02', intToHex(tempOperation))
    elif tempTarget == 12:  # 自定义设备4
        conn.sendCmd('03', intToHex(tempOperation))
    elif tempTarget == 13:  # 环境光控制
        conn.sendCmd('08', intToHex(tempOperation))
    elif tempTarget == 14:  # 环境光颜色
        conn.sendCmd('09', intToHex(tempOperation))
    elif tempTarget == 15:  # 环境光亮度
        conn.sendCmd('0a', intToHex(tempOperation))
    print('真的执行定时操作 ')
예제 #4
0
    def run(self):
        print('正在监听局域网的数据包')
        while (self.isRunning):
            data, addr = UdpSocketHolder.instance().udpSocket.recvfrom(1024)
            # print('数据包 => ' + self.bytesToHexString(data))

            # 11 99 FF 01 00 00 00 00 00 01 05 0A 00 16 00 2E 00 14 00 33 00 1F F0 90 10
            if (len(data) == 33 and data[0] == 0x11 and data[1] == 0x99 and data[2] == 0xff and data[30] == 0xf0 and
                    data[31] == 0x90 and data[32] == 0x10):
                # 设备部分
                temp_device1_state = 1 if (data[3] & 0x01) > 0 else 0
                temp_device2_state = 1 if (data[3] & 0x02) > 0 else 0
                temp_device3_state = 1 if (data[3] & 0x04) > 0 else 0
                temp_device4_state = 1 if (data[3] & 0x08) > 0 else 0
                config.set_devices_config(temp_device1_state, temp_device2_state, temp_device3_state,
                                          temp_device4_state)
                state.device_1 = temp_device1_state
                state.device_2 = temp_device2_state
                state.device_3 = temp_device3_state
                state.device_4 = temp_device4_state
                # 其他部分
                temp_fan_state = data[4]
                temp_warm_state = data[5]
                temp_fertilization_state = data[6]
                temp_water_state = data[7]
                temp_buzzer_state = data[8]
                # 灯光部分
                temp_light_state = data[9]
                temp_light_color = data[10]
                temp_light_level = data[11]
                state.light = temp_light_state
                state.light_color = temp_light_color
                state.light_level = temp_light_level
                # 上下限部分
                temp_air_temp = data[13]
                state.temperature_air = temp_air_temp
                temp_air_humidity = data[15]
                state.humidity_air = temp_air_humidity
                temp_dirt_temp = data[17]
                state.temperature_dirt = temp_dirt_temp
                temp_dirt_humidity = data[19]
                state.humidity_dirt = temp_dirt_humidity
                temp_ad_light = data[21]
                air_temp_up = data[22]
                air_temp_low = data[23]
                tempAirTempObj = config.get_temperature_config()
                tempAirTempObj.upperLimit = air_temp_up
                tempAirTempObj.lowerLimit = air_temp_low
                config.set_temperature_config_obj(tempAirTempObj)
                air_humidity_up = data[24]
                air_humidity_low = data[25]
                tempAirHumidityObj = config.get_humidity_config()
                tempAirHumidityObj.upperLimit = air_humidity_up
                tempAirHumidityObj.lowerLimit = air_humidity_low
                config.set_dumidity_config_obj(tempAirHumidityObj)
                dirt_temp_up = data[26] # 没用上
                dirt_temp_low = data[27] # 没用上
                dirt_humidity_up = data[28]
                dirt_humidity_low = data[29]
                tempDirtHumidityObj = config.get_dirt_humidity_config()
                tempDirtHumidityObj.upperLimit = dirt_humidity_up
                tempDirtHumidityObj.lowerLimit = dirt_humidity_low
                config.set_dirt_humidity_config_obj(tempDirtHumidityObj)
                print('设备1 => ' + str(temp_device1_state)
                      + '     设备2 => ' + str(temp_device2_state)
                      + '\n设备3 => ' + str(temp_device3_state)
                      + '     设备4 => ' + str(temp_device4_state)
                      + '\n风扇 => ' + str(temp_fan_state)
                      + '     加热膜 => ' + str(temp_warm_state)
                      + '\n施肥 => ' + str(temp_fertilization_state)
                      + '     浇水 => ' + str(temp_water_state)
                      + '\nBUzzer => ' + str(temp_buzzer_state)
                      + '     灯光 => ' + str(temp_light_state)
                      + '\n颜色 => ' + str(temp_light_color)
                      + '     亮度 => ' + str(temp_light_level)
                      + '\n气温 => ' + str(temp_air_temp)
                      + '     气湿 => ' + str(temp_air_humidity)
                      + '\n土温 => ' + str(temp_dirt_temp)
                      + '     土湿 => ' + str(temp_dirt_humidity)
                      + '     亮度 => ' + str(temp_ad_light)
                      + '\n气温上限 => ' + str(air_temp_up)
                      + '     气温下限 => ' + str(air_temp_low)
                      + '\n气湿上限 => ' + str(air_humidity_up)
                      + '     气湿下限 => ' + str(air_humidity_low)
                      + '\n土温上限 => ' + str(dirt_temp_up)
                      + '     土温下限 => ' + str(dirt_temp_low)
                      + '\n土湿上限 => ' + str(dirt_humidity_up)
                      + '     土湿下限 => ' + str(dirt_humidity_low)
                      )
                localTime = time.localtime()
                localYear = time.strftime('%Y', localTime)
                localMonth = time.strftime('%m', localTime)
                localDay = time.strftime('%d', localTime)
                localHour = time.strftime('%H', localTime)
                localMinute = time.strftime('%M', localTime)
                localSecond = time.strftime('%S', localTime)
                sensorData = Sensor(year=localYear, month=localMonth, day=localDay, hour=localHour, minute=localMinute,
                                    second=localSecond,
                                    light=temp_ad_light, air_temperature=temp_air_temp, dirt_temperature=temp_dirt_temp,
                                    air_humidity=temp_air_humidity,
                                    dirt_humidity=temp_dirt_humidity, device_id='0')
                sensorData.save()
                # 下面就很难看了,不好意思,因为时间紧迫,实在抱歉
                # 发现这里我的CONFIG里面的上下限定义都没用上,一开始没做好规划真的难受
                configTemperature = config.get_temperature_config()
                configHumidityAir = config.get_humidity_config()
                configHumidityDirt = config.get_dirt_humidity_config()
                # 温度上限处理
                flag_is_need_reset = False
                if configTemperature.isAutoControl == str(config.STATE_ON):
                    if temp_air_temp > air_temp_up:  # 温度超过上线
                        self.actionLimit(configTemperature.upperActions)
                        flag_is_need_reset = True
                    if temp_air_temp < air_temp_low:  # 温度低于下线
                        self.actionLimit(configTemperature.upperActions)
                        flag_is_need_reset = True
                if configHumidityAir.isAutoControl == str(config.STATE_ON):
                    if temp_air_humidity > dirt_humidity_up:  # 空气适度超过上线
                        self.actionLimit(configHumidityAir.upperActions)
                        flag_is_need_reset = True
                    if temp_air_humidity < air_humidity_low:  # 空气适度低于下线
                        self.actionLimit(configHumidityAir.lowerActions)
                        flag_is_need_reset = True
                if configHumidityDirt.isAutoControl == str(config.STATE_ON):
                    if temp_dirt_humidity > dirt_humidity_up:  # 土壤适度超过上线
                        self.actionLimit(configHumidityDirt.upperActions)
                        flag_is_need_reset = True
                    if temp_dirt_humidity < dirt_humidity_low:  # 土壤湿度低于下线
                        self.actionLimit(configHumidityDirt.lowerActions)
                        flag_is_need_reset = True
                if flag_is_need_reset :
                    time.sleep(0.3)
                    sendCmdReset()