SenZ is a new kind of query language that can be used to communicate with IoT Devices . It is easily integrable , Ultimately fast and is in the Highest end of security integration. Also it is lively developed accordingly. As it is said earlier this uses a #twitter like massaging syntax which has made this language a usable , more powerful and understandable. The communication between each of these devices are done via the My sensors switch which was developed using python, A high-end application switch which works as a massage broker. Once client devices are registered in the switch they should share their data to specific people(Other client devices). Then the. Then they are capable of sharing massages accordingly.
Currently MySensors switch is implemented on two languages one is Python and the other one is Scala. In either case it doesn't matter in which language your clients are built on. You can use either of the implementations to suit your product. currently there are two implementation which works on UDP packet connection and TCP packet connections.
senz switch is the core working body of this amazing system. This exhibits its outstanding features that can beat the
systems that is available on the market. It is a compound collection of several features in to one and is the key
to its multithreaded high speed massage passing system, it is also integrated with its security features that beats
any of the available systems in the market. High availability and Higher bandwidth is achieved through python Twisted.
senz switch is integrated with a MongoDB database to keep its user registration data ,public and private keys stored,
timely information etc. but the interesting thing here is that it does not keep any of the passed data or even read
those data when passing.
So you don't need to worry about using your private devices connected with SENZ to have
second though that your data is revealed and passed through unknown servers. Because you are 100% that when the data
is encrypted and it can only be decrypted in to the massage only by the intended end device and the device only.
It is obvious that you might have the idea that will it be possible for us to integrate it in to our
system. Or How could we use it in our systems. Sure its the very reason why we have build this in the
way it is.
You developers can develop your applications on top of this platform. There is a senZ switch written
on python. So you will have to install it in a separate server . Then you can use the developed senz
client service written to multiple platforms both mobile and android on which you can develop
applications to communicate using Internet securely with authentication, integrity, confidentiality
and non-repudiation of data together with the access control. .
As it was said earlier senZ follows a #twitter like massage structure which has made it unique compared to the ones out there.
<type> #<attribute name> <attribute value> #time <current timestamp> @<receiver> ^<sender> <digital signature>
or
<type> $<attribute name> <attribute value> #time <current timestamp> @<receiver> ^<sender> <digital signature>
<type>
|
Here, type refers to the type of the massage to be sent currently it has 5 types of massages. They are SHARE,UNSHARE,GET,PUT,DATA. Each of these massage types are used for different purposes which will be discussed later. |
#<attribute name>
|
Attribute name depends up on your purpose. If its a attribute value from a thermometer it might be #temp and if its a water level #water_level and so on. It's yours to define the attributes you are using and sharing. |
$<attribute name>
|
This is not much different from the previous but it simply says that the value referred to this attribute is encrypted. | <attribute value>
|
This is the value of the attribute you are sharing/sending. It could just be an integer,string or what ever you wish according to the attribute you are using. This field is ignored in some massage types and they will be discussed detailed below. |
#time
|
This is also a attribute but since time is a default attribute it has to be sent always. |
<current timestamp>
|
This is the value of the time attribute |
@<receiver>
|
This is the user name of the receiver of the massage. |
^<sender>
|
This is the user name of the sender of the massage. |
<digital signature>
|
This is the digital signature for which the sensZ-switch uses to verify that the intended user has sent the massage. |
There are five types of SenZ. These types are SHARE, UNSHARE, GET, PUT and DATA.
SHARE |
This massage type is used when you need to share some attributes to some client/device. |
UNSHARE |
This does the opposite of the SHARE |
GET |
This massage type is used when you are requesting a SHARES attribute from a client/device. |
PUT |
This massage type is used when you need to do some alternation to the device. When you need to control some device/application/client. |
DATA |
This massage type is used when replying to a GET,PUT or a SHARE. To send the reply with the requested data. |
SHARE #pubkey <base64 encoded pubkey> #time <current timestamp> @senz ^username <digital signature>
GET #pubkey @u1 #time t1 ^b1 Signature
DATA #pubkey PublicKeyOfu1 #time t2 ^mysensors Signature
SHARE #balance $key E(k1) @u1 #time t3 ^b1 Signature
SHARE #msg OK @b1 #time t4 ^u1 Signature
GET #balance accountNumber @b1 #time t5 ^u1 Signature
DATA $balance E(x) @u1 #time t6 ^b1 Signature