solax-py-library 1.0.0.2515__tar.gz → 1.0.0.2516__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/PKG-INFO +1 -1
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/pyproject.toml +1 -1
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/utils/struct_util.py +16 -25
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/README.md +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/constant/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/constant/cabinet.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/constant/inverter_model_info.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/core/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/core/interver/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/core/interver/base.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/types/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/types/alarm.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/types/inverter_config.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/types/modbus_point.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/exception.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/constant/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/constant/message_entry.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/action/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/action/base.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/action/ems_action.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/action/system_action.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/condition/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/condition/base.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/condition/cabinet_condition.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/condition/date_condition.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/condition/price_condition.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/condition/system_condition.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/condition/weather_condition.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/service/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/core/service/runner.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/exceptions/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/exceptions/price.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/exceptions/smart_scene.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/exceptions/weather.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/types/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/types/action.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/types/condition.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/types/smart_scene_content.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/constant/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/constant/crc_table.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/core/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/core/base_modbus.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/core/parser.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/core/snap_shot.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/exceptions/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/exceptions/snap_shot.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/test/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/types/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/types/address.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/test/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/test/test_smart_scene/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/test/test_smart_scene/test_condition.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/test/test_utils/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/test/test_utils/test_cloud_client.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/api/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/api/service.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/core/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/core/data_adapter/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/core/data_adapter/base.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/core/data_adapter/csv.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/core/upload_service/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/core/upload_service/base.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/core/upload_service/ftp.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/exceptions/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/exceptions/upload_error.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/test/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/test/test_ftp.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/types/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/types/client.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/types/ftp.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/utils/__init__.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/utils/cloud_client.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/utils/common.py +0 -0
- {solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/utils/time_util.py +0 -0
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/utils/struct_util.py
RENAMED
@@ -3,15 +3,15 @@ import struct
|
|
3
3
|
from typing import List
|
4
4
|
|
5
5
|
format_map = {
|
6
|
-
"int8": "bb",
|
7
|
-
"uint8": "BB",
|
8
|
-
"int16": "h",
|
9
|
-
"uint16": "H",
|
10
|
-
"int32": "i",
|
11
|
-
"uint32": "I",
|
12
|
-
"int64": "q",
|
13
|
-
"uint64": "Q",
|
14
|
-
"float": "f",
|
6
|
+
"int8": {"format_str": "bb", "length": 1},
|
7
|
+
"uint8": {"format_str": "BB", "length": 1},
|
8
|
+
"int16": {"format_str": "h", "length": 1},
|
9
|
+
"uint16": {"format_str": "H", "length": 1},
|
10
|
+
"int32": {"format_str": "i", "length": 2},
|
11
|
+
"uint32": {"format_str": "I", "length": 2},
|
12
|
+
"int64": {"format_str": "q", "length": 4},
|
13
|
+
"uint64": {"format_str": "Q", "length": 4},
|
14
|
+
"float": {"format_str": "f", "length": 1},
|
15
15
|
}
|
16
16
|
|
17
17
|
|
@@ -27,25 +27,16 @@ def unpack(data: List, data_format, reversed=False):
|
|
27
27
|
raise Exception("暂不支持")
|
28
28
|
pack_str = ("<" if reversed else ">") + "H" * len(cur_data)
|
29
29
|
to_pack_data = struct.pack(pack_str, *cur_data)
|
30
|
-
struct_format = ("<" if reversed else ">") + format_map[data_format]
|
30
|
+
struct_format = ("<" if reversed else ">") + format_map[data_format]["format_str"]
|
31
31
|
return struct.unpack(struct_format, to_pack_data)
|
32
32
|
|
33
33
|
|
34
|
-
def
|
34
|
+
def pack(value, fmt, order="big"):
|
35
35
|
"""将10进制的原始值转换为modbus协议需要的精度与类型的值"""
|
36
36
|
opt = "<" if order == "little" else ">"
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
else:
|
43
|
-
ret_list = [0]
|
44
|
-
except Exception:
|
45
|
-
if "16" in fmt:
|
46
|
-
ret_list = [0]
|
47
|
-
elif "32" in fmt:
|
48
|
-
ret_list = [0, 0]
|
49
|
-
else:
|
50
|
-
ret_list = [0, 0, 0, 0]
|
37
|
+
if fmt not in format_map:
|
38
|
+
raise Exception("暂不支持")
|
39
|
+
value = int(value)
|
40
|
+
ret = struct.pack(f'{opt}{format_map[fmt]["format_str"]}', value)
|
41
|
+
ret_list = struct.unpack(f'{opt}{"H" * format_map[fmt]["length"]}', ret)
|
51
42
|
return list(ret_list)
|
File without changes
|
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/core/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/device/types/alarm.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/smart_scene/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/snap_shot/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/test/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/__init__.py
RENAMED
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/api/__init__.py
RENAMED
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/api/service.py
RENAMED
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/core/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/test/__init__.py
RENAMED
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/test/test_ftp.py
RENAMED
File without changes
|
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/types/client.py
RENAMED
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/upload/types/ftp.py
RENAMED
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/utils/__init__.py
RENAMED
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/utils/cloud_client.py
RENAMED
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/utils/common.py
RENAMED
File without changes
|
{solax_py_library-1.0.0.2515 → solax_py_library-1.0.0.2516}/solax_py_library/utils/time_util.py
RENAMED
File without changes
|