Skip to content

Commit a691d13

Browse files
committed
Simplify custom operation handler's arguments
Signed-off-by: Rina Fujino <[email protected]>
1 parent 07240a8 commit a691d13

File tree

6 files changed

+26
-21
lines changed

6 files changed

+26
-21
lines changed

operations/c8y_ModbusConfiguration

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[exec]
22
topic = "c8y/devicecontrol/notifications"
33
on_fragment = "c8y_ModbusConfiguration"
4-
command = "python3 -m tedge_modbus.operations c8y_ModbusConfiguration ${.payload.c8y_ModbusConfiguration.transmitRate} ${.payload.c8y_ModbusConfiguration.pollingRate}"
4+
command = "python3 -m tedge_modbus.operations c8y_ModbusConfiguration ${.payload.c8y_ModbusConfiguration}"

operations/c8y_ModbusDevice

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[exec]
22
topic = "c8y/devicecontrol/notifications"
33
on_fragment = "c8y_ModbusDevice"
4-
command = "python3 -m tedge_modbus.operations c8y_ModbusDevice ${.payload.c8y_ModbusDevice.protocol} ${.payload.c8y_ModbusDevice.address} ${.payload.c8y_ModbusDevice.name} ${.payload.c8y_ModbusDevice.ipAddress} ${.payload.c8y_ModbusDevice.id} ${.payload.c8y_ModbusDevice.type}"
4+
command = "python3 -m tedge_modbus.operations c8y_ModbusDevice ${.payload.c8y_ModbusDevice}"

operations/c8y_SerialConfiguration

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[exec]
22
topic = "c8y/devicecontrol/notifications"
33
on_fragment = "c8y_SerialConfiguration"
4-
command = "python3 -m tedge_modbus.operations c8y_SerialConfiguration ${.payload.c8y_SerialConfiguration.baudRate} ${.payload.c8y_SerialConfiguration.stopBits} ${.payload.c8y_SerialConfiguration.parity} ${.payload.c8y_SerialConfiguration.dataBits}"
4+
command = "python3 -m tedge_modbus.operations c8y_SerialConfiguration ${.payload.c8y_SerialConfiguration}"

tedge_modbus/operations/c8y_modbus_configuration.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,17 @@
1515

1616
def run(arguments, context: Context):
1717
"""Run c8y_ModbusConfiguration operation handler"""
18-
if len(arguments) != 2:
19-
raise ValueError(f"Expected 2 arguments. Got {len(arguments)}")
18+
if len(arguments) != 1:
19+
raise ValueError(f"Expected 1 argument. Got {len(arguments)}")
2020
# Get device configuration
2121
modbus_config = context.base_config
2222
loglevel = modbus_config["modbus"]["loglevel"] or "INFO"
2323
logger.setLevel(getattr(logging, loglevel.upper(), logging.INFO))
2424
logger.info("New c8y_ModbusConfiguration operation")
2525
logger.debug("Current configuration: %s", modbus_config)
26-
transmit_rate = int(arguments[0])
27-
polling_rate = int(arguments[1])
26+
data = json.loads(arguments[0])
27+
transmit_rate = data["transmitRate"]
28+
polling_rate = data["pollingRate"]
2829
logger.debug("transmitRate: %d, pollingRate: %d", transmit_rate, polling_rate)
2930

3031
# Update configuration

tedge_modbus/operations/c8y_modbus_device.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"""Cumulocity Modbus device operation handler"""
33
import logging
44
from dataclasses import dataclass
5+
import json
56
import requests
67
import toml
78

@@ -76,13 +77,14 @@ def get_device_from_mapping(target: ModebusDevice, mapping):
7677

7778
def parse_arguments(arguments) -> ModebusDevice:
7879
"""Parse operation arguments"""
80+
data = json.loads(arguments[0])
7981
return ModebusDevice(
80-
modbus_type=arguments[0],
81-
modbus_address=arguments[1],
82-
child_name=arguments[2],
83-
modbus_server=arguments[3],
84-
device_id=arguments[4],
85-
mapping_path=arguments[5],
82+
modbus_type=data["protocol"],
83+
modbus_address=data["address"],
84+
child_name=data["name"],
85+
modbus_server=data["ipAddress"],
86+
device_id=data["id"],
87+
mapping_path=data["type"],
8688
)
8789

8890

@@ -92,8 +94,8 @@ def run(arguments, context: Context):
9294
logger.setLevel(getattr(logging, loglevel.upper(), logging.INFO))
9395
logger.info("New c8y_ModbusDevice operation")
9496
# Check and store arguments
95-
if len(arguments) != 6:
96-
raise ValueError("Expected 6 arguments. Got " + str(len(arguments)) + ".")
97+
if len(arguments) != 1:
98+
raise ValueError("Expected 1 argument. Got " + str(len(arguments)) + ".")
9799
config_path = context.config_dir / "devices.toml"
98100
target = parse_arguments(arguments)
99101

tedge_modbus/operations/c8y_serial_configuration.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,22 @@
1313
)
1414

1515

16+
# pylint: disable=duplicate-code
1617
def run(arguments, context: Context):
1718
"""Run c8y_SerialConfiguration operation handler"""
18-
if len(arguments) != 4:
19-
raise ValueError(f"Expected 4 arguments. Got {len(arguments)}")
19+
if len(arguments) != 1:
20+
raise ValueError(f"Expected 1 argument. Got {len(arguments)}")
2021
# Get device configuration
2122
modbus_config = context.base_config
2223
loglevel = modbus_config["modbus"]["loglevel"] or "INFO"
2324
logger.setLevel(getattr(logging, loglevel.upper(), logging.INFO))
2425
logger.info("New c8y_SerialConfiguration operation")
2526
logger.debug("Current configuration: %s", modbus_config)
26-
baud_rate = int(arguments[0])
27-
stop_bits = int(arguments[1])
28-
parity = arguments[2]
29-
data_bits = int(arguments[3])
27+
data = json.loads(arguments[0])
28+
baud_rate = data["baudRate"]
29+
stop_bits = data["stopBits"]
30+
parity = data["parity"]
31+
data_bits = data["dataBits"]
3032
logger.debug(
3133
"baudRate: %d, stopBits: %d, parity: %s, dataBits: %d",
3234
baud_rate,

0 commit comments

Comments
 (0)