diff --git a/connect.py b/connect.py index 55e8616..0eef330 100644 --- a/connect.py +++ b/connect.py @@ -51,7 +51,7 @@ dn = gw.device_name # import connect4 # sys.exit(0) -if gw.model_id < 0 or gw.model_id >= gw.get_modelid_by_name('R2100'): +if gw.model_id <= 0 or gw.model_id >= gw.get_modelid_by_name('R2100'): import connect5 sys.exit(0) diff --git a/gateway.py b/gateway.py index 1f748b0..22c0677 100644 --- a/gateway.py +++ b/gateway.py @@ -148,7 +148,7 @@ class Gateway(): pass if not self.device_name: die("You need to make the initial configuration in the WEB of the device!") - self.model_id = self.get_modelid_by_name(self.device_name, unk = True) + self.model_id = self.get_modelid_by_name(self.device_name) self.status = -1 x = r0.text.find('a href="/cgi-bin/luci/web/init/hello') if (x > 10): diff --git a/xqmodel.py b/xqmodel.py index ec8d21b..9476cdf 100644 --- a/xqmodel.py +++ b/xqmodel.py @@ -1,104 +1,117 @@ #!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -mi = [ "" ] * 2000 - -mi[ 3] = "R1CM" -mi[ 4] = "R2D" -mi[ 5] = "R1CL" -mi[ 6] = "R2CM" -mi[ 7] = "R3" -mi[ 8] = "R3D" -mi[ 9] = "R3L" -mi[10] = "R3P" -mi[11] = "P01" -mi[12] = "R3A" -mi[13] = "R3G" -mi[14] = "R4" -mi[15] = "R4C" -mi[16] = "D01" -mi[17] = "R4A" -mi[18] = "R4CM" -mi[19] = "R4AC" -mi[20] = "R3GV2" -mi[21] = "R2600" - -mi[22] = "R2100" -mi[23] = "RM2100" -mi[24] = "R3600" -mi[25] = "R1350" -mi[26] = "R2200" -mi[27] = "R2350" -mi[28] = "IR1200G" -mi[29] = "RM1800" -mi[30] = "R2100D" -mi[31] = "RA67" -mi[32] = "RA69" -mi[33] = "RA71" -mi[34] = "CR6006" -mi[35] = "CR6008" -mi[36] = "CR6009" -mi[37] = "RA70" # AX9000 -mi[38] = "RA75" -mi[39] = "RA72" # Mi Router AX6000 Certification: 2021-05-20 - -mi[1005] = "RA50" # Certification: 2022-13063 -mi[1006] = "RB02" # Xiaomi AC1200 (INT) -mi[1007] = "R4AV2" # Xiaomi AC1200 (CN) - -mi[43] = "RA80" # AX3000 (CN) Certification: 2022-2908 -mi[44] = "RA81" # Redmi AX3000 -mi[45] = "RA82" # AX3000 (INT) -mi[46] = "RA83" -mi[47] = "RA74" # AX5400 - -mi[49] = "YY01" -mi[50] = "RB01" # AX3200 (INT) -mi[51] = "RB03" # AX6S # CR8806 (ChinaMobile) -mi[52] = "CR8808" -mi[53] = "CR8809" -mi[54] = "RB04" # Redmi AX5400 -mi[55] = "CR5508" -mi[56] = "CR5506" -mi[57] = "CR5509" -mi[58] = "RB08" # HomeWiFi - -mi[1060] = "RB05" # Certification: 2022-3478 -mi[61] = "RB06" # Redmi AX6000 -mi[62] = "RB07" # mediatek_mt7981 - -mi[64] = "CB04" -mi[65] = "CB0401" # Xiaomi 5G CPE Pro, Magenta Internet 5G Box AX5400 -mi[66] = "RC01" # AX10000 -mi[1067] = "RC04" # RA75 analog -mi[68] = "CB0401V2" # Xiaomi 5G CPE Pro - -mi[70] = "RC06" # Xiaomi Router 7000 -mi[71] = "RD01" # Xiaomi 全屋路由 # https://www.mi.com/xiaomi-routers/whole-room -mi[72] = "WR30" # ??? -mi[73] = "RD02" # Xiaomi 全屋路由 子路由 (Whole house routing sub-routing) # ipq5018 # Certification: 2023-11107 -mi[74] = "CR8818" -mi[75] = "RD03" # Xiaomi AX3000T (CN) -mi[76] = "RD04" # Certification: 2023-12227 -mi[77] = "RD05" -mi[78] = "RD06" -mi[79] = "CR8816" -mi[80] = "CR8819" -mi[81] = "RD08" + +xqModelList = { } + +def mi(model_id, model, similar = "", altname = ""): + xqModelList[model] = { 'model': model, 'id': model_id, 'similar': similar, 'altname': altname } + + +mi( 3, "R1CM", "", "miwifi-mini") +mi( 4, "R2D") +mi( 5, "R1CL", "", "miwifi-nano") +mi( 6, "R2CM") +mi( 7, "R3") +mi( 8, "R3D", "", "r3d") +mi( 9, "R3L", "", "miwifi-3c") +mi(10, "R3P", "", "mi-router-3-pro") +mi(11, "P01") +mi(12, "R3A") +mi(13, "R3G", "", "mi-router-3g") +mi(14, "R4", "", "mi-router-4") +mi(15, "R4C", "", "mi-router-4q") +mi(16, "D01") +mi(17, "R4A", "", "mi-router-4a-gigabit") +mi(18, "R4CM", "", "mi-router-4c") +mi(19, "R4AC", "", "mi-router-4a-100m") # mi-router-4a-100m-intl mi-router-4a-100m-intl-v2 +mi(20, "R3GV2", "", "mi-router-3g-v2") +mi(21, "R2600") + +mi(22, "R2100", "", "mi-router-ac2100") +mi(23, "RM2100", "", "redmi-router-ac2100") +mi(24, "R3600", "", "ax3600") +mi(25, "R1350") +mi(26, "R2200") +mi(27, "R2350", "", "aiot-ac2350") +mi(28, "IR1200G") +mi(29, "RM1800") +mi(30, "R2100D") +mi(31, "RA67") +mi(32, "RA69") +mi(33, "RA71") +mi(34, "CR6006", "", "mi-router-cr6606") +mi(35, "CR6008", "", "mi-router-cr6608") +mi(36, "CR6009", "", "mi-router-cr6609") +mi(37, "RA70", "", "ax9000") # AX9000 +mi(38, "RA75", "", "mi-ra75") +mi(39, "RA72") # Mi Router AX6000 Certification: 2021-05-20 + +mi(0, "RA50") # Certification: 2022-13063 +mi(0, "RB02", "R4AV2", "mi-router-4a-gigabit-v2") # Xiaomi AC1200 (INT) +mi(0, "R4AV2", "RB02", "mi-router-4a-gigabit-v2") # Xiaomi AC1200 (CN) + +mi(43, "RA80", "RA82") # AX3000 (CN) Certification: 2022-2908 +mi(44, "RA81") # Redmi AX3000 +mi(45, "RA82", "RA80") # AX3000 (INT) +mi(46, "RA83") +mi(47, "RA74") # AX5400 + +mi(49, "YY01") +mi(50, "RB01", "RB03", "redmi-router-ax6s") # AX3200 (INT) +mi(51, "RB03", "RB01", "redmi-router-ax6s") # AX6S # CR8806 (ChinaMobile) +mi(52, "CR8808") +mi(53, "CR8809") +mi(54, "RB04") # Redmi AX5400 +mi(55, "CR5508") +mi(56, "CR5506") +mi(57, "CR5509") +mi(58, "RB08") # HomeWiFi + +mi(0, "RB05") # Certification: 2022-3478 +mi(61, "RB06", "", "redmi-router-ax6000") # Redmi AX6000 +mi(62, "RB07") # mediatek_mt7981 + +mi(64, "CB04") +mi(65, "CB0401") # Xiaomi 5G CPE Pro, Magenta Internet 5G Box AX5400 +mi(66, "RC01") # AX10000 +mi(0, "RC04") # RA75 analog +mi(68, "CB0401V2") # Xiaomi 5G CPE Pro + +mi(70, "RC06") # Xiaomi Router 7000 +mi(71, "RD01") # Xiaomi 全屋路由 # https://www.mi.com/xiaomi-routers/whole-room +mi(72, "WR30") # ??? +mi(73, "RD02") # Xiaomi 全屋路由 子路由 (Whole house routing sub-routing) # ipq5018 # Certification: 2023-11107 +mi(74, "CR8818") +mi(75, "RD03") # Xiaomi AX3000T (CN) +mi(76, "RD04") # Certification: 2023-12227 +mi(77, "RD05") +mi(78, "RD06") +mi(79, "CR8816") +mi(80, "CR8819") +mi(81, "RD08") # routers with unknown device number -mi[1901] = "WR30U" # Xiaomi AX3000NE -mi[1902] = "WR30T" # mediatek_mt7981 # Certification: 2022-3536 -mi[1903] = "WR30M" # Certification: 2022-3202 6.0.49 - - -xqModelList = mi - -def get_modelid_by_name(name, unk = False): - for i, m in enumerate(xqModelList): - if not unk and i >= 1000: - break - if m.lower() == name.lower(): - return i +mi(0, "WR30U", "", "mi-router-wr30u") # Xiaomi AX3000NE +mi(0, "WR30T") # mediatek_mt7981 # Certification: 2022-3536 +mi(0, "WR30M") # Certification: 2022-3202 6.0.49 + + + +def get_modelid_by_name(name): + name = name.upper() + if name in xqModelList: + return xqModelList[name]['id'] return -1 +def get_model_info(name): + name = name.upper() + if name in xqModelList: + return xqModelList[name] + return { } + +def get_model_by_id(id): + if id > 0: + for i, (name, item) in enumerate(xqModelList.items()): + if item['id'] == id: + return item + return { } +