Skip to main content

IOT - CoAP implementation in Contiki OS

Constrained Application Protocol (CoAP) is a lightweight http protocol that reads and controls the sensors deployed for IoT.
It has actions like get, post, put, delete, observe, discover.

This coap can be accessed similar like http, For ex: to access a particular mote (Sensor) with IPv6 like this
coap://[aaaa::212:7402:2:202]
The above line will fetch the sensor boards peripherals and one can control from the browser itself. Firefox has a Cu plugin to enable CoAP within the browser. CoAP is already available for all the devices like IOS, Android, Windows, Linux, Mac, etc,

So here is an example in contiki that shows how to use this coap based application using a border router.


Step 1: Contiki Selection

Open instant Contiki (Which runs on VMWare or Virtual Box)

Open Cooja from the Desktop directly or Open the Terminal and give the following steps

$] cd /home/user/contiki-2.7/tools/cooja
$] ant run 
If you want to simulate huge number of nodes then 
$] ant run_bigmem


Step 2: Selecting Border router

File - New Simulation -> Enter Simulation Name (Leave the defaults as it is ) and then Click "Create"

Click Add Motes -> Select Sky Mote

In the firmware, Select the following path /home/user/contiki-2.7/examples/ipv6/rpl-border-router/border-router.c
Click -> Compile (or Clean and then Compile), once compilation is over, Click Create motes and select the number of motes (1 in this case).


Step 3: Selecting the Er Example Server

Click Add Motes -> Sky Motes 
In the firmware, select the following path /home/user/er-rest-example/er-example-server.c 
Click Compile -> after compilation, click create motes and select the number of motes (2 in this case)

Step 4: Run the Simulation 

In the Simulation Control window, you can press the Start button to start the simulation. Since this application is deployed with IpV6 for all the nodes, it can be seen from the simulation that all the motes have the ipv6 addresses like this
mote 1: aaaa::212:7401:1:101 for Border router

A bridge has to be made between the border router and the other motes, to enable the bridge, Right Click Border Router Node -> Mote tools for Sky 1 ->  Serial Socket (SERVER) 


Step 5: Bridge the Border Router

Open a new terminal and select the path as given below

$] cd /home/user/examples/ipv6/rpl-border-router/
$] make connect-router-cooja 
It will ask to input the super user password, after you input, the ipv6 addresses will be assigned to the motes.
You may ping it using a new terminal, with the command "ping6 aaaa::212:7402:2:202"

Step 6: Read the sensors

You can read the sensors using the ipv6 addresses by opening the firefox browser.
Open the browser and input the following addresses in a new tab

coap://[aaaa::212:7402:2:202] or any other sensor mote
Refer the images given below
CoAP
CoAP 

CoAP
CoAP
The above two images shows firefox browser with cu plugin to open the ipv6 address and read the sensor values. In the first picture the toggle value 1 for Red LED is sent from the browser by selecting the POST button (OutGoing), Upon receiving the RED LED is glowing in the Mote that indicates that the node is accepting the inputs remotely. 

Thus coAP is very handy when deals with the motes attributes. You may refer the following video for exact explanation of CoAP in Contiki



T S Pradeep Kumar

Comments

  1. Hello Sir,I have gone through your video CoAP implementation in Contiki OS and found very interesting. Thanks for sharing such video.I have downloaded contiki OS  and when I read the sensors using the ipv6 addresses by opening the firefox browser and providing following IP addersscoap://[aaaa::212:7402:2:202] ; getting the error 4.04Not Found. I could see well-known and core resources bot not the others.
    Plz help me.
    Appreciate for your reply.
    Thanking You,
    Faithfully
    Dr. Nikita Kulakarni

    ReplyDelete
  2. same problem,
    were you able to solve it??

    ReplyDelete

Post a Comment

Popular posts from this blog

Installing ns-3.34 in Ubuntu 20.04

This post shows how to install ns 3.34 in Ubuntu 20.04 LTS Prerequisites: Fresh installation of Ubuntu Version 20.04 LTS  ns3.34 can be downloaded from here Follow the video link for complete step by step instructions on the installation.  This version fixes the compilation issues of vanet-routing-compare.cc (bug in ns3.33)  Issue the following commands after opening a terminal  $ sudo apt update $ sudo apt install g++ python3 python3-dev python-dev pkg-config sqlite3 python3-setuptools git qt5-default gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 openmpi-bin openmpi-common openmpi-doc libopenmpi-dev autoconf cvs bzr unrar openmpi-bin openmpi-common openmpi-doc libopenmpi-dev tcpdump wireshark libxml2 libxml2-dev Unzip or untar the ns-allinone-3.34.tar.bz2 in the home folder (in my case its /home/pradeepkumar) $ cd ns-allinone-3.34/ $ ./build.py --enable-examples --enable-tests  Once the installation is completed, you may get an output show

Installation of ns3 in Windows 10 and Windows 11 OS using WSL (Windows Subsystem for Linux)

This post shows how to install ns-3.33 in Windows 10 through WSL (Windows Subsystem for Linux) This posts works for Windows 11 also (I have tested it on a Windows 11 ISO and it works the Same way as mentioned in the following post.) This post will work for ns-3.3x version. Prerequisites : Install Windows Subsystem for Linux with GUI: Please refer the following video  System Information: OS used: Windows 10 and WSL (Ubuntu 20.04) GUI: XServer for Windows NS3 Version: ns-3.33 See the following complete video on how to install ns3 in Windows 10 Step 0 : Open XLaunch Step 1 :  Open WSL using PowerShell and open it as Administrator Command:/  wsl $ xfce4-session The GUI of Ubuntu Opens within Windows 10 OS. Step 2 : Download ns3 from nsnam.org website through Mozilla Firefox browser Step 3: Open a Terminal  $ sudo apt update $ sudo apt install build-essential autoconf automake libxmu-dev python3-pygraphviz cvs mercurial bzr git cmake p7zip-full python3-matplotlib python-tk python3-dev qt5-q

Installing NS-3.32 in Ubuntu 20.04

This is about installing ns version 3.32 in Ubuntu 20.04 LTS. #ns3 #ns3 .32 #networksimulation The commands used in the video are given here. $] sudo apt update $] sudo apt install build-essential autoconf automake libxmu-dev python3-pygraphviz cvs mercurial bzr git cmake p7zip-full python3-matplotlib python-tk python3-dev qt5-qmake qt5-default gnuplot-x11 wireshark Download the ns-allinone-3.32.tar.bz2 package from nsnam.org and copy it to /home/ folder See the full video for detailed instructions Extract it either in GUI or using command $] tar jxvf ns-allinone-3.32.tar.bz2 $] cd ns-allinone-3.32/ $] ./build.py --enable-examples --enable-tests The above command will take some time to install all the packages  You can see the output as shown below ns3 To check whether ns3 installed successfully, use the following commands. $] cd ns-3.32/ $] ./waf --run hello-simulator You should get the output as Hello Simulator $] ./waf --run first This is the example from the ns-3.32/exa