IOT service support for BACnet building automation systems - ibm-cloud

Are there plans to build a Bluemix service for BACnet devices, if so, when will it be available.
This would be a great service for industrial device automation, to gather information from devices into a corporate Oracle database for analysis.
Thanks

BACnet defines a multitude of transport protocols besides TCP/IP. So you will most likely (since it is a mature protocol) find the bulk of devices communicating via something else than TCP/IP.
The specification mentions a BACnet Broadcast Management Device, which would be most likely the communications endpoint talking to Bluemix.
Using the IoT Foundation Service in Bluemix, you can reach Bluemix trough: TCP, UDP, MQ, MQTT, HTTP - basically anything that sends IP.
Have a look at the Bluemix service NodeRED that gives you head start.
What I would do:
NodeRed runs on PC or Raspberry PI too - use Thingbox for the PI
The PI has been shown to run BACNet
You even can buy BacNET for PI
Now the tricky part (we could collaborate on that): build some Nodes for NodeRED to do the BacNET interaction
With this approach you decouple the local BacNET network from the cloud. I would then use MQ(TT) to talk to the cloud, so you don't loose data when there is a connection challenge (e.g. you use 3G).
Does that help?

Take a look at the BACnet to IBM Watson IoT Gateway at
http://go-iot.io/try-bacnetws/
There is a link there to the Watson recipe and also a quite interesting link to a live BlueMix demo programmed in Node-REED using the BACnet to Watson IoT Gateway.
Notice that this gateway can also be used to tunnel BACnet/WS requests via MQTT to Watson, that is quite interesting.
BACnet/WS is the new RES Web Service standard from BACnet.

Related

How to setup server for SMS communication for Teltonika FMB920

I am tring to create a vehicle tracking system based on GPS & GMS using Teltonika FMB920 tracking device. I am a bit confused on following things:
How to setup the server for communicating with the device.
How to save the data sent from the device on the server.
Can I use any cloud platform like Azure or AWS IoT features for this purpose.
Any guidance in this regard will be really helpful for me.
How to setup the server for communicating with the device.
Teltonika fmbxxx typically send data using websockets TCP or UDP protocol. To setup the server correctly, the port that will be listening for data needs to be opened in the server and the server address and port need to be configured on the device with the teltonika configurator tool
how to update server settings in configurator tool
How to save the data sent from the device on the server.
This depends on your use case but a good idea could be to use nosql database to save the data from device received by the server since its easier to scale when data size grows and easy to query and read the data
Can I use any cloud platform like Azure or AWS IoT features for this purpose.
AFAIK yes you can. essentially what is need is server instance with a websocket client application that can receive data from tcp/udp protocol

Google Smart Home integration with my IoT device (clarification needed)

I am looking for some clarification to how Google Smart Home works.
I am looking to integrate my current end device which control lights with Google Smart Home.
My end device is running a very small microcontroller utilizing an RTOS (Linux is not available)
Here is how I see it (Please correct or comment)
To my understanding this requires me to host my own cloud service
which will talk to my current end device?
My cloud service will then talk to Google cloud service.
My cloud service defines the protocol to talk to multiple end devices
Google Smart Home define the protocol to talk to my cloud service
Questions
Is there any method of doing this without having my own cloud Service?
That is a pretty basic summary of things - yes.
The crucial point there is that issuing a command to the Google Home does not have it send out a message on your local network. Google issues any commands from their network - not from your device.
This might seem like a minor detail, but it doesn't need to be a "cloud service" that you control that Google talks to. It does need to be a publicly accessible HTTPS endpoint. This could be a cloud service (and it would be in most cases), a public non-cloud server, or even just a public URL that has a tunnel to your private network (such as with ngrok).
The last is really how you'd get around having your own cloud service - you can setup the control on a local machine, and have a tunnel using ngrok.
I think a specific example may be beneficial: here's how to connect Google Home to your devices using an intermediary service like IFTTT:
Create a recipe (applet) on IFTTT to connect Google Assistant to an ngrok tunnel using the Webhook service. This permits you to define a simple keyword phrase that the Google Home will recognize (like "Hey Google turn on my device"). The applet will then call a webhook - e.g. ngrok - with a custom command that you get to define (like "https://myngroktunnel.ngrok.io/Control.cgi?mydevice=on" ), where myngroktunnel is your ngrok tunnel address (see below #2) and Control.cgi is the CGI script that you have placed on your microcontroller (see below #3).
You would need to install and run ngrok on your microcontroller: this will connect the IFTTT applet to your microcontroller via the ngrok tunnel and give you a publicly-accessible URL that forwards requests to your microcontroller. You would typically forward your ngrok tunnel to a specific port on your microcontroller where you are running a web server (e.g. Apache) with CGI scripts to control your device. There are other secure tunnel services available on the web: ngrok is just one of them. So, you do not have to host your own webservice, but you do have to use a tunnel to a publicly-accessible service.
The web server that you have placed on your microcontroller has CGI scripts that control your device (for example, let's say you have a Control.cgi script that turns your device on or off, given a command string like mydevice=on, e.g. the hook in the IFTTT applet is "/Control.cgi?mycommand=on"
Of course, the RTOS on your microcontroller muse be capable of running ngrok and a web server - this is why many people have chosen to use a single-board computer like the Raspberry Pi or Orange Pi running a form of linux to host and control their devices. Since your device's RTOS is not linux, I would suggest getting a linux device which would then forward the request to your RTOS device over your LAN.

Can any AWS capture data that sent via GPS tracker using a tcp socket connection?

I wonder if there is any service in Amazon Web Services that i can use to catch the GPS data that send from my GPS tracker to a specific host:port or domain:port ?
My device is not a MQTT client so i can't use AWS IOT
Is EC2 the only choice ?
I want to integrate those GPS information in my web app ,right now it's in heroku hosting but i plan to transfer it to AWS if i solve this issue.
I am not familiar with the interfaces that your GPS trackers use. However, provided that you open the IP / Port in your security group so that your GPS tracker can connect to your own software, it will work.
[EDIT after question]
There are many ways (and services) in Amazon to capture data. The real answer depends on how your GPS tracker is connecting to an endpoint, how it is sending data and what interface it expects.
If your tracker supports using a REST style interface, you could use API Gateway with Lambda to process your tracker data and store in DynamoDB, S3, etc. Kinesis Firehose might be another service that could work.

IBM Watson IoT Platform: What is the best way to send heartbeat from IP capable device to IBM Watson IoT Platform for device tracking

I know we can send heartbeat payload through device monitoring topic. But do we have any another way where any IP capable device can send heartbeat to IBM Watson Platform through any IBM services or database for device tracking?
I assume with "any IP capable device" you mean you don't want/can install a MQTT stack?
You can use HTTP(S) instead, as described here
fyi: You don't need the IBM API client, any MQTT library is sufficient then you can also use MQTT instead HTTP(S)

Is XMPP good choice for this solution?

I want to build communication solution for my project. Thinking about not to develop everything from scratch, but to use XMPP servers.
My project consist of many "mini-servers" (based on raspberry pi) scattered around different locations. Every mini-server should be reachable for mobile applications on its own network, this network could be isolated from internet. Every "mini-server" has to be autonomous and be able to live without internet, autethicate its own mobile client and respond to their requests. So mini-servers could be on private offline networks, could be on known static or unknown dynamic IP addresses behind firewalls.
Some mini-server users want theirs mini-servers to be reachable from the internet. So there is one more, let's call it cloud. This cloud would be responsible for routing request from mobile clients from the internet to their mini-servers.
My idea was to use XMPP server on every mini-server, my application would log in to this server on localhost and create chatroom. Every mobile client would connect to xmpp server and chat with my application request-response. When mini-server owner wants to connect to the interet to be reachable from outside, I would just reconfigure xmpp server to connect to my cloud XMPP cluster (on known public domain) and mobile app to connect to this public cloud server if not on private network. Every mini-server will have its own users, managed by other app on it. Mini-server has also log, this could be written for example to another chatroom. Mini-servers or mobile users does not want to talk to each other. It is pure mobile user to mini-server request-response realtime communication.
Can cloud-XMPP servers route request to mini-server xmpp server?
Is this possible with XMPP? Is it good use? Some better ideas?
What you describe looks like XMPP server-to-server federation, with some local Raspberry PI XMPP domains and some other XMPP servers on the internet.
So, I think yes, what you would like to achieve is doable with XMPP server.
A server like ejabberd works very well on Raspberry Pi.