本帖最后由 没内涵 于 2024-12-5 18:46 编辑
首先说一下这个区间触发判断
在极客版中也可以看到,ES3的触发有人包含了从1到255,它是按照触发有人的区间的二进制来转换的
8段触发的区间,从近到远,有人是1,无人是0,屏蔽区间为0
打个比方,比如0到0.75米(第1段)触发有人,那么二进制表示就是00000001,转换成10进制就是1
0到0.75米(第1段)以及0.75到1.5米(第2段)同时触发有人,那么二进制表示就是00000011,转换成10进制就是3
以此类推,1到255分别代表了不同触发区间
以下是代码
from custom_components.xiaomi_gateway3.core.devices import *
DEVICES = [{
20731: ["Linptech", "Presence Sensor ES3", "ES3BB", "linp.sensor_occupy.es2"],
"spec": [
BoolConv("occupancy", "binary_sensor", mi="2.p.1078"),
MapConv("occupancy_status", "sensor", mi="2.p.1078", map={0: "NoOne", 1: "HasOne", 2: "HasOne", 3: "HasOne", 4: "HasOne", 5: "HasOne", 6: "HasOne", 7: "HasOne", 8: "HasOne", 9: "HasOne", 10: "HasOne", 11: "HasOne", 12: "HasOne", 13: "HasOne", 14: "HasOne", 15: "HasOne", 16: "HasOne", 17: "HasOne", 18: "HasOne", 19: "HasOne", 20: "HasOne", 21: "HasOne", 22: "HasOne", 23: "HasOne", 24: "HasOne", 25: "HasOne", 26: "HasOne", 27: "HasOne", 28: "HasOne", 29: "HasOne", 30: "HasOne", 31: "HasOne", 32: "HasOne", 33: "HasOne", 34: "HasOne", 35: "HasOne", 36: "HasOne", 37: "HasOne", 38: "HasOne", 39: "HasOne", 40: "HasOne", 41: "HasOne", 42: "HasOne", 43: "HasOne", 44: "HasOne", 45: "HasOne", 46: "HasOne", 47: "HasOne", 48: "HasOne", 49: "HasOne", 50: "HasOne", 51: "HasOne", 52: "HasOne", 53: "HasOne", 54: "HasOne", 55: "HasOne", 56: "HasOne", 57: "HasOne", 58: "HasOne", 59: "HasOne", 60: "HasOne", 61: "HasOne", 62: "HasOne", 63: "HasOne", 64: "HasOne", 65: "HasOne", 66: "HasOne", 67: "HasOne", 68: "HasOne", 69: "HasOne", 70: "HasOne", 71: "HasOne", 72: "HasOne", 73: "HasOne", 74: "HasOne", 75: "HasOne", 76: "HasOne", 77: "HasOne", 78: "HasOne", 79: "HasOne", 80: "HasOne", 81: "HasOne", 82: "HasOne", 83: "HasOne", 84: "HasOne", 85: "HasOne", 86: "HasOne", 87: "HasOne", 88: "HasOne", 89: "HasOne", 90: "HasOne", 91: "HasOne", 92: "HasOne", 93: "HasOne", 94: "HasOne", 95: "HasOne", 96: "HasOne", 97: "HasOne", 98: "HasOne", 99: "HasOne", 100: "HasOne", 101: "HasOne", 102: "HasOne", 103: "HasOne", 104: "HasOne", 105: "HasOne", 106: "HasOne", 107: "HasOne", 108: "HasOne", 109: "HasOne", 110: "HasOne", 111: "HasOne", 112: "HasOne", 113: "HasOne", 114: "HasOne", 115: "HasOne", 116: "HasOne", 117: "HasOne", 118: "HasOne", 119: "HasOne", 120: "HasOne", 121: "HasOne", 122: "HasOne", 123: "HasOne", 124: "HasOne", 125: "HasOne", 126: "HasOne", 127: "HasOne", 128: "HasOne", 129: "HasOne", 130: "HasOne", 131: "HasOne", 132: "HasOne", 133: "HasOne", 134: "HasOne", 135: "HasOne", 136: "HasOne", 137: "HasOne", 138: "HasOne", 139: "HasOne", 140: "HasOne", 141: "HasOne", 142: "HasOne", 143: "HasOne", 144: "HasOne", 145: "HasOne", 146: "HasOne", 147: "HasOne", 148: "HasOne", 149: "HasOne", 150: "HasOne", 151: "HasOne", 152: "HasOne", 153: "HasOne", 154: "HasOne", 155: "HasOne", 156: "HasOne", 157: "HasOne", 158: "HasOne", 159: "HasOne", 160: "HasOne", 161: "HasOne", 162: "HasOne", 163: "HasOne", 164: "HasOne", 165: "HasOne", 166: "HasOne", 167: "HasOne", 168: "HasOne", 169: "HasOne", 170: "HasOne", 171: "HasOne", 172: "HasOne", 173: "HasOne", 174: "HasOne", 175: "HasOne", 176: "HasOne", 177: "HasOne", 178: "HasOne", 179: "HasOne", 180: "HasOne", 181: "HasOne", 182: "HasOne", 183: "HasOne", 184: "HasOne", 185: "HasOne", 186: "HasOne", 187: "HasOne", 188: "HasOne", 189: "HasOne", 190: "HasOne", 191: "HasOne", 192: "HasOne", 193: "HasOne", 194: "HasOne", 195: "HasOne", 196: "HasOne", 197: "HasOne", 198: "HasOne", 199: "HasOne", 200: "HasOne", 201: "HasOne", 202: "HasOne", 203: "HasOne", 204: "HasOne", 205: "HasOne", 206: "HasOne", 207: "HasOne", 208: "HasOne", 209: "HasOne", 210: "HasOne", 211: "HasOne", 212: "HasOne", 213: "HasOne", 214: "HasOne", 215: "HasOne", 216: "HasOne", 217: "HasOne", 218: "HasOne", 219: "HasOne", 220: "HasOne", 221: "HasOne", 222: "HasOne", 223: "HasOne", 224: "HasOne", 225: "HasOne", 226: "HasOne", 227: "HasOne", 228: "HasOne", 229: "HasOne", 230: "HasOne", 231: "HasOne", 232: "HasOne", 233: "HasOne", 234: "HasOne", 235: "HasOne", 236: "HasOne", 237: "HasOne", 238: "HasOne", 239: "HasOne", 240: "HasOne", 241: "HasOne", 242: "HasOne", 243: "HasOne", 244: "HasOne", 245: "HasOne", 246: "HasOne", 247: "HasOne", 248: "HasOne", 249: "HasOne", 250: "HasOne", 251: "HasOne", 252: "HasOne", 253: "HasOne", 254: "HasOne", 255: "HasOne"}),
MathConv("illuminance", "sensor", mi="2.p.1005", min=0, max=10000),
MathConv("customized-service-for-ble", "sensor", mi="5.p.1018", min=0, max=255),
BaseConv("battery", "sensor", mi="4.p.1003", entity=ENTITY_LAZY),
],
}] + DEVICES
添加方法就不赘述了,就是加到xiaomi_gateway3.py里面
试了下这个customized-service-for-ble应该是近距区间触发的判定,判定值应该就是同上面说的二进制转化,总归该值大于0就是近距区间内有人,等于0则是无人
|