コード例 #1
0
def thermostat(request, mac):
    print 'Thermostat pageload'
    context = RequestContext(request)
    mac = mac.encode('ascii', 'ignore')

    device_metadata = [
        ob.device_control_page_info()
        for ob in DeviceMetadata.objects.filter(mac_address=mac)
    ]
    print device_metadata
    device_type = device_metadata[0]['device_type']
    device_id = device_metadata[0]['device_id']
    device_type_id = device_metadata[0]['device_model_id']
    device_type_id = device_type_id.device_model_id
    print device_type_id
    print __.SUB_SOCKET
    device_status = [
        ob.data_as_json()
        for ob in Thermostat.objects.filter(thermostat_id=device_id)
    ]
    device_zone = device_status[0]['zone']['id']
    device_nickname = device_status[0]['nickname']
    zone_nickname = device_status[0]['zone']['zone_nickname']
    override = device_status[0]['override']

    info_required = "Update thermostat data"
    ieb_topic = '/ui/agent/bemoss/' + str(
        device_zone) + '/' + device_type + '/' + device_id + '/device_status'
    zmq_pub.requestAgent(ieb_topic, info_required, "text/plain", "UI")
    '''json_file = open(os.path.join(settings.PROJECT_DIR, 'resources/page_load/page_load.json'), "r+")
    _json_data = json.load(json_file)
    if device_id not in _json_data['thermostat']:
        _json_data['thermostat'][device_id] = {"page_load": "{empty_string}"}

    json_file.seek(0)
    json_file.write(json.dumps(_json_data, indent=4, sort_keys=True))
    json_file.truncate()
    json_file.close()

    time.sleep(3)'''
    #Using page_load.json
    vals = _helper.get_page_load_data(device_id, device_type, device_type_id)
    print vals

    #Get current weather data from wunderground
    json_file = open(
        os.path.join(settings.PROJECT_DIR,
                     'resources/metadata/bemoss_metadata.json'), "r+")
    _json_data = json.load(json_file)
    zipcode = _json_data['building_location_zipcode']
    json_file.close()

    rs = {}
    try:
        rs = urllib2.urlopen(
            "http://api.wunderground.com/api/4fef576e26759640/conditions/q/" +
            zipcode + ".json")
    except urllib2.HTTPError, e:
        logger.error('HTTPError = ' + str(e.code))
コード例 #2
0
def lighting(request, mac):
    print 'inside lighting view method'
    context = RequestContext(request)
    username = request.session.get('user')
    print username
    if request.session.get('last_visit'):
        # The session has a value for the last visit
        last_visit_time = request.session.get('last_visit')

        visits = request.session.get('visits', 0)

        if (datetime.now() - datetime.strptime(last_visit_time[:-7],
                                               "%Y-%m-%d %H:%M:%S")).days > 0:
            request.session['visits'] = visits + 1
    else:
        # The get returns None, and the session does not have a value for the last visit.
        request.session['last_visit'] = str(datetime.now())
        request.session['visits'] = 1

    mac = mac.encode('ascii', 'ignore')

    device_metadata = [
        ob.device_control_page_info()
        for ob in DeviceMetadata.objects.filter(mac_address=mac)
    ]
    print device_metadata
    device_id = device_metadata[0]['device_id']
    controller_type = device_metadata[0]['device_model_id']
    controller_type = controller_type.device_model_id

    device_status = [
        ob.data_as_json()
        for ob in Lighting.objects.filter(lighting_id=device_id)
    ]
    device_zone = device_status[0]['zone']['id']
    device_nickname = device_status[0]['nickname']
    zone_nickname = device_status[0]['zone']['zone_nickname']

    _data = _helper.get_page_load_data(device_id, 'lighting', controller_type)

    device_list_side_nav = get_device_list_side_navigation()
    context.update(device_list_side_nav)
    active_al = get_notifications()
    context.update({'active_al': active_al})
    bemoss_not = general_notifications()
    context.update({'b_al': bemoss_not})

    return render_to_response(
        'lighting/lighting.html', {
            'type': controller_type,
            'device_data': _data,
            'device_id': device_id,
            'device_zone': device_zone,
            'device_type': controller_type,
            'mac_address': mac,
            'zone_nickname': zone_nickname,
            'device_nickname': device_nickname
        }, context)
コード例 #3
0
ファイル: views.py プロジェクト: kwarodom/bemoss_web_ui-1
def rtu_view(request, mac):
    print 'RTU pageload'
    context = RequestContext(request)
    mac = mac.encode('ascii', 'ignore')
    if request.session.get('last_visit'):
    # The session has a value for the last visit
        last_visit_time = request.session.get('last_visit')

        visits = request.session.get('visits', 0)

        if (datetime.now() - datetime.strptime(last_visit_time[:-7], "%Y-%m-%d %H:%M:%S")).days > 0:
            request.session['visits'] = visits + 1
    else:
        # The get returns None, and the session does not have a value for the last visit.
        request.session['last_visit'] = str(datetime.now())
        request.session['visits'] = 1


    device_metadata = [ob.device_control_page_info() for ob in DeviceMetadata.objects.filter(mac_address=mac)]
    print device_metadata
    device_id = device_metadata[0]['device_id']
    device_type = device_metadata[0]['device_type']
    device_type_id = device_metadata[0]['device_model_id']
    device_type_id = device_type_id.device_model_id

    device_status = [ob.as_json() for ob in RTU.objects.filter(rtu_id=device_id)]
    device_zone = device_status[0]['zone']['id']
    device_nickname = device_status[0]['nickname']
    zone_nickname = device_status[0]['zone']['zone_nickname']

    #Using page_load.json
    vals = _helper.get_page_load_data(device_id, device_type, device_type_id)

    if vals['cooling_mode'] == 'NONE':
        vals['cooling_mode'] = "None"
    elif vals['cooling_mode'] == 'STG1':
        vals['cooling_mode'] = "Stage 1 Cooling"
    elif vals['cooling_mode'] == 'STG2':
        vals['cooling_mode'] = "Stage 2 Cooling"
    elif vals['cooling_mode'] == 'STG3':
        vals['cooling_mode'] = "Stage 3 Cooling"
    elif vals['cooling_mode'] == 'STG4':
        vals['cooling_mode'] = "Stage 4 Cooling"

    device_list_side_nav = get_device_list_side_navigation()
    context.update(device_list_side_nav)

    active_al = get_notifications()
    context.update({'active_al':active_al})
    bemoss_not = general_notifications()
    context.update({'b_al': bemoss_not})

    return render_to_response(
        'thermostat/rtu.html',
        {'device_id': device_id, 'device_zone': device_zone, 'zone_nickname': zone_nickname, 'mac_address': mac,
         'device_nickname': device_nickname, 'device_status': vals, 'mac': mac},
        context)
コード例 #4
0
ファイル: views.py プロジェクト: mhammo30/bemoss_web_ui
def vav_view(request, mac):
    print 'RTU pageload'
    context = RequestContext(request)
    mac = mac.encode('ascii', 'ignore')
    if request.session.get('last_visit'):
        # The session has a value for the last visit
        last_visit_time = request.session.get('last_visit')

        visits = request.session.get('visits', 0)

        if (datetime.now() - datetime.strptime(last_visit_time[:-7],
                                               "%Y-%m-%d %H:%M:%S")).days > 0:
            request.session['visits'] = visits + 1
    else:
        # The get returns None, and the session does not have a value for the last visit.
        request.session['last_visit'] = str(datetime.now())
        request.session['visits'] = 1

    device_metadata = [
        ob.device_control_page_info()
        for ob in DeviceMetadata.objects.filter(mac_address=mac)
    ]
    print device_metadata
    device_id = device_metadata[0]['device_id']
    device_type = device_metadata[0]['device_type']
    device_type_id = device_metadata[0]['device_model_id']
    device_type_id = device_type_id.device_model_id

    device_status = [
        ob.as_json() for ob in VAV.objects.filter(vav_id=device_id)
    ]
    device_zone = device_status[0]['zone']['id']
    device_nickname = device_status[0]['nickname']
    zone_nickname = device_status[0]['zone']['zone_nickname']

    #Using page_load.json
    vals = _helper.get_page_load_data(device_id, device_type, device_type_id)

    device_list_side_nav = get_device_list_side_navigation()
    context.update(device_list_side_nav)
    active_al = get_notifications()
    context.update({'active_al': active_al})
    bemoss_not = general_notifications()
    context.update({'b_al': bemoss_not})

    return render_to_response(
        'thermostat/vav.html', {
            'device_id': device_id,
            'device_zone': device_zone,
            'zone_nickname': zone_nickname,
            'mac_address': mac,
            'device_nickname': device_nickname,
            'device_status': vals,
            'mac': mac
        }, context)
コード例 #5
0
ファイル: views.py プロジェクト: jinming99/bemoss_web_ui
def thermostat(request, mac):
    print 'Thermostat pageload'
    context = RequestContext(request)
    mac = mac.encode('ascii', 'ignore')

    device_metadata = [ob.device_control_page_info() for ob in DeviceMetadata.objects.filter(mac_address=mac)]
    print device_metadata
    device_type = device_metadata[0]['device_type']
    device_id = device_metadata[0]['device_id']
    device_type_id = device_metadata[0]['device_model_id']
    device_type_id = device_type_id.device_model_id
    print device_type_id

    device_status = [ob.data_as_json() for ob in Thermostat.objects.filter(thermostat_id=device_id)]
    device_zone = device_status[0]['zone']['id']
    device_nickname = device_status[0]['nickname']
    zone_nickname = device_status[0]['zone']['zone_nickname']
    override = device_status[0]['override']

    info_required = "Update thermostat data"
    ieb_topic = '/ui/agent/bemoss/' + str(device_zone) + '/' + device_type + '/' + device_id + '/device_status'
    zmq_pub.requestAgent(ieb_topic, info_required, "text/plain", "UI")

    json_file = open(os.path.join(settings.PROJECT_DIR, 'resources/page_load/page_load.json'), "r+")
    _json_data = json.load(json_file)
    if device_id not in _json_data['thermostat']:
        _json_data['thermostat'][device_id] = {"page_load": "{empty_string}"}

    json_file.seek(0)
    json_file.write(json.dumps(_json_data, indent=4, sort_keys=True))
    json_file.truncate()
    json_file.close()

    time.sleep(3)
    #Using page_load.json
    vals = _helper.get_page_load_data(device_id, device_type, device_type_id)
    print vals

    #Get current weather data from wunderground
    json_file = open(os.path.join(settings.PROJECT_DIR, 'resources/metadata/bemoss_metadata.json'), "r+")
    _json_data = json.load(json_file)
    zipcode = _json_data['building_location_zipcode']
    json_file.close()

    rs = {}
    try:
        rs = urllib2.urlopen("http://api.wunderground.com/api/4fef576e26759640/conditions/q/" + zipcode + ".json")
    except urllib2.HTTPError, e:
        logger.error('HTTPError = ' + str(e.code))
コード例 #6
0
ファイル: views.py プロジェクト: kwarodom/bemoss_web_ui-1
def smartplug(request, mac):
    print 'inside plugload view method'
    context = RequestContext(request)
    username = request.session.get('user')
    print username
    if request.session.get('last_visit'):
    # The session has a value for the last visit
        last_visit_time = request.session.get('last_visit')

        visits = request.session.get('visits', 0)

        if (datetime.now() - datetime.strptime(last_visit_time[:-7], "%Y-%m-%d %H:%M:%S")).days > 0:
            request.session['visits'] = visits + 1
    else:
        # The get returns None, and the session does not have a value for the last visit.
        request.session['last_visit'] = str(datetime.now())
        request.session['visits'] = 1

    print type(mac)
    mac = mac.encode('ascii', 'ignore')
    print type(mac)

    device_metadata = [ob.device_control_page_info() for ob in DeviceMetadata.objects.filter(mac_address=mac)]
    print device_metadata
    device_id = device_metadata[0]['device_id']
    device_type_id = device_metadata[0]['device_model_id']
    device_type_id = device_type_id.device_model_id

    device_status = [ob.data_as_json() for ob in Plugload.objects.filter(plugload_id=device_id)]
    device_zone = device_status[0]['zone']['id']
    device_nickname = device_status[0]['nickname']
    zone_nickname = device_status[0]['zone']['zone_nickname']

    _data = _helper.get_page_load_data(device_id, 'plugload', device_type_id)

    device_list_side_nav = get_device_list_side_navigation()
    context.update(device_list_side_nav)
    active_al = get_notifications()
    context.update({'active_al':active_al})
    bemoss_not = general_notifications()
    context.update({'b_al': bemoss_not})

    return render_to_response(
        'plugload/plugload.html',
        {'device_data': _data, 'device_id': device_id, 'device_zone': device_zone, 'zone_nickname': zone_nickname,
         'mac_address': mac, 'device_nickname': device_nickname, 'device_type_id': device_type_id},
        context)
コード例 #7
0
ファイル: views.py プロジェクト: loulupe/bemoss_web_ui
def thermostat(request, mac):
    print 'Thermostat pageload'
    context = RequestContext(request)
    mac = mac.encode('ascii', 'ignore')

    device_metadata = [ob.device_control_page_info() for ob in DeviceMetadata.objects.filter(mac_address=mac)]
    print device_metadata
    device_type = device_metadata[0]['device_type']
    device_id = device_metadata[0]['device_id']
    device_type_id = device_metadata[0]['device_model_id']
    device_type_id = device_type_id.device_model_id
    print device_type_id

    device_status = [ob.data_as_json() for ob in Thermostat.objects.filter(thermostat_id=device_id)]
    device_zone = device_status[0]['zone']['id']
    device_nickname = device_status[0]['nickname']
    zone_nickname = device_status[0]['zone']['zone_nickname']
    override = device_status[0]['override']
    hold = device_status[0]['hold']

    #Using page_load.json
    vals = _helper.get_page_load_data(device_id, device_type, device_type_id)
    print vals

    weather_info = get_weather_info()
    device_list_side_nav = get_device_list_side_navigation()
    context.update(device_list_side_nav)
    active_al = get_notifications()
    context.update({'active_al':active_al})
    bemoss_not = general_notifications()
    context.update({'b_al': bemoss_not})

    return render_to_response(
        'thermostat/thermostat.html',
        {'device_id': device_id, 'device_zone': device_zone, 'device_type_id': device_type_id,
         'zone_nickname': zone_nickname, 'mac_address': mac, 'device_nickname': device_nickname, 'device_data': vals,
         'location': weather_info[0], 'temp_f': weather_info[1], 'humidity': weather_info[2], 'precip': weather_info[3],
         'winds': weather_info[4], 'override': override, 'hold':hold, 'weather_icon': weather_info[6],
         'weather': weather_info[5], 'mac': mac},
        context)
コード例 #8
0
ファイル: views.py プロジェクト: kwarodom/bemoss_web_ui-1
def thermostat(request, mac):
    print 'Thermostat pageload'
    context = RequestContext(request)
    mac = mac.encode('ascii', 'ignore')

    device_metadata = [ob.device_control_page_info() for ob in DeviceMetadata.objects.filter(mac_address=mac)]
    print device_metadata
    device_type = device_metadata[0]['device_type']
    device_id = device_metadata[0]['device_id']
    device_type_id = device_metadata[0]['device_model_id']
    device_type_id = device_type_id.device_model_id
    print device_type_id

    device_status = [ob.data_as_json() for ob in Thermostat.objects.filter(thermostat_id=device_id)]
    device_zone = device_status[0]['zone']['id']
    device_nickname = device_status[0]['nickname']
    zone_nickname = device_status[0]['zone']['zone_nickname']
    override = device_status[0]['override']
    hold = device_status[0]['hold']

    #Using page_load.json
    vals = _helper.get_page_load_data(device_id, device_type, device_type_id)
    print vals

    #Get current weather data from wunderground
    json_file = open(os.path.join(settings_tornado.PROJECT_DIR, 'resources/metadata/bemoss_metadata.json'), "r+")
    _json_data = json.load(json_file)
    zipcode = _json_data['building_location_zipcode']
    json_file.close()

    #write code to get username from launchfile
    #

    rs = {}
    try:
        rs = urllib2.urlopen("http://api.wunderground.com/api/4fef576e26759640/conditions/q/" + zipcode + ".json")
    except urllib2.HTTPError, e:
        logger.error('HTTPError = ' + str(e.code))
コード例 #9
0
def powermeter(request, mac):
    print 'inside powermeter view method'
    context = RequestContext(request)
    username = request.session.get('user')
    print username
    if request.session.get('last_visit'):
        # The session has a value for the last visit
        last_visit_time = request.session.get('last_visit')

        visits = request.session.get('visits', 0)

        if (datetime.now() - datetime.strptime(last_visit_time[:-7],
                                               "%Y-%m-%d %H:%M:%S")).days > 0:
            request.session['visits'] = visits + 1
    else:
        # The get returns None, and the session does not have a value for the last visit.
        request.session['last_visit'] = str(datetime.now())
        request.session['visits'] = 1

    print type(mac)
    mac = mac.encode('ascii', 'ignore')
    print type(mac)

    device_metadata = [
        ob.device_control_page_info()
        for ob in DeviceMetadata.objects.filter(mac_address=mac)
    ]
    print device_metadata
    device_id = device_metadata[0]['device_id']
    device_type_id = device_metadata[0]['device_model_id']
    device_type_id = device_type_id.device_model_id
    device_type = device_metadata[0]['device_type']

    device_status = [
        ob.data_as_json()
        for ob in PowerMeter.objects.filter(power_meter_id=device_id)
    ]
    device_zone = device_status[0]['zone']['id']
    device_nickname = device_status[0]['nickname']
    zone_nickname = device_status[0]['zone']['zone_nickname']
    '''
    device_info = [ob.as_json() for ob in Device_Info.objects.filter(mac_address=mac)]
    device_id = device_info[0]['id']
    device_zone = device_info[0]['zone']['id']
    device_nickname = device_info[0]['nickname']
    zone_nickname = device_info[0]['zone']['zone_nickname']
    device_type_id = device_info[0]['device_type_id']
    print device_type_id
    print device_zone 
    '''

    info_required = "Update Hue data"
    powermeter_update_send_topic = '/ui/agent/bemoss/' + str(
        device_zone) + '/' + device_type + '/' + device_id + '/device_status'
    zmq_pub.requestAgent(powermeter_update_send_topic, info_required,
                         "text/plain", "UI")
    '''
    json_file = open(os.path.join(settings.PROJECT_DIR, 'resources/page_load/page_load.json'), "r+")
    _json_data = json.load(json_file)
    if device_id not in _json_data[device_type]:
        _json_data[device_type][device_id] = {"page_load": "{empty_string}"}

    json_file.seek(0)
    json_file.write(json.dumps(_json_data, indent=4, sort_keys=True))
    json_file.truncate()
    json_file.close()

    time.sleep(3)'''

    _data = _helper.get_page_load_data(device_id, device_type, device_type_id)

    zones = [ob.as_json() for ob in Building_Zone.objects.all()]
    thermostats_sn = [
        ob.data_side_nav()
        for ob in Thermostat.objects.filter(network_status='ONLINE',
                                            thermostat_id__bemoss=True)
    ]
    vav_sn = [
        ob.data_side_nav()
        for ob in VAV.objects.filter(network_status='ONLINE',
                                     vav_id__bemoss=True)
    ]
    rtu_sn = [
        ob.data_side_nav()
        for ob in RTU.objects.filter(network_status='ONLINE',
                                     rtu_id__bemoss=True)
    ]
    lighting_sn = [
        ob.data_side_nav()
        for ob in Lighting.objects.filter(network_status='ONLINE',
                                          lighting_id__bemoss=True)
    ]
    plugload_sn = [
        ob.data_side_nav()
        for ob in Plugload.objects.filter(network_status='ONLINE',
                                          plugload_id__bemoss=True)
    ]
    occ_sensors_sn = [
        ob.data_side_nav() for ob in OccupancySensor.objects.filter(
            network_status='ONLINE', occupancy_sensor_id__bemoss=True)
    ]
    lt_sensors_sn = [
        ob.data_side_nav() for ob in AmbientLightSensor.objects.filter(
            network_status='ONLINE', ambient_light_sensor_id__bemoss=True)
    ]
    mtn_sensors_sn = [
        ob.data_side_nav()
        for ob in MotionSensor.objects.filter(network_status='ONLINE',
                                              motion_sensor_id__bemoss=True)
    ]
    powermeters_sn = [
        ob.data_side_nav()
        for ob in PowerMeter.objects.filter(network_status='ONLINE',
                                            power_meter_id__bemoss=True)
    ]
    active_al = get_notifications()
    context.update({'active_al': active_al})
    context.update({
        'zones': zones,
        'thermostat_sn': thermostats_sn,
        'lighting_sn': lighting_sn,
        'plugload_sn': plugload_sn,
        'occ_sensors_sn': occ_sensors_sn,
        'lt_sensors_sn': lt_sensors_sn,
        'mtn_sensors_sn': mtn_sensors_sn,
        'powermeters_sn': powermeters_sn,
        'vav_sn': vav_sn,
        'rtu_sn': rtu_sn
    })

    return render_to_response(
        'powermeter/powermeter.html', {
            'device_data': _data,
            'device_id': device_id,
            'device_zone': device_zone,
            'zone_nickname': zone_nickname,
            'mac_address': mac,
            'device_nickname': device_nickname,
            'zones': zones,
            'thermostat_sn': thermostats_sn,
            'lighting_sn': lighting_sn,
            'plugload_sn': plugload_sn,
            'occ_sensors_sn': occ_sensors_sn,
            'lt_sensors_sn': lt_sensors_sn,
            'mtn_sensors_sn': mtn_sensors_sn,
            'powermeters_sn': powermeters_sn,
            'vav_sn': vav_sn,
            'rtu_sn': rtu_sn,
            'device_type_id': device_type_id
        }, context)
コード例 #10
0
def lighting(request, mac):
    print 'inside lighting view method'
    context = RequestContext(request)
    username = request.session.get('user')
    print username
    if request.session.get('last_visit'):
    # The session has a value for the last visit
        last_visit_time = request.session.get('last_visit')

        visits = request.session.get('visits', 0)

        if (datetime.now() - datetime.strptime(last_visit_time[:-7], "%Y-%m-%d %H:%M:%S")).days > 0:
            request.session['visits'] = visits + 1
    else:
        # The get returns None, and the session does not have a value for the last visit.
        request.session['last_visit'] = str(datetime.now())
        request.session['visits'] = 1
    
    mac = mac.encode('ascii', 'ignore')

    device_metadata = [ob.device_control_page_info() for ob in DeviceMetadata.objects.filter(mac_address=mac)]
    print device_metadata
    device_id = device_metadata[0]['device_id']
    controller_type = device_metadata[0]['device_model_id']
    controller_type = controller_type.device_model_id

    device_status = [ob.data_as_json() for ob in Lighting.objects.filter(lighting_id=device_id)]
    device_zone = device_status[0]['zone']['id']
    device_nickname = device_status[0]['nickname']
    zone_nickname = device_status[0]['zone']['zone_nickname']

    kwargs = {'subscribe_address': 'ipc:///tmp/volttron-lite-agent-subscribe',
                    'publish_address': 'ipc:///tmp/volttron-lite-agent-publish'}
    _zmq_pub = zmqPub(**kwargs)
 
    print "created instance of the zmqpub class"
    info_required = "Update Hue data"
    wifi_3m50_update_send_topic = '/ui/agent/bemoss/' + str(device_zone) + '/lighting/' + device_id + '/device_status'
    _zmq_pub.requestAgent(wifi_3m50_update_send_topic, info_required, "text/plain", "UI")

    json_file = open(os.path.join(settings.PROJECT_DIR, 'resources/page_load/page_load.json'), "r+")
    _json_data = json.load(json_file)
    if device_id not in _json_data['lighting']:
        _json_data['lighting'][device_id] = {"page_load": "{empty_string}"}

    json_file.seek(0)
    json_file.write(json.dumps(_json_data, indent=4, sort_keys=True))
    json_file.truncate()
    json_file.close()

    time.sleep(3)

    _data = _helper.get_page_load_data(device_id, 'lighting', controller_type)

    zones = [ob.as_json() for ob in Building_Zone.objects.all()]
    thermostats_sn = [ob.data_side_nav() for ob in Thermostat.objects.filter(network_status='ONLINE', thermostat_id__bemoss=True)]
    lighting_sn = [ob.data_side_nav() for ob in Lighting.objects.filter(network_status='ONLINE', lighting_id__bemoss=True)]
    plugload_sn = [ob.data_side_nav() for ob in Plugload.objects.filter(network_status='ONLINE', plugload_id__bemoss=True)]
    active_al = get_notifications()
    context.update({'active_al':active_al})
    context.update({
            'zones': zones, 'thermostat_sn': thermostats_sn,
             'lighting_sn': lighting_sn, 'plugload_sn': plugload_sn
            })

    return render_to_response(
        'lighting/lighting.html',
        {'type': controller_type, 'device_data': _data, 'device_id': device_id, 'device_zone': device_zone,
         'device_type': controller_type, 'mac_address': mac, 'zone_nickname': zone_nickname,
         'device_nickname': device_nickname, 'zones': zones, 'thermostat_sn': thermostats_sn,
         'lighting_sn': lighting_sn, 'plugload_sn': plugload_sn}, context)