コード例 #1
0
ファイル: hdb.py プロジェクト: marchon/frappe_iot
def iot_device_data(sn=None, vsn=None):
	sn = sn or frappe.form_dict.get('sn')
	vsn = vsn or sn
	doc = frappe.get_doc('IOT Device', sn)
	doc.has_permission("read")

	if vsn != sn:
		if vsn not in iot_device_tree(sn):
			return ""

	cfg = iot_device_cfg(sn, vsn)
	if not cfg:
		return ""
	client = redis.Redis.from_url(IOTHDBSettings.get_redis_server() + "/2")
	hs = client.hgetall(vsn)
	data = {}
	if cfg.has_key("nodes"):
		nodes = cfg.get("nodes")
		for node in nodes:
			tags = node.get("tags")
			for tag in tags:
				name = node.get("name")+"."+tag.get('name')
				data[name] = {"PV": hs.get(name + ".PV"), "TM": hs.get(name + ".TM"), "Q": hs.get(name + ".Q"),
				              "DESC": tag.get("desc"), }

	if cfg.has_key("tags"):
		tags = cfg.get("tags")
		for tag in tags:
			name = tag.get('name')
			data[name] = {"PV": hs.get(name + ".PV"), "TM": hs.get(name + ".TM"), "Q": hs.get(name + ".Q"),
			              "DESC": tag.get("desc"), }

	return data
コード例 #2
0
def iot_device_data_array(sn=None, vsn=None):
    sn = sn or frappe.form_dict.get('sn')
    vsn = vsn or sn
    doc = frappe.get_doc('IOT Device', sn)
    doc.has_permission("read")

    if vsn != sn:
        if vsn not in iot_device_tree(sn):
            return ""

    cfg = iot_device_cfg(sn, vsn)
    if not cfg:
        return ""

    client = redis.Redis.from_url(IOTHDBSettings.get_redis_server() + "/2")
    hs = client.hgetall(vsn)
    data = []

    if cfg.has_key("nodes"):
        nodes = cfg.get("nodes")
        for node in nodes:
            tags = node.get("tags")
            for tag in tags:
                name = tag.get('name')
                tt = hs.get(name + ".TM")
                timestr = ''
                if tt:
                    timestr = str(
                        convert_utc_to_user_timezone(
                            datetime.datetime.utcfromtimestamp(
                                int(int(tt) / 1000))).replace(tzinfo=None))
                data.append({
                    "NAME": name,
                    "PV": hs.get(name + ".PV"),  # "TM": hs.get(name + ".TM"),
                    "TM": timestr,
                    "Q": hs.get(name + ".Q"),
                    "DESC": tag.get("desc"),
                })

    if cfg.has_key("tags"):
        tags = cfg.get("tags")
        for tag in tags:
            name = tag.get('name')
            tt = hs.get(name + ".TM")
            timestr = ''
            if tt:
                timestr = str(
                    convert_utc_to_user_timezone(
                        datetime.datetime.utcfromtimestamp(int(
                            int(tt) / 1000))).replace(tzinfo=None))
            data.append({
                "NAME": name,
                "PV": hs.get(name + ".PV"),  # "TM": hs.get(name + ".TM"),
                "TM": timestr,
                "Q": hs.get(name + ".Q"),
                "DESC": tag.get("desc"),
            })

    return data
コード例 #3
0
def iot_device_write():
    ctrl = _dict(get_post_json_data())
    doc = frappe.get_doc('IOT Device', ctrl.sn)
    doc.has_permission("read")
    cmd = {
        "sn": ctrl.vsn,
        "tag": ctrl.tag,
        "nrsp": ctrl.nrsp,
        "vt": ctrl.vt,
        "val": ctrl.val,
        "pris": ctrl.pris or uuid.uuid1()
    }

    client = redis.Redis.from_url(IOTHDBSettings.get_redis_server())
    r = client.publish("ziotagwrites", json.dumps({"cmds": [cmd], "ver": 0}))
    return {"result": r, "uuid": cmd["pris"]}
コード例 #4
0
ファイル: hdb.py プロジェクト: marchon/frappe_iot
def iot_device_cfg(sn=None, vsn=None):
	sn = sn or frappe.form_dict.get('sn')
	doc = frappe.get_doc('IOT Device', sn)
	doc.has_permission("read")
	client = redis.Redis.from_url(IOTHDBSettings.get_redis_server() + "/0")
	return json.loads(client.get(vsn or sn) or "")
コード例 #5
0
ファイル: hdb.py プロジェクト: marchon/frappe_iot
def iot_device_tree(sn=None):
	sn = sn or frappe.form_dict.get('sn')
	doc = frappe.get_doc('IOT Device', sn)
	doc.has_permission("read")
	client = redis.Redis.from_url(IOTHDBSettings.get_redis_server() + "/1")
	return client.lrange(sn, 0, -1)