added commands
This commit is contained in:
65
Commands/artifacts/hp.greengrass.Commands/1.0.0/Commands.py
Normal file
65
Commands/artifacts/hp.greengrass.Commands/1.0.0/Commands.py
Normal file
@@ -0,0 +1,65 @@
|
||||
import time
|
||||
import traceback
|
||||
import json
|
||||
import awsiot.greengrasscoreipc
|
||||
import awsiot.greengrasscoreipc.client as client
|
||||
from awsiot.greengrasscoreipc.model import (
|
||||
IoTCoreMessage,
|
||||
QOS,
|
||||
SubscribeToIoTCoreRequest
|
||||
)
|
||||
|
||||
TIMEOUT = 10
|
||||
|
||||
ipc_client = awsiot.greengrasscoreipc.connect()
|
||||
|
||||
def start():
|
||||
print("START START START")
|
||||
|
||||
def stop():
|
||||
print("STOP STOP STOP")
|
||||
|
||||
class StreamHandler(client.SubscribeToIoTCoreStreamHandler):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
def on_stream_event(self, event: IoTCoreMessage) -> None:
|
||||
try:
|
||||
message = json.loads(str(event.message.payload, "utf-8"))
|
||||
topic_name = event.message.topic_name
|
||||
# Handle message.
|
||||
operations = {
|
||||
"start": start,
|
||||
"stop": stop
|
||||
}
|
||||
print(f"running operation {message['operations']}")
|
||||
operations[message["operations"]]
|
||||
except:
|
||||
traceback.print_exc()
|
||||
|
||||
def on_stream_error(self, error: Exception) -> bool:
|
||||
# Handle error.
|
||||
return True # Return True to close stream, False to keep stream open.
|
||||
|
||||
def on_stream_closed(self) -> None:
|
||||
# Handle close.
|
||||
pass
|
||||
|
||||
|
||||
topic = "my/topic"
|
||||
qos = QOS.AT_MOST_ONCE
|
||||
|
||||
request = SubscribeToIoTCoreRequest()
|
||||
request.topic_name = topic
|
||||
request.qos = qos
|
||||
handler = StreamHandler()
|
||||
operation = ipc_client.new_subscribe_to_iot_core(handler)
|
||||
future = operation.activate(request)
|
||||
future.result(TIMEOUT)
|
||||
|
||||
# Keep the main thread alive, or the process will exit.
|
||||
while True:
|
||||
time.sleep(10)
|
||||
|
||||
# To stop subscribing, close the operation stream.
|
||||
operation.close()
|
||||
@@ -0,0 +1,3 @@
|
||||
cbor2==4.1.2
|
||||
pycomm3==1.2.1
|
||||
awsiotsdk==1.7.1
|
||||
Binary file not shown.
47
Commands/recipes/hp.greengrass.Commands.json
Normal file
47
Commands/recipes/hp.greengrass.Commands.json
Normal file
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"RecipeFormatVersion": "2020-01-25",
|
||||
"ComponentName": "hp.greengrass.Commands",
|
||||
"ComponentVersion": "1.0.0",
|
||||
"ComponentDescription": "A AWS IOT Greengrass component for sending commands to devices",
|
||||
"ComponentPublisher": "HenryPump",
|
||||
"ComponentConfiguration": {
|
||||
"DefaultConfiguration": {
|
||||
"accessControl": {
|
||||
"aws.greengrass.ipc.mqttproxy": {
|
||||
"hp.greengrass.Commands:mqttproxy:1": {
|
||||
"policyDescription": "Allows access to subscribe to all topics.",
|
||||
"operations": [
|
||||
"aws.greengrass#SubscribeToIoTCore"
|
||||
],
|
||||
"resources": [
|
||||
"*"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Manifests": [
|
||||
{
|
||||
"Platform": {
|
||||
"os": "linux"
|
||||
},
|
||||
"Lifecycle": {
|
||||
"Install": "pip3 install -r {artifacts:path}/requirements.txt",
|
||||
"Run": "python3 -u {artifacts:path}/Commands.py"
|
||||
},
|
||||
"Artifacts": [
|
||||
{
|
||||
"URI": "s3://hp-greengrass-components/artifacts/hp.greengrass.Commands/1.0.0/Commands.py"
|
||||
},
|
||||
{
|
||||
"URI": "s3://hp-greengrass-components/artifacts/hp.greengrass.Commands/1.0.0/stream_manager_sdk.zip",
|
||||
"Unarchive": "ZIP"
|
||||
},
|
||||
{
|
||||
"URI": "s3://hp-greengrass-components/artifacts/hp.greengrass.Commands/1.0.0/requirements.txt"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user