Upload files to Cumulocity IoT by creating an event and uploading a given file to it.
USAGE
-----BEGIN CERTIFICATE----- | |
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx | |
EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT | |
EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp | |
ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz | |
NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH | |
EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE | |
AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw | |
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD | |
E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH |
-----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","