Unprocessed SigFox Data _ Cumulocity - cumulocity

I have a question regarding the integration of SigFox with Cumulocity, I already created connectivity between platforms, but when I create Device database, I don't know how to enter Message ID, this ID is created by agent-sigfox or it is necessary to create a protocol with id to read in Device Database?

Message ID is the way Cumulocity distinguishes different messages from your SigFox connected device. You can either use FPort or parts of the payload for this.
You can find the documentation here: http://cumulocity.com/guides/users-guide/optional-services/#sigfox The section 'Creating device protocols' contains the details.

Related

How to send a measurement from Cumulocity IoT to a registered device using MQTT

I am able to register a device on Cumulocity IoT and send measurements from the device to Cumuloicty via MQTT. Now I want to send measurement from Cumulocity to that registered device using MQTT. How can I achieve this ?
I tried going through all the documents available on cumulocity but its not mentioned clearly in those docs how we can achieve this flow. I tried the control tab in device which lets us send some single and bulk operations but did not get to a solution.
All communication from Cumulocity IoT to devices is technically covered through operations. Even if maybe in your case the content of the operation is a measurement value, set point or something like this.
The structure of the operation doesn't matter for Cumulocity IoT. Your device in the end needs to understand it.
If you have for example a case where device A sends a measurement (to Cumulocity IoT) and you want device B to receive this measurement you will need to create an operation for device B out of the measurement of device A.
This can be quite easily achieved utilizing the built-in streaming analytics in Cumulocity IoT (see https://cumulocity.com/guides/apama/overview-analytics/). Fastest approach would be the Analytics Builder.

Can an IoT Edge module twin's properties be used for message enrichment?

IoT Hub has the ability to enrich messages prior to being sent to an endpoint. It appears that the device twin's information can be added, but I don't see anything about the module twins online.
The use case here would be we will likely version a module data model contained within the messages at some point in the future. We would like to enrich the messages sent to endpoints with metadata about the state of the module it came from.
Another option that doesn't seem to exist is the ability to update device twin properties on deployment. Were this doable, then potentially we could update a modules version information at the device twin level.
Is this the wrong way to think about twins? Aka were such functionality even available, would the enrichment take the point in time twin reported value? Could there even be any guarantee that the twin has the correct reported value at the time the module sent the message? It that is the case, is the only real reliable way to send metadata about a module's message is within the message itself?
If you send an event from within a module using a module client, the keyword $twin in the message enrichment will refer to the module twin.

iot edge best practise

We have around 9000 devices in field.
This devices are at groups of 1-100 at customers on prem.
The devices are not capable of azure-iot-sdk integration.
The devices have a webservice API.
The devices should appear as first-class devices in azure.
We like the iot edge module provisiong feature.
We want to evaluate if modules could gather data from the devices and send them to IoTHub for further processing.
We found this feature overview of IoTEdge: https://learn.microsoft.com/de-de/azure/iot-edge/iot-edge-as-gateway
Pattern Transparent and Protocol translation are out of scope due to above facts. Pattern Identity translation seems to fit.
We want a 1 to 1 relationship between module and real device.
Therefor we assume the following POC with the hope of clarification and best practise:
we implement a iot edge module (azure-iot-sdk-java)
we open module connection to iotedge and suscribe to desired properties
the module identity gets as desired property the ip of the real device and the azure device identitiy connection string.
we open device connection to iotedge by adding GatewayHostName to the device connection string as described here https://learn.microsoft.com/de-de/azure/iot-edge/iot-edge-as-gateway
we request data from the real device and send them via azure device identity.
This somewho mixes up two patterns and seems kind of odd to us.
Can you point out best practises and risks with this approach?
Yes, I agree with that Pattern Identity translation could fit your scenario.
There are three patterns for using an IoT Edge device as a gateway: transparent, protocol translation, and identity translation, you can refer to this link to get more introduction about these three pattern.

Forwarding data from SigFox to Cumulocity

Currently we are trying to forward data from SigFox device to cumulocity by configuring a Callback from the SigFox admin panel but we always receive a 400 – Bad Request HTTP response.
If I change the URL to forward on requestBin, there is no problem, I got a 200 HTTP status code.
If I use Postman to send the request with the same header params and same body it works too.
Do you know what can be the issue?
Moreover, can you tell us what is the best way to manage the mapping between SigFox Device Ids and Cumulocity ones? Callbacks are created for a group of device in SigFox, so we can’t hardcode the Cumulocity Id as “source” in the body of the each request.
Maybe it’s possible to use the Identity API to register the mapping between SigFox Device Id and the Cumulocity device Id? I thought it would be possible to write a Processing task in CEL to listen the EventCreated in order to extract the SigFox Id from the received object and query the database to get the internal Id given the external Id with one of your pre-defined functions found here http://www.cumulocity.com/guides/reference/cumulocity-event-language/
But there is no function to query the Identity documents. So if you have already solved this specific use case, can you please give us the best approach?

Android C2DM Source Code or Implementation

I have a requirment to use Android C2DM functionality.
However, the restriction is that there should be no data that goes outside organization network.
Does the server side implementation send data to Google servers?
Is there an option to implement C2DM service within a closed network, where the data is not sent to Google servers?
Thanks,
RR
The purpose of C2DM is that you "Notify" the device that new data is available, and then your application is starting a sync (or something else, eg showing a message).
In general you don't submit the data (sometimes called payload) using C2DM. It is limited to 1024 chars only.
This way no "company" data is sent to Google.