Simple Sensor Interface protocol: Difference between revisions

Content deleted Content added
Sardanaphalus (talk | contribs)
m template name update, parameter
m More citations needed
 
(10 intermediate revisions by 7 users not shown)
Line 1:
{{More citations needed|date=December 2015}}
{{OSI model |application}}
The '''SSISimple Sensor Interface''' ("'''Simple Sensor InterfaceSSI'''") '''protocol''' is a simple communications protocol designed for data transfer between computers or user terminals and smart sensors.<ref>{{Cite Theweb SSI|title=About: protocolSimple isSensor an [[Application layer]]Interface protocol as in the|url=https://dbpedia.org/page/Simple_Sensor_Interface_protocol [[OSI|access-date=2025-08-13 model]]|website=dbpedia.org}}</ref>
 
The SSI protocol has been developed jointly by [[Nokia]], [[Vaisala]], [[Suunto]], Ionific, Mermit and [[University of Oulu]] and released its first version in March 2003. Currently SSI is being developed within the [http://www.mimosa-fp6.com/ Mimosa project]Project, part of the [[European Union]] [[Framework Programmes for Research and Technological Development]].
The '''SSI''' ("'''Simple Sensor Interface'''") protocol is a simple communications protocol designed for data transfer between computers or user terminals and smart sensors. The SSI protocol is an [[Application layer]] protocol as in the [[OSI model]].
 
The SSI protocol has been developed jointly by [[Nokia]], [[Vaisala]], [[Suunto]], Ionific, Mermit and [[University of Oulu]]. Currently SSI is being developed within the [http://www.mimosa-fp6.com/ Mimosa project], part of the [[European Union]] [[Framework Programmes for Research and Technological Development]].
 
The SSI protocol is used in point-to-point communications over [[UART]] and networking nanoIP applications. SSI also provides polling sensors and streaming sensor data. For [[RFID]] sensor tags SSI specifies memory map for sensor data.
Line 16 ⟶ 15:
== SSI message structure ==
 
An SSI message consists of a 2-byte header and an ''n''-byte payload. The header consists of a one byte address (wildcard is '?', 0x3F in [[ASCII]]) and a one byte message/command type. The different possible values for the message/command type are presented in SSI v1.2 command base.
 
=== SSI v1.2 command base ===
 
{| class="wikitable"
{| border="1" cellspacing="0" cellpadding="5" style="margin:auto;"
|-
! Command byte
Line 26 ⟶ 25:
! Description
|-
| Q,q (0x51, 0x71)
| C->
| Query
|-
| A,a (0x41, 0x61)
| <-S
| Query reply
|-
| C,c (0x43, 0x63)
| C->
| Discover sensors
|-
| N,n (0x4E, 0x6E)
| <-S
| Discovery reply
|-
| Z,z (0x5A, 0x7A)
| C->
| Reset sensor device
|-
| G,g (0x47, 0x67)
| C->
| Get configuration data for a sensor.
|-
| X,x (0x58, 0x78)
| <-S
| Configuration data response
|-
| S,s (0x53, 0x73)
| C->
| Set configuration data for a sensor
|-
| R,r (0x52, 0x72)
| C->
| Request sensor data
|-
| V,v (0x56, 0x76)
| <-S
| Sensor data response
|-
| D,d (0x44, 0x64)
| <-S
| Sensor response with one byte status field
Line 74 ⟶ 73:
| Sensor response with many data points
|-
| O,o (0x4F, 0x6F)
| C->
| Create sensor observer
|-
| Y,y (0x59, 0x79)
| <-S
| Observer created
|-
| K,k (0x4B, 0x6B)
| <->
| Delete sensor observer / listener
|-
| U,u (0x55, 0x75)
| <->
| Observer / listener finished
|-
| L,l (0x4C, 0x6C)
| <-S
| Request sensor listener
|-
| J,j (0x4A, 0x6A)
| C->
| Sensor listener created
Line 107 ⟶ 106:
|}
 
The group of commands :
*Z Qresetquery
 
*Q A – query reply
*A Cquerysensor replydiscovery
*C N sensor discovery reply
* Z – reset
*N – discovery reply
*S Gsetget sensor configuration
*Z – reset
*G Sgetset sensor configuration
*S – set sensor configuration
 
are used to find and configure sensor units utilizing the SSI-protocol.
 
The group of commands:
* R – request sensor data
 
*R V request sensor data response
*V D – data response with status field
*D – data response with status field
 
are used to read sensor data infrequently.
 
For data streaming purposes defined commands are:
* O – create sensor observer
 
*O Y create sensor observer created
*Y Kobserverdelete createdobserver
*K U delete observer finished
*U Lobserverrequest sensor finishedlistener
*L J request sensor listener created.
*D V – data response with status field
*J – sensor listener created.
*V M – data response with many data points
*M – data response with many data points
 
=== Point-to-point SSI ===
Line 146 ⟶ 140:
SSI networking in a variable environment is done using nanoIP. In a typical case using SSI, an individual message is not important, and so nanoUDP (simplified [[User Datagram Protocol|UDP]] defined by nanoIP) is used as the message format. If individual messages are important, nanoTCP can be used, as it provides flow control and retransmission at a cost of message size and increase in network traffic.
 
A nanoUDP message consists of a 5-byte nanoUDP header, an ''n''-byte message payload and an optional 2-byte CRC checksum. The header consists of one protocol byte, a 2-byte message length (total length, including header and CRC), a 1-byte source port and a 1-byte destination port number. The destination port number should be 0x28 for SSI messages.
 
== Version history ==
Line 161 ⟶ 155:
*1.1 October 27, 2005
*1.2 May 27, 2006, not compatible with previous
 
== References ==
{{Reflist}}
 
== External links ==
 
* [http://ssi-protocol.net SSI protocol]
* [http://www.cwc.oulu.fi/nanoip/ nanoIP]