summaryrefslogtreecommitdiff
path: root/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity
diff options
context:
space:
mode:
authorAndrew Geissler <geissonator@yahoo.com>2020-12-01 04:55:29 +0300
committerAndrew Geissler <geissonator@yahoo.com>2020-12-01 18:27:19 +0300
commit4b7c115404e4e18ca796c16a64c04ba299bf5cd0 (patch)
treeaa5cf8759c4a5e15cc12e8795aa189b8e2d02b4a /meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity
parent6ce62a20847b1bd500386c842cf8b801b678bd1c (diff)
downloadopenbmc-4b7c115404e4e18ca796c16a64c04ba299bf5cd0.tar.xz
meta-openembedded: subtree update:164a6030b0..f623d8b574
Adrian Freihofer (1): paho-mqtt-c: upgrade 1.3.6 -> 1.3.7 Alexander Kamensky (2): makedumpfile: add PACKAGECONFIG options for lzo and snappy compression makedumpfile: upgrade 1.6.7 -> 1.6.8 Alexander Kanavin (4): collect: do not build with -Werror libsigrokdecode: add python 3.9 support python3-mprpc: remove the recipe gnome-calendar: update to 3.38.1, add libhandy 1.x support Anatol Belski (1): chrony: Patch CVE-2020-14367 Bartosz Golaszewski (1): libgpiod: update v1.4.4 -> v1.4.5 Beni (1): unbound: upgrade to 1.12.0 Gregory Anders (5): Add suitesparse Add python3-transitions Add python3-dill Add python3-cerberus Add python3-cvxopt Hongxu Jia (1): lvm2.inc: switch branch master to main Jasper Orschulko (1): upgrade and de-blacklist nanopb recipe Jose Quaresma (3): spirv-tools: moved into OE-core, delete from meta-oe srt: add receipe opencv: Update 4.4.0 -> 4.5.0 Kai Kang (4): xfce4-cpufreq-plugin: 1.2.1 -> 1.2.2 xfce4-weather-plugin: 0.10.1 -> 0.10.2 xfce4-mailwatch-plugin: 1.2.0 -> 1.3.0 tumbler: 0.2.9 -> 0.3.1 Khem Raj (71): nodejs: Fix arm32/thumb builds with clang nodejs: Update to 12.19.0 redis: Fix build on 32bit targets and clang gperftools: Fix build with new musl updates minifi-cpp: Fix build with riscv64/clang graphviz: Upgrade to 2.44.1 release musl-nscd: Update to latest remmina: Update to 1.4.8 mdbus2: Fix build with vala 0.50 ibus: Update to 1.5.3 plus fix for vala 0.50 networkd-dispatcher: Upgrade to 2.1 geoclue: Use git fetcher kernel-selftest: Disable vm packageconfig for riscv layer.conf: Add hardknott to LAYERSERIES_COMPAT fmt: Upgrade to 7.1.2 lksctp-tools: Update to latest master fuse3: Upgrade to 3.10.0 rdma-core: Upgrade to 31.1 opengl-es-cts: Disable LTO fluentbit: Disable LTO traceroute: Fix build with LTO cmocka: Fix buils with LTO dovecot: Disable LTO redis-plus-plus: Upgrade to 1.2.1 suitesparse: Exclude from world python3-icu: Update to 2.6 meta-python: Drop RDEPEND'ing on python3-typing python3-cvxopt: Exclude from world builds packagegroup-meta-multimedia: Add srt gedit: Inherit python3targetconfig gmime: Fix append to do_configure dconf: Add leading whitespace for append operator kexec-tools-klibc: Add leading whitespace for append operator spice: Add leading whitespace for append operator meta-oe: Add leading whitespace for append operator libgusb: Update to 0.3.5 botan: Mark incompatible with riscv32 projucer: Link with libatomic on rv32 mariadb: Fix build on 32bit arches with 64bit time_t liburing: Fix build on 32-bit arches with 64-bit time_t librtorrent: Disable instrumentation on rv32 ntopng: Link with libatomic on rv32 poco: Add riscv32 support capnproto: Fix build on 32bit arches with 64bit time_t defaults directfb: Fix build on riscv32 opensaf: Fix build on 32bit arches with 64bit time_t e.g. RISCV-32 rocksdb: Update to 6.12.7 qpdf: Link with libatomic on rv32 libkcapi: Fix build on riscv32 jack: Upgrade to 1.19.16 vlc: Fix build on riscv32 fluentbit: Link with libatomic on riscv32 openipmi: Inherit python3targetconfig libplist: Inherit python3targetconfig postgresql: Inherit python3targetconfig python-grpcio-tools: Add missing space for append python3-pykwalify: Do not unset _PYTHON_SYSCONFIGDATA_NAME thingsboard-gateway: Move under dynamic layers musl-nscd: Replace -fcommon with code patch musl-nscd: Add missing deps on flex and bison during build python3-pytest: Upgrade to 6.1.2 python3-hypothesis: Add recipe python3-sortedcontainers: Add recipe heaptrack: Fix build on musl heaptrack: Mark RISCV host incompatible packagegroup-meta-oe: Exclude heaptrack for rv32/rv64 chrony: Upgrade to 4.0 canutils,can-utils: Add cansequence to u-a as well packagegroup-meta-python: Add newly added recipes to packagegroup-meta-python3 pipewire: Link with libatomic for riscv32 python3-matplotlib: Disable LTO for clang/riscv Kory Maincent (1): libftdi: add swig-native to dependencies Leon Anavi (37): python3-luma-oled: Upgrade 3.6.0 -> 3.7.0 python3-cryptography-vectors: Upgrade 3.1.1 -> 3.2 python3-pyexpect: Upgrade 1.0.20 -> 1.0.21 python3-markdown: Upgrade 3.3.2 -> 3.3.3 python3-sh: Upgrade 1.14.0 -> 1.14.1 python3-kiwisolver: Upgrade 1.2.0 -> 1.3.0 python3-aiohttp: Upgrade 3.7.1 -> 3.7.2 python3-aiofiles: Upgrade 0.5.0 -> 0.6.0 python3-regex: Upgrade 2020.10.23 -> 2020.10.28 python3-dateparser: Upgrade 0.7.6 -> 1.0.0 python3-langtable: Upgrade 0.0.53 -> 0.0.54 python3-kiwisolver: Upgrade 1.3.0 -> 1.3.1 python3-tornado: Upgrade 6.0.4 -> 6.1 python3-ipython: Upgrade 7.18.1 -> 7.19.0 python3-cmd2: Upgrade 1.3.11 -> 1.4.0 python3-dill: Upgrade 0.3.2 -> 0.3.3 python3-colorlog: Upgrade 4.4.0 -> 4.6.2 python3-pandas: Upgrade 1.1.3 -> 1.1.4 python3-attrs: 20.2.0 -> 20.3.0 python3-gmqtt: Upgrade 0.6.7 -> 0.6.8 python3-diskcache: Upgrade 5.0.3 -> 5.1.0 python3-croniter: Upgrade 0.3.35 -> 0.3.36 python3-bitarray: Upgrade 1.6.0 -> 1.6.1 python3-certifi: Upgrade 2020.6.20 -> 2020.11.8 python3-cantools: Upgrade 35.3.0 -> 35.5.0 python3-arpeggio: Upgrade 1.9.2 -> 1.10.1 python3-toml: Upgrade 0.10.1 -> 0.10.2 python3-pyrad: Upgrade 2.3 -> 2.4 python3-bitstruct: Upgrade 8.11.0 -> 8.11.1 python3-yarl: Upgrade 1.6.2 -> 1.6.3 python3-luma-core: Upgrade 1.17.3 -> 2.0.1 python3-luma-oled: Upgrade 3.7.0 -> 3.8.1 python3-fastnumbers: Upgrade 3.0.0 -> 3.1.0 python3-ansi2html: Upgrade 1.5.2 -> 1.6.0 python3-prettytable: Upgrade 1.0.1 -> 2.0.0 python3-urllib3: Upgrade 1.25.11 -> 1.26.2 python3-transitions: Upgrade 0.8.4 -> 0.8.5 Li Zhou (1): ptpd: Solve memory leak for function NTPDCrequest Maciej Pijanowski (2): cdrkit: add native to BBCLASSEXTEND cdrkit: split into more packages Mark Jonas (5): mbedtls: Fix typo in PACKAGECONFIG python3-pyinotify: Add missing ctypes dependency libsocketcan: Add PACKAGECONFIG options libsocketcan: Update to 0.0.12 imagemagick: Add NOTICE to collected license texts Max Kellermann (1): php: remove the failing ${D}/${TMPDIR} code Mingli Yu (6): ndpi: add new recipe libmaxminddb: add new recipe ntopng: add new recipe ntop: remove the recipe packagegroup-meta-networking.bb: add ntopng related recipes traceroute: set VPATH Nick Rosbrook (3): strongswan: add some PACKAGECONFIG options for EAP strongswan: do not use deprecated stroke and starter by default strongswan: remove ldap from default PACKAGECONFIG Pierre-Jean Texier (1): inotify-tools: upgrade 3.20.2.2 -> 3.20.11.0 Randy Witt (1): numactl: Remove the recipe Ricardo Salveti (3): wireguard-module: upgrade 1.0.20200712 -> 1.0.20200908 wireguard-tools: upgrade 1.0.20200513 -> 1.0.20200827 wireguard-module: upgrade 1.0.20200908 -> 1.0.20201112 Sakib Sajal (1): libssh2: fix ptest Sinan Kaya (3): collectd: fix the test condition for dash compatibility heaptrack: add bitbake recipe cpp-netlib: add bitbake recipe Tim Orling (16): python3-atomicwrites: drop (moved to oe-core) python3-attrs: drop (moved to oe-core) python3-iniconfig: drop (moved to oe-core) python3-more-itertools: drop (moved to oe-core) python3-pathlib2: drop (moved to oe-core) python3-toml: drop (moved to oe-core) python3-py: drop (moved to oe-core) python3-setuptools-scm: drop (moved to oe-core) python3-packaging: drop (moved to oe-core) python3-wcwidth: drop (moved to oe-core) python3-zipp: drop (moved to oe-core) python3-importlib-metadata: drop (moved to oe-core) python3-pluggy: drop (moved to oe-core) python3-pytest: drop (moved to oe-core) python3-hypothesis: drop (moved to oe-core) python3-sortedcontainers: drop (moved to oe-core) Trevor Gamblin (2): python3-jinja2: Fix ptest RDEPENDS and file installation python3-markupsafe: Fix ptest RDEPENDS and installation William A. Kennington III (1): span-lite: Bump e03d116..0.8.1 Yi Zhao (5): minifi-cpp: specify GCC_AR and GCC_RANLIB quagga: unify volatiles file name minifi-cpp: depend on nettle and lz4 nss: upgrade 3.57 -> 3.59 krb5: upgrade 1.17.1 -> 1.17.2 Zang Ruochen (19): libnftnl: upgrade 1.1.7 -> 1.1.8 xfsprogs: upgrade 5.8.0 -> 5.9.0 radvd: upgrade 2.18 -> 2.19 fmt: upgrade 7.0.3 -> 7.1.0 hidapi: upgrade 0.9.0 -> 0.10.0 libkcapi: upgrade 1.2.0 -> 1.2.1 modemmanager: upgrade 1.14.2 -> 1.14.6 nvme-cli: upgrade 1.12 -> 1.13 ostree: upgrade 2020.6 -> 2020.7 poppler-data: upgrade 0.4.9 -> 0.4.10 nftables: upgrade 0.9.6 -> 0.9.7 toybox: upgrade 0.8.3 -> 0.8.4 fbgrab: upgrade 1.3.3 -> 1.4 mraa: upgrade 2.1.0 -> 2.2.0 opensaf: upgrade 5.20.05 -> 5.20.08 openvpn: upgrade 2.4.9 -> 2.5.0 poppler: upgrade 20.10.0 -> 20.11.0 tmux: upgrade 3.1b -> 3.1c xmlsec1: upgrade 1.2.30 -> 1.2.31 changqing.li@windriver.com (1): thin-provisioning-tools: switch branch from master to main hasan.men (2): thingsboard-gateway: Add recipe for v2.5.2 python3-jsonpath-rw: Add recipe for v1.4.0 richard (1): poco: Upgrade 1.9.4 -> 1.10.1 viatsk (1): tcpdump: Patch for CVE-2020-8037 zangrc (27): sshfs-fuse: upgrade 3.7.0 -> 3.7.1 can-utils: upgrade 2020.02.04 -> 2020.11.0 hwdata: upgrade 0.340 -> 0.341 libio-pty-perl: upgrade 1.14 -> 1.15 live555: upgrade 20200819 -> 20201105 zile: upgrade 2.4.14 -> 2.4.15 rdma-core: upgrade 31.1 -> 32.0 strongswan: upgrade 5.8.4 -> 5.9.1 fio: upgrade 3.22 -> 3.24 libharu: Fix the packaging bug modemmanager: upgrade 1.14.6 -> 1.14.8 openldap: upgrade 2.4.51 -> 2.4.56 protobuf: upgrade 3.13.0.1 -> 3.14.0 nghttp2: upgrade 2.41.0 -> 2.42.0 nngpp: upgrade 1.2.4 -> 1.3.0 snort: upgrade 2.9.16.1 -> 2.9.17 weechat: upgrade 2.9 -> 3.0 cjson: upgrade 1.7.13 -> 1.7.14 cloc: upgrade 1.84 -> 1.88 jpnevulator: upgrade 2.3.5 -> 2.3.6 libjcat: upgrade 0.1.3 -> 0.1.4 libsigc++-3: upgrade 3.0.3 -> 3.0.6 ocl-icd: upgrade 2.2.12 -> 2.2.13 opencl-clhpp: upgrade 2.0.11 -> 2.0.12 ostree: upgrade 2020.7 -> 2020.8 pkcs11-helper: upgrade 1.26 -> 1.27 netplan: upgrade 0.99 -> 0.100 zhengruoqin (1): dnf-plugin-tui: Update to the latest version Signed-off-by: Andrew Geissler <geissonator@yahoo.com> Change-Id: I286bb6d58bf30588516b35ec06ddfd0bedee2e64
Diffstat (limited to 'meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity')
-rw-r--r--meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/bacnet.json58
-rwxr-xr-xmeta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/ble.json53
-rw-r--r--meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/can.json89
-rwxr-xr-xmeta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/custom_serial.json33
-rwxr-xr-xmeta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/logs.conf77
-rwxr-xr-xmeta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/modbus.json169
-rwxr-xr-xmeta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/modbus_serial.json29
-rwxr-xr-xmeta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/mqtt.json132
-rw-r--r--meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/odbc.json54
-rwxr-xr-xmeta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/opcua.json49
-rw-r--r--meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/request.json146
-rw-r--r--meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/rest.json152
-rw-r--r--meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/snmp.json138
-rwxr-xr-xmeta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/tb_gateway.yaml66
-rw-r--r--meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/thingsboard-gateway.service13
-rw-r--r--meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_2.5.2.bb68
16 files changed, 1326 insertions, 0 deletions
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/bacnet.json b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/bacnet.json
new file mode 100644
index 000000000..e36a2165d
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/bacnet.json
@@ -0,0 +1,58 @@
+{
+ "general": {
+ "objectName": "TB_gateway",
+ "address": "192.168.188.181:1052",
+ "objectIdentifier": 599,
+ "maxApduLengthAccepted": 1024,
+ "segmentationSupported": "segmentedBoth",
+ "vendorIdentifier": 15
+ },
+ "devices": [
+ {
+ "deviceName": "BACnet Device ${objectName}",
+ "deviceType": "default",
+ "address": "192.168.188.181:10520",
+ "pollPeriod": 10000,
+ "attributes": [
+ {
+ "key": "temperature",
+ "type": "string",
+ "objectId": "analogOutput:1",
+ "propertyId": "presentValue"
+ }
+ ],
+ "timeseries": [
+ {
+ "key": "state",
+ "type": "bool",
+ "objectId": "binaryValue:1",
+ "propertyId": "presentValue"
+ }
+ ],
+ "attributeUpdates": [
+ {
+ "key": "brightness",
+ "requestType": "writeProperty",
+ "objectId": "analogOutput:1",
+ "propertyId": "presentValue"
+ }
+ ],
+ "serverSideRpc": [
+ {
+ "method": "set_state",
+ "requestType": "writeProperty",
+ "requestTimeout": 10000,
+ "objectId": "binaryOutput:1",
+ "propertyId": "presentValue"
+ },
+ {
+ "method": "get_state",
+ "requestType": "readProperty",
+ "requestTimeout": 10000,
+ "objectId": "binaryOutput:1",
+ "propertyId": "presentValue"
+ }
+ ]
+ }
+ ]
+ } \ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/ble.json b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/ble.json
new file mode 100755
index 000000000..2a5da3f41
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/ble.json
@@ -0,0 +1,53 @@
+{
+ "name": "BLE Connector",
+ "rescanIntervalSeconds": 100,
+ "checkIntervalSeconds": 100,
+ "scanTimeSeconds": 5,
+ "passiveScanMode": true,
+ "devices": [
+ {
+ "name": "Temperature and humidity sensor",
+ "MACAddress": "4C:65:A8:DF:85:C0",
+ "addrType": "public",
+ "telemetry": [
+ {
+ "key": "temperature",
+ "method": "notify",
+ "characteristicUUID": "226CAA55-6476-4566-7562-66734470666D",
+ "byteFrom": 2,
+ "byteTo": 6
+ },
+ {
+ "key": "humidity",
+ "method": "notify",
+ "characteristicUUID": "226CAA55-6476-4566-7562-66734470666D",
+ "byteFrom": 9,
+ "byteTo": 13
+ }
+ ],
+ "attributes": [
+ {
+ "key": "name",
+ "characteristicUUID": "00002A00-0000-1000-8000-00805F9B34FB",
+ "method": "read",
+ "byteFrom": 0,
+ "byteTo": -1
+ }
+ ],
+ "attributeUpdates": [
+ {
+ "attributeOnThingsBoard": "sharedName",
+ "characteristicUUID": "00002A00-0000-1000-8000-00805F9B34FB"
+ }
+ ],
+ "serverSideRpc": [
+ {
+ "methodRPC": "rpcMethod1",
+ "withResponse": true,
+ "characteristicUUID": "00002A00-0000-1000-8000-00805F9B34FB",
+ "methodProcessing": "read"
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/can.json b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/can.json
new file mode 100644
index 000000000..b5cec0045
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/can.json
@@ -0,0 +1,89 @@
+{
+ "interface": "socketcan",
+ "channel": "vcan0",
+ "backend": {
+ "fd": true
+ },
+ "reconnectPeriod": 5,
+ "devices": [
+ {
+ "name": "Car",
+ "sendDataOnlyOnChange": false,
+ "enableUnknownRpc": true,
+ "strictEval": false,
+ "attributes": [
+ {
+ "key": "isDriverDoorOpened",
+ "nodeId": 41,
+ "command": "2:2:big:8717",
+ "value": "4:1:int",
+ "expression": "bool(value & 0b00000100)",
+ "polling": {
+ "type": "once",
+ "dataInHex": "AB CD AB CD"
+ }
+ }
+ ],
+ "timeseries": [
+ {
+ "key": "rpm",
+ "nodeId": 1918,
+ "isExtendedId": true,
+ "command": "2:2:big:48059",
+ "value": "4:2:big:int",
+ "expression": "value / 4",
+ "polling": {
+ "type": "always",
+ "period": 5,
+ "dataInHex": "aaaa bbbb aaaa bbbb"
+ }
+ },
+ {
+ "key": "milliage",
+ "nodeId": 1918,
+ "isExtendedId": true,
+ "value": "4:2:little:int",
+ "expression": "value * 10",
+ "polling": {
+ "type": "always",
+ "period": 30,
+ "dataInHex": "aa bb cc dd ee ff aa bb"
+ }
+ }
+ ],
+ "attributeUpdates": [
+ {
+ "attributeOnThingsBoard": "softwareVersion",
+ "nodeId": 64,
+ "isExtendedId": true,
+ "dataLength": 4,
+ "dataExpression": "value + 5",
+ "dataByteorder": "little"
+ }
+ ],
+ "serverSideRpc": [
+ {
+ "method": "sendSameData",
+ "nodeId": 4,
+ "isExtendedId": true,
+ "isFd": true,
+ "bitrateSwitch": true,
+ "dataInHex": "aa bb cc dd ee ff aa bb aa bb cc d ee ff"
+ },
+ {
+ "method": "setLightLevel",
+ "nodeId": 5,
+ "dataLength": 2,
+ "dataByteorder": "little",
+ "dataBefore": "00AA"
+ },
+ {
+ "method": "setSpeed",
+ "nodeId": 16,
+ "dataAfter": "0102",
+ "dataExpression": "userSpeed if maxAllowedSpeed > userSpeed else maxAllowedSpeed"
+ }
+ ]
+ }
+ ]
+ } \ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/custom_serial.json b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/custom_serial.json
new file mode 100755
index 000000000..0aee5cb76
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/custom_serial.json
@@ -0,0 +1,33 @@
+{
+ "name": "Custom serial connector",
+ "devices": [
+ {
+ "name": "CustomSerialDevice1",
+ "type": "default",
+ "port": "/dev/ttyUSB0",
+ "baudrate": 9600,
+ "converter": "CustomSerialUplinkConverter",
+ "telemetry": [
+ {
+ "type": "byte",
+ "key": "humidity",
+ "untilDelimiter": "\r"
+ }
+ ],
+ "attributes":[
+ {
+ "key": "SerialNumber",
+ "type": "string",
+ "fromByte": 4,
+ "toByte": -1
+ }
+ ],
+ "attributeUpdates": [
+ {
+ "attributeOnThingsBoard": "attr1",
+ "stringToDevice": "value = ${attr1}\n"
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/logs.conf b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/logs.conf
new file mode 100755
index 000000000..d66c2b84a
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/logs.conf
@@ -0,0 +1,77 @@
+[loggers]
+keys=root, service, connector, converter, tb_connection, storage, extension
+[handlers]
+keys=consoleHandler, serviceHandler, connectorHandler, converterHandler, tb_connectionHandler, storageHandler, extensionHandler
+[formatters]
+keys=LogFormatter
+[logger_root]
+level=ERROR
+handlers=consoleHandler
+[logger_connector]
+level=INFO
+handlers=connectorHandler
+formatter=LogFormatter
+qualname=connector
+[logger_storage]
+level=INFO
+handlers=storageHandler
+formatter=LogFormatter
+qualname=storage
+[logger_tb_connection]
+level=INFO
+handlers=tb_connectionHandler
+formatter=LogFormatter
+qualname=tb_connection
+[logger_service]
+level=INFO
+handlers=serviceHandler
+formatter=LogFormatter
+qualname=service
+[logger_converter]
+level=INFO
+handlers=converterHandler
+formatter=LogFormatter
+qualname=converter
+[logger_extension]
+level=INFO
+handlers=connectorHandler
+formatter=LogFormatter
+qualname=extension
+[handler_consoleHandler]
+class=StreamHandler
+level=INFO
+formatter=LogFormatter
+args=(sys.stdout,)
+[handler_connectorHandler]
+level=INFO
+class=logging.handlers.TimedRotatingFileHandler
+formatter=LogFormatter
+args=("./logs/connector.log", "d", 1, 7,)
+[handler_storageHandler]
+level=INFO
+class=logging.handlers.TimedRotatingFileHandler
+formatter=LogFormatter
+args=("./logs/storage.log", "d", 1, 7,)
+[handler_serviceHandler]
+level=INFO
+class=logging.handlers.TimedRotatingFileHandler
+formatter=LogFormatter
+args=("./logs/service.log", "d", 1, 7,)
+[handler_converterHandler]
+level=INFO
+class=logging.handlers.TimedRotatingFileHandler
+formatter=LogFormatter
+args=("./logs/converter.log", "d", 1, 3,)
+[handler_extensionHandler]
+level=INFO
+class=logging.handlers.TimedRotatingFileHandler
+formatter=LogFormatter
+args=("./logs/extension.log", "d", 1, 3,)
+[handler_tb_connectionHandler]
+level=INFO
+class=logging.handlers.TimedRotatingFileHandler
+formatter=LogFormatter
+args=("./logs/tb_connection.log", "d", 1, 3,)
+[formatter_LogFormatter]
+format="%(asctime)s - %(levelname)s - [%(filename)s] - %(module)s - %(lineno)d - %(message)s"
+datefmt="%Y-%m-%d %H:%M:%S" \ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/modbus.json b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/modbus.json
new file mode 100755
index 000000000..479d8aa4d
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/modbus.json
@@ -0,0 +1,169 @@
+{
+ "server": {
+ "type": "tcp",
+ "host": "127.0.0.1",
+ "port": 5020,
+ "timeout": 35,
+ "method": "socket",
+ "byteOrder": "BIG",
+ "devices": [
+ {
+ "unitId": 1,
+ "deviceName": "Temp Sensor",
+ "attributesPollPeriod": 5000,
+ "timeseriesPollPeriod": 5000,
+ "sendDataOnlyOnChange": true,
+ "attributes": [
+ {
+ "tag": "string_read",
+ "type": "string",
+ "functionCode": 4,
+ "objectsCount": 4,
+ "address": 1
+ },
+ {
+ "tag": "bits_read",
+ "type": "bits",
+ "functionCode": 4,
+ "objectsCount": 1,
+ "address": 5
+ },
+ {
+ "tag": "8int_read",
+ "type": "8int",
+ "functionCode": 4,
+ "objectsCount": 1,
+ "address": 6
+ },
+ {
+ "tag": "16int_read",
+ "type": "16int",
+ "functionCode": 4,
+ "objectsCount": 1,
+ "address": 7
+ },
+ {
+ "tag": "32int_read_divider",
+ "type": "32int",
+ "functionCode": 4,
+ "objectsCount": 2,
+ "address": 8,
+ "divider": 10
+ },
+ {
+ "tag": "8int_read_multiplier",
+ "type": "8int",
+ "functionCode": 4,
+ "objectsCount": 1,
+ "address": 10,
+ "multiplier": 10
+ },
+ {
+ "tag": "32int_read",
+ "type": "32int",
+ "functionCode": 4,
+ "objectsCount": 2,
+ "address": 11
+ },
+ {
+ "tag": "64int_read",
+ "type": "64int",
+ "functionCode": 4,
+ "objectsCount": 4,
+ "address": 13
+ }
+ ],
+ "timeseries": [
+ {
+ "tag": "8uint_read",
+ "type": "8uint",
+ "functionCode": 4,
+ "objectsCount": 1,
+ "address": 17
+ },
+ {
+ "tag": "16uint_read",
+ "type": "16uint",
+ "functionCode": 4,
+ "objectsCount": 2,
+ "address": 18
+ },
+ {
+ "tag": "32uint_read",
+ "type": "32uint",
+ "functionCode": 4,
+ "objectsCount": 4,
+ "address": 20
+ },
+ {
+ "tag": "64uint_read",
+ "type": "64uint",
+ "functionCode": 4,
+ "objectsCount": 1,
+ "address": 24
+ },
+ {
+ "tag": "16float_read",
+ "type": "16float",
+ "functionCode": 4,
+ "objectsCount": 1,
+ "address": 25
+ },
+ {
+ "tag": "32float_read",
+ "type": "32float",
+ "functionCode": 4,
+ "objectsCount": 2,
+ "address": 26
+ },
+ {
+ "tag": "64float_read",
+ "type": "64float",
+ "functionCode": 4,
+ "objectsCount": 4,
+ "address": 28
+ }
+ ],
+ "attributeUpdates": [
+ {
+ "tag": "shared_attribute_write",
+ "type": "32int",
+ "functionCode": 6,
+ "objectsCount": 2,
+ "address": 29
+ }
+ ],
+ "rpc": [
+ {
+ "tag": "setValue",
+ "type": "bits",
+ "functionCode": 5,
+ "objectsCount": 1,
+ "address": 31
+ },
+ {
+ "tag": "getValue",
+ "type": "bits",
+ "functionCode": 1,
+ "objectsCount": 1,
+ "address": 31
+ },
+ {
+ "tag": "setCPUFanSpeed",
+ "type": "32int",
+ "functionCode": 16,
+ "objectsCount": 2,
+ "address": 33
+ },
+ {
+ "tag":"getCPULoad",
+ "type": "32int",
+ "functionCode": 4,
+ "objectsCount": 2,
+ "address": 35
+ }
+ ]
+ }
+ ]
+ }
+}
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/modbus_serial.json b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/modbus_serial.json
new file mode 100755
index 000000000..19b38e3f7
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/modbus_serial.json
@@ -0,0 +1,29 @@
+{
+ "server": {
+ "name": "Modbus Default Server",
+ "type": "serial",
+ "method": "rtu",
+ "port": "/dev/ttyUSB0",
+ "baudrate": 19200,
+ "timeout": 35,
+ "devices": [
+ {
+ "unitId": 1,
+ "deviceName": "Temp Sensor",
+ "attributesPollPeriod": 5000,
+ "timeseriesPollPeriod": 5000,
+ "sendDataOnlyOnChange": true,
+ "attributes": [
+ {
+ "byteOrder": "BIG",
+ "tag": "test",
+ "type": "long",
+ "functionCode": 4,
+ "registerCount": 1,
+ "address": 4
+ }
+ ]
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/mqtt.json b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/mqtt.json
new file mode 100755
index 000000000..6b78a7cec
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/mqtt.json
@@ -0,0 +1,132 @@
+{
+ "broker": {
+ "name":"Default Local Broker",
+ "host":"127.0.0.1",
+ "port":1883,
+ "clientId": "ThingsBoard_gateway",
+ "security": {
+ "type": "basic",
+ "username": "user",
+ "password": "password"
+ }
+ },
+ "mapping": [
+ {
+ "topicFilter": "/sensor/data",
+ "converter": {
+ "type": "json",
+ "deviceNameJsonExpression": "${serialNumber}",
+ "deviceTypeJsonExpression": "${sensorType}",
+ "timeout": 60000,
+ "attributes": [
+ {
+ "type": "string",
+ "key": "model",
+ "value": "${sensorModel}"
+ },
+ {
+ "type": "string",
+ "key": "${sensorModel}",
+ "value": "on"
+ }
+ ],
+ "timeseries": [
+ {
+ "type": "double",
+ "key": "temperature",
+ "value": "${temp}"
+ },
+ {
+ "type": "double",
+ "key": "humidity",
+ "value": "${hum}"
+ }
+ ]
+ }
+ },
+ {
+ "topicFilter": "/sensor/+/data",
+ "converter": {
+ "type": "json",
+ "deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/data)",
+ "deviceTypeTopicExpression": "Thermometer",
+ "timeout": 60000,
+ "attributes": [
+ {
+ "type": "string",
+ "key": "model",
+ "value": "${sensorModel}"
+ }
+ ],
+ "timeseries": [
+ {
+ "type": "double",
+ "key": "temperature",
+ "value": "${temp}"
+ },
+ {
+ "type": "double",
+ "key": "humidity",
+ "value": "${hum}"
+ }
+ ]
+ }
+ },
+ {
+ "topicFilter": "/custom/sensors/+",
+ "converter": {
+ "type": "custom",
+ "extension": "CustomMqttUplinkConverter",
+ "extension-config": {
+ "temperatureBytes" : 2,
+ "humidityBytes" : 2,
+ "batteryLevelBytes" : 1
+ }
+ }
+ }
+ ],
+ "connectRequests": [
+ {
+ "topicFilter": "sensor/connect",
+ "deviceNameJsonExpression": "${SerialNumber}"
+ },
+ {
+ "topicFilter": "sensor/+/connect",
+ "deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/connect)"
+ }
+ ],
+ "disconnectRequests": [
+ {
+ "topicFilter": "sensor/disconnect",
+ "deviceNameJsonExpression": "${SerialNumber}"
+ },
+ {
+ "topicFilter": "sensor/+/disconnect",
+ "deviceNameTopicExpression": "(?<=sensor\/)(.*?)(?=\/disconnect)"
+ }
+ ],
+ "attributeUpdates": [
+ {
+ "deviceNameFilter": "SmartMeter.*",
+ "attributeFilter": "uploadFrequency",
+ "topicExpression": "sensor/${deviceName}/${attributeKey}",
+ "valueExpression": "{\"${attributeKey}\":\"${attributeValue}\"}"
+ }
+ ],
+ "serverSideRpc": [
+ {
+ "deviceNameFilter": ".*",
+ "methodFilter": "echo",
+ "requestTopicExpression": "sensor/${deviceName}/request/${methodName}/${requestId}",
+ "responseTopicExpression": "sensor/${deviceName}/response/${methodName}/${requestId}",
+ "responseTimeout": 10000,
+ "valueExpression": "${params}"
+ },
+ {
+ "deviceNameFilter": ".*",
+ "methodFilter": "no-reply",
+ "requestTopicExpression": "sensor/${deviceName}/request/${methodName}/${requestId}",
+ "valueExpression": "${params}"
+ }
+ ]
+} \ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/odbc.json b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/odbc.json
new file mode 100644
index 000000000..c93992a26
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/odbc.json
@@ -0,0 +1,54 @@
+{
+ "connection": {
+ "str": "Driver={PostgreSQL};Server=localhost;Port=5432;Database=thingsboard;Uid=postgres;Pwd=postgres;",
+ "attributes": {
+ "autocommit": true,
+ "timeout": 0
+ },
+ "encoding": "utf-8",
+ "decoding": {
+ "char": "utf-8",
+ "wchar": "utf-8",
+ "metadata": "utf-16le"
+ },
+ "reconnect": true,
+ "reconnectPeriod": 60
+ },
+ "pyodbc": {
+ "pooling": false
+ },
+ "polling": {
+ "query": "SELECT bool_v, str_v, dbl_v, long_v, entity_id, ts FROM ts_kv WHERE ts > ? ORDER BY ts ASC LIMIT 10",
+ "period": 10,
+ "iterator": {
+ "column": "ts",
+ "query": "SELECT MIN(ts) - 1 FROM ts_kv",
+ "persistent": false
+ }
+ },
+ "mapping": {
+ "device": {
+ "type": "postgres",
+ "name": "'ODBC ' + entity_id"
+ },
+ "sendDataOnlyOnChange": false,
+ "attributes": "*",
+ "timeseries": [
+ {
+ "name": "value",
+ "value": "[i for i in [str_v, long_v, dbl_v,bool_v] if i is not None][0]"
+ }
+ ]
+ },
+ "serverSideRpc": {
+ "enableUnknownRpc": false,
+ "overrideRpcConfig": true,
+ "methods": [
+ "procedureOne",
+ {
+ "name": "procedureTwo",
+ "args": [ "One", 2, 3.0 ]
+ }
+ ]
+ }
+ } \ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/opcua.json b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/opcua.json
new file mode 100755
index 000000000..1deed7d52
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/opcua.json
@@ -0,0 +1,49 @@
+{
+ "server": {
+ "name": "OPC-UA Default Server",
+ "url": "localhost:4840/freeopcua/server/",
+ "timeoutInMillis": 5000,
+ "scanPeriodInMillis": 5000,
+ "disableSubscriptions":false,
+ "subCheckPeriodInMillis": 100,
+ "showMap": false,
+ "security": "Basic128Rsa15",
+ "identity": {
+ "type": "anonymous"
+ },
+ "mapping": [
+ {
+ "deviceNodePattern": "Root\\.Objects\\.Device1",
+ "deviceNamePattern": "Device ${Root\\.Objects\\.Device1\\.serialNumber}",
+ "attributes": [
+ {
+ "key": "temperature °C",
+ "path": "${ns=2;i=5}"
+ }
+ ],
+ "timeseries": [
+ {
+ "key": "humidity",
+ "path": "${Root\\.Objects\\.Device1\\.TemperatureAndHumiditySensor\\.Humidity}"
+ },
+ {
+ "key": "batteryLevel",
+ "path": "${Battery\\.batteryLevel}"
+ }
+ ],
+ "rpc_methods": [
+ {
+ "method": "multiply",
+ "arguments": [2, 4]
+ }
+ ],
+ "attributes_updates": [
+ {
+ "attributeOnThingsBoard": "deviceName",
+ "attributeOnDevice": "Root\\.Objects\\.Device1\\.serialNumber"
+ }
+ ]
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/request.json b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/request.json
new file mode 100644
index 000000000..43237a7dc
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/request.json
@@ -0,0 +1,146 @@
+"job": "leader"
+},
+"allowRedirects": true,
+"timeout": 0.5,
+"scanPeriod": 5,
+"converter": {
+ "type": "json",
+ "deviceNameJsonExpression": "SD8500",
+ "deviceTypeJsonExpression": "SD",
+ "attributes": [
+ {
+ "key": "serialNumber",
+ "type": "string",
+ "value": "${serial}"
+ }
+ ],
+ "telemetry": [
+ {
+ "key": "Maintainer",
+ "type": "string",
+ "value": "${Developer}"
+ }
+ ]
+}
+},
+{
+"url": "get_info",
+"httpMethod": "GET",
+"httpHeaders": {
+ "ACCEPT": "application/json"
+},
+"allowRedirects": true,
+"timeout": 0.5,
+"scanPeriod": 100,
+"converter": {
+ "type": "custom",
+ "deviceNameJsonExpression": "SD8500",
+ "deviceTypeJsonExpression": "SD",
+ "extension": "CustomRequestUplinkConverter",
+ "extension-config": [
+ {
+ "key": "Totaliser",
+ "type": "float",
+ "fromByte": 0,
+ "toByte": 4,
+ "byteorder": "big",
+ "signed": true,
+ "multiplier": 1
+ },
+ {
+ "key": "Flow",
+ "type": "int",
+ "fromByte": 4,
+ "toByte": 6,
+ "byteorder": "big",
+ "signed": true,
+ "multiplier": 0.01
+ },
+ {
+ "key": "Temperature",
+ "type": "int",
+ "fromByte": 8,
+ "toByte": 10,
+ "byteorder": "big",
+ "signed": true,
+ "multiplier": 0.01
+ },
+ {
+ "key": "Pressure",
+ "type": "int",
+ "fromByte": 12,
+ "toByte": 14,
+ "byteorder": "big",
+ "signed": true,
+ "multiplier": 0.01
+ },
+ {
+ "key": "deviceStatus",
+ "type": "int",
+ "byteAddress": 15,
+ "fromBit": 4,
+ "toBit": 8,
+ "byteorder": "big",
+ "signed": false
+ },
+ {
+ "key": "OUT2",
+ "type": "int",
+ "byteAddress": 15,
+ "fromBit": 1,
+ "toBit": 2,
+ "byteorder": "big"
+ },
+ {
+ "key": "OUT1",
+ "type": "int",
+ "byteAddress": 15,
+ "fromBit": 0,
+ "toBit": 1,
+ "byteorder": "big"
+ }
+ ]
+}
+}
+],
+"attributeUpdates": [
+{
+ "httpMethod": "POST",
+ "httpHeaders": {
+ "CONTENT-TYPE": "application/json"
+ },
+ "timeout": 0.5,
+ "tries": 3,
+ "allowRedirects": true,
+ "deviceNameFilter": "SD.*",
+ "attributeFilter": "send_data",
+ "requestUrlExpression": "sensor/${deviceName}/${attributeKey}",
+ "valueExpression": "{\"${attributeKey}\":\"${attributeValue}\"}"
+}
+],
+"serverSideRpc": [
+{
+"deviceNameFilter": ".*",
+"methodFilter": "echo",
+"requestUrlExpression": "sensor/${deviceName}/request/${methodName}/${requestId}",
+"responseTimeout": 1,
+"httpMethod": "GET",
+"valueExpression": "${params}",
+"timeout": 0.5,
+"tries": 3,
+"httpHeaders": {
+ "Content-Type": "application/json"
+}
+},
+{
+"deviceNameFilter": ".*",
+"methodFilter": "no-reply",
+"requestUrlExpression": "sensor/${deviceName}/request/${methodName}/${requestId}",
+"httpMethod": "POST",
+"valueExpression": "${params}",
+"httpHeaders": {
+ "Content-Type": "application/json"
+}
+}
+]
+} \ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/rest.json b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/rest.json
new file mode 100644
index 000000000..be6c6ff18
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/rest.json
@@ -0,0 +1,152 @@
+{
+ "host": "127.0.0.1",
+ "port": "5000",
+ "mapping":[
+ {
+ "endpoint": "/device1",
+ "HTTPMethods": [
+ "POST"
+ ],
+ "security":
+ {
+ "type": "basic",
+ "username": "user",
+ "password": "passwd"
+ },
+ "converter": {
+ "type": "json",
+ "deviceNameExpression": "Device ${name}",
+ "deviceTypeExpression": "default",
+ "attributes": [
+ {
+ "type": "string",
+ "key": "model",
+ "value": "${sensorModel}"
+ }
+ ],
+ "timeseries": [
+ {
+ "type": "double",
+ "key": "${sensorModel}",
+ "value": "${temp}"
+ },
+ {
+ "type": "double",
+ "key": "humidity",
+ "value": "${hum}"
+ }
+ ]
+ }
+ },
+ {
+ "endpoint": "/anon1",
+ "HTTPMethods": [
+ "GET",
+ "POST"
+ ],
+ "security":
+ {
+ "type": "anonymous"
+ },
+ "converter": {
+ "type": "json",
+ "deviceNameExpression": "Device 2",
+ "deviceTypeExpression": "default",
+ "attributes": [
+ {
+ "type": "string",
+ "key": "model",
+ "value": "Model2"
+ }
+ ],
+ "timeseries": [
+ {
+ "type": "double",
+ "key": "temperature",
+ "value": "${temp}"
+ },
+ {
+ "type": "double",
+ "key": "humidity",
+ "value": "${hum}"
+ }
+ ]
+ }
+ },
+ {
+ "endpoint": "/anon2",
+ "HTTPMethods": [
+ "POST"
+ ],
+ "security":
+ {
+ "type": "anonymous"
+ },
+ "converter": {
+ "type": "custom",
+ "deviceNameExpression": "SuperAnonDevice",
+ "deviceTypeExpression": "default",
+ "extension": "CustomRestUplinkConverter",
+ "extension-config": [
+ {
+ "key": "Totaliser",
+ "datatype": "float",
+ "fromByte": 0,
+ "toByte": 4,
+ "byteorder": "big",
+ "signed": true,
+ "multiplier": 1
+ }]
+ }
+ }
+ ],
+ "attributeUpdates": [
+ {
+ "HTTPMethod": "POST",
+ "SSLVerify": false,
+ "httpHeaders": {
+ "CONTENT-TYPE": "application/json"
+ },
+ "security": {
+ "type": "basic",
+ "username": "user",
+ "password": "passwd"
+ },
+ "timeout": 0.5,
+ "tries": 3,
+ "allowRedirects": true,
+ "deviceNameFilter": ".*REST$",
+ "attributeFilter": "data",
+ "requestUrlExpression": "sensor/${deviceName}/${attributeKey}",
+ "valueExpression": "{\"${attributeKey}\":\"${attributeValue}\"}"
+ }
+ ],
+ "serverSideRpc": [
+ {
+ "deviceNameFilter": ".*",
+ "methodFilter": "echo",
+ "requestUrlExpression": "http://127.0.0.1:5001/${deviceName}",
+ "responseTimeout": 1,
+ "HTTPMethod": "GET",
+ "valueExpression": "${params}",
+ "timeout": 0.5,
+ "tries": 3,
+ "httpHeaders": {
+ "Content-Type": "application/json"
+ },
+ "security": {
+ "type": "anonymous"
+ }
+ },
+ {
+ "deviceNameFilter": ".*",
+ "methodFilter": "no-reply",
+ "requestUrlExpression": "sensor/${deviceName}/request/${methodName}/${requestId}",
+ "HTTPMethod": "POST",
+ "valueExpression": "${params}",
+ "httpHeaders": {
+ "Content-Type": "application/json"
+ }
+ }
+ ]
+ } \ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/snmp.json b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/snmp.json
new file mode 100644
index 000000000..b4ddb4264
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/snmp.json
@@ -0,0 +1,138 @@
+{
+ "devices": [
+ {
+ "deviceName": "SNMP router",
+ "deviceType": "snmp",
+ "ip": "snmp.live.gambitcommunications.com",
+ "port": 161,
+ "pollPeriod": 5000,
+ "community": "public",
+ "attributes": [
+ {
+ "key": "ReceivedFromGet",
+ "method": "get",
+ "oid": "1.3.6.1.2.1.1.1.0",
+ "timeout": 6
+ },
+ {
+ "key": "ReceivedFromMultiGet",
+ "method": "multiget",
+ "oid": [
+ "1.3.6.1.2.1.1.1.0",
+ "1.3.6.1.2.1.1.2.0"
+ ],
+ "timeout": 6
+ },
+ {
+ "key": "ReceivedFromGetNext",
+ "method": "getnext",
+ "oid": "1.3.6.1.2.1.1.1.0",
+ "timeout": 6
+ },
+ {
+ "key": "ReceivedFromMultiWalk",
+ "method": "multiwalk",
+ "oid": [
+ "1.3.6.1.2.1.1.1.0",
+ "1.3.6.0.1.2.1"
+ ]
+ },
+ {
+ "key": "ReceivedFromBulkWalk",
+ "method": "bulkwalk",
+ "oid": [
+ "1.3.6.1.2.1.1.1.0",
+ "1.3.6.1.2.1.1.2.0"
+ ]
+ },
+ {
+ "key": "ReceivedFromBulkGet",
+ "method": "bulkget",
+ "scalarOid": [
+ "1.3.6.1.2.1.1.1.0",
+ "1.3.6.1.2.1.1.2.0"
+ ],
+ "repeatingOid": [
+ "1.3.6.1.2.1.1.1.0",
+ "1.3.6.1.2.1.1.2.0"
+ ],
+ "maxListSize": 10
+ }
+ ],
+ "telemetry": [
+ {
+ "key": "ReceivedFromWalk",
+ "community": "private",
+ "method": "walk",
+ "oid": "1.3.6.1.2.1.1.1.0"
+ },
+ {
+ "key": "ReceivedFromTable",
+ "method": "table",
+ "oid": "1.3.6.1.2.1.1"
+ }
+ ],
+ "attributeUpdateRequests": [
+ {
+ "attributeFilter": "dataToSet",
+ "method": "set",
+ "oid": "1.3.6.1.2.1.1.1.0"
+ },
+ {
+ "attributeFilter": "dataToMultiSet",
+ "method": "multiset",
+ "mappings": {
+ "1.2.3": "10",
+ "2.3.4": "${attribute}"
+ }
+ }
+ ],
+ "serverSideRpcRequests": [
+ {
+ "requestFilter": "setData",
+ "method": "set",
+ "oid": "1.3.6.1.2.1.1.1.0"
+ },
+ {
+ "requestFilter": "multiSetData",
+ "method": "multiset"
+ },
+ {
+ "requestFilter": "getData",
+ "method": "get",
+ "oid": "1.3.6.1.2.1.1.1.0"
+ },
+ {
+ "requestFilter": "runBulkWalk",
+ "method": "bulkwalk",
+ "oid": [
+ "1.3.6.1.2.1.1.1.0",
+ "1.3.6.1.2.1.1.2.0"
+ ]
+ }
+ ]
+ },
+ {
+ "deviceName": "SNMP router",
+ "deviceType": "snmp",
+ "ip": "127.0.0.1",
+ "pollPeriod": 5000,
+ "community": "public",
+ "converter": "CustomSNMPConverter",
+ "attributes": [
+ {
+ "key": "ReceivedFromGetWithCustomConverter",
+ "method": "get",
+ "oid": "1.3.6.1.2.1.1.1.0"
+ }
+ ],
+ "telemetry": [
+ {
+ "key": "ReceivedFromTableWithCustomConverter",
+ "method": "table",
+ "oid": "1.3.6.1.2.1.1.1.0"
+ }
+ ]
+ }
+ ]
+ } \ No newline at end of file
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/tb_gateway.yaml b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/tb_gateway.yaml
new file mode 100755
index 000000000..e3eb8f1fc
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/tb_gateway.yaml
@@ -0,0 +1,66 @@
+thingsboard:
+ host: demo.thingsboard.io
+ port: 1883
+ remoteConfiguration: false
+ security:
+ accessToken: PUT_YOUR_GW_ACCESS_TOKEN_HERE
+storage:
+ type: memory
+ read_records_count: 100
+ max_records_count: 100000
+# type: file
+# data_folder_path: ./data/
+# max_file_count: 10
+# max_read_records_count: 10
+# max_records_per_file: 10000
+connectors:
+ -
+ name: MQTT Broker Connector
+ type: mqtt
+ configuration: mqtt.json
+
+# -
+# name: Modbus Connector
+# type: modbus
+# configuration: modbus.json
+#
+# -
+# name: Modbus Connector
+# type: modbus
+# configuration: modbus_serial.json
+#
+# -
+# name: OPC-UA Connector
+# type: opcua
+# configuration: opcua.json
+#
+# -
+# name: BLE Connector
+# type: ble
+# configuration: ble.json
+#
+# -
+# name: REQUEST Connector
+# type: request
+# configuration: request.json
+#
+# -
+# name: CAN Connector
+# type: can
+# configuration: can.json
+#
+# -
+# name: BACnet Connector
+# type: bacnet
+# configuration: bacnet.json
+#
+# -
+# name: ODBC Connector
+# type: odbc
+# configuration: odbc.json
+#
+# -
+# name: Custom Serial Connector
+# type: serial
+# configuration: custom_serial.json
+# class: CustomSerialConnector
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/thingsboard-gateway.service b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/thingsboard-gateway.service
new file mode 100644
index 000000000..5dd352a55
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway/thingsboard-gateway.service
@@ -0,0 +1,13 @@
+[Unit]
+Description = Systemd service for Thingsboard Gateway
+After = network.target
+
+[Service]
+ExecStart = /usr/bin/python3 /usr/bin/thingsboard-gateway
+ExecStop = /bin/kill -INT $MAINPID
+ExecReload = /bin/kill -TERM $MAINPID
+Restart = always
+Type = simple
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_2.5.2.bb b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_2.5.2.bb
new file mode 100644
index 000000000..2f0ef16c8
--- /dev/null
+++ b/meta-openembedded/meta-oe/dynamic-layers/meta-python/recipes-connectivity/thingsboard-gateway/thingsboard-gateway_2.5.2.bb
@@ -0,0 +1,68 @@
+SUMMARY = "Open-source IoT platform for data collection, processing, visualization, and device management"
+DESCRIPTION = "\
+The Thingsboard IoT Gateway is an open-source solution that allows you \
+to integrate devices connected to legacy and third-party systems with Thingsboard."
+HOMEPAGE = "https://thingsboard.io/"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+SRC_URI[md5sum] = "469c8b5cd1c16c20ef40f0a97a3a0fda"
+SRC_URI[sha256sum] = "b328f4e315c3541ac80a4931974a34a81afe4d1f382f48e8604669a55816c0d7"
+
+inherit pypi setuptools3
+
+PYPI_PACKAGE = "thingsboard-gateway"
+
+RDEPENDS_${PN} += " python3-jsonpath-rw \
+ python3-regex \
+ python3-paho-mqtt \
+ python3-pyyaml \
+ python3-simplejson \
+ python3-requests \
+ python3-pip \
+ python3-pyrsistent \
+"
+
+SRC_URI += "file://bacnet.json \
+ file://ble.json \
+ file://can.json \
+ file://custom_serial.json \
+ file://modbus.json \
+ file://modbus_serial.json \
+ file://mqtt.json \
+ file://opcua.json \
+ file://odbc.json \
+ file://request.json \
+ file://rest.json \
+ file://snmp.json \
+ file://tb_gateway.yaml \
+ file://logs.conf \
+ file://thingsboard-gateway.service \
+ "
+
+
+inherit systemd
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "thingsboard-gateway.service"
+
+FILES_${PN} += "/etc \
+ /lib \
+ /usr \
+"
+
+do_install_append(){
+
+ install -d ${D}${sysconfdir}/thingsboard-gateway/config
+
+ for file in $(find ${WORKDIR} -maxdepth 1 -type f -name *.json); do
+ install -m 0644 "$file" ${D}${sysconfdir}/thingsboard-gateway/config
+ done
+
+ install -m 0644 ${WORKDIR}/tb_gateway.yaml ${D}${sysconfdir}/thingsboard-gateway/config
+ install -m 0644 ${WORKDIR}/logs.conf ${D}${sysconfdir}/thingsboard-gateway/config
+
+ install -d ${D}${systemd_unitdir}/system/
+ install -m 0644 ${WORKDIR}/thingsboard-gateway.service ${D}${systemd_system_unitdir}/thingsboard-gateway.service
+} \ No newline at end of file