Mobile to controller secure bluetooth ble communication - bluetooth-lowenergy

We seek your help in implementing bluetooth on our smart home controller. Our current scenarios is described below:
We want secure communication between our embedded linux controller(our smart home hub) and user's mobile phones running android/iOS.Our system is in home automation.
The hub in turn communicates with home devices that support a different protocol - we need to make communication between hub and mobile devices using bluetooth.
Currently there is not direct communication between our hub and mobile phone except through the internet.
We will use Bluetooth 4.x, not 5 for hardware support on the controller.
We are using nodejs on our controller and standard bluethooth OS libraries on android/iOS. We are open to suggestions.
Our main concern is to establish secure communication between phone and the hub. With this regard we are looking for implementation guidance on pairing and communicating securely. We have been able to establish unsecure communication - exposing characteristics and services on the hub. Our understanding of the bluetooth protocol is limited and we have only used libraries available for users.
Please provide specific pointers as to what we should do and what is possible.

Related

Multiple BLE profiles

Is it possible to setup multiple BLE profiles using Bluez, for use in a single connection?
For example to allow a device to support a GATT profile and also use a PAN network access profile simultaneously.
Thanks
Update:
Thanks for the comment.
What I'm trying to achieve is an embedded device which connects to a phone app over BLE.
This connection will support a GATT protocol for accessing attributes on the device, but also BLE tethering so that the device has a direct internet connection through the phone. And both will work simultaneously.
Its possible. PAN profile and GATT are not depend on each other.

How to manage bluetooth beacons through web?

What I want to do is have a complete control on beacon remotely through web/mobile app (RestApi). I already gone through following sites,
1)https://nectarkast.com/index.html
2)https://kontakt.io/products-and-solutions/beacon-software/
How do these site working? Are they using some custom beacons that has Wifi or network connecting functionality, any help would be really appreciable.
You need (a) a beacon with internet access or (b) a base station near those beacons with internet access and the ability to connect to them via Bluetooth to configure them.
It is also possible to build beacons using Lora, SigFox, or other IoT radio technologies that effectively gives a very low power internet connection that uses little battery.

Does Qt support Wi-Fi Direct / P2P connections on mobile platforms?

I would like to write a cross-platform mobile app based on Qt which is able to discover other devices reachable via Wi-Fi running the same app. If such devices are found they should be able to communicate with each other in an ad-hoc mannor without requiring any user (inter-)actions.
So my question is:
Does Qt support Wi-Fi Direct communication out of the box in general (i.e. is there any API for these kind of p2p connections), and if so, is this feature also available on mobile platforms supported by Qt? If there is no out of the box solution, can it be implemented with the existing Qt Wi-Fi networking API?

API to access GSM signal on computer

Hope this is the right place to ask - assuming so as it is related to programming.
I am looking for some hardware (say a dongle) that would open up an API for my computer to a SIM card. Does that exist anywhere?
The idea would be that I can then use my existing SIM card on its existing network/contract and with a bit of code, send/receive calls and texts. I figured that if a phone can be programmed to do it why can't a computer? I just need the hardware.
Any suggestions if this kind of thing is possible? Even by maybe integrating a phone?
You can use AT commands with any modem or phone, whose driver exposes a modem port when you connect it to a computer. Plug in the phone or modem, and go to Windows Device Manager, and look under "Modems" and see what you've got. From "properties" of the Modem, you can see which COM port it is on.
AT commands are an older method of communicating with a modem. There is a standard set of commands for GSM/GPRS/3G/4G devices available from 3GPP.org, here. Manufacturers add their own proprietary commands for more obscure functions. Many but not all of these are in the public domain.
Some newer plug-in modems may appear as a network adapter (you can see this in Windows), due to their drivers. In this case, you can use the following interfaces:
on Vista: NDIS, proprietary interfaces
on Windows 7 and 8.x Desktop apps: Windows Mobile Broadband API
on Windows 8.x, in the Metro/app area: Windows.Networking and MobileBroadband APIs.
on Windows 10, UWP, there are UWP APIs here. But they do not give as much functionality as the Desktop APIs.
On Windows 8.1 and Windows 10, if the appropriate drives are present it is possible to use the new MBIM interface via the desktop Mobile Broadband DeviceServices API. Mobile Broadband Interface Model spec available here.
On Linux, use AT commands via the serial port.
I'm a bit puzzled by your requirement to make (voice?) calls via a phone connected to a computer. Do you mean Skype? In this case, of course, you wouldn't need any interface for making calls, you would just open an IP connection over a data session - which can be done via any of the above interfaces.
(added this comment as an answer, as there was more information)
I use this GSM device: http://www.mikroe.com/click/gsm2/ connected to a basic UART like: https://www.sparkfun.com/products/718?gclid=CIj1xOzbur4CFUVbfgodCpQASQ
Then use AT COMMANDS.
I also use a piece of software called QNavigator to inspect the modem/gsm: http://www.soselectronic.com/?str=1329

GPS data to a website

There is a GPS device which can send data to IP:Port. I have a website hosted on IP 1.2.3.4
Can I send GPS data from the device to that website? 1.2.3.4:8080? How I will retrieve the data?
This is the device
http://cgi.ebay.com/GSM-GPRS-GPS-Vehicle-Car-Tracking-System-Tracker-Device-/270683202099?pt=AU_Car_Parts_Accessories&hash=item3f05f9e233
Maybe this should be a comment...
To be honest we can't answer that question the device will most likely use its own data format(s) so the service that receives from it will have to implement those. Additionally the device might not support web protocols, it could use raw TCP sockets for example, so you may have to implement a listener service that adheres to those protocols. In fact it looks like the device uses GSM (a mobile telephony standard), so using a web site to receive the data is definately off the cards unless you have a GSM proxy service sitting between the device and the web server.
Assuming that you are allowed to implement your own service it follows that the documentation will include the necessary details and if you are lucky a full SDK that you can use.

Resources