Upload files to Cumulocity IoT by creating an event and uploading a given file to it.
USAGE
-----BEGIN CERTIFICATE----- | |
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw | |
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh | |
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 | |
WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu | |
ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY | |
MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc | |
h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ | |
0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U | |
A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW |
#!/bin/bash | |
# | |
# 1. Pipe a list of ESNs from a file and create a c8y_Command (shell) operation for each device (using go-c8y-cli piping) | |
# A unique batch marker is used to group the operations together (to make querying for the operation easier) | |
# 2. Poll the created operations () | |
# 3. Print out a summary of how many operations failed and how man were successful | |
# | |
# Input file: | |
# * esn.txt - Newline delimited file containing one ESN per line (file must have an empty line at the end, otherwise the last ESN might be skipped) | |
# |
Updating the location information in Cumulocity IoT should not be a problem with thin-edge.io.
For reference, I created the options by reading the following Cumulocity IoT documentation links:
In summary, updating a location of a device (in the backend) involves creating an event and then updating a fragment on the device's managed object, however you have a few different options on how to achieve this with thin-edge.io:
To install a specific version of thin-edge.io on a Debian based operating system, you will have to use APT Package Pinning, as the tedge-full
package is a virtual package, and installing a specific version of the virtual package does not transfer to the package's dependencies (unfortunately).
Below shows how the exact thin-edge.io version can be installed.
Create a debian package pin definition for thin-edge.io
Create the following file:
sudo vi /etc/apt/preferences.d/tedge
{ | |
"$schema": "http://json-schema.org/draft-04/schema#", | |
"$id": "https://thin-edge.io/workflow.json", | |
"title": "thin-edge.io workflow", | |
"description": "Workflows can be used to customize existing operations and add user defined processes which are coordinated by thin-edge.io", | |
"type": "object", | |
"definitions": { | |
"on_state": { | |
"oneOf": [ | |
{ |
After a successfully completed firmware workflow, if the tedge-agent service is restarted, then tedge-agent will reprocess the restart-current-operation
file again as the file is not deleted after the workflow has been completed.
file: /data/tedge/.agent/restart-current-operation
// cat /data/tedge/.agent/restart-current-operation
{"target":"device/main//","cmd_id":"c8y-mapper-2023-11-26T12:26:39.248420821Z","payload":{"status":"executing","context":{"command":{"topic":{"name":"te/device/main///cmd/firmware_update/c8y-mapper-2023-11-26T12:26:39.248420821Z"},"status":"rollback_restart","payload":{"name":"core-image-tedge-mender-raspberrypi4-64","reason":"Nothing to commit. Either the boot loader triggered the rollback, the device was rebooted after switching to new partition, or someone did a manual rollback!","remoteUrl":"https://t2873877.latest.stage.c8y.io/inventory/binaries/4785008","status":"rollback_restart","
Before creating a custom operation handler, create the configuration and confirm that the operation will be delivered to the device. Once you have confirm this, then you can add your custom handler.
Below shows the steps to create a custom SmartREST collection for Cumulocity IoT, and how to check that the message arrives on the local thin-edge.io MQTT broker.
Create a SmartREST template collection in Cumulocity IoT, and create a custom "response"
Below is an example collection which create two custom operations for the message ids: