mirror of
https://github.com/thingsboard/thingsboard-gateway
synced 2025-10-26 22:31:42 +08:00
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
[metadata]
|
||||
name = thingsboard-gateway
|
||||
version = 2.2.4.1
|
||||
version = 2.2.4.2
|
||||
description = Thingsboard Gateway for IoT devices.
|
||||
long_description= file: README.md
|
||||
license = Apache Software License (Apache Software License 2.0)
|
||||
|
||||
3
setup.py
3
setup.py
@@ -38,12 +38,11 @@ setup(
|
||||
'pytz',
|
||||
'PyYAML',
|
||||
'simplejson',
|
||||
'orjson>=2.6.3',
|
||||
'pyrsistent',
|
||||
'requests',
|
||||
'python-can'
|
||||
],
|
||||
download_url='https://github.com/thingsboard/thingsboard-gateway/archive/2.2.4.1.tar.gz',
|
||||
download_url='https://github.com/thingsboard/thingsboard-gateway/archive/2.2.4.2.tar.gz',
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
'thingsboard-gateway = thingsboard_gateway.tb_gateway:daemon'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%define name thingsboard-gateway
|
||||
%define version 2.2.4.1
|
||||
%define unmangled_version 2.2.4.1
|
||||
%define version 2.2.4.2
|
||||
%define unmangled_version 2.2.4.2
|
||||
%define release 1
|
||||
|
||||
Summary: Thingsboard Gateway for IoT devices.
|
||||
|
||||
@@ -55,11 +55,12 @@
|
||||
"value": false
|
||||
},
|
||||
"setCPUFanSpeed": {
|
||||
"type": "int",
|
||||
"value": 42,
|
||||
"functionCode": 16,
|
||||
"address": 0,
|
||||
"address": 1,
|
||||
"byteOrder": "BIG",
|
||||
"registerCount": 1
|
||||
"registerCount": 2
|
||||
},
|
||||
"getCPULoad": {
|
||||
"type": "int",
|
||||
|
||||
@@ -40,11 +40,16 @@ class BytesModbusDownlinkConverter(ModbusConverter):
|
||||
"16float": builder.add_16bit_float,
|
||||
"32float": builder.add_32bit_float,
|
||||
"64float": builder.add_64bit_float}
|
||||
|
||||
value = None
|
||||
if data.get("data") and data["data"].get("params") is not None:
|
||||
value = data["data"]["params"]
|
||||
else:
|
||||
value = config["value"]
|
||||
lower_type = config["tag"].lower()
|
||||
lower_type = config.get("type", config.get("tag", "error")).lower()
|
||||
if lower_type == "error":
|
||||
log.error('"type" and "tag" - not found in configuration.')
|
||||
variable_size = config.get("registerCount", 1) * 8
|
||||
if lower_type in ["integer", "dword", "dword/integer", "word"]:
|
||||
if lower_type in ["integer", "dword", "dword/integer", "word", "int"]:
|
||||
lower_type = str(variable_size) + "int"
|
||||
assert builder_functions.get(lower_type) is not None
|
||||
builder_functions[lower_type](value)
|
||||
@@ -68,6 +73,8 @@ class BytesModbusDownlinkConverter(ModbusConverter):
|
||||
log.debug(bits)
|
||||
builder.add_bits(bits)
|
||||
return builder.to_string()
|
||||
else:
|
||||
log.error("Unknown variable type")
|
||||
|
||||
builder_converting_functions = {5: builder.to_coils,
|
||||
15: builder.to_coils,
|
||||
@@ -77,6 +84,10 @@ class BytesModbusDownlinkConverter(ModbusConverter):
|
||||
function_code = config["functionCode"]
|
||||
|
||||
if function_code in builder_converting_functions:
|
||||
return builder_converting_functions[function_code]()
|
||||
log.warning("Unsupported function code, for the device %s in the Modbus Downlink converter", self.__config["deviceName"])
|
||||
builder = builder_converting_functions[function_code]()
|
||||
if "Exception" in str(builder):
|
||||
log.exception(builder)
|
||||
builder = str(builder)
|
||||
return builder
|
||||
log.warning("Unsupported function code, for the device %s in the Modbus Downlink converter", config["device"])
|
||||
return None
|
||||
|
||||
@@ -231,13 +231,15 @@ class ModbusConnector(Connector, threading.Thread):
|
||||
else:
|
||||
log.error("Unknown Modbus function with code: %i", function_code)
|
||||
log.debug("With result %s", str(result))
|
||||
|
||||
if "Exception" in str(result):
|
||||
log.exception(result)
|
||||
result = str(result)
|
||||
return result
|
||||
|
||||
def server_side_rpc_handler(self, content):
|
||||
log.debug("Modbus connector received rpc request for %s with content: %s", self.get_name(), content)
|
||||
if content.get("device") is not None:
|
||||
log.debug("Modbus connector received rpc request for %s with content: %s", content["device"], content)
|
||||
rpc_command_config = self.__devices[content["device"]]["config"]["rpc"].get(content["data"].get("method"))
|
||||
|
||||
if rpc_command_config is not None:
|
||||
rpc_command_config["unitId"] = self.__devices[content["device"]]["config"]["unitId"]
|
||||
if rpc_command_config.get('bit') is not None:
|
||||
@@ -249,7 +251,6 @@ class ModbusConnector(Connector, threading.Thread):
|
||||
response = self.__function_to_device(rpc_command_config, rpc_command_config["unitId"])
|
||||
except Exception as e:
|
||||
log.exception(e)
|
||||
|
||||
if isinstance(response, ReadRegistersResponseBase):
|
||||
to_converter = {"rpc": {content["data"]["method"]: {"data_sent": rpc_command_config,
|
||||
"input_data": response}}}
|
||||
@@ -262,6 +263,7 @@ class ModbusConnector(Connector, threading.Thread):
|
||||
response = str(response)
|
||||
log.debug("Write %r", response)
|
||||
response = False if response is None else response
|
||||
response = str(response) if isinstance(response, Exception) else response
|
||||
self.__gateway.send_rpc_reply(content["device"],
|
||||
content["data"]["id"],
|
||||
{content["data"]["method"]: response})
|
||||
@@ -272,3 +274,5 @@ class ModbusConnector(Connector, threading.Thread):
|
||||
self.__gateway.send_rpc_reply(content["device"],
|
||||
content["data"]["id"],
|
||||
{content["data"]["method"]: "METHOD NOT FOUND!"})
|
||||
else:
|
||||
log.debug("Received RPC to connector: %r", content)
|
||||
|
||||
@@ -24,8 +24,7 @@ from string import ascii_lowercase
|
||||
from threading import Thread, RLock
|
||||
|
||||
from yaml import safe_load
|
||||
from simplejson import load, dumps
|
||||
from orjson import loads
|
||||
from simplejson import load, dumps, loads
|
||||
|
||||
from thingsboard_gateway.gateway.tb_client import TBClient
|
||||
from thingsboard_gateway.gateway.tb_logger import TBLoggerHandler
|
||||
|
||||
@@ -16,8 +16,7 @@ from io import BufferedReader, FileIO
|
||||
from os import remove
|
||||
from os.path import exists
|
||||
from base64 import b64decode
|
||||
from simplejson import load, JSONDecodeError
|
||||
from orjson import dumps
|
||||
from simplejson import load, JSONDecodeError, dumps
|
||||
from thingsboard_gateway.storage.file_event_storage import log
|
||||
from thingsboard_gateway.storage.event_storage_files import EventStorageFiles
|
||||
from thingsboard_gateway.storage.file_event_storage_settings import FileEventStorageSettings
|
||||
|
||||
@@ -21,8 +21,7 @@ from threading import Thread
|
||||
|
||||
import paho.mqtt.client as paho
|
||||
|
||||
# from simplejson import dumps
|
||||
from orjson import dumps
|
||||
from simplejson import dumps
|
||||
# from jsonschema import Draft7Validator
|
||||
# from jsonschema import ValidationError
|
||||
|
||||
|
||||
@@ -14,8 +14,7 @@
|
||||
|
||||
import logging
|
||||
import time
|
||||
# from simplejson import dumps
|
||||
from orjson import dumps
|
||||
from simplejson import dumps
|
||||
|
||||
from thingsboard_gateway.tb_client.tb_device_mqtt import TBDeviceMqttClient
|
||||
from thingsboard_gateway.tb_utility.tb_utility import TBUtility
|
||||
|
||||
@@ -17,8 +17,7 @@ from os import path, listdir
|
||||
from inspect import getmembers, isclass
|
||||
from importlib import util
|
||||
from logging import getLogger
|
||||
# from simplejson import dumps, loads
|
||||
from orjson import loads, dumps
|
||||
from simplejson import dumps, loads
|
||||
from jsonpath_rw import parse
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user