1.0  Brief Description Last updated: 2020-03-16

The smart device is an ESP8266 based hardware with a powerful WiFi. The device has an AC-To-DC power supply onboard. It can also take a 12V power instead of an AC power. The device has one relay with NO, NC and COM available at its connector. The relay pins are rated 240VAC/10A. So, it can be used to put ON/OFF AC source as well. In addition to this, the device has one solid state switch rated at 12V/40V, with a current rating of 500ma. This can be used to operate any external relays, solenoids or anything similar. The device also has internally operated Buzzer and LEDs. This smart device also has two digital inputs (D6 and D7) and one analog input Vin. D6 and D7 can be used to read any ON/OFF signals such as limit switches, motion sensors and so on. These can also be used to read digital data from temperature/humidity sensors, ultrasound sensors and so on. This smart device is compatible with almost all sensors that are available for Arduino. The analog input Vin can be in the range of 0 through 3.3V. The device also has a Reset button and a Factory-Reset button

Fig 1: IOT Device Architecture.
Fig 2: Smart device's Connectors.

This smart device is a part of our IOT system which has an architecture as shown in Fig.3. The device comes with a firmware pre-programmed. Firmware can be updated online. To use this smart device to monitor sensors, and/or to activate equipments and external devices, no programming is required. Everything can be done by configuring on our web interfaces.

Our IOT system comes with an app for smart phones. The ports of these smart devices can be activated either by scanning its QR Code/NFC Tag or by pressing a button on the smart phone or using Google Home Assistant or Amazon Alexa. And, for those hobby enthusiasts who want to write their own program without using our IOT system, we provide a programmer board that can be used to connect this to the USB port of a computer. Arduino IDE can, then, be used to program this. (Note: We do not recommend this for normal users as it is not required for normal users of our IOT system).

Fig 3: IOT Device Architecture.

2.0  Installation

This smart device can be purchased either from eBay or from Amazon. It will be available through other sources in the future. Search for WifisecureAccess in eBay or Amazon.


Buy Now

Note: If you have purchased a dedicated garage door controller (hardware version 0), instead of seeing this documentaion, click here to see its detailed documentation.

Once you receive the device, you need to execute the steps described in this section of the documentation to set its WiFi and take its ownership and to configure for use. In a nutshell, the initial steps to install the device are as follows:

Instructions in Brief (Quick Setup):
    • Install wifisecureaccess app on your smart phone. Then click on Admin Dashboard and create a new account, if you have not registered with wifisecureaccess.com yet. (Section 2.1)
    • Open the device box and connect power to it. Then, switch the power on (Section 2.2)
    • Set the hotspot on your smart phone to have ssid = MyPhone and password = 12345678. Then turn on the hotspot (Section 2.3). Make sure that the Hotspot stays ON and does not time out.
    • Press Scan QRCode tab on the wifisecureaccess app on your smartphone and scan the QRCode label on the box of the device. Then follow the prompts to take ownership of this device. (Section 2.4)
    • Once the above step is successfull, press 'Set WiFi' tab under Device Admin in dashboard and change the ssid and password to your home rourer's. (Section 2.5)
    • You can now put off the hotspot of your smart phone.
    • Then, press 'Show Device Details' under Device admin in dashboard. Then press 'Device Information'. Check firmware version. If a new version is available, there will be an orange button on the Firmware Version. If yes, click on the orange button to upgrade its firmware. (Section 2.7)
    • Next, press 'Configure Device' under 'Device admin' in dashboard and change the name of the device to whatever you like. If you are using it for a garage door opener, add a word garage in its name. If you are using it for a door opener, add a word door in its name. Or, if you are using it for a gate opener, add a word gate in its name. (Refer Sections 6.0, 6.1 and 6.2)
    • If you want this to be enabled in Google Home or Alexa, press 'Configure Ports' under Device Admin. Then set 'Yes' to "allow DOUTP0 in GoogleHome' or 'Allow DOUTP0 in Alexa' or 'Allow RELAY in GoogleHome' or 'Allow RELAY in Alexa' depending on which port is used. (Refer section 2.9, 2.10, 2.11 and 2.12)
    • a
    • To allow others to use this device, refer Section 4.0
    • The device is now ready to use. If you are using this for access control, connect the device to the actuators. Depending on what you want to use this device for, follow the appropriate section of this documentation

2.1  Setting up the App on your Smart Phone

If you have not downloaded the wifisecureaccess app yet, please download it to your smartphone now. Search for wifisecureaccess in either Apple Store or Google Play store.

App Store Icon Google Play Icon

Once downloaded, open the app and press Admin Dashboard. It will prompt you to enter your username and password to login. If you have not registered yet with https://wifisecureaccess.com, press 'Create NEW Account' button on this page and register.
Fig 3A: App's opening page

Fig 3B: Login Page

Fig 3C: Register (Create a new account)

Follow the prompts and instructions. It needs your email address and telephone number as well as a password. Telephone number is optional. Password must have at least 8 characters (maximum 20 characters) and it must contain at least one lower case letter, one upper case letter, one numeric. The system will prompt you for your email verification. The system uses email address as your username. It also uses it to send notifications of events in the device, if you have configured the device to send you notifications.

The other two fields "Enable Two Factor Auth' and 'Timezone' will be defaulted to 'No' and 'US/Pacific' respectively. You can enable Two Factor Authentication by selecting 'Yes' for this field, if you want to. When selected 'Yes', a confirmation code will be sent to your email whenever you try to login. This is an additional layer of security for your account. The timezone is your timezone. Select it from the pull-down menu. The default is US/Pacific. Setting this to your timezone will help the system display the times of all your activity in your local time. All these parameters can be changed any time later by clicking 'My Profile' under 'User Admin" in the Dashboard.

If you are using a smart phone to register, you will see a page similar to Fig 3D. Or, any time in the future, if you open the app and click on the Admin Dashboard, the same display will be shown. You will notice that all the admin menu is collapsed. To see the admin menu, click on the three lines at the top right corner of this page as shown in Fig 3D and 3E.
Fig 3D: Dashboard Menu on Smartphone (collapsed)


Fig 3E: Dashboard Menu on Smast Phone

2.2  Setting up the Device

Once you have purchased a device, you need to power it on, assign its ownership and set its WiFi, as an initial setup as per the steps described here. The device comes to you with its PCB mounted inside its plastic casing. To connect power to it, or to connect anything to this device, you need to open the box and connect cables to the appropriate connectors. Begin the installation process by connecting power to the device, so open the box by unscrewing the four mounting screws as shown in Fig 4.

Fig 4: Device's Casing.
Fig 5: Connecting Power to the Device.
Fig 5A: Power Selector Jumper PJ1.
If you are using 12V power, connect 12V to connector J1. Make sure that positive is connected to positive and ground to GND of that connector J1. If you are using AC power (110V or 240V), connect phase (Line) to any one of the two terminals of J4, and neutral to any one of the two terminals of J3. Note that connectors J3 and J4 have two terminals each. Do not accidentally connect Line and Neutral to the same connector. Take precautions. See the correct cabling in the Fig 5 shown above. After connecting the power, you need to select the power source by using the jumper PJ1. If you have connected AC power, set PJ1 to AC by putting the jumper between the middle pin and the pin marked AC. If you are using 12V power, set PJ1 to 12V by putting jumper between the middle pin and the pin marked 12V. Then, put the power on at the wall switch.

If power cabling is correct, you will notice that the LED either blinks Blue or stays at Blue. This indicates that it is trying to connect to WiFi. It will stay in that state until it connects to WiFi.

2.3  Initial Connection to WiFi

If this is a brand new device, its WiFi has been factory reset to the following:

So, when the device is powered ON, it is trying to join this WiFi. Therefore, in order to initially connect to WiFi, you need to setup a mobile hotspot on your smart phone temporarily to this SSID and password so that the device gets connected to internet which will enable you to change its WiFi. Note: (The device is not capable of 5G and so, WiFi must be 2.4G.)

If you are using iPhone, change its Personal hotspot WiFi settings to match the above and put Personal hotspot ON. To change your iphone's SSID, you need to change the name of your phone to MyPhone. This can be done in settings → General → About → Name. To change password, Settings → Personal Hotspot → Wi_Fi Password. Once changed, click on Allow Others to Join so that your Personal Hotspot is ON with this SSID and password.

If you are using an android phone, go to settings → Tethering and Mobile hotspot. Then click Mobile hotspot. Then click on the three dots at the top right and click 'Configure hotspot'. Then change the ssid and password of your mobile hotsopt to 'MyPhone' and '12345678'. Note: If your smartphone is capable of 5G hotspot as well as 2.4G, make sure that 2.4G is selected as the device is not capable of 5G. Also, check the Timeout settings of the hotspot. Set it such that it does not timeout too soon while you are using Hotspot. You can set it to Never time-out. After setting it, switch on your mobile hotspot (in the previous menu).


Once the personal Hotspot is ON, put on the device, if it is not already ON. You will notice that the device will join that WiFi and connect to internet. You will see in a few seconds that the LED changes colour to RED, and staying RED. If that is not happening, make sure that your personal Hotspot is configured correctly and that it is ON. You may repeat factory reset of the device as per section 2.6 of this documentation, if the device is not connecting to wifi. You may keep in mind that the factory reset button must be held pressed until the Blue LED starts flashing after resetting.

If the device is still not joining WiFi, ask for help by contacting contact@wifisecureaccess.com.

2.4  Taking Ownership of the Device


There are two ways in which you can take the ownership of a new device that you just bought. One method is by scanning the QRCode of the device using your smartphone, and the other method is by using a browser on a computer. Before you proceed, make sure that you have turned on the device and it has joined the WiFi of the Hotspot of your smart phone, as explained in the previous section of this documentation.

In the first method. open wifisecureaccess app on your smartphone and go to Scanning page and press Scan QRCode button. The camera will come ON. Scan the QR code of the device. The QRCode is on the label pasted on the box. Then follow the prompt. You will be prompted to confirm the buzzer sound as well as the color of the LED a few times to make sure that you have this device in front of you, having connected to internet. If everything is correct, it will assign the ownership of this newly bought device to yourself.

For the second method, open https://wifisecureaccess.com and click on Dashboard. If you are already logged in, you can see a tab "Take Device Ownership" in the sidebar menu. If this is your first device, you will see that on the main page as well. Click on that, and follow the prompt. After getting the confirmation that the device is turned on and connected to internet through its WiFi, you will be prompted to enter the QRCode of the device. Follow the rest of the prompts. If you respond to all the prompts correctly, the ownership of the device will be assigned to you and a popup window will appear confirming it.

Fig 6: Intial page view.

Once you have taken ownership of the device, your main dashboard page may look like the one shown in Fig 6A. And, if you expand the dashboard menu, you may see several otions as shown in Fig 6B.

Fig 6A: Dashboard view when you own a device

Fig 6B:Dashboard expanded menu when you own a device

Once the ownership is transferred, click on Home/industrial Automation Dashboard menu. Then click on My Devices in Automation. You will see your device listed there. If you have more than one device, all of them will be listed there. Once the device is assigned to you, nobody other than you will be able to configure it. In the later sections of this documentation, you will learn how to allow others to use this device. You will also learn how to configure this for your specific needs and how to use it.

2.5  Setting WiFi of the Device

In the dashboard menu, click on 'Devices Admin' to expand that menu. Then click on 'Set WiFi'. It will take you to a page where it will prompt you to enter the SSID and password of your WiFi. Make sure that the WiFi is 2.4G and not 5G. The device is not capable of 5G WiFi. Once entered, click Submit. If successful, you will see the device restarting, the led blinks blue and then changes to steady Red. The device is now set to go and ready for use.

If you accidentally entered wrong ssid or password, or if the device is not getting connected to WiFi after setting the ssid and password, you may have to do a factory reset as per the steps given below in section 2.6 of this documentation.

Fig 8: Setting WiFi of the Device.

The device will remember the WiFi that you set and will join that WiFi hereafter whenever power cycled or reset. At this time, you can switch off the mobile hotspot on your mobile phone. You can change your smart phone's name and WiFi password to whatever they were initially. After switching off the hotspot on your mobile phone, try resetting the device by pressing the reset button on the device. If everything is set correctly, the device will restart and join the WiFi. You will see LED blinking Blue while trying to join WiFi and then turning to red when joined WiFi and connected to internet and the cloud server.

If this is not happening, there is something wrong either with the ssid and password that you entered, or with your internet connection through WiFi. Make sure that the ssid and password that you se are that of a 2.4G wifi and not 5G. Make sure that your router has internet connection. If anything has gone wrong, do a factory reset of WiFi as per the steps in section 2.6 of this documentation, and then try to set WiFi again.

2.6  Doing a Factory Reset of WiFi

If need arises any time when the device is not connecting to the WiFi because of some issues with the WiFi of your router, you can do a factory reset of the WiFi of the device. Factory reset will change the WiFi of the device to ssid = MyPhone and password = 12345678. To do a factory reset, press and hold SW2 (Factory Reset button). While holding it, press and release SW1 (Reset button). Keep holding Factory Reset button until the device restarts and LED changes to flashing blue. At this moment, the ssid and password of the device has been reset to 'MyPhone' and '12345678' respectively. In other words, the device is now listening to join a wifi with ssid = MyPhone and password = 12345678. Now, follow the steps given in section 2.3 to connect to the device. Once connected, follow the steps in section 2.5 to set its new WiFi.

2.7  Initial Minimum Configuration of the Device

Once the above steps are completed, click on Home/industrial Automation in the dashboard menu. Then click on My Devices in Automation. You will see this device listed there with its name as its mac address. If you have more than one device, all will be listed here.

Fig 9: Devices List.

Click on any device. It will show the details of that device. You will see its three output ports (P0, RELAY and BUZZER). It will show whether the output ports are currently ON or OFF. If it is ON, you will see a green circle with a check mark. If it is OFF, you will see an orange circle with a cross mark. You can toggle its state by clicking that circle. This, thus, shows how you can put a port ON/OFF from remote without doing any additional configurations.

Fig 10: Device Details.

Now, click on Sensor Value on this page. You will see three sensors listed here: D6, D7 and Vin. You will also see the current values sensed by these inputs. D6 and D7 are initially ON/OFF inputs. If you apply a 0 volts at the connectors of D6 or D7, you will see this display as OFF (reverse logic) , and if you connect 3.3V (or, if nothing is connected), you will see it displaying ON. In the later sections of this document, we will describe how special sensors such as temperature, humidity, ultrasound and so on can be connected to these.

Fig 11: Device Details.

Now, click on Device information. It will display all the details of this device such as its mac address, QRCode, NFC TagID, name of the device, firmware version, device owner and so on. On the firmware build as well as firmware version tabs, it will show you the current version and the latest version available. If the firmware is not up to date, you will see an orange button to click on to update its firmware.

Checking and Updating Device Firmware

We Strongly recommend updating the firmware to the latest by clicking the link on this page, if it shows new firmware is available


Fig 12: Device Details.

There are several parameters of the device that are displayed in the Device Information (Fig 12). These are all for information. You mau have a close look at all of them. Number of reconnects in this is the number of times the device lost connection to the server since the last reboot. If you see a higher number here, that indicates a weak wifi, or some frequent issues in connecting to internet.

You can change the name of the device as well as the labels of each port, if you prefer. To change the name of the device, click on 'Configure Device' under Device Admin on the left side bar menu. It will present a form similar to Fig 13. If you are using this for access control, add the word 'Door', 'Gate', 'Garage', 'Lock', or 'Parking' in the name depending on where this is used. You will learn later in Secion 6 that this will help the device autoconfigure itself for Door, Gate or Garage. Otherwise, you can Change the name of the device to anything you like and click Submit. We recommend that you also change the timezone to the time zone where the device will be installed. By default, it is UTC. Click here to know the format of different time zones. Unless you change it to your timezone, all dates and times will be displayed in UTC.

Fig 13: Configure Device.

The names of the ports are also changeable by clicking on 'Configure Ports' under 'Device Admin' in the Dashboard menu. Fig 14 is the form that will show up when clicking 'Configure Ports". Note: We recommend not changing these labels now. You can do this later when you start using these ports for controlling external devices such as 'Door', 'Garage' etc.
Fig 14: Device Labels.


2.8  Activating a port using WiFisecureAccess app on the smart Phone

Once the device is installed and ports are configured, you can activate the ports in one of several ways: 1) Using the wifisecureaccess app on the smartphone, 2) by scanning the QRCode or NFC tag of the device, 3) Using Google Home assistant on your smart phone, 4) Using Amazon Alexa, or 5) Making an HTTPS POST call from any of your other applications or programs. In the following sections of this document, you will learn how to use all these different methods.

To activate a port using the wifisecureaccess app, download the app on to your smart phone. Search for WiFiSecureAccess app in Google Play store or Apple Store. Once downloaded, open the app and press "activate a Device" button in the home screen. That will display all the devices owned by you (similar to Fig 9). Press the icon corresponding to the device you want to activate. If the device has been configured to operate a door, garage, or gate or a lock, it will activate that immediately. In the later sections of this document, you will learn more about the various types of configurations of a device. If the device is configured for Automation and Controls, it will open up a page similar to Fig 10. Then, you can press the port name to activate any port of that device. Any click on these buttons toggles the state of that port. If it is currently ON, pressing the button will put that port OFF. And, if it is currently OFF, pressing the button will put that port ON.

Note: As mentioned earlier in this documentation, everything that can be done by the wifisecureaccess app on a smartphone can also be done using a browser on a computer, except scanning QRCodes and NFC tags. So, you can activate a port from a browser by opening the https://wifisecureaccess.com and pressing Dashboard. On that page, you will see a link "Activate a Device". When you click that link, it will take you to the same page that you saw on the smartphone listing all your devices. So, by pressing the name of the device, you can activate the device from a browser.

2.9  Activating a port by scanning either QRCode or NFC tag of the Device

As you know by now, by default, each device has been assigned a unique QRCode, and is pasted on the box of the device. You can also view and print its QRCode at any time by pressing Device Admin → Show QRCode Label in the dashboard menu. You can also change the QRCode of any of your devices in the 'Configure Device' menu (Fig 13). You can also delete the QRCode, if you do not want to use QRCode.

To activate a port of a device using QRCode, you can scan this device using wifisecureaccess app. Open the app, go to the scanning page and press Scan QRCode. The camera will become active, and now scan this QRCode. That will take you to the same page similar to Fig 9. There, press the name of the device to activate that device/port. If you are using this device for access control, scanning the QRCode or NFC tag will activate that device (More about access control will be seen on section 6 of this documentation).

It is also possible to assign a unique NFC tag to a device.

If you find a need to use NFC tags instead of QR codes, you can do so by purchasing NFC tags and associating it with the device. We support only Mifare Ultralight 14443-3A type of tags which has 7 bytes of UID. These are very inexpensive tags that you can buy from anywhere. These tags come as stickers as well. Given below is an example link to buy from Amazon. This is just an example. If this link is not available, or if you would like to use a different type, search for a similar item in ebay or Amazon. These NFC tags are available in different type of shapes and packaging. You can use the type you like so long as it is Mifare Ultralite with 7 bytes of UID.

Buy Now

To associate an NFC Tag with your smart device, open the app and press 'Scan NFC Tag' and scan the tag that you purchased. If this is a new tag and if it is not associated with any other device within our system, you will be taken to a page prompting you to select one of your devices to associate this tag to. The pulldown list will contain all the devices you own (all those devices that are powered on). iIf you have only one device with garage door, you will see only that in the pulldown menu. Select the device that yiou want to associate this NFC tag to. Next, if this device is used in access control, and if this is used for entry as well as exit, yoiu will see another option 'Exit Tag'. Choose 'Yes' if you want associate this with Exit tag, or choose 'No' if you want to associate it with the main entry tag. Press Submit button after completing the selection. If entry is correct, this tag is now associated with this device. Now, if you scan it again, it will take you to the Device details page (Fig 10), if this device is in Automation mode; or will activate the port if the device is configured for Door, Garage Door and so on.

You can fix the NFC Tag and/or the QRCode label at any convenient place to access this device. When you use this device for access control of a door, for example, you may want to fix this tag or QRCode label on the outside of the door.



2.10  Using Google Home assistant to activate a port of your device

WiFisecureAccess devices are compatible with GoogleHome, and, therefore, you can use Google Home assistant to operate the equipments connected to these devices. Ports P0 and Relay of each device is disabled (by default) to be discovered by Google assistant. To make sure that these ports are enabled, click on 'Configure Ports' under Device Admin in the dashboard. You will see a page similar to Fig 14A.
Fig 14A: Enabling Google Home assistant

On this page, make sure that 'Allow DOUTP0 in GoogleHome' is set to 'Yes', if you want this port to be activated using Google Assistant. Similarly, make sure that 'Allow RELAY in GoogleHome' is set to 'Yes', if you want the relay to be activated using Google Home assistant. If you do not want to use Google Assistant to activate any of these ports, set them to 'No' and press Submit button.

If these ports are enabled to be discovered by Google Assistant, you can discover these ports in Google Assistant. Press + button in Google Home to add devices. Then press 'Set up device'. Then press 'Have Something already set up". On that page in Google Home, search for WiFiSecureAccess and select it. That will discover all the allowed ports of all your allowed devices.

Fig 14B: Google Home Page

You can now rename these whatever you would like to. Hereafter, you can say 'Hey Google, turn ON *name of the port*'. That will switch on that port. If the device is in access control mode, you can say 'Hey Google, Open *name of that device*'. That will open that door or gate. Note that you can change the name of these ports in the "Device Configuration" menu (Fig 13) in WiFiSecureAccess dashboard, and/or within the Google Home. The name in Google Home need not necessarily be the same as that in the configuration within the dashboard of wifisecureaccess.com.


2.11  Using Amazon alexa to activate a port of your device

The ports of the smart device can also be activated using Amazon Alexa. You may download and install Amazon Alexa on your smart Phone. In Alexa, press 'more' and then click on 'skills and games'. Now search for wifisecureaccess, then enable that skill. When enabling the skill, it will take you to Wifisecureaccess.com and will prompt you to enter your email and password. this is your password for wifisecureaccess.com. If the entered credentials are correct, you may press Discover Devices. That will discover all the wifisecureaccess devices that you own.

You can choose which device and which ports of that device are allowed to be discovered by Alexa. By default, all ports of all your devices are disabled to be discovered by Alexa. To change them, go to the dashboard of wifisecureaccess.com. (https://wifisecureaccess.com/access/index). Then, press 'Configure ports" on the side menu bar of the dashboard. You should now see a page similar to Fig 14C.
Fig 14C: Enabling Ports to be discovered by alexa

On this page, select 'Yes' for "Allow DOUTP0 in Alexa" if you want DOUTP0 port to be discovered by Alexa so that you can use Alexa to activate that port. Similarly, select 'Yes' for "Allow RELAY in Alexa" if you want RELAY port to be discovered by Alexa. Press Submit after making the selection(s). Then, login to Alexa on your smartphone and discover ports as you did before. If all settings are correct, you should be seeing these ports discovered in your Alexa application on your smart phone. You can now use to activate these ports by saying, for example, "Alexa, turn on XYZ", where XYZ is the name you have given the port. Similarly, to turn the port OFF, you can say "Alexa, Turn off XYZ". All the features of Alexa are now available to you for managing the equipments connected to this smart devices.

Note: The name that you see in Alexa once the port is discovered depends on the configuration mode of the device. If you have configured these devices to operate a Garage, Door, Lock or Gate, the name that you see in Alexa is the name of the device. On the other hand, if you have configured the device in Automation, then the name you see in Alexa is "device name + port name". For example, if you have enabled both DOUTP0 and RELAY to be discovered by Alexa, you will find two devices in Alexa. The first device will be named "device name + the label of DOUTP0" and the other will be "device name + the label of RELAY". For example, if you have named the device as "Kitchen", and DOUTP0 as "Light" and RELAY as 'Fan', then the names that you see in Alexa will be 'Kitchen Light' and 'Kitchen Fan'. And, if the device is configured to control Garage, Door, Gate or Lock, then you will see only one device name for each smart device and that name will be the name of the device.

2.12  Activating a port with an HTTPS POST call

You can also activate a port of a device from any of your other application programs using an HTTPS POST call. This helps integrate the WiFiSecureAccess system/devices with your other application programs. Only the relay port can be activates using this method. This feature also helps the developers to integrate this with their programs.

To activate a port of a device, make an HTTPS POST call with the following details:

POST HTTP/1.1
Host: wifisecureaccess.com/devicePortsJson/
Content-Type: application/json
data = { "email": your_email, "password": your_password, "device_name": device_name, "action": action, }

Refer to Section 11.0 of this documentation below to see more details about this and to see a sample python program.

2.13  Enabling Two Factor Authentication (2FA) on any port

If you are using this device to activate any secure device such as a secure door, you can also enable 2FA on that port. To enable 2FA on any port, click 'Configure Ports' under Devices admin in the dashboard, just like the way it was done when enabling GoogleHome. You will see a page as in Fig 14D.
Fig 14D: Enabling 2FA on Ports

On that page, you will see two fields: 'DOUTP0 Secure Port' and 'RELAY Secure Port'. By default, these are disabled. If you want google home to ask you for your pin when trying to activate any of these ports, set this to 'Yes' and press Submit. Once set to Yes, whenever you tell Google assistant to, activate that port (such as 'Hey google, Open Door'), Google Assistant will respond 'Can I have your pin?'. If you are activating this port by scanning QRCode or NFC tag or by pressing 'activate' button on your smartphone, the system will prompt for the pin before it will activate this port. You will have to enter your pin correctly to open the door. Your pin can be seen under your profile (click My Profile under User Admin in dashboard to see it). By default, the pin is 1234. you can change it to anything you like. This 2FA is an extra layer of security to make sure that nobody else other than the authorized person can activate this port. Note: The above method of 2FA will not work with Alexa. For 2FA in Alexa, you need to set it in Alexa itself. Refer to documentation on Alexa for setting pin codes for Locks and Doors.

2.14  Configuring Notifications

Notifications can be sent when some conditions are met. Those conditions could be when a door stays open for a long duration. Or, if you are using it for instrumentation/control/automation, it could be when a sensor senses a specified value. If this is used in access control mode, in order to send notifications, you need to install the magnetic sensor on the garage, or gate, or the door and cable it to the smart controller as explained in the Access Control section of this documentation.

To configure notifications, click on "Configure Device" under Device Admin in the dashboard menu. That will open a page as shown below.

Fig 14E: Configure Notifications

On this configuration page (Fig 14E), you can set the fields for sending notifications. Notification Email field shows the email address to send email notifications. By default, this is set to the email address of the owner of this device. You can change it to any other email address, if you want. If this email field is left blank, no emails will be sent.

The fields Notification Webhook URL is the URL of your webhook to which a call will be made when conditions are met to send notifications. Webhook key/token is the key or the token of your webhook. You may enter those in these two fields, if you are interested in making such calls to send notifications. If the Webhook URL is left blank, it will not make any such calls to webhook URL. The call is an HTTP POST call with the key token in the header ('Authorization': webhook_key), and with some data in the body in JSON format. The data will have the device name, sensor_name, current value of the sensor, and a message. The following is the type of call that will be made:

HTTPS POST call
url: The Notification webhook URL configured
headers = {'Authorization': webhook_key, 'Content-Type': 'application/json', 'Accept': 'application/json',}
data = {"controlDevice": control_device, "sensorDevice": sensor_device, "sensor": sensor_name, "message": msg_webhook, "currentVal": current_value, "limitSet": limitVal, "msg_code": msg_code}
requests.post(notification_webhook, data=json.dumps(data), headers=headers)

If you are using this for access control devices, the notifications have to be enabled by selecting the sensor in its autocontrols. To do that, click on Configure Auto Controls under Device Admin in the dashboard menu. That will show you a page similar to the following.

Fig 14F: Enabling Notifications

If you want email or webhook call to be sent when the garage stays open, click on 'Input Port' iin the last row of this page and select 'D7 ON/OFF'. Then set the delay time. This is the time it will wait to send notifications or to sound buzzer since the garage was opened. If you want the notifications to be sent periodically when garage stays open, you can also set the 'Repeat Time Period' in seconds.

Selecting 'Input Port' as 'None' will disable that notification.

In the "Access Control" section of this documentation, you will find further explanation of enabling notifications for accees control devices.

3.0  Connecting External Equipments and Sensors

In this section, we will describe how external equipments and sensors can be connected to this smart device.

3.1  110/240V Electric Appliances

One can connect any 110/240V electrical appliance to this device so long as its current rating is 10A or below. If your electrical appliances have higher current rating than this, you may use an external relay and connect that relay's coil to the solid state switch of the smart device, similar to connecting a solenoid as explained in section 3.2 of this document.

Fig 15 through 16B show how to connect a 240V electrical bulb to the device. With this connection, the device will behave like a smart plug. But, please keep in mind that this device is not a plug and play type DIY device. One has to wire the electrical appliance to this device.

Fig 15: Cabling of External 110/240V loads to Smart device

You can make a smart plug out of this smart device by cabling as per the Fig 15A through 15C.
Fig 15A: Making a Smart Plug out of the Smart Device

Fig 15B: Making a Smart Plug out of the Smart Device

Fig 15C: Making a Smart Plug out of the Smart Device

Or alternatively, you can wire the electrical appliance directly to the smart device as per Fig 16A through 16C.


Fig 16A: A sample of direct cabling of a high voltage equipment through relay

Fig 16B: A sample of direct cabling of a high voltage equipment through relay


When connecting 110V or 240V to the device, make sure to put the jumper on PJ1 to select AC as the power source for the PCB. Refer to Fig 5 to locate PJ1. Once all the cabling is done, close the box of the device and and switch on power. You will be seeing the device comes on and LED changes from blue to red wnd staying red indicating that the device is active.

Now, on the browser (or in the app on smartphone), click on 'Show Device Details' in the left menu bar under Device Admin. If you own more than one device, you will be prompted to select a device. If you have just one device, it will take you to a page with the details of this device. You will be seeing a page similar to Fig 10. You will be seeing the Relay with a red cross mark. Click on that. You will see the relay is put ON and the 240V/110V electrical equipment comes ON. Click on the button again to put off the electrical equipment.

As we described in section 2.8 through 2.11 above, there are four ways of operating this electrical equipment connected to this smart device. If you are using this within a house and would like to operate this using Google Home assistant, or Alexa then you can discover this in the google assistant or Alexa now. It is recommended to name the ports as per your choice. It is also recommended to disable P0 port of smart device as you are not using it when used it as a smart plug. Refer to Fig 14A and 14D for disabling/enabling ports for Google assistant and Alexa. The steps are given in section 2.8 through 2.11.

This is just an example to show how the 240V/110V cabling is to be done. In the later sections of this documentation, you will learn how electrical equipments can be controlled automatically, and how to allow others to operate this device.

3.2  Connecting a Solenoid

Depending on the voltage and current rating of the solenoid, there are two different ways of cabling a solenoid to the smart device. If the current rating of the solenoid is less than 500ma, and if its voltage rating is 12V, then the internal power from the smart device can be used to power the solenoid. Fig 17 and Fig 18 show how to cable a solenoid with current rating of 500ma (or less) and voltage rating of 12V. Cable one terminal of the solenoid to P0 pin on the J9 connector of the device. Connect the other terminal of the solenoid to one of the VDD pins of the same connector. Also, connect the other VDD pin of this connector to 12V pin on connector J2. If you want to connect a solenoid of higher voltage, (but current rating still less than 500ma), solenoid can be cabled to P0 and VDD. But, instead of connecting internal 12V from J2 to VDD, connect positive of an external power supply to VDD. And, connect the GND of the external power supply to the GND (J2 connector) of the smart device.

Fig 17: Cabling of 12V External Loads to Smart device


Fig 18: A sample cabling of a solenoid

If you have a higher power solenoid with current rating higher than 500ma, then you need an external power supply to match the current and voltage rating of the solenoid. If so, do the cabling as per Fig 18A, 18B and 18C. The cabling is done to the RELAY of the smart device. The relay terminals (COM and NO) have 10A current rating. It can take voltages up to 240V.
Fig 18A: Cabling a Solenoid through relay of the Smart Device (Normally OFF)

Fig 18B: Cabling a Solenoid through relay of the Smart Device (Normally ON)

Fig 18C: Cabling a HigherPower Solenoid to Smart Device

The smart controller box can be fitted anywhere, either near or far from the solenoid, wherevever it is convenient. At the location where the smart controller is fitted, it is important that there is power and WiFi. Run the cable from the smart device to the coil of the solenoid.

Once this cabling is done, close the box of the device and put its power ON. On a browser or in the app on smartphone, click on 'Show Device Details' in the left menu bar under Device Admin. Then, click on P0 or RELAY depending on how you have done the cabling. You will notice that the solenoid is put ON. To put it off, click it again.

There are four ways you can operate this solenoid manually, including Google Home assistant or Alexa. We have described this in section 2.8 through 2.11 above. So, follow those steps. In addition, if you are using this solenoid for any automatic controls or as access control to home or business, you may read the appropriate sections in this document. In the sections to follow, we will learn how to configure this for various purposes.

3.3  Connecting ON/OFF type sensors

If we are interested in reading the status of an ON/OF switch such as limit switch or any other sensors such as motion detectors that gives ON or OFF output, they can be connected to our smart device for reading its status and to take any action. An ON/OFF sensor can be connected either to D6 or D7 inputs of the smart device. Refer Fig 19.

Fig 19: Cabling an ON/OFF sensor

Connect the ON/OFF sensor between D6 (or D7) and GND. If it is an ON/OFF switch, connect its one terminal to D6 (or D7) and the other terminal to GND on connector J5 of the smart device. If you have a sensor such as PIR motion sensor, connect the OUT of the PIR motion sensor to D6 (or D7) and connect GND of the sensor to GND terminal of the device and connect 3.3V(VCC) of the sensor to 3V3 pin of the smart device. After doing this cabling, put the device ON. Then on a browser or in the app on a smart phone, click on 'Configure Device' under Device admin in Dashboard. On this window, make sure that D6_type as well as D7_Type are both selected as TWO STATE INPUT ON/OFF. If they are not in that state currently, select them and press submit.

Fig 20: Configure ON/OFF sensor

Then on a browser or in the app on a smart phone, click on 'Show Device Details' under 'Device Admin' in Dashboard menu. Then click on Sensor Values tab. You will see a window similar to Fig 11. The status of the sensors connected to D6 and D7 will be displayed here. If D6 or D7 is at 3.3V, it will display as OFF, and if it is at 0V, it will display as ON. If nothing is connected to D6 or D7, it will display as OFF (reverse logic).

In the later sections of this document, we will learn how to use these sensor inputs for controlling any output ports or equipment connected to this device or any other device sitting remotely. We will also learn how to read these sensors and log the data periodically.

3.4  Analog Inputs

Any sensor which gives an analog output can be connected to this device. Connect the anlaog output of the sensor to the Vin pin of connector J5 of this device with ground connected to GND. Please note that the voltage range of Vin is 0 through 3.3Volts. So, the analog output must be in this range. If not, you will have to modify the analog output using external circuits to convert the range between 0 and 3.3 Volts.

Once connected, click on 'Show Device Details' in the left menu bar under Device Admin. Then under Sensor Values, you will see the actual voltage sensed. Note: You can do a linear scaling of this analog input by changing the slope and intercept parameters of Vin. To do that click on 'Configure Ports' under Device Admin in the left menu bar. That will open up a page similar to Fig 14 (in section 2.7 of this documentation). There you will see two parameters ('Vin0 Intercept' Factor and 'Vin0 Slope' Scaling Factor). By default, they are set to 0.0 and 0.00322265625 respectively. The actual values read by the analog to digital converter is between 0 to 1024 for a voltage range of 0 through 3.3V. These intercept and slope are set such that the displayed values are the actual voltages. You can change these to anything you want to display different scaled values, if you prefer.

Fig 21: Cabling Analog inputs


In the later sections of this document, we will learn how to use this input for controlling any output ports or equipment connected to this device or any other device sitting remotely. We will also learn how to read these sensors and log the data periodically.

3.5  Ultrasound Sensor for Distance Measurement

The device can be used to read HC-SR04 Distance Transducer Sensors. These sensors are low-cost sensors which are readily available in the market. You will find them on ebay and amazon. Here is a link from Amazon.
Note: This is just one link to show the type of sensor. We are not recommending to buy this. You can search and buy this from any supplier of your choice.

(If this link is broken, search for HC-SR04 in Amazanon.com)
Buy Now

Figure 22 shows how to connect this ultrasound sensor to the smart device. Use connector PJ3 on the smart device. This connector has four pins (GND, D1, D6 3V3). Use a flat cable to connect D1 to i'Trig', D6 to 'Echo', GND to GND and 3V3 to VCC as marked in Fig 23.

Fig 22: Cabling Ultrasound Sensor


Fig 23: Ultrasound Sensor

Once connected, click on 'Configure Device' in the left menu bar under Device Admin in Dasboard. Then select USOUND to 'YES' and D6_Type as None as shown in Fig 24. Then press Submit.

Fig 24: Configuring Ultrasound Sensor

Now, you can see the distance read by the ultrasound sensor on the Device Details page. Click on 'Show Device details' in menu bar in the left under Device admin. Then click on sensor Values. You will see a page similar to Fig 26 with the current value read by the ultrasound sensor under U_SOUND.

Fig 25: Ultrasound Display

Refresh the page again to read again. Move the objects around ultrasound sensor and notice the actual distance measured. You need to refresh the page every time you move the sensor to display the new distance. We will see later in this documentation how all these can be automated to control anything depending on the inputs.

Note: If you are interested in using this smart device for data monitoring and logging, as well as data analysis, you can read this data to your local computer using a json call. In the later section 8.0 of this document, we will provide sample python programs to read sensor values at regular intervals. You can then write your own program to analyse the data the way you want.

3.6  Motion Sensing Device

The device can be used for reading motion sensors and take actions. Low-cost motion sensors are available through Ebay or Amazon. Here is a link from Amazon. Alink to a low cost motion sensor than can be purchased from Amazon is given below, or you may choose any model of any source of your preference as long as its voltage rating is 3.3V. (If this link is broken, search for HC-SR501 in Amazon.com)
Buy Now

Fig 26 and Fig 27 show how to connect this motion sensor to the smart device. This motion sensor has three pins (GND, OUT, VCC). Connect VCC, OUT and GND of this sensor to 3V3, D7 and GND respectively on connector PJ4 of the device. You can also use D6 or D7 from connector J6. Motion sensor's OUT can be connected either to D6 or D7 of the smart device.

Fig 26: Cabling Motion sensor

Fig 27: Cabling Motion Sensor

You can mount the motion sensor either external to the smart device's box, or internal as shown in Fig 27A.
Fig 27A: Mounting Motion Sensor internal to the Smart device

Once cabled, you need to configure the device. Click on 'Configure Device' in the menu bar on the left under Device Admin in Dashboard. Then select D7_Type as 'TWO STATE INPUT ON/OFF'. If you have connected motion sensor to D6, USOUND must be selected as None, and D6 as 'TWO STATE INPUT ON/OFF'.

Fig 28: Configure Motion sensor

Once connected, click on 'Show Device Details' under Device Admin in the menu bar on the left. In Sensor Values, you will see the state of the motion sensor. If motion is detected, and if you have connected motion sensor to D7, you will see D7 displayed as ON. In later sections of this documentation, we will describe how the devices can be configured to take any automatic actions when motion is detected.

3.7  DHT11 Temperature / Humidity sensor

DHT11 temperature/Humidity sensor is a low cost sensor for reading ambient temperature and humidity. This sensor is available to buy. You can search in ebay or amazon or do a google search to source it. Here is a link from Amazon. Note: If this link is not available, search in ebay or amazon for 'DHT11 temperature humidity' sensor.

(If this link is broken, search for 'DHT11 Temperature and Humidity Sensor' in amazon.com)
Buy Now

Connect this sensor to the device as shown in Fig 29 and Fig 30.

Fig 29: Cabling DHT11 Temperature/Humidity Sensor

Fig 30: Cabling DHT11 Temperature/Humidity Sensor

Fig 30A: DHT11 Temperature/Humidity Sensor installed within the box

Now, in order to use this, you need to configure the device. Click on 'Configure Device' under Device Admin in the Dashboard menu. If you have connected the sensor to D6, select USOUND as None and D6_Type as 'DHT11/TEMP/HUMIDITY'. If you have connected to D7, select D7_Type as 'DHT11/TEMP/HUMIDITY'. Then press Submit.

Fig 31: Configure DHT11 Temperature/Humidity Sensor

Once set correctly, click on 'Show Device Details' under Device Admin in the menu bar on the left in Dashboard. You will see the temperature and humidity read by the sensor under Sensor Values.

Fig 32: Display DHT11 Temperature/Humidity Sensor

Note: In later sections of this documentation, we will describe how to configure automatic controls based on these values read. We will also describe how these values can be read periodically into your computer for any analysis.

3.8  DS18B20- Temperature Sensor

DS18B20 temperature sensor can also be used with our smart device. This can be procured through Ebay or Amazon or any other source of your preference. The link given below is an example.

(If this link is broken, search for 'DS18B20 Temperature Sensor' in amazon.com)
Buy Now

Connect this sensor to the device as shown in Fig 33.

Fig 33: Cabling DS18B20 Temperature Sensor

Now, in order to use this, you need to configure the device. Click on 'Configure Device' under Device Admin in the Dashboard menu. If you have connected the sensor to D6, select USOUND as None and D6_Type as 'DS18B20 Temp SENSOR'. If you have connected to D7, select D7_Type as 'DS18B20 Temp SENSOR'. Then press Submita.

Fig 34: Configure DS18B20 Temperature Sensor

Once set correctly, click on 'Show Device Details' under Device Admin in Dashboard menu. You will see the temperature read by the sensor under Sensor Values.

Fig 35: Display DS18B20 Temperature Sensor

Note: In later sections of this documentation, we will describe how to configure automatic controls based on these values read. We will also describe how these values can be read periodically into your local computer for any analysis.

4.0  Allowing Multiple Users

This section explains how multiple users can be allowed to use a device. The owner is allowed to use all his devices all the time regardless of the settings described in this section. This section explains how the owner can allow others to use his devices and how to control and manage their authorization.

4.1  Allowing Others to Use Your Devices

You can allow or authorize the others to use your smart device. To allow someone else to use your device, they have to be registered with wifisecureaccess.com. So, request the other user to register with wifisucureaccess.com. To register, either download the app and open the app and press Admin Dashboard, or go to https://wifisecureaccess.com and click on dashboard in the top navigation bar. When it requests you to login, click on 'Create a New account'

Once they are registered, you add their email address to the Allowed Users group of your device as per the steps below:

First create a Device Group. This can be done by clicking 'Devices groups' under 'Device Groups' in the Dashboard menu.

Fig 36: Configure Device group

This page will display all the device groups that you have created so far. To add a new device group, just enter the name of the group in the bottom empty row and press submit. Make sure that the name that you entered is a new name. You can create as many groups as you need.

Next, click on 'Allowed Users' in the Dashboard menu. If you have created multiple groups, you may be prompted to select a group. You will then see a page similar to the one shown in Fig 37.

Fig 37: Configuring Allowed Users of a Group

In this form, enter the email address of the one whom you want to allow to use your device, and press Submit. If you have several users whom you want to allow, enter the email addresses of all of them, one at a time. You have now created a group of users.

Note: When you added the name of a user in a group, you could add an expiry date as well, if you want. Once an expiry date is addedd, that user will not be allowed after that expiry date. You can also remove any user from this group at any time by checking the delete box against that user's name and pressing Submit.

Next, you can configure your device such that all users in a group are allowed to use a device. To do that, click on 'Configure Device' under Device Admin in the Dashboard menu.

Fig 38: Configuring Devices with Device Group

In this page, select your device group, and press Submit. If all the above configurations are successful, all users in the selected device group are allowed to use this device.

When another customer is allowed to use to use your device, they will see this device in the list of devices they can use. Also, when they click on 'Show Device details', this allowed device will show up. If this device's port is enabled for GoogleHome or Alexa, the allowed users will show this device in GoogleHome or Alexa when they discover wifisecureaccess devices. But, keep in mind that the allowed users cannot change the configuration of a device.

So, if you install this device at an access door to open or close a door, all allowed users will be able to open and close that door. If you have set an expiry date, they will not be able to open or close this door after that expiry date. In later sections of this documentation, you will learn how to install this device as an access controller of a door.

4.2  Configuring Group Entry Controls

It is possible to create entry controls on the members of a device group. For example, if you want to allow the members of a group only between some specific time of a day, you can set the opening and closing times for a group. To do that, click on 'Group entry Control' under Device Groups. This tab will be available only if you have created a group. If you have created multiple groups, you will be prompted to select a group. Once selected, you will see a page similar to Fig 38A.

Fig 38A: Configuring Group Entry Control

On this page, set Opening time and closing time for this group. In the field 'Week' and 'Day', you have multiple options. If you select * for week, it applies this opening and closing times for all weeks of the year. Or, you can select a week that you want this applied to. Similarly, if you select * for Day, it will apply this to all days of a week. If you want this to apply to a particular day only, then select that day. You can also select the email address of a user this control must apply to. Then press submit.

Note: The general rule is that a member of the group is always allowed unless there is an open/close time in this table showing that the group is closed for him/her at that time of the day, on that day of the week of that year. An entry with opening time the same as closing time will mean no entry on that day of that week.

If no rows of controls is present, all users of this group will be allowed all the time, meaning that it is open all day, every week of the year. You can create a special closing and opening hours for a particular user by adding his email address in the 'User Email' field. If no user email is given, that opening and closing hours are applicable to everyone in that group. If opening and closing hours are missing for a user for any day of the week, the rule applicable to all will be used for that user.

You can add as many rows for each user as you want so long as those controls are different from each other. In other words, you can create an opening and closing hours for a user on Monday, another one for Tuesday and another one for, say, Thursday. And, if you leave all other days without specifying any control for that user, the general opening and closing hours used for all members of the group will be applied to this user.

You can also create multiple opening and closing hours within a day

Shown in Fig 38A is an example. In that, the first row is the opening and closing times for everybody on Saturday. The second row is the opening and closing times for everybody on Sunday. And, as the opening and closing time are the same on Sunday, it is effectively closed on Sunday. The third row is the opening and closing time for everyone on all other days of the week. The fourth and fifth rows apply to the user whose email address is given in the 'User Email' field. As per the fourth row, this user will be allowed between 10:00 and 12:00 on Tuesday, even though, all the others are allowed between 8:00 and 17:00 on Tuesdays(as per the third row). And, again, the fifth row specifically says that this user will not be allowed on any other days of the week. So, as special opening and closing times are given for a particular user covering every day of every week of the year, that rule will be applied to that user, and not the general rule. However, if a rule is not specified for a user for any day, the general rule will be applied to him for those days.

If there are no rows present, or if there is only one row with * for week and * for day, with user email empty, that means that it is open all days of the week and all weeks of the year for all the users in that group. In addition to this, you can create special opening/closing hours for each and everyone in the group. They can be either the same or different for each user.

If you do not want to anyone to enter, create a control with opening and closing hours the same. If you want to allow anyone, say, between 10:00 and 12:00 on Wednesady and do not want to grant any access on any other day, create two rows of control. In the first row of control, set opening time as 10:00 and closing as 12:00, week as * and day as Wednesday. In the second row of control, enter any time (say, 10:00) for both opening and closing time and select * for week and * for day. And, if you leave the user_email blank, these two rules will be applied to all those in the group for whom no other special rules are created.

4.3  Creating a New Group by merging members of two other groups

If you have created two groups and you have added members in each group, and if you are interested in creating ai new group that should contain members of both the other groups, you can do so. First create a new empty group by clicking 'Devices Groups' under 'Device Groups' in the dashboard menu. Then click on 'Merge Device Groups' under 'Device groups' in Dashboard menu. You will see a page similar to Fig 38B.

Fig 38B: Merge Device Groups

On this page, select Destination group as the new empty group that you just created. Then, select the first group that you want to add to this in the 'Source Group' field. Then press Submit. Next, repeat the same to add the second group to the same new group by clicking 'Merge Device Groups' and selecting Destination Group as the new group and selecting the second group for the 'Source Group' field. Then, press submit. Now, you have a new group with members of two of the other groups that you selected.

4.4  Displaying number of people within an Office/Building

If you have installed separate doors for entry and exit, and if nobody is allowed to open or close the door either manually or by any other means other than wifisecureaccess system, the system keeps a count of the number of people within the room or building. If any of the door is for entry as well as exit (ENTRY/EXIT), you can install a separate QRCode or NFC tag for exits, instead of using the same entry tag. To configure a separate tag for exit, click on 'Configure device' under Device Admin in the dashboard menu. Then, set Exit QRCode. Refer to Fig 38C.

Fig 38C: Configuring Exit Tags for an ENTRY/EXIT door/gate

In this form, enter a number for Exit QRCode. Enter a number such that its lower 12 characters are the same as the MAC address of the device. Once entered, press Submit button. Then, you will see a tab at the bottom of the page 'SHOW EXIT QRCODE LABEL'. If you click on that, it will show you the exit QRCode label. You can save that image on to your computer and print it on any type of paper you want. Then paste that label anywhere near the door on the inside of the office/building. Now, to open the door/gate from inside (for exiting), scan this QRCode using the wifisecureaccess App on your smart phone. By doing so, not only that the door opens, but also keeps a count on the number of people exiting.

If you are using NFC tags, you need to get an NFC tag, and enter its UID as per the steps given in Section 2.9 of this documentation.

To display the number of people currently in the office/building, click on 'Devices Groups' under under 'Device groups' in the dashboard menu. You will see the occupancy in all the groups that you have created as shown in Fig 38D. Note: Ocuuupancy will be displayed only if you have at least one group configured with either separate doors for entry and exit or separate exit tags for exit on ENTRY/EXIT doors. Also, note that the accuracy of this depends on several factors such as 1) No one should be using any other means other than wifisecureaccess App to open/close the door/gate. 2) Remote access to open or close the door/gate must be disabled on ENTRY/EXIT type of doors/gates, and 3) Not more than one person enters or exits with one commad to open or close. You can re-correct this number any time manually by editing this field.
Fig 38D: Displaying Occupancy in an Office/Building

4.5  Displaying Group Use Records

The system keeps record of the use of all the doors/gates of this group. At any time, you can see who used this group at what time. To see the group use records, click on 'Group Use records' under "device groups' in the dashboard menu. If you have created multiple groups, you will be prompted to select the group. Once selected, you will see a page similar to Fig 38E

Fig 38E: Group Use records

5.0  Home/Industrial Automation Configurations

This section will help you learn how to configure devices for Home and Industrial Automation. The system has the capability to automate the operation of any externally connected equipments ( the equipments connected to either P0 or relay of this device). All needed automation can be done by configuring the device without the need for any programming. It is also possible to configure devices such that one device senses values of the sensors connected to it and another device sitting remotely takes an action based on those sensed values. To use any device for Home/Industrial Automation, the device has to be configure in that mode. To configure a device in Home/Industrial Automation, click on 'Configure Device' under device admin in the Dashboard menu. Then select use_type as CONTROL/SENSOR and press Submit. This is the default mode of a device and, therefore, the device will be initially in this mode until you change it.


Fig 39: Configure Device for Automation



5.1  Configuring an Output Port for auto OFF mode

We have learned in section 3 that we can activate any output port (and thus any equipment connected to that port) manually from remote by clicking a button either using a smartphone or from a comouter. In fact, there is a shortcut to activating a port of any device. Click on 'Activate A Device' in the Dashboard menu. The app on the smartphone has this button in its home screen. When you click this button, it will show a window similar to Fig 39 listing all your devices.

Fig 40: Activate a Device


Fig 39: Activate a Device

Note: You can activate a device by scanning the QRCode of the device using the app. Press Scan QRCode button in the home page of the app, and scan the QRCode label of the device. That will also take you to a page displaying all your devices.

Click on any device on this page that you want to activate a port of. That will take you to a page similar to Fig 41, if the device has earlier been configured in CONTROL/SENSOR.

Fig 41: Activate a Device Port

This page shows the current status of all the three output ports of the device. You can toggle its state by pressing the button of that port.

Note that if you put a port ON, the state of that port stays ON until you press that button again to put it OFF. If you want, you can configure the device such that it automatically puts its port OFF after a specified duration of time. Suppose that you want the port to be automatically put off 6 seconds after it is manually put ON. If so, configure as follows:

Click on 'Configure Auto Controls' under Device Admin in the Dashboard menu. If you have more than one device, it may either prompt you to choose a device, or may use the previous used device depening on the current state of your configuration. Once the device is selected, it will take you to the Port Controls page which will look similar to Fig 42, if you have not yet configured any auto controls yet. If you had earlier configured any auto controls for this device, it will list all the previously configured auto controls here

Fig 42: Empty Auto Controls Page

Now, press the button labelled 'ADD AUTO RESET (ON/OFF) MODE PORT CONTROL'. That will take you to a page similar to Fig 43.

Fig 43: Add Auto-Reset Port Control

On this page, select the output port from the pull-down options. The available options are all the output ports of this device. In the second row, it shows the mode. There is no option here. The mode is pre set to "NORMALLY OFF, WHEN PUT ON MANUALLY, AUTO PUT OFF AFTER DURATION". Then enter the duration of time in seconds after which the port should be auto reset. If you enter 0, it will never reset that port and will stay ON until you manually put it OFF. Then press Submit. If you have entered everything correctly, it will configure the device accordingly and will display the port control page of the device (similar to Fig 44) displaying all your configured port controls of this device.

Fig 44: Port Control Page with one Auto-Reset Control

If you need, you can edit this port control on this page. If you want to delete this portcontrol, scroll the page to see the Delete checkbox at the right end of this portcontrol. If you check that box and press Submit, it will delete this portcontrol.

The port is now configured such that the port automatically gets reset after the specified duration whenever you activate this port. Try to activate this port using a smart phone or computer and test if its is working.

5.2  Configuring Periodic Actions

You can configure a periodic action on any of the output ports. For example, say, you want the relay to be put ON at the start of every hour. If so, configure it as follows:

Click on 'Configure Auto Controls' under Device Admin in the Dashboard menu. If you have more than one device, it may prompt you to choose the device, or may use the device that you used last depening on the environment. Once the device is selected, it will display a page similar to Fig 42 showing all the current auto controls configured on this device. If you want to configure Relay to come ON at every hour, click on 'ADD TIME BASED PORT CONTROL' on this page. That will display a page similar to Fig 45.

Fig 45: Add Periodic Portcontrol

If you are configuring Relay of this device, select RELAY for Output Port on this page. If you want an email to be sent to you (to the email address set for Alert Email field in the 'Configure Device screen') whenever it puts on the relay, select YES in 'Send Email' field. And, since you want this action to be repeated every hour, select 'NORMALLY OFF AND PERIODIC ON, PUT OFF AFTER DURATION' for the MODE field. Note that there are four options for the MODE field. They are self explainatory.

Then, set Repeat Time Period in seconds. If you do not want the action to be repeated, leave this field blank. If you want the relay to be activated every hour, enter 3600 in this field (1 hour = 3600 seconds). Next, you need to set when it should start this repeat cycle. Next Start field can be either a time delay in seconds from now, or an exact date and time in the future. If you leave this as blank, it will be taken "start immediately". If you are entering the exact date and time when this should start, then enter n 24 hour clock. Its format is yyyy:mm:dd hh:mm. You need to specify the year, month, date, hour and minutes in this format. In the next field, enter the duration in seconds the relay should remain ON. If you want the relay to be on for 1 minute, enter 60 here. Keep in mind that this duration must be less than the repeat time interval for obvious reasons.

There are three more additional fields in this form. They are optional fields. You can leave them as they are if you are interested in just a periodic action. However, if you want the periodic action to take place only when a condition is met, then you can enter that information here. For example, say, you want RELAY to come ON periodically every hour only if a sensor detects a pre-set value. If so, connect that sensor to the inputs of this smart device. The sensors can be motion sensor, temperature sensor, rain sensor and so on. Section 3.0 of this documentation describes how to connect various types of sensors to this smart device. Once the desired sensor is connected to the smart device, you can now choose that device here in configuring periodic actions. Select input port to which sensor is connected. Then in the next field, choose the logical operation (LESS THAN. or GREATER THAN OR EQUAL TO). Then enter the pre-set value of the sensor in the Value field. Fig 45A shows an example of such entry. By selecting these three fields appropriately, you are configuring the smart device to put on the OutPort periodically only if the value sensed at the Inport is either less than (or greatet than or equal to) the Value. As mentioned earlier, if you leave input port as None, it will ignore this condition when activating periodic actions.
Fig 45A: Add Periodic Portcontrol with Condition

Once all these fields are entered press Submit. If all entered values are valid, it will configure the device accordingly and display the portcontrol page similar to Fig 46. If there is any error, it will display errors. If errors are reported, fix those errors and enter the values again and re-submit. Fig 46 will show all the port controls configured in this device (the currently configured as well as all previously confifured and still active). You can delete any of these port controls any time by checking delete button (at the far right of earch row) and by pressing Submit button.

Note: If you do not want the action to be repeated, but just only once at the Next-Start, select MODE as 'NORMALLY OFF, PUT ON AT NEXT START. PUT OFF AFTER DURATION' or 'NORMALLY ON, PUT OFF AT NEXT START, PUT ON AFTER DURATION' and set Repeat Time interval as 0 when adding portcontrol

Fig 46: Port Control Page with a Periodic Portcontrol

Now, you can monitor this device. You will observe that the relay is put on for one minute at every hour starting 2020-08-21 18:00 (as per the settings in this example). It will put relay ON the first time at 18:00 on 2020-08-21. The relay will remain ON for one minute. Again, the relay will come ON at 19:00, and again at 20:00 and so on.

Note: You can create more than one periodic portcontrol on any outport of a device. For example, say, you want RELAY to come ON at 6:00AM as well as 8:00PM every day. If so, create one portcontrol for 6:00AM and another for 8:00PM as per the steps given above. With two such portcontrols for the same outport, you can observe that the relay comes ON at 6:00AM as well as 8:00PM every day.

Note: What is demonstrated here is just an example only. You can create such portcontrols on any port of any of your smart devices to meet your needs.

You can delete this portcontrol or any portcontrols that you have configured by checking the delete box against that portcontrol in the portcontrols page (Fig 46) and pressing Submit button. Note that the delete checkbox is all the way at the right of the form. You may have to scroll the bottom bar of that form to find it.

Note: You can configure periodic port controls on any of your device to send you emails even without activating an output port. For example, say, you want emails sent to the 'Alert Email' address at 8:00AM in the morning every day as a reminder or a wakeup. You can do that exactly the same way as you have configured above, except that when selecting fields, select None for Output port and YES for 'send Email' fields. Note: Alert email is the email address set in the Alert Email' field in the 'Configure Device' screen. Unless set, it defaults to the email address of the owner of the device.

5.3  Configuring port control based on Input Condition

You can configure an output port to be put ON/OFF based on an input sensor values. Fo example, you can configure RELAY to be put ON when the voltage level at Vin is greater than or equal to 1.0volts. Or you can configure P0 to be automatically put ON when the temperature read by DS18B20 Temperature Sensor connected to D7 is 60 degree or higher. Or, you can configure Buzzer to be activated when the motion sensor connected to D6 senses a motion, and so on for any of your requirements.

Let us see, for example, how to configure the device such that RELAY is automatically put ON when the analog voltage read from Vin is greater than or equal to 1.0Volts, and it gets put OFF when the vltage is less than 1.0Volts. To configure this automatic control, click on 'Configure Auto controls' under Device admin in the Dashboard menu. As mentioned in the previous secion, it may prompt you to choose device if you have more than one device. Once selected, it will come to portcontrols page displaying all the portcontrols that you have configured on this device so far. Click on 'ADD INPUT BASED PORT CONTROL' on this page. That will take you to a page similart to Fig 47.

Fig 47: Add Input Based Portcontrol to put Relay ON

Similar to what we did when configuring periodic port control, select the various fields in this form. For our example, select RELAY for output port. Choose 'Self' for the 'Out Device'. In fact, this system has capability to activate a port on another device when sensor condition on this device are met. We will discuus that in the next subsection. Here, for our example, select 'Self' for this field. In the 'Send Email' field, select either YES or NO depending on whether you want an email to be sent to the Alert Email address when the output port is activated. For the 'Mode' field, there are two options - 'PUT ON THE PORT AND/OR SEND EMAIL' or 'PUT OFF THE PORT AND/OR SEND EMAIL'. For our example, select 'PUT ON THE PORT AND/OR SEND EMAIL'.

Choose the input sensor in the field 'Input Port'. Depending on what you have connected to D6, and D7, you will be presented with the available choices. For this example, select Vin. In the next field, you have to choose a logical comparator, either 'LESS THAN' or 'GREATER THAN OR EQUAL TO'. For our example select 'GREATER THAN OR EQUAL TO'. This is for the comparison of the sensed value to a pre-set value. The device will compare the sensed value from the input to a pre-set value to make a decision on activating the output port. In the field 'Value', enter the pre-set value. For our example, enter 1.0. This means that the device will continuously read Vin and compare it with 1.0Volts. If the value at Vin is greater than or equal to 1.0, the condition for activation of the output port is met. There are three more field in this form. They are to be filled if the output port must be put off after a duration even if the input condition remains met, and whether the output port must be put on again in a repeat cycle if the condition remains met. For our example here, let us leave those fields blank and press submit. If every entry is correct, it will configure the device and will show you portcontrols page of this device showing all the portcontrols that you have configured so far as shown in Fig 48. You may have to scroll the form right to see all the columns of this port control.

Fig 48: Portcontrol Page with an Input_based Portcontrol

You have just one input based port control. That port control will put on RELAY when Vin is 1.0volts or more. Relay will remain ON so long as Vin is greater than or equal to 1.0. Relay will be put OFF when Vin is less that 1.0Volts. You can test this on the device by applying voltage at Vin.

The above control has some drawbacks when the Vin fluctuates rapidly around 1.0Volts. The Relay will keep on putting ON and OFF if Vin flucuates around 1.0Volts. In systems where you do not want such things to happen, you can add a separate portcontrol to put the relay off. In other words, say, you want the relay to be put on when Vin greater than or equal to 1.0Volts, but once it is ON, you want relay to be OFF only when Vin is less than 0.5Volts.. This can be done by adding one more portcontrol for RELAY. Click on 'ADD INPUT BASED PORT CONTROL' once more and add another port control to put RELAY OFF when Vin is less that 0.5volts as shown in Fig 49.

Fig 49: Add Input Based Portcontrol to put Relay OFF

Enter the values as shown in Fig 49 above and press Submit. It will then show you portcontrol page similar to Fig 50 with two portcontrols for RELAY. The first one is to put RELAY ON and the second one is to put RELAY OFF.

Fig 50: Portcontrol Page showing two port controls for Relay, one to put on and the other to put off

You may test this now by applying voltages at Vin. You will see that the Relay comes ON when Vin is greater than or equal to 1.0. It will stay ON until Vin goes below 0.5Volts.
Note: Make a note of the difference between having just one portcontrol to put the relay ON and having separate portcontrols for putting relay ON and OFF respectively.

As mentioned before, you have three other fields in an input-based portcontrol They are 'Start Delay', 'Repeat Time period' and "Duration to stay active'. These fields can be used if you want the relay to stay active only for a fixed duration when activated and repeat this periodically, instead of keeping it on whenever the input conditions are met. If you want to wait for a delay time to activate relay after the input condition is met, enter that delay time in seconds in 'Start Delay' field. For example, if you enter 10 seconds for 'Start Delay', delay will be activated only 10 seconds after the input condition is met. And, if you set a duration of, say, 60, the relay will get put off automatically after 60 seconds even if input condition remains met. And, if you enter 60 seconds for "Repeat Time Period', relay will be put on again after 60 seconds. This cycle will repeat until input condition for putting OFF relay is met.

You can generate input based port controls on any output port as per the steps outlined above. You can use any types of inputs connected to the input ports. They can be limit switches, ultrasound sensors, motion sensors, analog inputs, DHT11 temperature/humidity sensor, DS18B20 temperature sensor and so on.

Note: If you are using ON/OFF type sensor, keep in mind that the value read is either 0.0 or 1.0. The the Value field should be either 1.0 (OFF) or 0.0 (ON) when adding an input based port control. If you enter anything above 1.0 for Value when the sensor is an On/OFF type, it will automatically set it as 1.0. Similarly, if you enter less than 1.0 for Value, it will automatically reset it as 0.0..

Note: Please also make sure that the use_type field in the 'Configur Device' must be 'CONTROL/SENSOR' when the device is used for Home/Industrial Automation or Data collection and monitoring. This has been explained in the begginning of the section 5.0 on Home and Industrial Automation.

5.4  Configuring One Device to Control Another Device

Our IOT system has the capability of controlling ports on remote devices based on the conditions sensed by another device. You can configure a device to control another device. You set the port controls of a device such that when a condition on inputs is met, an output port of another remote device is activated. Both devices must be owned by you to make this type of port control. Configuration is the same as describes in the previous sesction on 'Configuring port control based on Input Condition', except that when choosing Out device, choose the device whose Output port you want to control, instead of 'Self'. Available devices will be seen in the drop down selections. The Out devices have to be in SENSOR/CONTROL mode in 'Use Type' (This setting is in 'Configure Device' under Device Admin). When the 'Use Type' of a device is in Entry or Exit (gate/door), port controls cannot be added. Fig 51 shows an example of adding such a configuration.

Fig 51: Add Portcontrol to control port on another device

If you own two devices, try setting this and try testing it.

6.0  Access Control Configurations

This section will help you learn how to configure devices for Access Control to residential houses, office/industrial buildings, private apartment parking spaces and other restricted areas. This can be achieved by configuring the smart devices without the need for any programming. Entry to the restricted area is limited to those who are allowed. The section 4.0 on 'Allowing Multiple Users' in this document described above explains how to add allowed users to use a device kept at the entry or exit of a restricted building or area.

in this section we will explain how to install these smart devices at the entry or exit as well as how to configure them. To use any device for Access Control, the device has to be configured in that mode, first. To configure a device in Access Control, click on 'Configure Device' under Device Admin in the Dashboard menu. Then select use_type as either 'ENTRY TYPE', or 'EXIT TYPE' or 'ENTRY AND EXIT'. If this device is installed at the entry of the restricted area, select 'ENTRY TYPE', if the device is installed at the exit, select 'EXIT TYPE' and if this device is installed at a gate or door used for entry as well as exit (front door of a house, for example), select 'ENTRY AND EXIT'. Then press Submit.


Fig 52: Configure device for Access Control



6.1  Configuring Access Door Control of a House

As described earlier, you can use this device to control access to a residential house or a building. As an example, let us see how we can install this to open or close the front entry door or a house. Once installed, the system provides a key-less entry to the house. Opening the door from remote also becomes possible. With the suggestion given here, you can still use the mecahanical key of your house to enter the house in the event of a system failure or emergency.

To install this device, the door is to be fitted with an electric strike. If you have already installed one, and if its voltage rating and current rating matches with our device's solid state switch, you can connect this device directly to that actuator (or electric strike). If you do not have one fitted on the door yet, we recommend purchasing one and installing it. There are various types of electric strikes available. You can buy them from Ebay or Amazon. Given below is a link to an electric strike in Amazon. This is a Fail-Secure type. We recommend using a 'Fail Secure' type of an electric strike on the door, even though 'Fail Safe' type can also be used. If you are using 'Fail Safe' type, do the cabling as per Fig 18B. Listed below is just an example. You can search in Ebay or Amazon for Fail Secure Door Electric strike.

(If this link is broken, search for 'Fail Secure Door Electric Strike' in amazon.com
Buy Now

Fig 53 shows a picture of an installed door strike. You can search in YouTube for installation guides for installing an electric strike. Alternatively, you can get this installed by a tradesperson. Once the door strike is fitted on the door, install the smart device behind the door inside the house so that it is secure. Fix it on the wall or anywhere conveniently closer to the door.

Fig 53: An Electric Strike fitted on a door

Fig 53A: Installing an Electric Strike on the door

Fig 53B: An Electric Strike fitted on a door

Then cable the solenoid of the electric strike to the smart device as per the steps given in this documention in section 3.2 labelled 'Connecting a Solenoid'. Fix the smart controller anywhere inside of the house/building such that nobody can tamper with it from outside. You can either install it hidden inside the wall, or exposed. It can be either near the door or anywhere far from it where there is power and WiFi. Run the cable from the electric strike's coil to the smart controller, preferably hidden within the wall.

You may place the label of this device with its QR code on the outside of the house. You may either use a QR Code label, or an NFC Tag, as described in Section 2.9. You may mount that on the front side of the door so that you can scan its QR Code (or NFC Tag) conveniently to open the door from outside. This kind of installation with the device sitting inside and with only a QR Code (or NFC Tag) pasted outside makes the system highly secure as no one cam tamper with this device. If you also implement 2FA (2 Factor Authentication) as explaied in section 2.12 of this documentation, this door can be trusted to be highly secure.

On the other hand, if you want to use Google home assistant or Amazon alexa only, and not using QRCode NFC tag, you need not install QRCode or NFC tag outside the door. Google Home is also highly secure if you use @FA (refer section 2.10 of this documenation).

Note: Make sure to add a word "Door" either in the name of the door or its port label. Having a word 'Door' (case insensitive) in either in the name of the device or in the name of the poprt connected to the solenoid will make sure that the device operates in Access Control..

Allowing others to use this device/door: Once these installations are done, power on the device. Configure a device group to allow all house mates to enter the house as per the steps given above in section 4.0 'Allowing Multiple users' of this documentation. When creating a group, give the name of the group something like 'My House', or your house name or anything similar. If you are using this on the doors/gates of offices/buildings, have a look at all the extra features and settings available under Section 4 of this documentation.

Then click on 'Configure Device' under Device Admin in Dashboard menu. Configure the device as shown in Fig 54.

Fig 54: Configure Device for Door access Control


Connecting Sensors to detect if the door is closed and Configurating Auto Controls:


Once the device is configured in Access Control as described above in Access Control mode, click on 'Configure Auto controls' under Device admin in Dashboard menu. You will see that some portcontrols are automatically created. fig 55 is similar to what you may see on this page.

Fig 55: Configure Door Portcontrol

It shows three portcontrols pre-created. The first one is an auto off control. This portcontrol makes sure that the electric strike gets automatically deactivated 6 seconds after it is activated. You can change this duration to anything you like. As we have connected the solenoid of the electric strike to output port P0 of the device, change the OutPort of this portcontrol to P0.

Note: When using to control a garage or a gate, the duration here in the first port control has no effect unless you have configured AutoClose as descrtibed under section 6.3. It should, however, be a non-zero value.

Note: When using to control Door or parking gate, it is assumed that they are closed either manually or by any other automatic mecahnism after opening it. So, the smart controller does not keep the actuator activated beyond the time specified in the Duration filed of the first portcontrol in Fig 55. You can override this by adding "NoAutoClose" in the name of the port label (not in the device name). If you override, it will not assume that the door or parking gate is closed automatically. Instead, it will keep the actuator activated until you give another command to close it. In other words, if 'NoAutoClose' is present in the label of its port, and if you say, 'Hey Google, open ...', or press the button on your smartphone to open it, it will put the actuator ON and keep it ON until you give another command to close it.

The second portcontrol is an input based port control for activating buzzer. As the selected input is currently blank, this port control is currently not active. If you want the buzzer to go on when the door is left open for a long time, you can activate this portcontrol. To activate it, you need to install a sensor to detect whether the door is currently open or closed. You can install a limit switch or a magnetic switch on the door such that it closes when the door is closed. Magnetic switches suitable for this are available in eBay. You may search for "Wired Door Window Sensor Magnetic Switch" in ebay. Here is a picture of the sensor installed on a door.

Fig 55A: Magnetic Sensor on a door

Then connect that sensor to either D6 or D7 of the smart device (with one terminal of the sensor to D6 or D7 and the other terminal to GND on the smart device). After that, change the portcontrol for buzzer. If you have connected switch to D6, select D6 ON/OFF as the input Port. Also, make sure that in the Device configuration (Fig 54), 'D6 Type' is selected as 'TWO STATE ON/OFF'. Then, select the logical operation as 'GREATER THAN OR EQUAL TO' and Value as 1.0. We select like this because the switch closes when the door is closed. If so, D6 input is 0 when door is closed and 1 when door open. We want the buzzer to be activated when the door is open for a long time. So, the required input condition is 'When D6 is greater than or equal to 1". If you have installed the magnetc switch such that it is OFF when the door is closed, you may change the logical operation to "LESS THAN". Next, you need to set the other parameters of this port control if you want the buzzer to keep beeping periodically. The port control already has some preset values. If you are satisfied with them, leave them as they are. Otherwise, you may change them to wahtever you like. These settings are as explained in previous section 5.3 on 'Configuring port controls based on input condition'. So, you may refer to the steps given in that section to understand these better.

The third portcontrol on this page is about sending notifications when the door stays open. If you want the device to send notifications when the door stays open, you select the input port as the same as the input port selected for the buzzer. You will see some default values for this control. You can change them, if you want. Alert email is sent to the email address set in the field 'Alert Email' in the 'Configure Device' window. This is defaulted to the email address of the owner of the device. You can change that to any other email address by clicking 'Configure Device' under Device Admin in the Dashboard menu. There change Alert Email to anything you want.

Note: If you want to deactivate any of these last two portcontrols, you can do so by selecting the input port as None.

Once all these modifications are done, press Submit button. If every modification is correct, it will configure the device accordingly. The door is now set to go. All those who have been authorozed to use this device can open the door either by scanning the QR Code (or NFC Tag), or from remote by pressing 'Activate a Device' in the app or on the Dashboard on a computer or by Google Home Assistant or Amazon Alexa, as explained in Section 2.8, 2.9, 2.10, 2.11 and 2.12 above. To open the door from remote using a smart phone, open the app and click on 'Activate a Device'. It will show all your devices. Select the name of this device to open it. If you are authorized, the door will be opened for the pre-configured duration. If you want to open this door from remote using a computer, in a browser go to the dashboard after loging in. Click on 'Activate a Device' in the Dashboard menu and then click on the device.

If you want an additional layer of security, you can add Two Factor Authentication(2FA) on these devices so that the system will prompt for a pin prior to opening the door. Refer to section 2.12 to know how to add 2FA.



6.2  Configuring Access Control of a building or private parking

This smart device can be used to control access to private parking within a building or elsewhere where only the residence or members of a club or staff are allowed to enter or park. These buildings and private parking may have multiple entry doors and multiple exit doors. Install one of this device at every entry and exit doors and connect them to the actuators of the door or gate. The actuators can be boom gates or any Doors with electric strikes fitted on them (as explained in section 6.1 above). Then set the USE_TYPE of the device at the entry as “ENTRY TYPE”, and set the USE_TYPE of the device at the exit gate as “EXIT TYPE”. If the gate or door is used for entry as well as exit, then set the use_type as 'ENTRY/EXIT'. These settings are to be done by clicking 'Configure Device' under Device Admin in Dasboard menu. Then, as described in the section 4.0 on 'Allowing multiple Users', create a device group and add the email addresses of all the residents of that building into that device group. Then select that device group in the 'Configure Device' page of all these devices. as explained earlier in the section 4.0 'Allowing Multiple Users'.

Then, if you want to use QRCode for entry or exit, print QRCode label of this device and paste it at a convenient location for the driver to scan. To print QRCode label, click 'Show QRCode Label' under Device admin in the Dashboard menu. Then save that image to a file on your computer, resize it to appropriate size of your choice and print it. You must have received a few labels when you purchased this smart device. You can use them, or print as many additionals label you want.

As described in Section 2.9 of this document, you can also use NFC Tags instead of QRCodes. To do so, buy an NFC tag and find its ID and then press Configure Device and enter that Tag Id in the "NFC TAGID' field and press submit, as explained in section 2.10 of this documentation. Then, install that NFC Tag at a convenient location for the driver to sacn.

Alternatively, if you prefer to use Google assistant or Alexa to activate these ports by voice, you can do so as explained in section 2.10 and 2.11 of this document. For additional layer of security, you can add 2FA as explained in section 2.12 of this documentation.

Then, as explained in the previous section of this documentation, install door strikes on each of these doors, if you do not have them installed yet. If these are for private parking in the apartment/office complex, you may have boom gates or any other type of gates. Connect either the RELAY or P0 of the smart device to the electric strike/Gate controller, depending on what kind of gate control is installed. Provide either 12V power or AC to the device depending on what is available at the door/gate. It is also important that WiFi must be available at the door/gate. The WiFi of the device must be set to the available WiFi as per the steps given above in section 2.5 on 'Setting WiFi of the Device' in this documentation..

Fig 56: Cabling a solenoid to Smart device


Fig 56A: Cabling Boom Gate to the Relay of Smart device

Note: When naming the device and its ports, make sure to include the word 'Parking' or 'Door' or 'Gate' either in the name of the device or the port connected to the actuator. This is important so that the device will operate in the correct mode to operate these gates.



Setting Open/Close times of the building/private parking:
If this device is used for access control of buildings and offices as well as private parking, you can set an opening time and a close time so that the allowed users can enter only between those times. The owner of the device/building can enter any time, though. If you do not set this, it is assumed that the building/office/parking is open 24 hours a day all days.
To set open/close time, click on 'Configure Entry Control' under Device Groups in the side bar menu. If you have more than one device group, it will prompt ypu to select the group ypu want to set the openin/closing times. Once the group is selected, it will take you to a page as shown in Fig 56B.
Fig 56B: Configuring Entry Control of a device group

On this page, set the opening time and close time. Then select the week of the year and the day of the week where this opening time and close time is applicable. If you leave week as *, it is assumed that this is applicable to every week of the year. If you leave both week and day as *, it is assumed that these opening/closing times are applicable to every day of the year. On the other hand, if you want this to be applicable to Monday of every week, select day as Monday and select * for week. Then press Submit. If you have only one such entry, the opening/closing is applicable only for that day of every week, and all other days, it is assumed that it is open 24 hours. To add opening/closing timings for any other day also, create another row by selecting another day. So, you can have 7 such entries for each day of the week. If you want this to be applicable only for a particular week of the year, select the week. If you want multiple opening/closing hours on the same day, you can create another row for the same day. In fact, you can create as many row of entry controls as you want. Once set, the allowed users will be allowed only between the opening/closing times. The owner of the device/building can enter any time and these settings are not applicable.

These opening/closing times are useful when this system is installed for offices. Gyms and so on when nobody is to be allowed when the office/gym is closed.

Once these cabling is done, and the device is configured as per the steps above, the system is ready for use. Allowed users can use their smart phone to enter the building or parking lot by scanning the QRCode (or NFC Tag) pasted at the entry. In order to open the gate, open the app on the smartphone, the go to scanning page and press scan. Then scan the QRCode, if you are using QRCodes. Press 'Scan NFC TAG', if you are using NFC Tag. If you are using Google Home Assistant or Alexa, open google assistant and discover device under WiFisecureAccess. When using alexa, search for the skill 'WiFiSecureAccess' and enable that skill to discover these devices. Then, activate thegates/door by voice as explained in section 2.10 and 2.11 of this document. The gate will open if you are authorized to open it. Authorization can be managed by the manager of the building (the owner of this device) remotely on their computer. He can add and delete anybody from the allowed users. He can also allow temporary users such as visitors for a short duration. The steps for this are explained above in section 4.0 on 'Allowing Multiple Users' of this documentation.

If interested in adding one more extra layer of security, you can add Two Factor Authentication (2FA) as explained in section 2.12.

There is another useful setting that may be needed in large buildings. There is a setting in device configuration to disable remote control of any device at any door, Refer to Fig 56C.
Fig 56C: Configuring a device to disable remote activation

You can set 'Allow Remote Control' to 'No', if you want to. If you set it to 'No', those who are allowed in the selected group will not be able to activate this device from remote. If selected 'No', the only way anybody (other than the owner of the device) can activate it is by scanning its QR Code or NFC Tag.


The owner of these devices can see the number of users within the building or private parking by clicking the 'Device Group' under Device Groups in the Dashboard menu. We recommend changing the name of the device group to the name of the building or anything similar so that you can easily identify a group.

Fig 57: Occupancy in a Group

The owner of the device can also see the use records of this building by clicking 'Group Use Records' under 'Device Groups' in the Dashboard menu. He can also see the use of individual door/gate by clicking 'Device Use Records' under Device Admin in the Dashboard menu

Fig 58: Group Use Records

Fig 59: Door/Gate Use Records

Our system keeps the records only for 30 days. In a later section 10.0, we will describe how the owner of these devices can extract these use records from our system to their local computer for any data analysis.

6.3  Configuring this Device to Open/Close an existing Automatic Garage Door

Note: If you have purchased a dedicated garage door controller (hardware version 0), instead of seeing this section, click here to see its detailed documentation.

This smart device can be used to open or close a garage door using Google Home or Alexa or by using the app on the smartphone. If the garage door has an existing automatic control, then it should be having a manual switch for opening and closing its door. You need to locate that. It can be either on the PCB of the automatic control unit, or it can be mounted externally on the wall of the garage, or on the box of the control unit. In some installations, you may find two terminals marked 'Push Button' on the controller unit. When you find that, try shorting between the two terminals of that manual push button using a plier or a wire. If that opens or closes the garage door, then our smart device can control it by a smart phone or Google Home or alexa.

To use the manual push button, cable smart device to this push button as shown in Fig 61A. Connect the two terminals of that push buttom to COM and NO of the relay connector J7 on the smart device. If this push button is on the PCB of the garage door controller, it is also possible that the PCB on the automatic controller of the garage door has 12V power output pins on a connector. If so, that can be connected to our device (J1 connector of our device) as power supply for the device, eliminating the need for external power cable for the device. If you use J1 as the power source to our device, make sure that PJ1 jumper on our device is set to select that as the power source as explained earlier in this document on installation of the device. If there is no power available from the PCB of the garage door's automatic controller, you will have to connect external power to our device either 12V or AC as explained above in section 2.2 on 'Setting up the Device' of this Documentation. You can fix the smart controller at any location where there is power and WiFi, and run two cables from it to the pushbutton terminals of the garage door controller.

Fig 61A: Cabling Push Button to Smart device

Fig 61B: Cabling Push Button to Smart device

Fig 61C: Cabling Push Button to Smart device

In some garage door systems, you may also find a connector on the PCB of the garage door controller on which there may be a terminal to trigger open or close. Connecting that terminal to GND may open/close the garage door. Try grounding that terminal. If that closes or opens the garage door, then that is also compatible with our smart device.

If the garage door controller has a terminal block on its PCB with trigger terminal (usually used for connecting additional external manual push buttons), you can connect that terminal to NO and COM to GND of the smart device. In such cases, that terminal block may also have 12V power.

Note: If you are unable to locate the manual pushbutton or unable to connect the smart device across the oush button, there is another way by using a remote controller. If you open the remote, you may either see a track on to which its push button comes in contact when presses, or you may see the push button itself mounted directly on its PCB. You may solder twi wires to these terminals and connect NO and COM of the J7 connector of the smart device. Refer to 61D and 61E with such cabling to a wireless remote controller. In fact, you can buy one Universal Remote controller and train it to your garage door. Then connect the push button of that remote controller as shown the Fog 61D and 61E so that you and the other members of your family can use a smartphone to open/close the garage.
Fig 61D: Smart device connected to a wireless remote of the garage door

Fig 61E: Cabling of a wireless remote to the Smart device


Configuration:
Once our device is cabled as described above, then it is a matter of configuring our device to operate this garage door. Configuration of this device for garage door is identical to the configuration described above in section 6.1 on 'Configuring Door Access Control of a House', except that the output port used here is RELAY. So, follow the steps given in that section. Make sure to name the device and the port such that the word 'Garage' is either in the device name or the relay1 port label. In the portcontrol configuration, set the Output Port as RELAY. The 'Duration to stay activated' field can be any number other than 0. Any postive number (in seconds) will have an effect only if AutoClose is set as described below under the heading "Configuring AutoClose".
Fig 61F: Configure Device for Garage Door

Fig 61G: Configure Garage Door PortControl


Once configured, you can operate garage door using the WifiSecureAccess app on your smart phone. Use it exactly the same way you use it for opening the door of a house. You can either operate it from remote by pressing 'Activate a Device' on the app, or by scanning the QRcode of the device (if you paste the QRCode label of the device outside the garage). You can also add this device to Google Home or Amazon alexa and use google assistant or Alexa to open or close the garage door. Refer to section 2.10 and 2.11 of this documentation.

Note: Make sure to add the word "Garage" either in the name of the device or its port label. This is necessary for the device to get configured correctly for garage. Refer to sections 2.8, 2.9, 2.10, 2.11 and 2.12 of this documenation on details of using smartphone, Google Home and Alexa. Section 2.12 shows how to set up 2FA for an additional layer of security, if you so desire. Refer to section 4.0 of this documentation for allowing multiple users to operate this garage door.

Detecting whether the garage door is Open or Closed:

As described in section 6.1, you can fix a sensor (a limit switch, or a magnetic switch) on the garage door (if it does not have one already) such that the switch becomes ON (activated, or closed) when the garage door is closed. Then connect the two terminals of that sensor to D6 and GND on the J6 connector of the device. If you prefer, you can connect to D7 and GND instead of D6 and GND on the same J6 connector. Then, click on 'Configure Auto Controls' under Device Admin in Dashboard (Fig 55). On that page, select 'Input Port' as 'D6 On/Off' in the second or third row of the port control and press Submit. Select 'D7 On/Off' if you have connected sensot to D7 port of the device. If you want the device to beep or send emails when the garage door remains open, or for further explaiantion of the three port controls that you see on this page, refer to the descriptions under the subheading Connecting Sensors to detect if the door is closed and Configurating Auto Controls in section 6.1 of this documentation.
Fig 61H: Installing magnetic sensor on garage


Once a sensor is connected and port control is configured as described here, you can know the current state of the garage door reliably on your smart phone. Open the WiFiSecureAccess App and press Activate a Device' on the scanning page. That will show the current status reliably. That also will help when using Google Assistant such that it will report that "the garage is already open" if you tell google assistant to open it when it is already open. Similarly, if you tell google assistant to close the garage when it is already closed, it will tell you that "the garage is already closed". In the absence of such a sensor, you cannot know the current status of the garage door reliably from remote. Such a sensor is not absolutely necessary to operate the garage door, though. In the absence of such a sensor, the smart device will not know if you either manualy open the garage door, or open it using it wireless remote.

Configuring AutoClose:
With our smart device, it is also possible to configure auto-closing of the garage door. For example, say, you want the garage door automatically closed 2 minutes after it is opened. This can be one by adding a word AutoClose in the port label of the port of the smart device connected to garage door controller. Say, for example, you have connected Relay port of the smart device to the garage door controller. If so, click on 'Configure ports' under Device Admin in the left side bar menu of the dashboard. Then change the name of the relay1 Label to 'Garage Autoclose'. then press submit. Then, you need to set the duration for which the garage door should remain open before closing it automatically. Click on Configure Auto Controls under Device admin in the Dashboard menu. Then select this device and change the value of 'Duration to stay activated (sec)' to whatever you prefer. If you want the garage door to remain open for 2 minutes before closing, then set this to 120. Press submit.

Note: The duration is the time since you press the button to open the garage and not the time since the garage door comes to a full open position. So, make sure not to set this duration lower than the time needed for the garage/date to come to a full open position.

With the above configuration with AutoClose, the garage will automatically get closed two minutes after it is opened. With this autoClose in place, suppose that you want to keep the garage remain open anytime after you open it, you can use either Google Home or alexa, and say 'Hey google, Open *name of the device* during the time the garage is open. So, if you try to do so during the period when the garage is open (whwn in autoclose mode), it will cancel autoclose at this time and will stay open. Then, if you want to close the garage, you can say "Hey Google, Close *name of the device*". This is a special handy feature of our smart device that you can configure and use.

PS. It is assumed that the cabling of the smart device is to the push button terminal of the garage door controller. Therefore, the smart device applies a pulse to it for opening or closing. If you are using it for opening a gate where it needs anything other than a pulse, this AutoClose feature will not work. Please contact us for any help

7.0  Public Access Places and Public Parking Lots

WifiSecureAccess provides a smart and cost effective system to manage access to public places and parking lots. Access to public places such as public transport, cinema halls, hotels, public/community event centers, or any such places can be managed easily and convieniently using our systems. In addition to managing access to people for such public places, one can use WiFiSecureAccess system for managing public parking. With this platform, there is no further need to have any ticketing and ticketing machines. Customers can use their smart phones to access these. They can swipe the QRCode or NFC tags fixed at the entry gates/doors to get access. If there is an access fee or parking fee, the customers will be charged either at the entry or exit automatically through their credit card.

With this system, customers can also book and hold a place from remote. All the registered public places as well as Parking lots will be shown on a google map. Public can also see on the map the current availablity of all these registered public places and parking lots. They can see how many spots or seats are currently available, the opening and closing hours, and the the access fee or parking fee, if applicable.

The owner of these public places or parking lots can configure access fees or parking fees. They can configure opening and closing hours, In this section of the documentation, you will learn how to register such public access places with WifiSecureAccess system, how to install smart devices at the entry and exit and how to integrate that with the gate actuators and how to configure the access control.

In this document when we saya 'parking', it is also applicable to 'people checkin' and vise versa.

7.1  Installing Smart Devices and Cabling them to door/gates/Boom Gates

Cabling the Device to actuators on the doors and gates, or to boom gate of the parking lot is identical to what is described above in section 6.2 on 'Configuring Access Control of a building or private parking' above. Cable the RELAY (NO and COM) to the actuators on the door/gate or the controller of the boom gate. Install smart devices at every entry gate and exit gate of the public place or parking lot. Print QRCode label (or NFC Tag, if you are using NFC Tags) of the device and locate it at the convenient place at the gate so that the customers can scan them easily.

7.2  How to register a Public Access Place or a Public Parking Lot in the System

You need to first register your public place or parking lot with WiFiSecureAccessa providing a unique name and its address. Address must be identifiable by Google maps. To register, click 'Dashboard'. If you have not used WiFiSecureAccess yet, you will be asked to login or register yoursef and will be taken to a login page. Once loged in, you will be taken to the index page where you will see several options. If you have not purchased and registered any WifiSecureAccess controllers yet, you will see some tabs to 1) 'Take ownership of a device' and 2) Create a Virtual Device. If you have purchased a controller, click on 'Take ownership of a device' and follow the prompt. Or, if you want to work with a virtual devive, click on 'Create a virtual device'. A virtual device is just a label with a QRCode, or NFC tag. A virtual device is enough to manage access to public places and parking lots if you do not want it to control its gates or doors. Physical controller is required to control the doors and gates at the entry and exit. Once you have taken ownership of a controller, or created a virtual device, you will see a button named 'Add Public Place/Parking Lot' in the main dashboard page. If you already have another parking lot in the system, you will see a button name 'Public Place/Parking Lot Admin'. If so, click 'Public Place/Parking Lot Admin'. That will show the button 'Add Public Place/Parking Lot'. Then click on 'Add Public Place/Parking Lot'.

Fig 62: Initial home Page

Fig 62A: Initial home Page after owning a device

Fig 63: Add Parking Lot

When you click 'Add Public Place/Parking Lot, you will be presented with a page similar to Fig 63. This form is asking you to enter iits name and the address of the public place/parking lot. The name must be unque in the system. You cannot use a name that is already used by others. It will prompt you if it finds a conflict. Enter the address correctly. Also choose whether you are creating a Public place for people access or a parking lot for vehicle parking. Also select whether you want to allow booking or not. Then press submit. If you have entered a valid address, it will add this public place/parking lot into the system and will display a page similar to Fig 64 showing the details of all your parking lots. If the system is unable to find such an address, it will display some error messages. Correct the errors and re-submit.

Fig 64: My Parking Lots

On this page, you can make any additional changes. You will see several additional fields in this form. They are:

    1. Device Usage: This field is autoset and cannot be changed by users. This field is for information only. This field shows whether the public place/parking lot has devices installed at every seat/bay of the public place/parking lot. If you want to manage every seat/bay of the place, you can install devices at every seat/bay in addition to controllers (devices) at the entry and exit. If you ever install like that, this 'Device Usage' field will show it as DEVICE AT EVERY SEAT/BAY'. 1. Hold Time: This is the time in minutes a seat/bay in a public place or parking lot can be held by a customer while driving to that location. The default is 0, indicating that holding a seat/bay is not allowed. If you set this field as 0, nobody can hold a a seat/bay. To allow this feature, set the Hold Time to the number of minutes that you wooul like to allow.

    2. Category Option: There are two options here. 1) ALLOW CATEGORY DOWNGRADE and 2) DO NOT ALLOW CATEGORY DOWNGRADE. If you select the first option, customers can access a lower entry/parking category when the seats/bay in the category if the customer is full. For example, if the public place/parking lot has several categories of checkin, and if the customer's category is, say, 4 and, say, if all seats/bay in categoty 4 are currently full, the customer will be alloeed to checkin to category 3 if seats/bay in category 3 are available, if this field is set to "ALLOW CATEGORY DOWNGRADE". These categories have to be configured for your public ploace/parking lot after registering the public place/parking lot. In the later sections of this document, you will find the steps for that.

    3. Allow Waiting: If you choose the option “Allow Waiting”, customers will be allowed to enter the public place/parking lot and wait within the public place/parking lot when the place is full. On the other hand. If “DO NOT ALLOW WAITING” option is chosen, no customer will be allowed in when it is full.

    4. Info Link: You can give a url of your website here (if you have one) describing more about your public place/parking lot. If a link is given, that link will be available for customers to click in the pop up window in the Google map. They can click on the name of your public place/parking lot and it will take them to your site.

When all fields are entered correctly, press s ubmit. Now that you have registered you public place/parking lot, you can see this in a Google Map. Click 'Public Pl/Parking Lot Map' under 'Public Place/Parking lot' in the Dashboard menu in the left sidebar menu.

Fig 65: show Parking Lot on a Google Map

On the google map, you will see a marker at your address, as shown in Fig 66. The colour of this marker will be red when there is no space available for parking. It will change to green when there are parking space available in this parking lot.

Fig 66: Parking Lot on a Google Map

Click on that marker. It will show a pop up window similar to Fig 67.

Fig 67: show Parking Lot on a Google Map Showing Availability

By default, number of seats/bays available is set to 1 in the default categoty 'General'. So, if you click on the marker against your place in the google map, it will show the availability as 1 in gernal category. The popup window that is displayed when you click on the marker asl will show links to directions to this location. If you have enabled booking and hold, you will see links to book a seat/bay as well as to hold a seat/bay in this public place/parking lot.. If you had entered a url for your parking lot in the info link when you created the parking lot, motorists can get to your website by clicking the name of your parking lot in the poped up window.

The Google map shows all the registered public places aa well as parking lots. The mark will be red, if no seat/bay is available in that place at this time.

Described above are the steps for registering your public place/parking lot WiFiSecureAccess. In the following sub-sections of this documentation, we will describe how to configure further details of this public place/parking lot and make it available for public.

7.3  Configuring Devices at Entry and Exit Gates or Doors

It is now necessary to configure all the smart devices that are installed at the entry and exit gates of this public place/parking lot. Do the following steps on each and every one of those smart devices. As mentioned earlier, the devices can be virtual device with just a QRCode or NFC tag.

Click on 'Configure Device' under Device Admin in Dashboard. You will see a page similar to Fig 68.

Fig 68: Configure devices in Parking Lot

Choose a device installed and cabled at the entry and exit doors/gates/seats/bay. To make this smart device a part of your public place/ parking lot, select and choose your public place/parking lot from the pulldown menu of the Public Pl/Parking Lot field of this form.. The system finds the timezone of the device from the address of the parking lot. So, try not to change it. Give a name of your choice to this device. And, select the 'Use type' as 'ENTRY TYPE', if this device is at the entry gate, or 'EXIT TYPE', if this device is at the exit gate of the parking lot. If the device is installed at a seat or bay, choose 'ENTRY AND EXIT'. Then press Submit. If this device is not a virual one, you will notice that the device gets restarted and the LED colour changes to Green.

You can set 'Allow Remote Control' to 'No', if you want to. If you set it to 'No', those who are allowed in the selected group will not be able to activate this device from remote. If selected 'No', the only way anyone (other than the owner of the device) can activate it is by scanning its QR Code. Note that this has nothing to do with the public. Public people can activate it only by scanning the QR code or NFC tag regardless of this setting.

Note: Depending on the type of door/gate, you may have to selectively add the word 'Parking', 'Door' or 'Gate' in the device name or its port label, as explained in section 2.8 through 2.11 of this documentation. For operating the actuators on the door/gate/boom gate, this naming is required so that the controller know what it is controlling.

It is possible to install this device as a parking meter at every bay of roadside parking. If you want to do that, ultrasound sensor has to be installed on the device to sense the presence of a vehicle. Connecting ultrasound sensors to the smart device is explained in section 3.3 of this documentation. Position the ultrasound sensor to sense the presence of a vehicle in that bay. Then, in the 'Configure Device' page, select USOUND as YES. And, select Use Type as 'ENTRY AND EXIT'. You also have to assign a bay number. Try to give the bay number something meaningful. You could name the bay as, for example, A1 meaning this is in row A, position 1.

If smart devices are installed at every bay, try to give bay numbers similar yo 8A4, meaning it is on 8th floor, row A, position 4. That kind of numbering of bays will not only help the customers to locate the bay easily, but also will help the system in helping motorists to suggest nearest available parking bay.

Installing ultrasound sensors are required only if you want to sense if anybody is illegally occupying a seat/bay without proper checkin. Installing sensor will also help send notifications to the administrator of this public place/parking lot when someon is occupying a seat/bay without checking in and when parking is expired.

You will also notice that the Use Type has another option called 'PRIORITY GATE'. This is a gate that can be used for special parking categories within a public place/parking lot. If a smart device is installed at these gates, 'PRIORITY GATE' option must be selected for that device when configuring it. In later sections of this document, you will learn how to create special categories of customers.

7.4  Configure Check-in or Parking Categories and maximum Spaces Available in Each Category

The next thing to do after registering a public place/parking lot is to configure check-in/parking categories and number of spaces available in this public place/parking lot in each category. There are two type of access categories: 1) General and 2) special. General categories are for general public whereas the special categories are for restricted public. These categories will help setting different access fees and access times for different categories of checkin. Special categories are reserved for those whom you authorise. At the time of checkin, the customer selects which category he wants to checkin. If he has chosen a special category, the system will check if he is authorized to chec into that category. You can create a maximum of 10 categories with different priorities in each. A category priority numiber greater than 9 is considered as special category. The higher the priory number, the higher is the priority. To create an access category in the pblic place or parking lot that you own, click on 'Access Catogories' under 'Public Place/Parking' in the dashboard menu. That will open up a page as shown below.

Fig 70: Configure Checkin/Parking categories

If this is the first time you are opening this page, it is possible that you may find that GENERAL category is pre-configured by the system with a maximum lots as 1. You can delete, and/or add more categories. In each public place/parking lot, the Category name and category Priority must be unique, meaning that no two categories can have the same name and same priority. When you enter a priory number greater than 9, it is assumed that it is a special category and ')SP)' will be added automaticallt by the system to the name of the category. This is to distinguish it from the other categories. You may also enter how many maximum spaces are available in your public place/parking lot. If this is a parking lot with devices in each seat/bay with ENTRY AND EXIT mode, the maximum Lots is auto-calculated, and whatever you enter will be over-written by the system.

The system gives an additional feature of 'Max Waiting'. This is a number of people/vehicles that can wait inside the Public Place/Parking Lot when the place is FULL. By default this is 0. You may enter any number is in this field if you want allow this in your public place/parking lot.

Once you entered all the fields, you may press the Submit button. When you press Submit, you may see a messages saying that a Tarrif Table has been created automatically with free checkin/parking. You can change ths by clicking appropriate links the “Parking Lots Admin” page, as described in the following section of this document.

Now, if you click on “Public Pl/Parking Lots Map" under Public Place/Parking Lota Admin in Dashboard, you will see that the marker on your parking lot is Green and, if you click on that marker, the pop up window will show the number of spaces available in each category you configured. It also shows the tariff as 0.0, as the default tariff (check-in/parking fee) is free.

As mentioned earlier, you can create special categories for special people. If you have created any special category with priority greater than 9, general public cannot check into these areas. Only those whom the owner of the public place/parking lot has approved can get access to there. To approve someone to check-in/park in any of these special categories, the owner has to add their email address against each of those category. It can be added by the owner of this public place/parking lot by clicking “Specific Category Members” on the “Public Place/Parking Lots Admin” page. When you click that link, you will see a page similar to Fig 71. If you own more than one public place/parking lot, you will be prompted to choose one before getting to this page.

Fig 71: Adding Customers to Special category

On this page, select the category and add the email address of the customer whom you want to add to any special category. When you add an email address, choose which category you want to add that person to. You can choose any category that you have created including the general categories. Adding to general categories will not have any effect unless you want give discounts to this person in that category. Add one customer at a time. Press Submit button when yoiu add one entry. To add a customer's email, that customer must have registered with wifisecureaccess.com. in fact any customer who checks-in/parks in these seats/bay will have to install our mobile app to scan the QR code or NFC Tag at the entry and exit. So, they need to register with wifisecureaccess.com.

When adding a customer to a special category, the owner can also specify any discount in entryt/parking fees for those customersi on an individual basis. '%Parking Discount' and '%Fine Discount' are the percentage discount offered to tose customers added to any of these categories. So, by entering selected customers, the owner of the public place/parking lot can offer discounts for them. This discount can be offered to any selected customer in any category. You can also enter an Expiry date. That is the date after which this customer will be removed from this special category automatically. Expiry date format is yyyy-mm-dd hh:mm.

Note: There is an additional feature that may help some times: If you have added a customer in any of the special categories, and at the time of his checkin, if the place is full in that special category, what must be done ? This is decided by the "Category Option' setting in the Public Place/Parking lot as discussed earlier (Fig 65). If yiou set that as 'ALLOW CATEGORY DOWNGRADE', that customer will be allowed to check into the general categories if those categories are available. If you set that to 'DO NOT ALLOW CATEGORY DOWNGRADE', that customer will not be allowed to checkin when the special category to which he is authorized is FULL.

7.5  Configure Access Fees or Parking Fees

To configure entry/parking fees and fines, click on 'Checkin/Parking Fees' under 'Public Place/Parking Lots Admin' in the Dashboard menu. You will be presented with a page similar to Fig 72.

Fig 72: Configure Parking Fees and Fines

Check-in/Parking fee form presented in this page (Fig 72) has several fields. To see all the fields in this form, you may have to move the slider to the right. By default, you will see a separate row for each configured category. If not, you may have to add them. If no fee is configured for any parking category, it will be assumed that check-in/parking in that category is free.

The following is the explaination of every field in this form. This will help configure fees and fines to meet your requirement.

    'Tariff Slab' is the parking fee. This has a format as follows:
    <duration in minutes from the start of parking >:<tarrif>, <duration from the start>:<tarrif>, ...

      Examples:
      2:2.0, 3:3.0, 4:4.0, 1440:15
      The above means that the fee is $2 if the duration is 2 minutes or less, and, if it is 3 minutes or less, it is $3 and if it is 4 minutes or less, it is $4 and if it is 1440 minutes(24 hours) or less, it is $15
      Another example:
      180:0.0, 360:5.0, 600:7.0, 1440:10.0
      This means that $0 for the first 180 minutes, $5 if the duration is 360 or less, $7 for 600 minutes or less, $10 for 1440minutes or less
      Note: if 1440 is not given, it is assumed that the charge of the previous slab will be carried forward fo the entire day
      Another example:
      1440:0.0
      This means that it is free for 24 hours.
      This can also be achieved by leaving the slab blank.
      Note: 0:6 will be ignored. This is the same as 1440:0. So, if the slab is 0:6, it will be treated as free
      180:10, 0:15 . This means that parking fee is $10 for the whole day, even if duration is 1 minute, still it is $10
      The above slab is the same as 1440:15
      180:6, 0:15, 300:20 This is the same as 180:6, 300:20, 1440:20
      180:6, 300:15, 200:20 This is the same as 180:6, 300:15, 1440:15
      1440:10.0 This means that fee is $10 if you checkin/park for any duration between 0 miniutes and 1440 minutes (one day)
      If you want to charge $6.00 per hour for the entire day, enter the slab as follows:
      60:6.0,120:12.0,180:18.0,240:24.0,300:30.0,360:36.0,420:42.0,480:48.0,540:54.0,600:60.0,660:66.0,720:72.0,780:78.0,840:84.0,900:90.0,960:96.0,1020:102.0,1080:108.0,1140:114.0

    'Fine Slab' is the fine charged, if one checks-in/parks more than the maximum check-in/park duration. this slab has the same format as 'Tariff Slab'

    The 'Start Time' and 'End Time' are the start time and end time for the fee. These are in 24 hour clock in the format hh:mm. Outside this time, it is assumed that there is no fee. If you want to apply the fee for the entire 24 hours of the day, leave these two fields blank.

    'Max Check-in/Park Duration' is the maximum duration allowed to be checked-in/parked in minutes. By default, it is 24 hours (1440 minutes). If anyone is occupying beyond maximum duration, the check-in/parking has to be either extended (if allowed) or fine will be applied.

    'Min Book duration' is the minimum time in minutes that one can book a seat/bay in this public place/parking lot. By default, it is 30 minutes. You can change it to anything.

    'Open Time' and 'Close Time' are the opening and closing time of this public place/parking lot. They must be entered in 24 hour clock in a format hh:mm. Outside this time, the availability in this public place/parking lot will be advertised as 0 in the Google map. If you leave the 'Open Time' and 'Close Time' blank, it is assumed that this public place/parking lot never closes.

    'Check-in/Parking Extendable' can be either 'EXTENDABLE' or 'NOT EXTENDABLE'. If 'NOT EXTENDABLE' nobody will be allowed in when their check-in/parking expires. They will not be able to extend their check-in/parking. Fines will be applied if anybody occupies beyond maximum check-in/park duration.

    'Week' and 'Day' are the week number of the calendar year and day of the week respectively. By default these are set as *, indicating that the check-in/parking fee is the same any day of the week in every week of the year. However, if you want to set different fees for different days of the week, you can select the day for which this fee is applicable. Similarly, if you want to set different fee for different weeks in the year, you can choose the week number. Keep in mind that if you are setting a fee for, say, Monday of the week, and leave week as *, that fee is applicable for every Monday of every week. If so, you will have to set another fee for the other days of the week.



You need to create separate tariff entry for each category.

Once you have created this tariff table, you can see in the google map this tariff shown against your public place/parking lot. So, the public customers can know the check-in/parking fee of your public place/parking lot before they arrive at the public place/parking lot.

7.6  Enable/Disable Booking/Check-in/Parking in a Public Place or Parking Lot

Booking is disabled by default when a public place/parking lot is registered. You can enable booking in any public place/parking lot by clicking 'My Public Places and Parking Lots' under Public Place/Parking Lot Admin in the dashboard menu and selecting 'Allow Booking' to 'Yes'. This selection allows bokking to all categories created within this public place/parking lot unless selectively disabled for each category.

However, you can selectively disable booking in any category during any specific period of the year. To do so, first click on 'My Bookings' under 'Public Place/Parking Lot Admin'. If you have registered more than one public place/parking lot, you will be prompted to select one. Once selected, you will be presented with a Table similar to Fig 73 showing all the current bookings in all categories in selected public places/parking lots.

Fig 73: Enable Booking

If the booking is currently disabled in any category, you will see an entry with Status as NOT_BOOKABLE and the customer is ADMIN@WIFISECUREACCESS.COM. This entry will be seen for each parking category for which booking is disabled. That entry also has a start date and end date. It is between those dates, the booking is disabled. If you want booking to be enabled throughout the year, delete this entry by checking the Delete box and pressing Submit button. Once you have deleted this entry, public customers will be able to book in that category in that public place/parking lot.

Once booking is enabled, public customers will see a link 'Make a Booking' in the pop up window against your public place/parking lot in the google map. You can check this by clicking 'Public Pl/Parking Lots Map' in the Public Place and Parking Lot Admin. Click on the marker on your public place/parking lot. In the pop up window, you will see a link to “Make a booking”.

When the customer arrives at the public place/parking lot within 15 minutes of his booking, and when he scans the QRCode or NFC tag, the system will check and verify his booking and allow him to check-in/park against this booking.

This page also helps disable booking in any category during any specific duration of the year. You can disable booking between any time of the year. To do so, click on 'Add Booking' in the 'Public Place/Parking Lot Admin'. If you own more than one public place/parking lot, system will prompt you to select a public place/parking lot. Then, you will be presented with a form similar to Fig 74.

Fig 74: Add an Enable/Disable 'No Parking' or 'Booking'

Select the category and enter the start date and end date between which you want to disable booking. These dates must be entered in a format 'yyyy-mm-dd hh:mm'. Then, in 'Booking Status', select 'NO_BOOKING' and press Submit. Note: You can also disable check-in/parking in any public place/parking lot between any dates, if you want, by selecting 'NO CHECK-IN/NO-PARKING' in this form.

7.7  Check Status of Your Public Access Place or Parking Lots

You can check the current status of your public place/parking lots, as well as the previous check-in/parking records. On the “Public Place/Parking lots Admin” page, you will see the tabs: “Checkin/Parking Status”, “Single Bay Detail”, “Lot availability summary”, “Checkin/Parking records”. You can click on any of these to get the current status as well as previous records of your public place/parking lots. Note: “Single Bay Detail” is for those public places/parking lots where each seat/bay has a Smart device.

For administrative reasons, if the owner of the public place/parking lot finds it necessary, he can forcefully checkout a person or /unpark a vehicle that occupies in any of the public place/parking lot that he owns. To do that, click 'CheckOut/Unpark a Vehicle' in the 'Public Place/Parking Lot Admin'

The system keeps checkin/parking records only for 30 days. If the owner of the public place/parking lot wants to keep records for a longer time and/or do any analysis of the records, he can copy the records from our system to his computer. A later section of this documents has full details on how this can be done.

7.8  How to create a Stripe account for Receiving Fees from customers

If you are charging fees, you have to create a an account with Stripe.com and connect that account with wifisecureaccess.com. First, login to Stripe.com and open an account. Once an account is opened, go to https://wifisecureaccess.com. Click “Public Place/Parking lots Admin” on the Dashboard. If you have registerd public places or parking lots with WiFiSecureAccess and if you have not yet connected your stripe account with wifisecureaccess.com, you will see a button “Create/Connect Stripe account” at the bottom of this page as shown in Fig 75.

Fig 75: Connect Stripe Account

Click on that link. That will take you to stripe.com. Follow the prompts. Once you have entered all the information on that page and submit, it will connect your steipe account with wifisecureaccess.com and take you back to “Public Place/Parking Lots Admin” page of wifisecureaccess.com. At this time, if your account has been successfully connected to wifisecureaccess.com, the link at the bottom will show “Disconnect Your Stripe Account”. You can disconnect your stripe account from wifisecureaccess.com by clicking this link. But, please keep in mind that if your account is not successfully connected, entry/parking fees will not be collected transferred to your stripe account.

8.0  Monitoring and Managing Check-in and Parking by customers

When parking lots are in the system, you will see a button 'Vehicles and Parking Admin' in the Dashboard. “Vehicles and Parking” is a link to the customers (Motorists) to manage their parking as well as to locate a parking lot in a city and to see and manage their parking. If they click on that link, they will see a page similar to Fig 76, if they have not registered any vehicle yet with our system.

Fig 76: Vehicles and Parking Admin

Now, click on 'Add a Vehicle'. That will show a page similar to Fig 77.
Fig 77: Register a Vehicle with WiFiSecureAccess.com

In this form, State and Country are the state and country where this vehicle is registered with the Goverment Authority. For example, if the vehicle is registered in California in USA, enter CA for State and USA for Country. Press Submit after entering these information.

Once you press Submit, it will register your vehicle with WiFiSecureAccess against your account and display a page similar to Fig 78 showing all your registerd vehicles. In this page, you can add any additional vehicles or delete any registerd vehicle.
Fig 78: My Vehicles

Once you have registerd a vehicle with wifisecureaccess.com, you will see a page similar to Fig 79 when you click 'Vehicles and Parking' under Dashboard.
Fig 79: Vehicles and Parking Admin

There are several links on this page that will help a motorist to manage his parking.
    1. 'show All Parking Lots on Map' : click this button to see all parking lots in the system on a Google map. You will see either a green marker or a red marker at the parking lots. The marker is green if there are parking spaces available in that parking lot and it is red when no parking space is available at this time. Click on this marker to see futher details of this parking lot. You will see a pop up window. You will see its name, available parking categories, available parking spaces in each category as well as parking fee in each category at this time. If the owner of the vehicle has provided a link to the url of this parking lot, you can go to their site by clicking the name of the parking lot. Also, if the owner of the parking lot has enabled booking, you will see a link to "Make a Booking'. And, if the owner of the parking lot has set a hold time, you will see a link to 'Hold this parking'. If yes, you can click that link to hold it. Then follow the prompt. If successful, you can hold a parking space while driving to that parking lot. Note: This feature of holding a parking spot is available only if the parking lot has smart devices at every bay.
    2. 'My Vehicles': Clicking this link will take you to a page showing all your registered vehicles. You can add more vehicles or delete any registered vehicles on this page.
    3. 'My Parking Status': If you click this tab, it will display the parking status of your currently parked vehicles. If you have parked a vehicle in any parking lot, this will display the duration of parking, time when parking expires, parking charge accumulated so far, and a link to extending parking, if extension of parking is allowed by the owner of the parking lot.
    4. 'My Bookings': Clicking this tab will take you to a page showing all your current bookings. You will be able to make any modification of your booking in this page, if allowed.
    5. 'Share My Vehicle': This tab helps you to share your vehicle with friends and family. If you share, those whom you share with can use this vehicle to park in any of the parking lot.
    6. 'Vehicles Sharing': Clicking this tab will display all the vehicles that are shared between you and others.
    7. 'My Parking records': This tab helps you to see all your parking records in the last 30 days. The system keeps record of your parking for 30 days, and you can see where and when you parked, how long you parked and what parking fee and fine you paid in the past 30 days.

We recommend clicking these links and get a feel of what all you can do as a motorist.

Parking: In order to park, motorists need to sacn the QRCode or NFC Tag at the entry of a parking lot. Open the app in their smart phone, press 'Scan QRCode' and scan the QR Code placed at the entry or exit of the parking lot. If they have used NFC Tags instead of QR Codes, press SCAN NFC TAG. When scanning at the exit gate, parking fee will be computed and will be charged to their credit card. The system will automatically transfer the parking fee (minus Stripe fee) to the Stripe account of the owner of the parking lot. If you have not used your credit card yet for parking with wifisecureaccess.com, the system will prompt you at the entry to register it and will charge $1 at the entry while registering. Once registered, stripe.com will remember your credit card details and, thereafter, may not request you to enter credit card details again. Stripe may send you verification codes, instead.

9.0  Remote Data Collection, Moinitoring and Analysis

Our smart devices can be used for collecting data from remote sensors. You can collect data at periodic intervals and save them in your computer for your records, or for any type of data analysis of your choice. Connect the sensors to the device as explained in section 3.0 on 'Connecting External Equipments and Sensors' in this documentation. Once connected, as explained in that section, you can see the outputs of the sensors by clicking 'Show Devices details' under Device Admin in the Dashbaord. By refreshing that page, you can see the updated data. However, this is not ideal for periodic data collection. In this section, you will learn how to collect data from sensors periodically and how to store them in your computer.

9.1  Data Collection at Periodic Time Intervals

Data from sensors of any smart device can be obtained using a python program that makes a call to https://wifisecureaccess.com. Here is a python program that will collect data and and print it on the console terminal as well as write to a file on your local computer.


#!/usr/bin/env python
import time
import requests
import json
import getpass
from threading import Timer
import os
import signal

#
def keyboardInterruptHandler(signal, frame):
    print("KeyboardInterrupt (ID: {}) has been caught. Cleaning up...".format(signal))
    ti.cancel()
    f.close()
    exit(0)


def main_loop():
   while True:
      email = input("Enter email : ")
      if email and email != "":
         break
   email = email.upper()
   while True:
      password = getpass.getpass()
      if password and password != "":
         break
   while True:
      device_name = input("Device Name: ")
      if device_name and device_name != '':
         break
   if device_name.isspace():
      print("device name cannot be empty spaces")
      exit(1)
   Error_code = 1
   while Error_code == 1:
      try:
         time_period = int(input("Time Period for data collection in seconds (no fractions, minimum 1): "))
         Error_code = 0
      except:
         Error_code = 1
   if time_period < 1:
      print(" Time period is too short for data collection through internet")
      exit(1)
   while True:
      file_name = input("File Name: ")
      if file_name and file_name != '':
         break
   if file_name.isspace():
      print("Error.  File name cannot be blank spaces")
      exit(1)

   try:
      f = open(file_name, "a+")
   except:
      print("Unable to open the file %s" % (file_name))
      exit(1)

   s = requests.session()
   url = "https://wifisecureaccess.com/access/devicePortsJson/"
   # The labels should be the changed names.  That means, if the user has changed the labels, use the changed labels.
   # Returned data will have the status of all the input ports of this device
   data = {'email': email, 'password': password, 'device_name': device_name,}
   headers = {'Content-Type': 'application/json', 'Accept': 'application/json',}
   while True:
      r = s.post(url, data=json.dumps(data), headers=headers)
      if r.status_code == requests.codes['ok']:
         res = r.json()
         #print(res)
         if res['result'] and res['result'] == 'SUCCESS':
            if 'dev_time' in res:
               print('Device_time = %s' % res['dev_time'], end=', ')
               f.write('Device_time = %s, ' % res['dev_time'])
            if 'Vin' in res:
               print('Vin = %s' % res['Vin'], end=', ')
               f.write('Vin = %s, ' % res['Vin'])
            if 'U_SOUND' in res:
               print('Ultra_sound = %s' % res['U_SOUND'], end=", ")
               f.write('Ultra_sound = %s, ' % res['U_SOUND'])
            if 'D6' in res:
               print('D6 = %s' % res['D6'], end=', ')
               f.write('D6 = %s, ' % res['D6'])
            if 'D7' in res:
               print('D7 = %s' % res['D7'], end=', ')
               f.write('D7 = %s, ' % res['D7'])
            if 'D6_temp_c' in res:
               print('D6_tem_c = %s' % res['D6_temp_c'], end=', ')
               f.write('D6_tem_c = %s, ' % res['D6_temp_c'])
            if 'D6_temp_f' in res:
               print('D6_temp_f = %s' % res['D6_temp_f'], end=', ')
               f.write('D6_temp_f = %s, ' % res['D6_temp_f'])
            if 'D6_humidity' in res:
               print('D6_humidity = %s' % res['D6_humidity'], end=', ')
               f.write('D6_humidity = %s, ' % res['D6_humidity'])
            if 'D7_temp_c' in res:
               print('D7_tem_c = %s' % res['D7_temp_c'], end=', ')
               f.write('D7_tem_c = %s, ' % res['D7_temp_c'])
            if 'D7_temp_f' in res:
               print('D7_temp_f = %s' % res['D7_temp_f'], end=', ')
               f.write('D7_temp_f = %s, ' % res['D7_temp_f'])
            if 'D7_humidity' in res:
               print('D7_humidity = %s' % res['D7_humidity'], end=', ')
               f.write('D7_humidity = %s, ' % res['D7_humidity'])
            print()
            f.write("\r\n")
            time.sleep(time_period)
         else:
            if 'msg' in res:
               msg = res['msg']
            else:
               msg = ""
            print("FAIL: ", msg)
            f.close()
            break
      else:
         print("FAIL.  Device not communicating")
         print(r)
         f.close()
         break

if __name__ == '__main__':
   main_loop()

When run, the program will prompt for your user name and password for wifisecureaccess.com. It will also ask for the file name on your local computer to save the data.
And, here is a snapshot of the screen running this test program:


$ python test_periodic_data_collection.py
Enter email : test53680@gmail.com
Password: 
Device Name: New_Device
Time Period for data collection in seconds: 10
File Name: my_file.txt
{'result': 'SUCCESS', 'msg': 'Login Success'}
Device_time = 2020-04-09 23:41:56, Vin = 0.01, D6_tem_c = 24.2, D6_temp_f = 75.56, D6_humidity = 63.0, D7_tem_c = 22.25, D7_temp_f = 72.05, 
Device_time = 2020-04-09 23:42:06, Vin = 0.01, D6_tem_c = 22.5, D6_temp_f = 72.5, D6_humidity = 69.0, D7_tem_c = 22.25, D7_temp_f = 72.05, 
Device_time = 2020-04-09 23:42:16, Vin = 0.01, D6_tem_c = 22.5, D6_temp_f = 72.5, D6_humidity = 69.0, D7_tem_c = 22.25, D7_temp_f = 72.05, 
Device_time = 2020-04-09 23:42:26, Vin = 0.01, D6_tem_c = 22.5, D6_temp_f = 72.5, D6_humidity = 69.0, D7_tem_c = 22.25, D7_temp_f = 72.05, 
Device_time = 2020-04-09 23:42:36, Vin = 0.01, D6_tem_c = 22.4, D6_temp_f = 72.32, D6_humidity = 69.0, D7_tem_c = 22.25, D7_temp_f = 72.05, 
Device_time = 2020-04-09 23:42:46, Vin = 0.01, D6_tem_c = 22.3, D6_temp_f = 72.14, D6_humidity = 69.0, D7_tem_c = 22.25, D7_temp_f = 72.05, 
Device_time = 2020-04-09 23:42:56, Vin = 0.01, D6_tem_c = 22.3, D6_temp_f = 72.14, D6_humidity = 69.0, D7_tem_c = 22.25, D7_temp_f = 72.05, 
The above program makes a call to the server at every specified time period. And, it prints out the return values in a single line. You may modify this program if you want it to write the data in any other format.
You may use any of your analytical tools to analyse the data collected in a file..

9.2  Reading Data From Any Port of Your devices Using Your Own Program

If you are interested in reading data from any port of your devices using your own program on your local comouter, you can incorportate the following python code into your code. This python program makes a call to https://wifisecureaccess.com with your credentials. You can specify the port name as well as the device name. The python program returns the data from that port and prints it on terminal. When you incorporate this program into your codes, you can do whatever you want to do with that read data instead of printing on the terminal. This code becomes useful if you plan to write your own program to control ports of any of your devices based on other conditions which are outside the sensor values of any of your devices.


#!/usr/bin/env python
import requests
import json
import getpass

def main_loop():
   while True:
      email = input("Enter email : ")
      if email and email != "":
         break
   email = email.upper()
   while True:
      password = getpass.getpass()
      if password and password != "":
         break
   while True:
      device_name = input("Device Name: ")
      if device_name and device_name != '':
         break
   if device_name.isspace():
      print("device name cannot be empty spaces")
      exit(1)
   while True:
      port_name = input("Inport Name: ")
      if port_name and port_name != '':
         break
   if port_name.isspace():
      print("Port name cannot be empty spaces")
      exit(1)

   s = requests.session()
   url = "https://wifisecureaccess.com/access/devicePortsJson/"
   # The port_name should be the changed label name of the port.  That means, if the user has changed the labels, use the changed labels.
   #For example, if you have changed the label D6 to something like 'MyPort', you should be using 'MyPort' in these programs for inport name instead of D6
   data = {'email': email, 'password': password, 'device_name': device_name,}
   headers = {'Content-Type': 'application/json', 'Accept': 'application/json',}
   r = s.post(url, data=json.dumps(data), headers=headers)
   if r.status_code == requests.codes['ok']:
         res = r.json()
         print(res)
         if res['result'] and res['result'] == 'SUCCESS':
            if port_name in res:
               print(port_name, ': ',  res[port_name])
            else:
               print("%s does not exist in the device" % (port_name))
               print("Received Port Names and their current status are: %s" % (res))
         elif res['msg']:
            print(res['msg'])

   else:
         print("Server error or communication error")

if __name__ == '__main__':
  main_loop()
When run, the above program prompts for your email address, password, device name and port name. It then, makes a call to the server and returns the value from that port. It prints that value on your terminal. If the port name is an output port, it displays the current state of that outpout port (ON or OFF). If it is an input port, it displays the data read from that port.

9.3  Putting ON/OFF any OutPort of any of Your devices Using Your Own Program

You can also put ON or OFF any ouput port of any of your devices using your own program. Given below is a python program to do that. When run, the program prompts for your email, password, device name, the name of the outport and whether you want to put it ON or OFF. It then puts that port ON or OFF depending on what you requested and prints the final status of that port.


#!/usr/bin/env python
import requests
import json
import getpass
from datetime import datetime
import pytz

def main_loop():
   while True:
      email = input("Enter email : ")
      if email and email != "":
         break
   email = email.upper()
   while True:
      password = getpass.getpass()
      if password and password != "":
         break
   while True:
      device_name = input("Device Name: ")
      if device_name and device_name != '':
         break
   if device_name.isspace():
      print("device name cannot be empty spaces")
      exit(1)
   while True:
      port_name = input("Outport Name: ")
      if port_name and port_name != '':
         break
   if port_name.isspace():
      print("Outport name cannot be empty spaces")
      exit(1)
   while True:
      on_off = input("ON or OFF ? : ")
      if on_off == 'ON' or on_off == 'OFF':
         break

   s = requests.session()
   url = "https://wifisecureaccess.com/access/devicePortsJson/"
   # The port_name should be the changed label name of the port.  That means, if the user has changed the labels, use the changed labels.
   #For example, if you have changed the label P0 to something like 'MyOutPort', you should be using 'MyoutPort' in these programs for Outport name instead of P0
   data = {'email': email, 'password': password, 'device_name': device_name, 'port_name': port_name, 'action': on_off,}
   headers = {'Content-Type': 'application/json', 'Accept': 'application/json',}
   r = s.post(url, data=json.dumps(data), headers=headers)
   if r.status_code == requests.codes['ok']:
      res = r.json()
      #print(res)
      if res['result'] and res['result'] == 'SUCCESS':
         if port_name in res:
            print(port_name, ': ',  res[port_name])
         else:
            print("%s does not exist in the device" % (port_name))
            print("Received Port Names and their current status are: %s" % (res))
      elif res['msg']:
         print(res['msg'])

   else:
      print("Server error or communication error")

if __name__ == '__main__':
  main_loop()


The programs in sections 9.2 and 9.3 can be used for controlling any port of any of your devices using your own program, if you so desire. Normally, there will not be any need to write any of your code as almost all your requirements can be met with just configuring devices as per the steps given in sections 5, 6 and 7. However, for those hobby enthusiasts as well as developers with special needs, these two methods in section 9.2 and 9.3 will be helpful.

10.0  Copying Use Records and Parking Records to Local Computer

Our system keeps all the use records and parking records for 30 days only. However, our customers can copy these records at frequent intervals to their computer and store them longer. They can also use their own dedicated data analysis tools to anlyze these data. A simple program making a json call to our url will provide you these use records in json format. Given in this section are some sample test program to copy these records.

10.1  Copying Device Use Records

'Device Use Records' have the information of anybody's using this device. The owner of a device can see the use records in Dashboard by clicking 'Device Use Records' under 'Device Admin'. These records can also be copied at frequest intervals to your local computer. Given below is an example of a program to copy these records.


#!/usr/bin/env python
import requests
import json
import getpass
import os

def main_loop():
   while True:
      email = input("Enter email : ")
      if email and email != "":
         break
   email = email.upper()
   while True:
      password = getpass.getpass()
      if password and password != "":
         break
   while True:
      device_name = input("Device Name: ")
      if device_name and device_name != '':
         break
   if device_name.isspace():
      print("device name cannot be empty spaces")
      exit(1)
   while True:
      start_date = input("Start Date (yyyy-mm-dd hh:mm): ")
      if start_date and start_date != '':
         break
   if start_date.isspace():
      print("start_date cannot be blank spaces")
      exit(1)
   while True:
      end_date = input("End Date (yyyy-mm-dd hh:mm): ")
      if end_date and end_date != '':
         break
   if end_date.isspace():
      print("End_date cannot be empty spaces")
      exit(1)
   while True:
      file_name = input("File Name: ")
      if file_name and file_name != '':
         break
   if file_name.isspace():
      print("Error.  File name cannot be blank spaces")
      exit(1)

   s = requests.session()
   n_next = 0
   url = "https://wifisecureaccess.com/access/get_useRecordsJson/"
   headers = {'Content-Type': 'application/json', 'Accept': 'application/json',}
   try:
      f = open(file_name, "a+")
   except:
      print("Unable to open the file %s" % (file_name))
      exit(1)

   while True:
            data = {'email': email, 'password': password, 'records_type': 'device', 'device_name': device_name, 'start_date': start_date, 'end_date': end_date, 'n_next': n_next,}
            r = s.post(url, data=json.dumps(data), headers=headers)
            if r.status_code == requests.codes['ok']:
               res = r.json()
               if res['result'] and res['result'] == 'SUCCESS':
                  if n_next == 0:
                     print("Field Names: ", res['field_names'])
                     if os.stat(file_name).st_size == 0:
                        field_names = res['field_names']
                        for field_name in field_names:
                           f.write(field_name)
                           f.write(", ")
                        f.write("\r\n\r\n")
                  records = res['records']
                  for record in records:
                     for value in record:
                        if not value:
                           value = ''
                        print(value, end=", ")
                        f.write(value)
                        f.write(", ")
                     print()
                     f.write("\r\n")
                  n_next = res['n_next']
                  records_remaining = res['records_remaining']
                  if records_remaining == 0:
                     break
               else:
                  if 'msg' in res:
                     msg = res['msg']
                  else:
                     msg = ""
                  print("FAIL: ", msg)
                  break
            else:
               print(r)
               print("FAIL:  Communication error")
               break
   f.close()


if __name__ == '__main__':
  main_loop()
And, here is a screenshot of the terminal running this program:

$ python test_getDeviceUseRecords.py
Enter email : test53680@gmail.com
Password: 
Device Name: New_Device
Start Date (yyyy-mm-dd hh:mm): 2020-03-28 10:30
End Date (yyyy-mm-dd hh:mm): 2020-04-09 23:10
File Name: my_file.txt
{'result': 'SUCCESS', 'msg': 'Login Success'}
Field Names:  ['customer_email', 'use_time']
RAMAN.V.NATH@GMAIL.COM, 2020-04-08 00:41, 
RAMAN.V.NATH@GMAIL.COM, 2020-04-08 00:44, 
RAMAN.V.NATH@GMAIL.COM, 2020-04-08 00:45, 
TEST53680@GMAIL.COM, 2020-04-08 10:50, 
TEST53680@GMAIL.COM, 2020-04-08 10:52, 
TEST53680@GMAIL.COM, 2020-04-08 10:52, 
TEST53680@GMAIL.COM, 2020-04-08 10:52, 
TEST53680@GMAIL.COM, 2020-04-08 10:52, 
TEST53680@GMAIL.COM, 2020-04-08 10:52, 
The above program makes a call to the server. And, it prints out the records on the terminal window of the user's computer. It also appends the same data to the specified local file. Note that it appends the data to the file instead of creating a new file so that records read earlier will not be lost. You can use the data in the file for doing any analysis of the data. The System keeps the use records for 30 days only. So, the owner of the device may read this record, say, every 15 days giving the start data and end date appropriately so that you copy the data from the last end_date. As the program appends the new data to the file, all the previously read records are also in the same file. In doing so, you will have the complete record of as many days as you want. Note: the first line of the file will have the field names. Subsequent lines in the file are the records.

10.2  Copying Group Use Records

Group records is the use records of a group, showing who used the devices in this group and when. These records can be seen on the dashboard by clicking 'Group Records' under Device Groups in Dashbaord. To copy the same records into your computer, you need a program to make calls to the IOT server. Given below is a program to do that.


#!/usr/bin/env python
import requests
import json
import getpass
import os

def main_loop():
   while True:
      email = input("Enter email : ")
      if email and email != "":
         break
   email = email.upper()
   while True:
      password = getpass.getpass()
      if password and password != "":
         break
   while True:
      group_name = input("Group Name: ")
      if group_name and group_name != '':
         break
   if group_name.isspace():
      print("group name cannot be blank spaces")
      exit(1)
   while True:
      start_date = input("Start Date (yyyy-mm-dd hh:mm): ")
      if start_date and start_date != '':
         break
   if start_date.isspace():
      print("start_date cannot be blank spaces")
      exit(1)
   while True:
      end_date = input("End Date (yyyy-mm-dd hh:mm): ")
      if end_date and end_date != '':
         break
   if end_date.isspace():
      print("End_date cannot be empty spaces")
      exit(1)
   while True:
      file_name = input("File Name: ")
      if file_name and file_name != '':
         break
   if file_name.isspace():
      print("Error.  File name cannot be blank spaces")
      exit(1)

   s = requests.session()
   n_next = 0
   url = "https://wifisecureaccess.com/access/get_useRecordsJson/"
   headers = {'Content-Type': 'application/json', 'Accept': 'application/json',}
   try:
      f = open(file_name, "a+")
   except:
      print("Unable to open the file %s" % (file_name))
      exit(1)

   while True:
            data = {'email': email, 'password': password, 'records_type': 'group', 'group_name': group_name, 'start_date': start_date, 'end_date': end_date, 'n_next': n_next,}
            r = s.post(url, data=json.dumps(data), headers=headers)
            if r.status_code == requests.codes['ok']:
               res = r.json()
               if res['result'] and res['result'] == 'SUCCESS':
                  if n_next == 0:
                     print("Field Names: ", res['field_names'])
                     if os.stat(file_name).st_size == 0:
                        field_names = res['field_names']
                        for field_name in field_names:
                           f.write(field_name)
                           f.write(", ")
                        f.write("\r\n\r\n")
                  records = res['records']
                  for record in records:
                     for value in record:
                        if not value:
                           value = ''
                        print(value, end=', ')
                        f.write(value)
                        f.write(", ")
                     print()
                     f.write("\r\n")
                  n_next = res['n_next']
                  records_remaining = res['records_remaining']
                  if records_remaining == 0:
                     break
               else:
                  if 'msg' in res:
                     msg = res['msg']
                  else:
                     msg = ""
                  print("FAIL: ", msg)
                  break
            else:
               print(r)
               print("FAIL:  Communication error")
               break
   f.close()

if __name__ == '__main__':
  main_loop()

And, here is a sample snapshot of a terminal running this program:

$ python test_get_groupUseRecords.py
Enter email : test53680@gmail.com
Password: 
Group Name: My House
Start Date (yyyy-mm-dd hh:mm): 2020-03-10 0:0
End Date (yyyy-mm-dd hh:mm): 2020-04-11 0:0
File Name: my_file.txt
{'result': 'SUCCESS', 'msg': 'Login Success'}
Field Names:  ['device_name', 'device_use_type', 'customer_email', 'use_time']
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-07 08:01, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-07 07:59, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-07 07:59, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-06 23:10, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-06 23:10, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-06 23:09, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-06 23:09, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-06 23:08, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-06 23:08, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-06 23:06, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-06 23:06, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-06 23:06, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-06 23:06, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-06 23:04, 
New_Device, CONTROL/SENSOR, TEST53680@GMAIL.COM, 2020-04-06 23:00, 
The above program makes a call to the server. And, it prints the records on the terminal of your computer. It also appends the same data to the specified file on your local computer. Note that it appends the data to the file instead of creating a new file so that all previously read data are retained in the file. This data in the file will help you analyse it using any of your sophisticated tools. Keep in mid that the system keeps records for 30 days only. So, you will have to copy the records, say, every 15 days or so giving the start date as the end date given when copying data last time. As the program appends the data to the same file, it will have all the previously read data as well. That way, your file will have all the records for a much longer time.

10.3  Copying Customer Use Records

Customer use records are the records of a customer's use of all the devices in the system. You can see your use records of any devices in the system in Dashboad by clicking 'My Use Records' under 'User Admin' in Dashboard. If you want the same records copied into your local computer to keep the data for longer time, or to do detailed data analysis for your special needs, you need a program to make calls to the server. Given below is a program in python to get these records from the server.


#!/usr/bin/env python
import requests
import json
import getpass
import os

def main_loop():
   while True:
      email = input("Enter email : ")
      if email and email != "":
         break
   email = email.upper()
   while True:
      password = getpass.getpass()
      if password and password != "":
         break
   while True:
      start_date = input("Start Date (yyyy-mm-dd hh:mm): ")
      if start_date and start_date != '':
         break
   if start_date.isspace():
      print("start_date cannot be blank spaces")
      exit(1)
   while True:
      end_date = input("End Date (yyyy-mm-dd hh:mm): ")
      if end_date and end_date != '':
         break
   if end_date.isspace():
      print("End_date cannot be empty spaces")
      exit(1)
   while True:
      file_name = input("File Name: ")
      if file_name and file_name != '':
         break
   if file_name.isspace():
      print("Error.  File name cannot be blank spaces")
      exit(1)

   s = requests.session()
   n_next = 0
   url = "https://wifisecureaccess.com/access/get_useRecordsJson/"
   headers = {'Content-Type': 'application/json', 'Accept': 'application/json',}
   try:
      f = open(file_name, "a+")
   except:
      print("Unable to open the file %s" % (file_name))
      exit(1)

   while True:
            data = {'email': email, 'password': password, 'records_type': 'customer', 'start_date': start_date, 'end_date': end_date, 'n_next': n_next,}
            r = s.post(url, data=json.dumps(data), headers=headers)
            if r.status_code == requests.codes['ok']:
               res = r.json()
               if res['result'] and res['result'] == 'SUCCESS':
                  if n_next == 0:
                     print("Field Names: ", res['field_names'])
                     if os.stat(file_name).st_size == 0:
                        field_names = res['field_names']
                        for field_name in field_names:
                           f.write(field_name)
                           f.write(", ")
                        f.write("\r\n\r\n")
                  records = res['records']
                  for record in records:
                     for value in record:
                        if not value:
                           value = ''
                        print(value, end=", ")
                        f.write(value)
                        f.write(", ")
                     print()
                     f.write("\r\n")
                  n_next = res['n_next']
                  records_remaining = res['records_remaining']
                  if records_remaining == 0:
                     break
               else:
                  if 'msg' in res:
                     msg = res['msg']
                  else:
                     msg = ""
                  print("FAIL: ", msg)
                  break
            else:
               print(r)
               print("FAIL:  Communication error")
               break
   f.close()

if __name__ == '__main__':
  main_loop()
And, here is an example snapshot of a local terminal running this program.

$ python test_getCustomerUseRecords.py
Enter email : test53680@gmail.com
Password: 
User Timezone (example: Australia/Sydney) deault: UTC
(Refer https://en.wikipedia.org/wiki/List_of_tz_database_time_zones): US/Pacific
Start Date (yyyy-mm-dd hh:mm): 2020-04-08 08:21
End Date (yyyy-mm-dd hh:mm): 2020-04-08 10:53
File Name: my_file.txt
{'result': 'SUCCESS', 'msg': 'Login Success'}
Field Names:  ['device_name', 'device_use_type', 'group_name', 'use_time']
New_Device, CONTROL/SENSOR, None, 2020-04-08 10:52, 
New_Device, CONTROL/SENSOR, None, 2020-04-08 10:52, 
New_Device, CONTROL/SENSOR, None, 2020-04-08 10:52, 
New_Device, CONTROL/SENSOR, None, 2020-04-08 10:52, 
New_Device, CONTROL/SENSOR, None, 2020-04-08 10:52, 
New_Device, CONTROL/SENSOR, None, 2020-04-08 10:52, 
New_Device, CONTROL/SENSOR, None, 2020-04-08 10:52, 
New_Device_H1.2, CONTROL/SENSOR, None, 2020-04-08 10:52, 
New_Device_H1.2, CONTROL/SENSOR, None, 2020-04-08 10:51, 
New_Device_H1.2, CONTROL/SENSOR, None, 2020-04-08 10:51, 
New_Device_H1.2, CONTROL/SENSOR, None, 2020-04-08 10:51, 
D8BFC0F2D182, CONTROL/SENSOR, None, 2020-04-08 10:50, 
A020A62FC8BD, CONTROL/SENSOR, None, 2020-04-08 08:21, 
The above program makes a call to the server. Refer to the suggestions given for reading group records in the previous section about copying records. Those comments apply here as well.

10.4  Copying Parking Records

If you own any parking lot, parking records of your parking lot can be copied to your local computer using a program. The following is a program in python to read parking records of any parking lot that you own.


#!/usr/bin/env python
import requests
import json
import getpass
import os

def main_loop():
   while True:
      email = input("Enter email : ")
      if email and email != "":
         break
   email = email.upper()
   while True:
      password = getpass.getpass()
      if password and password != "":
         break
   while True:
      parking_lot_name = input("Parking Lot Name: ")
      if parking_lot_name and parking_lot_name != '':
         break
   if parking_lot_name.isspace():
      print("parking lot name cannot be blank spaces")
      exit(1)
   while True:
      start_date = input("Start Date (yyyy-mm-dd hh:mm): ")
      if start_date and start_date != '':
         break
   if start_date.isspace():
      print("start_date cannot be blank spaces")
      exit(1)
   while True:
      end_date = input("End Date (yyyy-mm-dd hh:mm): ")
      if end_date and end_date != '':
         break
   if end_date.isspace():
      print("End_date cannot be empty spaces")
      exit(1)
   while True:
      file_name = input("File Name: ")
      if file_name and file_name != '':
         break
   if file_name.isspace():
      print("Error.  File name cannot be blank spaces")
      exit(1)

   s = requests.session()
   n_next = 0
   url = "https://wifisecureaccess.com/access/get_parkingRecordsJson/"
   headers = {'Content-Type': 'application/json', 'Accept': 'application/json',}
   try:
      f = open(file_name, "a+")
   except:
      print("Unable to open the file %s" % (file_name))
      exit(1)

   while True:
            data = {'email': email, 'password': password, 'records_type': 'parking_lot', 'parking_lot_name': parking_lot_name, 'start_date': start_date, 'end_date': end_date, 'n_next': n_next,}
            r = s.post(url, data=json.dumps(data), headers=headers)
            if r.status_code == requests.codes['ok']:
               res = r.json()
               if res['result'] and res['result'] == 'SUCCESS':
                  if n_next == 0:
                     print("Field Names: ", res['field_names'])
                     if os.stat(file_name).st_size == 0:
                        field_names = res['field_names']
                        for field_name in field_names:
                           f.write(field_name)
                           f.write(", ")
                        f.write("\r\n\r\n")
                  records = res['records']
                  for record in records:
                     for value in record:
                        if not value:
                           value = ''
                        print(value, end=", ")
                        f.write(value)
                        f.write(", ")
                     print()
                     f.write("\r\n")
                  n_next = res['n_next']
                  records_remaining = res['records_remaining']
                  if records_remaining == 0:
                     break
               else:
                  if 'msg' in res:
                     msg = res['msg']
                  else:
                     msg = ""
                  print("FAIL: ", msg)
                  break
            else:
               print(r)
               print("Fail")
               break

   f.close()

if __name__ == '__main__':
  main_loop()
And, here is an example screenshot of a terminal runnin this test program

$ python test_getLotParkingRecords.py
Enter email : test53680@gmail.com
Password: 
Parking Lot Name: PARKING_LOT28265
Start Date (yyyy-mm-dd hh:mm): 2020-03-30 10:00
End Date (yyyy-mm-dd hh:mm): 2020-04-10 23:00
File Name: my_file.txt
{'result': 'SUCCESS', 'msg': 'Login Success'}
Field Names:  ['vehicle_reg_no', 'state', 'country', 'bay_no', 'customer_email', 'parking_category', 'parking_start', 'parking_end', 'amount_charged', 'currency']
WAU 971, NSW, AUSTRALIA, , TEST53680@GMAIL.COM, GENERAL, 2020-04-10 22:16, 2020-04-10 22:25, 0.00, AUD, 
WAU 971, NSW, AUSTRALIA, , TEST53680@GMAIL.COM, GENERAL, 2020-04-10 21:51, 2020-04-10 21:54, 0.00, AUD, 
WAU 971, NSW, AUSTRALIA, , TEST53680GMAIL.COM, GENERAL, 2020-04-10 21:43, 2020-04-10 21:46, 0.00, AUD, 
The above program makes a call to the server to get parking records. The program displays data on your local terminal. It also appends the same data to the specified file on your local computer. We recommend reading them at least once in 15 days proving the start date as the end date given in the previus reading so that you will not have overlapped data or missing data. In doing so, ypur file will have the complete parking records that you can maintain for a much longer time. You can use any of your sophisticated tools to analyse this data.

11.0  Integration with your other Apps and programs

WiFiSecureAccess system has web interfaces that can be used by any of your applications programs or any other Apps to open or close the garage door. From your applications, you can make an HTTPS POST call to url https://wifisecureaccess.com/devicePortsJson/ giving your credentials and the name of your device and the action to be taken in a JSON format.

11.1  Opening/Closing garage with an HTTPS POST call

To open or close the garage door, make an HTTPS POST call with the following details:

POST HTTP/1.1
Host: wifisecureaccess.com/devicePortsJson/
Content-Type: application/json

Provide the credentials and data in the following JSON format:
data = { "email": your_email, "password": your_password, "device_name": device_name, "action": action, }

--where your_email and your_password are the email address and password of the owner of the device connected to your garage door. device_name is the name assigned to the device. action should be either "ON" or "OFF". If you want to open the garage, action must be "ON", and if you want to close the garage, action must be "OFF".

If a POST call is made as per that above format, the garage door will be activated as per the action specified. Refer to the following sample python program. This sample call will open the garage door.


#!/usr/bin/env python
import requests
import json

def main_loop():
   url = "https://wifisecureaccess.com/access/devicePortsJson/"
   #the following are just an example.  replace these with your's.
   device_name = "My Garage"   # replace this with the name of your device
   email = "tester@gmail.com"
   password = "12345678"
   action = "ON"
   data = {'email': email, 'password': password, 'device_name': device_name, 'action': action,}
   headers = {'Content-Type': 'application/json', 'Accept': 'application/json',}
   r = requests.post(url, data=json.dumps(data), headers=headers)

   if r.status_code == requests.codes['ok']:
      res = r.json()
      if res['result'] and res['result'] == 'SUCCESS':
         print("SUCCESS")
      elif res['msg']:
         print(res['msg'])
      else:
         print("FAIL")

   else:
      print("Server error or communication error")

if __name__ == '__main__':
  main_loop()

12.0  Use the Smart device as an IOT Developmemt Board

For those who are looking for a microcontroller development board, or an IOT development board, this smart device can easily be used. This is ideal for schools and other educational institutions for learning microcontroller programming using Arduino IDE. This board is also very ideal as an IOT development board for those who want to load their own program to control equipments. The device can be connected to a USB port on your computer and Arduino IDE can be used for developing programs. In order to connect to a USB board on your computer, you need a serial interface board. Fig 80 shows the serial interface programmer board. This uses a CH340G serial-to-usb chip. This can be purchased from WiFiSecureAccess by contacting them on contact@wifisecureaccess.com. This, along with the smart device, will be available for purchase as a development kit from Ebay.

Fig 80: Programmer Board

12.1  Components Required to Program the Device


  1. New PCB (WiFiSecureAccess Device)
  2. A Computer. It can be a windows machine or Apple macbook
  3. Prgrammer PCB
  4. USB cable with one end a micro usb connector and the other end a matching usb connector to the computer
The following figures show the programmer PCB with USB cable.

Fig 81: Programmer PCB

Fig 82: Connecting Programmer Board to Smart Device

Fig 83: Connecting Programmer Board to Smart Device

12.2  Setting up the Computer

To program the smart device, you need a computer with Arduino IDE installed. Download Arduino IDE and install it on your computer. Arduino IDE is available free for download. https://www.arduino.cc/en/software

The following link will give some details of installing and configuring the needed drivers for ESP8266 board:
       https://www.marginallyclever.com/2017/02/setup-nodemcu-drivers-arduino-ide/

In short, the steps to setting up the computer are:

  • 1) Install Arduino IDE
  • 2) Open Arduino IDE
  • 3) In Arduino IDE, go to File → Preferences (In Mac, Arduino → Preferences). On that page, add the following in the Additional Boards Manager URL http://arduino.esp8266.com/stable/package_esp8266com_index.json
  • 4) Click on Tools → Boards → Boards Manager. Then search for ESP8266 and install the library ESP8266 by ESP8266 Community
  • 5) Next, select the board by clicking on Tools → Board → ESP8266 boards → NodeMCU 1.0 (ESP-12E Module)
  • 6) Then, click on Tools → Upload speed → 115200
  • 7) Now, plug-in the USB-to-Serial converter board on to the development board. Then cable that to a USB port of your computer using a micro USB cable. Then power on the development board. Then click on Tools → Port → select the correct serial port. Note: You should be seeing a new serial port already for this board. It may be COM3 on Windows, or /dev/cu.wchusbserial1430 on MAC. If you do not find the serial port, you may have to install the serial driver as per the steps below: Download the driver from the following location.
    For Microsoft windows:
           http://www.wch.cn/download/CH341SER_EXE.html
    And, follow the instructions given in the following document.
           https://www.dnatechindia.com/ch340g-drivers-download-installation-guide.html

    For MacOS:
           http://www.wch.cn/download/CH341SER_ZIP.html
    And, some instructions for MacOS:
           https://www.instructables.com/Arduino-Nano-CH340/
    For any additional help with installing the CH340C driver on your computer, search for CH340 driver on Google.
  • 8) Open serial monitor of the Arduino IDE by clicking the button on the top right corner of Arduino IDE window. If all previous steps have been done correctly, it should open a new terminal. You need to set its baud rate. Check its baud rate at the bottom tab. By default, it may be 9600. Change it to 115200.
Now, your computer is all set for deloping programs for the development board. You can now write your own program in Arduino IDE, compile it and load it to the smart device. Keep in mind that WiFiSecureAccess IOT platform and its features described in all the above sections of this document will not be available when you load your own program on to the device.

Fig 84 shows the hardware architecture of this device showing all the IO pins. This figure shows what pins of ESP8266 are connected to the buzzere, LEDs, relay, and the solid state switch P0. It also shows the inputs as D6 and D7 of the ESP8266. The diagram also shows the values of the voltage divider used at the analog input of the ESP8266. These informations will be useful when writing programs on your own.
Fig 84: Hardware architecture of the Smart Device


With this setup, the device can be used as an IOT development board. It can also be used by schools and other educational institutions for learning embedded programming as well as microcontroller programming.