Bevywise Networks | IoT Platform & IoT Solutions - IoT Solutions & Artificial Intelligence to make a better tomorrow.
  • Windows MQTT client

Windows MQTT Client

By Ranjith Kumar Diraviyam

Windows MQTT Client is bundled inside the MQTT Broker and the IOT Simulator and can be run using the python files bundled in the product. You can write your own python files to customize the client.



  • Windows MQTT client

Windows MQTT Client

By |December 5th, 2017|


We have been bundling the Windows MQTT Client dlls and shared libraries for Linux and MAC into the MQTT Broker and the IOT Simulator. These clients can be started using the python files bundled in the lib/ folder of the product. Python 2.7  and Open SSL are mandatory for running the client using these libraries. Linux and MAC mostly will have openssl and python installed by default. But for Windows, we need to install the same.

Install Python

Step 1: Download the installer version based on your Operating system (32 bit or 64 bit ) from  python website and install it by double click on the exe.

Step 2: Confirm the installation of python. Open a command prompt. Type the command  python in command prompt and press enter. It should take you to the Python prompt if installed perfectly. Exit the python prompt.

Install openSSL

Step 1: Download the stable version of the openssl from their website

Step 2: Download Visual Studio FREE version from the Microsoft and install it.

Step 3: Download Perl and install the same.

Step 4: Use ppm to install nasm and dmake

ppm install nasm

ppm install dmake

Step 5: Open the command Prompt inside the Visual Studio and set up the openssl using the Visual C++ method in the help file present in the downloaded file. You can either use the INSTALL.W32 or INSTALL.W64 based on your OS.

Step5: Check the installation of the openssl by opening the command prompt and executing the command openssl.

Setup Windows MQTT Client

Once you are done with the above steps your windows os is ready to run the Windows MQTT Client. Download the MQTTRoute. After installation, go to the lib/ folder and run any of the client python files like Example1.py. Make sure you run the runbroker.bat inside the bin/ folder so that the client can connect to it.

Download MQTT Broker

Contact support if you are looking for any assistance on the set up process.  If you are looking to bundle the MQTT Client in any of your devices, feel free to contact us.

  • Custom TCP Server for remote devices and sensors

Introducing TCP Server beta

By |November 23rd, 2017|


We are happy to announce the release of the beta version of the custom TCP Server. The server allows you to design your own custom tcp data for your application and edge devices.

One of the key challenges we face today in the Internet of things deployment and maintenance of the devices and sensors at remote places. The remote deployment poses challenges in battery life and bandwidth. Most of the edge devices today just send data to the manager application and does not receive any command or actionable note from the application.

Keeping the above need in mind, we created the custom TCP Server. The server will remove all the Application layer protocol overheads and help reduce the data transfer and remove the need for handling unnecessary acknowledgements at the edge devices decreasing the power usage exponentially.

Key Features – TCP Server

The format of the Custom TCP Data can be specified in a JSON Format.  The Server will listen for the data on a particular port as specified by you and stores the data in a relational DB. In the current version, we store the data in MySQL and the next version will have options to store to BIG DATA engines. Few highlights  are:

  • Custom data definition
  • Keep Alive
  • Quality of Service
  • Large Data handling

The TCP Server supports Windows, Linux, MAC and Raspbian.  The FREE version supports upto 25 Clients.  Download the FREE TCP Server now.

Custom TCP Server Download

Please feel free to write to support for any question.

  • IOT Device template

Introducing Templates & faster IOT Simulation

By |October 24th, 2017|


Today we are happy to introduce iot templates & bulk device creation in IOT Simulator.

We believe that the real effort of any validation process. The efforts should be spent on the validating and analysing the result data and not on setting up the environment.  IOT environment needs a mass network setup to test and demo the manager applications and test interoperability of devices.

IOT Templates

With the new update, you will be able to now spend very little time to just create a template. The template supports specifying a replaceable place holders strings using the client names.  The template definition allows you to add place holders in WILL Topic, subscription topics, publishing topics and topics used in behavior pattern.

The pattern can also be used in the Data. The IOT simulator already supports dynamic values for the text and JSON based messages. You will be able to create tens of thousands of unique devices with unique topic and messages within a few minutes.

Multiple Simulated Networks

The validation of the manager application process have multiple process. We need to review different functional implementation, performance, etc. Keeping this in mind, we have added options to store multiple simulated networks. These networks can be persisted and reused on demand.

 Download the IOT Simulator now.

Download IoT Simulator

You can simulate large networks using affordable pricing plans. Feel free to contact us for any feedback or assistance.

  • Time based rule engine.

Rule engine – set triggers by time

By |September 19th, 2017|


Rule engine of the MQTT Broker helps you analyse the data and create actions and send appropriate messages to another device based on the received data. But in addition, most of the work human do from dawn to dusk are time driven. So the things on the internet needs some activation based on the time in addition to the condition based activation.

Today, we are happy to add a time based rule engine which can users define messages based on the time in addition to the condition based rules.

One Time Scheduling:

The MQTT Broker can be configured to send specific message to a specific topic on a particular date and a particular time.

Repetitive Tasks:

The floor cleaning robot needs to be scheduled every day or certain days of the week to clean all rooms or specific rooms. This can be triggered by scheduing messages all days or on specific days and specific time.

Seasonal:

Some work may be seasonal like watering the lawn and using air conditioners in tropical countries. The MQTT broker can trigger messages on a specified date range and time to trigger actions.

In addition to the rules engine enhancement, we have also added an exclusive download for the Raspbian OS to be used in the Raspberry Pi.

Download the FREE MQTT Broker now.

Download MQTTRoute with rule engine

Please feel free to contact support for any questions or feedback

  • Simulate dynamic values

Simulate dynamic messages – MQTT

By |September 5th, 2017|


We are happy to share the recent update of the IOT Simulator which can resemble a real device and  simulate dynamic messages on every message with two types of message format – TEXT & JSON.

Simulate dynamic messages

The IoT Simulator supports four types of dynamic values to be sent as part of messages.

System Variables – The messages always need to carry client specific values like Client Id, System time, etc. The system variables help you assign these values dynamically to one of the tuple of JSON or to the Text Message.

Random – The devices often publish messages with the current states of the device. These devices states are often predefined set like ON | OFF or LOW | MEDIUM | HIGH or something similar. Such states can be randomly generated using this dynamic type.

Range – When you want to simulate a human body temperature sensor, you often need to set a range within which the values vary. The Range can be used to simulate such scenarios. The human temperature can be set in a range of 97 deg F to 99 deg F

Constant – Every sensor need to send the details of the location of the sensor which will be fixed. For those messages, the Constant type can be used.

Download the FREE IoT Simulator now. you can simulate up to 25 devices.

Download IoT Simulator

Feel free to contact support for any assistance or feedback.

  • Set up Secure MQTT Broker on EC2

Secure MQTT Broker hosting on AWS

By |August 23rd, 2017|


Internet of things is all about mobility and managing your things from anywhere and everywhere. Hosting the MQTT Broker / IOT Platform on the cloud is a mandate to achieve this. But people are very much paranoid about the security. This article provides a complete end to end guide for hosting a secure MQTT Broker on AWS .

Create an AWS Account

Create a FREE AWS account which you can use for a year. You can check the details of the FREE tier here. The AWS account provides a single CPU with a 1 GB of RAM, 5 GB of storage space and more. This is a very good configuration to run the MQTT Broker on the VM

Preparing EC2

Create an EC2 instance and If you are particular about the FREE usage, make sure you choose the allowed VM type. For the Operating System, choose an Ubuntu 14.04 or 16.04 instance.

Create an SSH Key Pair for using for connecting to the EC2 instance via SFTP and SSH. If you already have an SSH key you can use the same. The key will be in the name of Yourname.pem

The VM provided will be a plain vanilla version of the Ubuntu. You can connect to the EC2 instance via SSH. Update the Ubuntu for any patches and install zip utility.

$ sudo apt-get update
$ sudo apt-get install zip unzip

Setup MySQL

The MQTT Broker uses MySQL to store the connected clients, their subscriptions, and the message transactions. Install the MySQL using the following commands.These commands will ask for your root password and also make your MySQL instance secured in the EC2 Instance. Remember the MySQL password which you need to configure inside the MQTT Broker conf files.

$ sudo apt-get install mysql-server
$ sudo mysql_secure_installation
$ sudo mysql_install_db

Make sure the MySQL is set to run in the localhost (127.0.0.1). Check the /etc/mysql/my.cnf

bind-address = 127.0.0.1

The Ubuntu is now ready to run the broker.

Setting up Secure MQTT Broker

Download the FREE MQTT Broker from the Bevywise Networks download page. You can copy the files to the EC2 instance using SFTP using tools like FileZilla. The same SSH key pair can be used for the authentication purpose. Let us get started with installing the MQTT Broker in the EC2 Instance.

Unzip the MQTT Broker and move to the product home folder.

$ unzip Bevywise_MQTT_Route_Linux.zip
$ cd Bevywise/MQTTRoute/

Configure MySQL parameters inside the conf/db.conf.

Change the default DB server from SQLITE to MYSQL and update the MySQL password which you provided during the installation of MySQL.

DB_SERVER = MYSQL

MYSQL_USER = root
MYSQL_PASSWORD=<<mysql_password>>

Securing Client Connections

The communication between the clients and the server should be secured by enabling the TLS mode and setting up passwords logging in. You can use a single password for all the clients or individual passwords for each client.

Open the conf/broker.conf and update the TLS_ENABLED as TRUE. All other values can be changed if needed. Using a non-regular port number for Broker and secure web socket will further enhance the security against DDOS.

TLS_ENABLED = TRUE
TLS_PORT_NO = 8883
WSS_PORT_NO = 8000

Create a strong set of username and passwords which can be used when the clients connect to the MQTT Broker. You can add your list of credentials inside Certificate/Authentication/ folder.

The username and password must be
<username><<Tab>><Password>
operation_mgr_usr [email protected]
external_dev_user [email protected]!*&Rs4

Enable authentication in the conf/broker.conf. If you wish to use a different file for the username and password list, you can change the path of the credentials file.

[AUTHENTICATION]
AUTHENTICATION_ENABLED = YES
# YES || NO
PASSWD_FILE = ./Certificate/Authentication/credentials.txt

Start the MQTT Broker in the background to make sure the broker is running continuously.

$ cd ./bin
$ nohup sh runbroker.sh &

The MQTT Broker will start on the TCP port 1883, Web Socket port 8000, and HTTP port 8080.

Securing User Interface with Apache

The apache server will be set as the front end for the User interface and the request will be routed to the port 8080 of the MQTT Broker using the virtual host configuration of the apache. The basic authentication of the apache will be enabled for the securing the User Interface.

Install the apache server.

$ sudo apt-get install apache2
$ sudo apt-get install apache2-utils

The Username and the passwords need to be added to the apache for enabling the basic authentication. To add the user name, run the following command. This will ask for the password and confirmation and it will be added to the .htpasswd file.

$ sudo htpasswd -c /etc/apache2/.htpasswd <<User_name>>

Confirm the user addition by using the following command

$ cat /etc/apache2/.htpasswd
sammy:$apr1$DeD6bRwI$sCkKfg7Ly/nkXPiXG.PUP0

You need to restart the apache server for the authentication to be enabled. Let us do the proxying to the port 8080 before restarting the server.

Enabling the Proxy modules of the apache.

$ sudo a2enmod proxy
$ sudo a2enmod proxy_http

For reverse proxy, we need to add the following into the /etc/apache2/sites-enabled/000-default.conf.

ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/

<Location “/”>
AuthType Basic
AuthName “Restricted Content”
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Location>

Restart the apache server for the above changes to take effect.

$ sudo service apache2 restart

Configuring AWS Firewall

The AWS firewall can be configured using the Network & Security → Security Group option inside the AWS Console. You have to enable inbound connection to only 4 ports, Apache — 80, Web socket — 8443, TLS TCP — 8883 & SSH — 22. If you are planning to connect devices only from your internal network, you can use the option of My IP for the Source to make sure AWS restricts all the other IPs from sending data to this particular port making it more secure.

Mobile Application

We do have a basic mobile application which can be used to send and receive MQTT Messages to and from the different devices. We are yet to host them on the App Store and play store. But we can send you the same.

If you are using a FREE version of the MQTTRoute, you will be able to connect up to 25 clients to the broker. You are using a completely FREE MQTT Server on the cloud with all the basic needs.

The MQTTRoute is available for more devices at a very affordable price.

If you are looking to connect millions of devices, we do a have highly scalable distributed micro services based IOT Platform which is being integrated into powerful data visualization. The Platform can be extended and customised based on the vertical and its objectives.

Enable your devices for a powerful M2M communication by setting up a FREE private cloud based MQTT Broker. We would be happy to hear your success stories on the setup process.

If you need any assistance on enabling IoT into your current process, we could help you get it done using our platform and the smart SDK. Feel free to keep us posted via the contact us form.