『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 109|回复: 1

[经验分享] 领普ES3接入gw3代码分享

[复制链接]

7

主题

59

帖子

736

积分

高级会员

Rank: 4

积分
736
金钱
677
HASS币
0
发表于 昨天 18:12 | 显示全部楼层 |阅读模式
本帖最后由 没内涵 于 2024-12-3 19:02 编辑

代码分为2版,1版是判定触发区间的,另一版是不区分的,可以按需选区(分区的也可以在node-red中当做不分区的用)
首先说一下这个区间触发判断
在极客版中也可以看到,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都标记了数字序号,可以根据需要的触发区间来选择对应的值实现更细的判定
以下是代码

不判定区间的,1到255都是HasOne
    20731: ["Linptech", "Presence Sensor ES3", "ES3BB", "linp.sensor_occupy.es3"],
    "spec": [
        # main sensors
        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),
        BaseConv("battery", "sensor", mi="4.p.1003", entity=ENTITY_LAZY),
    ],
}, {


判定区间的
    20731: ["Linptech", "Presence Sensor ES3", "ES3BB", "linp.sensor_occupy.es3"],
    "spec": [
        # main sensors
        BoolConv("occupancy", "binary_sensor", mi="2.p.1078"),
        MapConv("occupancy_status", "sensor", mi="2.p.1078", map={0: "NoOne", 1: "HasOne1", 2: "HasOne2", 3: "HasOne3", 4: "HasOne4", 5: "HasOne5", 6: "HasOne6", 7: "HasOne7", 8: "HasOne8", 9: "HasOne9", 10: "HasOne10", 11: "HasOne11", 12: "HasOne12", 13: "HasOne13", 14: "HasOne14", 15: "HasOne15", 16: "HasOne16", 17: "HasOne17", 18: "HasOne18", 19: "HasOne19", 20: "HasOne20", 21: "HasOne21", 22: "HasOne22", 23: "HasOne23", 24: "HasOne24", 25: "HasOne25", 26: "HasOne26", 27: "HasOne27", 28: "HasOne28", 29: "HasOne29", 30: "HasOne30", 31: "HasOne31", 32: "HasOne32", 33: "HasOne33", 34: "HasOne34", 35: "HasOne35", 36: "HasOne36", 37: "HasOne37", 38: "HasOne38", 39: "HasOne39", 40: "HasOne40", 41: "HasOne41", 42: "HasOne42", 43: "HasOne46", 44: "HasOne44", 45: "HasOne45", 46: "HasOne49", 47: "HasOne47", 48: "HasOne48", 49: "HasOne49", 50: "HasOne50", 51: "HasOne51", 52: "HasOne52", 53: "HasOne53", 54: "HasOne54", 55: "HasOne55", 56: "HasOne56", 57: "HasOne57", 58: "HasOne58", 59: "HasOne59", 60: "HasOne60", 61: "HasOne61", 62: "HasOne62", 63: "HasOne63", 64: "HasOne64", 65: "HasOne65", 66: "HasOne66", 67: "HasOne67", 68: "HasOne68", 69: "HasOne69", 70: "HasOne70", 71: "HasOne71", 72: "HasOne72", 73: "HasOne73", 74: "HasOne74", 75: "HasOne75", 76: "HasOne76", 77: "HasOne77", 78: "HasOne78", 79: "HasOne79", 80: "HasOne80", 81: "HasOne81", 82: "HasOne82", 83: "HasOne83", 84: "HasOne84", 85: "HasOne85", 86: "HasOne86", 87: "HasOne87", 88: "HasOne88", 89: "HasOne89", 90: "HasOne90", 91: "HasOne91", 92: "HasOne92", 93: "HasOne93", 94: "HasOne94", 95: "HasOne95", 96: "HasOne96", 97: "HasOne97", 98: "HasOne98", 99: "HasOne99", 100: "HasOne100", 101: "HasOne101", 102: "HasOne102", 103: "HasOne103", 104: "HasOne104", 105: "HasOne105", 106: "HasOne106", 107: "HasOne107", 108: "HasOne108", 109: "HasOne109", 110: "HasOne110", 111: "HasOne111", 112: "HasOne112", 113: "HasOne113", 114: "HasOne114", 115: "HasOne115", 116: "HasOne116", 117: "HasOne117", 118: "HasOne118", 119: "HasOne119", 120: "HasOne120", 121: "HasOne121", 122: "HasOne122", 123: "HasOne123", 124: "HasOne124", 125: "HasOne125", 126: "HasOne126", 127: "HasOne127", 128: "HasOne128", 129: "HasOne129", 130: "HasOne130", 131: "HasOne131", 132: "HasOne132", 133: "HasOne133", 134: "HasOne134", 135: "HasOne135", 136: "HasOne136", 137: "HasOne137", 138: "HasOne138", 139: "HasOne139", 140: "HasOne140", 141: "HasOne141", 142: "HasOne142", 143: "HasOne143", 144: "HasOne144", 145: "HasOne145", 146: "HasOne146", 147: "HasOne147", 148: "HasOne148", 149: "HasOne149", 150: "HasOne150", 151: "HasOne151", 152: "HasOne152", 153: "HasOne153", 154: "HasOne154", 155: "HasOne155", 156: "HasOne156", 157: "HasOne157", 158: "HasOne158", 159: "HasOne159", 160: "HasOne160", 161: "HasOne161", 162: "HasOne162", 163: "HasOne163", 164: "HasOne164", 165: "HasOne165", 166: "HasOne166", 167: "HasOne167", 168: "HasOne168", 169: "HasOne169", 170: "HasOne170", 171: "HasOne171", 172: "HasOne172", 173: "HasOne173", 174: "HasOne174", 175: "HasOne175", 176: "HasOne176", 177: "HasOne177", 178: "HasOne178", 179: "HasOne179", 180: "HasOne180", 181: "HasOne181", 182: "HasOne182", 183: "HasOne183", 184: "HasOne184", 185: "HasOne185", 186: "HasOne186", 187: "HasOne187", 188: "HasOne188", 189: "HasOne189", 190: "HasOne190", 191: "HasOne191", 192: "HasOne192", 193: "HasOne193", 194: "HasOne194", 195: "HasOne195", 196: "HasOne196", 197: "HasOne197", 198: "HasOne198", 199: "HasOne199", 200: "HasOne200", 201: "HasOne201", 202: "HasOne202", 203: "HasOne203", 204: "HasOne204", 205: "HasOne205", 206: "HasOne206", 207: "HasOne207", 208: "HasOne208", 209: "HasOne209", 210: "HasOne210", 211: "HasOne211", 212: "HasOne212", 213: "HasOne213", 214: "HasOne214", 215: "HasOne215", 216: "HasOne216", 217: "HasOne217", 218: "HasOne218", 219: "HasOne219", 220: "HasOne220", 221: "HasOne221", 222: "HasOne222", 223: "HasOne223", 224: "HasOne224", 225: "HasOne225", 226: "HasOne226", 227: "HasOne227", 228: "HasOne228", 229: "HasOne229", 230: "HasOne230", 231: "HasOne231", 232: "HasOne232", 233: "HasOne233", 234: "HasOne234", 235: "HasOne235", 236: "HasOne236", 237: "HasOne237", 238: "HasOne238", 239: "HasOne239", 240: "HasOne240", 241: "HasOne241", 242: "HasOne242", 243: "HasOne243", 244: "HasOne244", 245: "HasOne245", 246: "HasOne246", 247: "HasOne247", 248: "HasOne248", 249: "HasOne249", 250: "HasOne250", 251: "HasOne251", 252: "HasOne252", 253: "HasOne253", 254: "HasOne254", 255: "HasOne255"}), 
        MathConv("illuminance", "sensor", mi="2.p.1005", min=0, max=10000),
        BaseConv("battery", "sensor", mi="4.p.1003", entity=ENTITY_LAZY),
    ],
}, {
添加方法就不赘述了,就是加到xiaomi_gateway3.py里面

在node-red里如果要做有人判断,只需要设置值包含HasOne就可以了
h5.png

评分

参与人数 1金钱 +12 收起 理由
隔壁的王叔叔 + 12 感谢楼主分享!

查看全部评分

回复

使用道具 举报

7

主题

59

帖子

736

积分

高级会员

Rank: 4

积分
736
金钱
677
HASS币
0
 楼主| 发表于 昨天 19:03 | 显示全部楼层
代码NoOne前面多了1个空格,已修改,之前复制的可以自己改一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-4 16:49 , Processed in 0.199169 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表