Bevywise Networks | IoT Platform & IoT Solutions - IoT Solutions & Artificial Intelligence to make a better tomorrow.
  • Time based rule engine.

Rule engine – set triggers by time

By Ranjith Kumar Diraviyam

Rule engine helps you automate your M2M communication with data based and time based rules. This update has the time based triggers which can configured to publish messages which are repetitive, seasonal and once.



  • 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.

  • IOT enabled facility management

IoT Facility management simulation

By |August 8th, 2017|


Today IOT facility management is one of the emerging trends in the current facility management.  Every running system needs to be upgraded to an IOT enabled one to make sure the productivity is improved drastically.  Upgrading a system without disturbing the current production is very important. Any idea needs a proof of concept for validation before it goes to the real-time implementation.

IOT Sample Data:

IOT Simulator comes in handy when you need to test the real time scenario of your devices. The IOT simulator can also be configured to work in tandem with the real devices and intercommunicate with them.

We have a pre built simulation for a facility with six rooms and each room having an identical set of utilities and each utility having a sensor to monitor and manage the particular utility.

Each room has an Air Conditioner,  ceiling lamp, Water meter, power meter, temperature/humidity sensor, an occupancy sensor and door sensor.

Interfacing real devices:

We have also added an admin to subscribe to these topics to get the status of sensors of each room.  You can add your real device or manager application to listen to the occupancy sensor data on the room occupancy to make decisions on activating and de activating related devices.

These simulated sensors can periodically send data to the any IOT Platform like Bevywise IOT Platform. The platform can be configured to visualize data so that meaningful decisions can be derived.

Please download the  publisher.data & subscriber.data.  You need to place these files inside the  <product home>/data folder and start the IoT Simulator.

If you have not downloaded the IoT Simulator yet, download the simulator now

Download IoT Simulator

We will be happy to know about your use cases and do custom simulation for your need.  Contact us via our Support form and we would be happy to help.

  • Creating simulated IoT Devices

How to create simulated IoT Device?

By |July 12th, 2017|


Bevywise IoT Simulator is a Free, highly scalable IoT Device Simulation suite that helps you simulate various scenarios needed for developing , testing and demonstrating realtime devices and managers. The IoT Simulator supports two modes of device configuration. The first one is using the configuration files and the second one is via User Interface.

There are three major requirement under which the IoT Devices M2M communication can be grouped. They are:

  1. — Failover & Redundancy
  2. — Data Collection
  3. — Activate Edge Actions

 This article explains how we can simulate IoT Devices using the CSV configuration files and the User Interface will be discussed in the next post. The simulated IoT Devices can be used along with your real devices to act as one of the missing edge devices to have a complete test environment.

IOT Device Failover & Redundancy:

Any redundancy set up needs a master and standby device. The IoT failure of the master need to be propagated to the standby device. In our scenario, the master and the standby device will be connected to the broker and the standby will subscribe to the status of the master device. The broker will notify the standby device when the master goes off for the standby device to take over.

Take an example of the Diesel Generator of a large facility. It has a master and a standby generator. The master should register a WILL Topic and message to the broker and the standby generator should subscribe to the will topic of the master. When the master Diesel generator goes down, the broker will send the message to the interested clients.

Open the willmessage.data inside the data/ folder.  The DG master will register the WILL when it connects to the Broker.

# Client name  :              Will Topic                :  message   :  Qos   :  Retain

DG-Master          :  /fac/dg_master_status :   Down       :    0      :         0

 

The DG-Standby should listen to the master status and do the necessary action.  There are two kinds of action required.

  1. — Getting the Standby up and serve the need.
  2. — Sending the status to the Facility manager.

This can be configured in the subscriber.data for receiving the message of the failure.

# Client name  :  Time   : operation     :               Topic name                   : Qos

DG-Standby       :  -1:-1:-1 :  subscribe  : /facility/dg_master_status  :    0

The standby server also need to send a message that it has become active which needs to be configured in the response.data

# Client Name :                   Request Topic         :    Message  :  Response Topic         : Message:Qos

DG_Standby :/facility/dg_master_status :       Down      : /facility/dg_slave_status : Active  : 0

 

Data Collection:

Every decision taken today is powered by the data. The perfect decision making needs a lot of time series data. This mandates the need for collecting data from the edge device for every second or minute based on the device.

IoT Simulator can be configured to send data continuously to the broker and the interested server every second. Health care requires health data to be recorded and sent every second. Let us now simulate a device that records and sends data every second. This needs to be done in the publisher.data

# Client_name      : Time : operation :    Topic name   : Message  : Qos : Retain

Heartbeatsensor : *|*|* : publish          : /health/HBR   :        72        : 0      : 0

Every second is the most possible time interval for sending data.  Time can be configured in a very much of a flexible pattern  to send every minute or every hour or particular minute of every hour or particular second of every minute and more.

IoT Device Actions:

Sensors mostly work on the data collection. But these data needs to be processed and the necessary action need to be taken. The IoT Platform gives you the flexibility to aggregate and process the data. The inference from this data can trigger messages to the edge devices which can trigger actions at the edge.

For example a water level sensor and a water pump switch can be taken as an example of how we can sense data as well as take actions. In this scenario, the water pump needs to be started when the level is low and needs to be stopped when the water level is high. The water pump will also publish the current status once the the status changes. We can configure this in the response.data

# Client Name  :    Request Topic          :   Message      :  Response Topic           : Message : Qos

Water_Pump  : /facility/water_level  :   LOW             : /facility/pump_status : STARTED : 0

Water_Pump  : /facility/water_level  :    HIGH          : /facility/pump_status : STOPPED : 0

To make this work, the publisher.data can be configured to send the status of water level as  LOW and HIGH alternatively.

# Client_name : Time   :operation :       Topic name             : Message : Qos : Retain

Water_Sensor : *|29|* : publish     : /facility/water_level :   LOW      :    0   :   0

Water_Sensor : *|59|* : publish .   : /facility/water_level :   HIGH     :    0   :   0

Hope this article helped you simulate your own IoT Device using the IoT Simulator.  Do feel free to write to us if you need any assistance with your device. We do have a few advanced options like Intercepting and customisation of messages and API Control which we will talk in detail in our next article.

Download the IoT Simulator for FREE now to create your own simulated IOT devices.

Download IoT Simulator

Do feel free to write to us your feedback and queries using the contact page

  • IoT Gateway

Bevywise IoT Gateway – Security, Bridging & more

By |July 4th, 2017|


The IoT Gateway that comes inbuilt inside the MQTTRoute has been enhanced to be more secure and interoperable with other platforms.

Secure your devices:

IoT mandates every device and sensors need to be connected to the central platform for sending and receiving messages. The IoT Gateway isolates the devices behind the firewall to be isolated from the internet. The gateway acts as an intermediate devices to transfer messages between the edge devices and platform. We do support aggregation of messages and transparent transfer of messages.

Works with Any IoT Platform:

As the communication between the IoT Gateway and the central platform is via MQTT, the IoT Gateway can work with any platform like Azure Iot , AWS IoT , Google Cloud IoT Platform and more that listens and accepts MQTT connections.

Support for Devices & Bridging:

This version add support for accepting MQTT Devices in addition to previously supported sensors. The devices can connect via MQTT to the gateway. This helps the IoT Gateway to act as a bridge for the local MQTT devices.

Bluetooth support for Sensors:

We have added support for the Bluetooth connectivity for the sensor devices. You can now connect your edge sensors to the IoT Gateway via Bluetooth.

Data Encryption:

We are more concerned about the security of the data that is being transferred at all times. We support the SSL encryption for all the data sent over the network from the edge devices to gateway to the IoT Platform. You can use your own certificates by doing the necessary configuration to enable the secure communication.

The gateway can run on the Raspberry Pi and can be customized to store data locally and a User interface to manage local devices. In addition, the IoT Gateway can run on Windows, Linux, and Mac.

 

Grab your FREE version of  MQTTRoute Now.

Download MQTTRoute

 

If you are planning to deploy millions of devices which need to be managed and automated, do try our IoT Platform.