4HE CODE ABOVE IS FINE FOR INTERACTING WITH A TEMPERATURE SENSORONCE YOU KNOW WHAT THAT IS 9OU MAY HAVE HUNDREDS OF SENSORS OF DIFFERENT TYPES AND ALL YOU MAY KNOW IS THEIR )0V ADDRESS 4O COMPLETE THIS YOU NEED TO KNOW THE FOLLOWING
Q 7HAT IS THE SPECIFICATION OF A DEVICE SUCH AS A hTEMPERATURE SENSORv
Q 7HAT ARE THE SPECIAL VALUES FOR YOUR SENSOR FOR EXAMPLE MAX AND MIN TEMPERATURES
Q (OW DO YOU TELL WHAT TYPE OF DEVICE YOU HAVE
Q (OW DO YOU KNOW HOW THE #O!0 REQUESTS INTERACT WITH YOUR DEVICE
!T THE MOMENT THERE ARE NO INDUSTRY AGREED UPON ANSWERS TO THOSE QUESTIONS
/NE COULD SAY THAT UNFORTUNATELY THIS IS ANOTHER OF THE DIFFERENTIATORS IN THE )O4 WORLD 4HE )%4& IN 2&# AND 2&# HAS MADE SOME PROGRESS BUT THERE ARE STILL OPEN ISSUES AND THEY ARE NOT UNIFORMLY ADOPTED
&ROM 2&# EACH DEVICE SHOULD HAVE A 52) PATH OF WELL KNOWNCORE WHICH CAN BE ACCESSED BY AN (440 GET coap://<IPv6-addr>/
.well-known/core REQUEST 2&# SPECIFIES THAT THE REPRESENTATION MUST BE IN #O2% ,INK &ORMAT WHICH ) WILL DESCRIBE SOON
4WO NEW LINK ATTRIBUTES ARE ADDED TO THE STANDARD 7EB LINK HEADERS OF RFC 5988, such as title 4HE NEW ATTRIBUTES ARE THE FOLLOWING
Q rt FOR RESOURCE TYPE
Q if FOR INTERFACE TYPE
4HE VALUES OF THESE ATTRIBUTES CAN BE STRINGS 52,S OR ANYTHING
THIS ISNT SPECIFIED 4HE RESOURCE TYPE IS EXPECTED TO BE SOME hWELL KNOWNv VALUE THAT IDENTIFIES THE TYPE OF DEVICE SUCH AS jan.newmarch:temperature-sensor. Yes, I just made that up—there are several proposals but no standards yet.
4HE VALUE OF if IS SUPPOSED TO BE SOME SPECIFICATION OF THE 2%34
INTERFACE FOR THE DEVICETHAT IS HOW TO CALL IT USING GET, PUT and so on, AND WHAT IS RETURNED FROM THOSE CALLS (OW AN INTERFACE IS DESCRIBED ISNT SPECIFIED BY 2&# !LTHOUGH POSSIBLY USING 7!$, 7EB !PPLICATION
$ESCRIPTION ,ANGUAGE IS SUGGESTED THE /PEN #ONNECTIVITY &OUNDATION USES 2!-, 2%34FUL !0) -ODELING ,ANGUAGE AND THE 7IKIPEDIA PAGE ON 2%34FUL !0)S LISTS A DOZEN MORE PROBABLY USED BY SOME GROUP OR OTHER
)NVESTIGATING 2%34 !0) LANGUAGES IS BEYOND THE SCOPE OF THIS ARTICLE SO let’s just assume the well known core resource has a value like this:
</temperature>;;rt="jan.newmarch:temperature-sensor";;
if="https://jan.newmarch.name/temperature-sensor"
(ERE TEMPERATURE IS THE RELATIVE 52, OF THE RESOURCE THE VALUE OF rt is THE hWELL KNOWNv DEVICE TYPE AND THE VALUE OF if IS THE DESCRIPTION OF THE DEVICE !SSUME THAT HTTPSJANNEWMARCHNAMETEMPERATURE SENSOR CONTAINS 7!$, OR 2!-, OR SOME OTHER DESCRIPTION THAT ALLOWS YOU TO DEDUCE THAT REQUESTING THE RESOURCE /temperature using GET will return a CBOR object WITH FIELDS temperature and unit WITH FLOAT AND STRING VALUES RESPECTIVELY
4HE FORMAT OF THE WELL KNOWN RESOURCE IS DEFINED TO BE IN
application/link-format, which according to the IANA CoAP
#ONTENT &ORMATS SITE HTTPSWWWIANAORGASSIGNMENTSCORE PARAMETERS
CORE PARAMETERSXHTMLCONTENT FORMATS HAS #O!0 CODE 4HE FORMAT IS ACTUALLY JUST 54&
4HE SERVER IS MODIFIED BY ADDING ANOTHER RESOURCE
root.add_resource(('.well-known', 'core'), WKCResource(root)) where WKCResource is a class in the aiocoap module, which keeps a list OF ALL THE RESOURCES SUPPLIED BY THIS DEVICE
7HEN THE CLIENT GETs the resource /.well-known/core, it will get A COMMA SEPARATED LIST LIKE THIS
</.well-known/core>;; ct=40,
</temperature>;;
if="https://jan.newmarch/temperature-sensor";;
rt="jan.newmarch.name:temperature-sensor"
FEATURE: Low Power Wireless: CoAP
For each resource, a client should extract the rt VALUE )F IT RECOGNIZES IT AS A TEMPERATURE DEVICE THEN IT SHOULD CARRY ON )F IT DOESNT IT SHOULD look up the if 52, AND EXTRACT WHAT THE GET method can do, and then CARRY ON 4HAT CODE IS NOT COVERED HERE 4HE #O2% ,INK &ORMAT STRING CAN be parsed using the Python LinkHeader package.
Conclusion
4HIS SERIES HAS ADDRESSED THE ISSUES OF SETTING UP A ,O70!. LOW POWER WIRELESS NETWORK USING THE /PEN,ABS RADIOS ON 2ASPBERRY 0IS FOLLOWED BY BRINGING THESE DEVICES INTO INTERNET VISIBILITY 4HIS CONCLUDING ARTICLE LOOKS AT DATA FORMATS AND PROTOCOLS FOR THE )O4
-ANY TOPICS HAVE BEEN OMITTED 4HE MAJOR ONE IS THAT OF SECURITY as the system I have described here is wide open to snooping and
HACKING 4HE SECURITY MECHANISMS ARE ALL THERE BUT THEY ARE A FULL TOPIC in their own right.
) ALSO HAVE IGNORED THE ISSUE OF HOW EXTERNAL CLIENTS FIND THE )0
ADDRESSES OF THE CLIENTS 4HIS IS ANSWERED BY INTERNET DRAFT h#O2% 2ESOURCE
$IRECTORY DRAFT IETF CORE RESOURCE DIRECTORYv HTTPSTOOLSIETFORGHTML
DRAFT IETF CORE RESOURCE DIRECTORY
) HAVENT ADDRESSED NETWORKING WITHIN A ,O70!. NETWORK 4HERE ARE A VARIETY OF MODELS SUCH AS MESH NETWORKING AND THEY BUILD ON THE )%%% NETWORKING MODEL
&INALLY ) HAVENT MENTIONED OTHER PIECES OF HARDWARE DEALING WITH )%%% AND ,O70!. 4HESE INCLUDE MODULES FROM 4EXAS )NSTRUMENTS &IREFLY AND ,IBELIUM WITH MANY OTHERS COMING ALONGQ
Jan Newmarch has been using Linux since kernel 0.96. He has written many books and papers about software engineering, network programming, user interfaces and artificial intelligence, and he is currently digging into the IoT. He is in charge of ICT degrees at Box Hill Institute and Adjunct Professor at the University of Canberra.
Send comments or feedback via http://www.linuxjournal.com/contact or to [email protected].