IoT Edge telemetry does not show up in IoT Central - azure-iot-edge

I've created a device template for my IoT Edge in Iot Central.
I'm able to see the modules running on my device through (Devices-> Group of my device-> My Device -> Modules) and confirm it connecting to my IoT Edge and running sudo iotedge list.
I can also manage it and change the module twin desired properties through (Devices-> Group of my device-> My Device -> Manage) but I cannot see my telemetry data showing up.
In Analysis tab it is also possible to count the ocurrence of those specified fields in telemetry message, capabilities in device template.
Do you guys know what could be happening and what should I do to troubleshoot it?
Thanks in advance!
Device dashboard view
Analysis dashboard view

It was a mispelling in the code.
Aparently in Analysis tab it was counting the message quantities but not it's intent.

Related

Thingsboard, Posting Data to Two Seperate Devices From One Physical Node(ESP8266/32)

I want to post data to 2 different devices from same esp32. And I want to do it like posting all the data to one device and sharing its telemetries with the second device. Is that possible on thingsboard?
I achieved this via ESP32 but when I am posting data with two different token, I need to cut the wifi and reconnect the Thingsboard with the other devices token. This situation contributes to enormous battery consumption. When I examine the thingsboard library I could not see a function about cutting the network only with thingsboard. What can be done to overcome this situation?
Any idea will be appreciated.
Thanks
One way I could think of, would be using ThingsBoard Integrations. Where one input payload can have multiple outgoing payloads (works even for multiple target devices or assets):
https://thingsboard.io/docs/user-guide/integrations/#converter-output
But this requires ThingsBoard PE & an external MQTT Broker in between your ESP32 & TB.
Or you could try the MQTT Gateway API:
https://thingsboard.io/docs/reference/gateway-mqtt-api/

Access device connection string in IoT Edge module via Device Provisioning Services

We're moving our Azure IoT Edge devices from manual provisioning to DPS with symmetric key. One of the modules deployed to our devices needs to manage the Device Twin - we have been using this for state properties that persist across updates to modules. To connect to the device twin, I've been creating a DeviceClient from connection string which is loaded as an environment variable on a per device basis. This is using the C SDK.
Now I want to request the device credentials during provisioning so that the symmetric key is the only secret pre installed on the device.
A number of posts suggest that this isn't possible with best practices, most succinctly:
Access IoT Edge Device Twin from Edge Module when using X.509 Authentication
Is this still the case? If so, what is the intended use for the device twin on IoT Edge, if user modules aren't supposed to access it in a production setting?
A number of posts suggest that this isn't possible with best practices, most succinctly: Access IoT Edge Device Twin from Edge Module when using X.509 Authentication. Is this still the case?
This is still the case. Modules accessing device twin information is not supported or recommended. There are other ways to achieve what is desired - like one you described in your comment.
what is the intended use for the device twin on IoT Edge, if user modules aren't supposed to access it in a production setting?
The use case for device twins in IoT Edge is ADM deployments.
You create a deployment manifest and then define which devices it applies to based on tags in the device twin.
Ref: Understand IoT Edge automatic deployments for single devices or at scale

How to register and identify single device on Android Things Console or How do we get a device onto a channel

I am new to IoT. I am going through the Android Things Console docs where it was written:
You must flash the device with an image from the Android Things Console in order for the device to receive updates.
Here, I am not able to understand how devices get registered/enrolled on Android Things console and how we can identify a single device. How do you get a device onto a channel .
When you create an image in the console, the system image is linked to that product that you've created. This hidden identifier is used for future OTA updates.
It does not allow you to identify single devices. If you want that, you may want to use your own solution, which may involve a number of IoT solutions like Google Cloud IoT Core.
To get devices onto a channel, you can take a look at the UpdateManager.

MQTT Communication Design between Multiple IoT Devices

I have this current setup:
Android app(ON/OFF button) <--> MQTT broker(mosquito) <--> NodMCU
MQTT TOPICS:
cmd/light/power - where my nodMCU receives ON/OFF command.
status/light/power - where my nodMCU returns the status of the load. This is where also the button status of the app is dependent.
The above setup works just fine and every time I add another IoT device I needed to change the mqtt topics inside the firmware before flashing to every iot device so i can control them individually and there where the problem comes in..
Maybe someone can guide me how to re-design my system that I can easily add new device to my android app and control them individually without changing the firmware of each IoT device? I'm trying to replicate the app eWeLink where it can easily add sonoff devices easily..
EDIT:
My thoughts:
design the device firmware to generate unique ID for each iot device then the id should be included in the MQTT topic. then add the device to Android app using it's ID..
topic should look like this cmd/<unique device id>/power & status/<unique device id>/power
Design the device firmware to generate unique ID for each iot device then the id should be included in the MQTT topic. then add the device to Android app using it's ID..
topic should look like this cmd/<unique device id>/power & status/<unique device id>/power

About Jasper IoT Platform

I am just bit curious. I am new in IoT and currently started working on it using ESP8266 device. I know that it needs some firmware to write and install, like smart.js.
But I have read, Jasper (http://www.jasper.com/) can connect any device and manager, monitor etc. So I am bit curious how it works internally. I am not sure whether it installs firmware created by Jasper or in other way. I was reading this article: http://www2.cumulocity.com/guides/users-guide/jasper/#link-sims
Anyone knows about this? I mean how Jasper works to connect to any devices?
Cisco bought Jasper, which is useful for IoT business. However it might be better way for you to check Interactor(www.interactor.com) which is great for IoT development. Interactor works to conntect to any device with any protocol.
Cisco Jasper should not be confused with device management libraries (whether they be server based, or device based or both).
Jasper is a telecom based service that allows you to see and manage the connection state of sim inserted in the device. Regardless of the state of a device, the modem and sim (provided they are powered) will connect to the telco and provide basic information about the connection.
Think of it as a network tool (server originated) for the gateway on the device, not the device itself. It allows you to force disconnect devices from the network, ban sims from the account so a stolen or runaway sim can eat through data, basic connectivity tests (is the modem powered, does the sim have permission to transmit data over the network, etc).
The main value of jasper is that it allows you to manage you data costs by applying the appropriate rate plan to each device, and disconnect devices that are using too much (for whatever reason).
Jasper does not cost anything to use, however telcos will apply a rev commit (min monthly spend) usually $500/month to gain access. the sims are the same as PCS (phone) sims, but they are on their own network internally, and are specific to that telcos jasper. i.e. you can't take 500 devices using PCS sims, and import those sims into jasper. you'd need to do a physical swap of the sims.

Resources