Information
We are currently investigating an issue with the editor of some pages. Please save your work and avoid to create new pages until this banner is gone.
...
For simplicity we will only use the "switch_led" property which allows us to torn turn the light on and off, but of course you can expand the functionality to control more properties.
...
The component generation tool uses a template in YML to create the component's IDL and implementation.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
working_dir: ~/home/developer/workspace prefix: ACSIOT module: acsiot component_name: TuyaBulb functions: - 'void turnOn(in string api_region, in string api_key, in string api_secret, in string device_id)' - 'void turnOff(in string api_region, in string api_key, in string api_secret, in string device_id)' |
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# Client stubs and definitions, such as structs, enums, etc. import acsiot # Skeleton infrastructure for server implementation import acsiot__POA # Base component implementation from Acspy.Servants.ACSComponent import ACSComponent # Services provided by the container to the component from Acspy.Servants.ContainerServices import ContainerServices # Basic component lifecycle (initialize, execute, cleanUp and aboutToAbort methods) from Acspy.Servants.ComponentLifecycle import ComponentLifecycle import tinytuya tinytuya.set_debug(True) class TuyaBulbImpl(acsiot__POA.TuyaBulb, ACSComponent, ContainerServices, ComponentLifecycle): def __init__(self): ACSComponent.__init__(self) ContainerServices.__init__(self) self._logger = self.getLogger() def turnOn(self, api_region, api_key, api_secret, device_id): # raise NotImplementedError("This function should do something") client = tinytuya.Cloud( apiRegion=api_region, apiKey=api_key, apiSecret=api_secret ) commands = { 'commands': [{ 'code': 'switch_led', 'value': True }] } print("SendingTurning commandon...") result = client.sendcommand(device_id, commands) print("Results\n:", result) def turnOff(self, api_region, api_key, api_secret, device_id): # raise NotImplementedError("This function should do something") client = tinytuya.Cloud( apiRegion=api_region, apiKey=api_key, apiSecret=api_secret ) commands = { 'commands': [{ 'code': 'switch_led', 'value': False }] } print("SendingTurning commandoff...") result = client.sendcommand(device_id, commands) print("Results\n:", result) |
...
In one terminal run:
Code Block | ||
---|---|---|
| ||
acsStop acsStart |
In a second terminal run:
Code Block | ||
---|---|---|
| ||
acsStartContainer -py aragornContainer |
And in a third terminal run:
Code Block | ||
---|---|---|
| ||
from Acspy.Clients.SimpleClient import PySimpleClient api_region = 'my_regionus' api_key = 'my_api_key' api_secret = 'my_api_secret' device_id = 'my_device_id' client = PySimpleClient() bulb = client.getComponent("TuyaBulbPython") bulb.turnOn(api_region, api_key, api_secret, device_id) bulb.turnOff(api_region, api_key, api_secret, device_id) |