Watson IoT platform in IBM Bluemix platform is capable of manage devices and update the firmware. The process for updating firmware is that the platform sends a MQTT message to tell the registered devices there is a new version, then the devices download the new version via http.
My questions are:
in the process of device registration, is that both the device and the platform are client of the MQTT broker, doesn't the WIoT platform also acts as the broker? where is the broker? Are the devices and the platform in a pub-sub relationship?
Why not let the devices subscribe to a topic to get the firmware? What are the benefits of using http to download the firmware?
The WIoTP is the MQTT broker. A device which is managed connects over MQTT to the WIoTP and publishes a message telling the WIoTP 'I am managed and I support these types of actions'. This enables a user to initiate these types of actions against that device using the WIoTP APIs.
The WIoTP isn't actually hosting the firmware to be downloaded. For the device to download the firmware over MQTT would mean that the firmware would have had to be uploaded to the WIoTP somewhere.
Related
I've started testing edgeSDK in a prototype IOT environment.
The idea is to connect devices with sensors and other nodes (Raspberry Pi, ESP8266, macOS, etc.) and exchange data or messages between them on the edge, trying to avoid communicating through the cloud.
(I will be also "mirroring" this exchanges in an AWS central cloud environment, to establish some comparisons/evaluations).
At this point, I have edgeSDK running on macOS and the Raspberry Pi and would like to add ESP8266 into the mix.
My Question is:
Can I get ESP8266 to work with edgeSDK? I don't see it listed as a supported platform.
If yes, which OS? (I was thinking about Mongoose, keeping the JavaScript coding and follow the standard).
Any other comments/suggestions or similar references would be very welcome!
ESP8266 is a microcontroller, which edgeSDK does not support. However, you can run a RESTFul API client on ESP8266 to call a API served by a microservice hosted by edgeSDK on a Raspberry Pi for example.
I have the task of implementing iot device management using Eclipse Leshan. I have difficulty understanding how Eclipse Leshan works in connecting IOT sensors with servers and cloud. Is it true if I declare that Eclipse Leshan does not require a gateway like Eclipse Kura to connect into server and cloud?
Does anyone know where the complete documentation about Eclipse Leshan is? it would be very helpful if there were examples of programs in implementing the eclipse leshan.
Thank you
Eclipse Leshan is a library for implementing applications that use the LWM2M protocol to manage devices. As such, your application can use Leshan's Java API in order to interact with devices that also support LWM2M.
LWM2M does not per se mandate a transport protocol. However, the spec is written assuming that CoAP over UDP is used for that purpose. In fact, the LW in LWM2M stands for Lightweight and as such, using CoAP as the transport protocol makes a lot of sense for managing constrained devices.
Eclipse Leshan itself does not connect to a server or cloud but instead is usually part of an application that is hosted on a server (on the cloud). However, you need to implement that application yourself because Leshan, as indicated above, is just a library. The devices then interact with your LWM2M enabled application. Because CoAP/UDP uses standard IP, this interaction can occur over public internet infrastructure if desirable in your use case, i.e. no gateway is necessarily needed. You can, however, also connect your devices to a local gateway, e.g. Kura, and then connect the gateway to your LWM2M server in the cloud instead. It really depends on your use case and the capabilities of the devices.
I created android chatbot where my android app is the Interface directly communicating with the conversation workspace. There is no other application running in between my android app and conversation workspace. In IBM watson architecture there is the application layer in between the Interface and the conversation service. What exactly is the application layer and what is the use of this layer as my android app can directly communicate with the conversation workspace?
In the case you describe, your Android app is the application layer. It is driving the conversation, is processing the context variables and accessing other web services.
Introducing an application server to handle the calls to Conversation and other services could help improve security and scalability. You have one endpoint the Android apps connect to. There, identity and access management (IAM) could be handled. The Android app would be less suspicious because it only connects to one server / services, not to many. This is the reason why most apps are utilizing a backend server, i.e., the application server.
I have a Raspberry Pi3 device which has Android Things dev preview 0.6.1 installed. On completing certain operations, the device needs to send data to Google Cloud Storage. To do so it must have an API key to authenticate itself.
In Android devices it could be done easily using by integrating Google Sign in Option but since my Android Thing device doesn't have any interface, Google Sign In could not be implemented in it.
I have gone through github project Android Things Weather Station Sample which is using Google Service Account to publish data to PubSub. To do so, it generates and imports a credential.json file into the project and somehow generates credentials from it.
So my question stands is, without user consent, can we use Google Service Accounts to authenticate with Google Cloud Storage? If yes, how can we generate access token from it ? If no, is there any other method to authenticate with GCS?
The simplest and most secure way to authenticate your IoT devices with Google Cloud is using Cloud IoT Core to publish data over MQTT or HTTP into Cloud Pub/Sub. Cloud IoT Core is a bridge designed to securely manage large fleets of devices and authenticate them with your cloud project.
Take a look at the SensorHub sample app on GitHub, which is similar to the weather station, but uses Cloud IoT Core to authenticate and publish instead.
As Shubham stated, using a service account is one way to authenticate devices. Otherwise you'd need to build a mobile companion app which you use to authenticate the user. Then you would have to transfer that token to the IoT device.
In case anyone faces the same issue, I found this document which has explained the way to authenticate devices with Google Cloud without the consent of a user.
I have setup one meshlium gateway with four waspmote(AC_1, AC_2, SC_1, EN_1) devices, I have configured IBM Bluemix configuration in IoT Platforms page in the meshlium web manager. The devices are getting created in the IBM Bluemix IoTF(Watson IOTF) devices section. But sensors data not getting pushed into IBM Bluemix IoTF, in the recent logs(events) section of each devices. Could please help me out to resolve the issue.
Current version of meshlium web manager is: 3.2.5 Model Kit
My sensors in the waspmote(AC_1) is sending data to meshlium in every 10 seconds.
Bluemix Config. here:
http://img4.imagetitan.com/img.php?image=13_meshlium_ibm_bluemix_cloud_connecttor_config.png
Devices got created in IBM Bluemix IoTF(Watson IOTF):
http://img4.imagetitan.com/img.php?image=13_meshlium_waspmote_devices_ibm_bluemix.png