Difference between revisions of "OWN OpenWebNet Language Reference"

From piMyHome Project
Jump to navigation Jump to search
 
(31 intermediate revisions by 2 users not shown)
Line 1: Line 1:
The [http://en.wikipedia.org/wiki/OpenWebNet OpenWebNet protocol] was defined in 2000 by [http://www.myopen-legrandgroup.com Bticino/Legrand] to specify the communication with a Bticino home automation gateway, connected via LAN, RS-232 (serial) or USB. Here you'll get a brief overview of the OWN language syntax. To watch live the OWN messages of your Bticino gateway, you should try the [[Code_Snippets#A_Python_Monitor_Session_with_Bticino_Gateway|Python Monitor]] in our [[Code Snippets]] section.
+
The [http://en.wikipedia.org/wiki/OpenWebNet OpenWebNet protocol] was defined in 2000 by [http://www.myopen-legrandgroup.com Bticino/Legrand] to specify the communication with a Bticino home automation gateway, connected via LAN, RS-232 (serial) or USB. Here you'll get a brief overview of the OWN language syntax. To watch the OWN messages of your Bticino gateway, you should try the [[Code_Snippets#A_Python_Monitor_Session_with_Bticino_Gateway|Python Monitor]] in our [[Code Snippets]] section.
  
 
----
 
----
Line 5: Line 5:
  
 
== Basic Syntax Rules ==
 
== Basic Syntax Rules ==
A Bticino gateway receives and sends so called '''''messages''''':
+
A Bticino gateway sends and receives '''''messages'''''.
* A message is a simple string, containing the characters asterisk ('''*'''), hash ('''#''') and numbers from '''0 to 9'''.
+
* a message begins with an asterisk ('''*''') and is terminated with a double hash ('''##''').  
* each message begins with an asterisk ('''*''') and ends with a double hash ('''##''').
+
* each message contains fields separated by an asterisk ('''*''').
* within the message, fields are separated by an asterisk ('''*''').
+
* a field can contain dimensions and values separated by an asterisk ('''*''') and/or a hash ('''#''')
  
Example: <code>'''*field1*field2*field3*...fieldN##'''</code>
+
Example: <code>'''*field1*field2#dim1#value1*field3...fieldN##'''</code>
  
 
====The OWN message syntax====
 
====The OWN message syntax====
Line 35: Line 35:
 
|Request a state (e.g. if a light is ON or OFF)
 
|Request a state (e.g. if a light is ON or OFF)
 
|-
 
|-
|Attribute Request
+
|Dimension Request
|<tt>*#WHO*WHERE*ATTRIBUTE##</tt>
+
|<tt>*#WHO*WHERE*DIMENSION##</tt>
|Request attribute value
+
|Request dimension value
 
|-
 
|-
|Attribute Write
+
|Dimension Write
|<tt>*#WHO*WHERE*#ATTRIBUTE*VAL1*VAL2*...*VALn##</tt>
+
|<tt>*#WHO*WHERE*#DIMENSION*VAL1*VAL2*...*VALn##</tt>
|Write attribute value(s)
+
|Write dimension value(s)
 
|}
 
|}
  
== Some Examples ==
+
We know already that a standard message consists of <code>''' *WHO*WHAT*WHERE##'''</code>.
 +
* <tt>'''WHO'''</tt> identifies the service, such as scenario, light or automation. See WHO table below.
 +
* <tt>'''WHAT'''</tt> is the action to be performed, such as light ON/OFF or dimmer, shutter up/down etc.
 +
* <tt>'''WHERE'''</tt> identifies the object, which can be an area, group, an environment, or just a single light or shutter etc. Check out the WHERE table below.
 +
* <tt>'''##'''</tt> terminates a message. Larger facilities might have extension interfaces. Addresses connected to on one of these extension interfaces have the prefix '''<tt>"#4#nn</tt>''', where '''<tt>nn</tt>''' reflects the 2-digit value of the extension interface number.  So a message with an address on interface 7 is terminated with a '''<tt>"#4#07##</tt>'''.
 +
 
 +
==== Some Examples ====
 
'''<pre>
 
'''<pre>
 
*1*0*25##          Turn off light 2.5 on local interface  
 
*1*0*25##          Turn off light 2.5 on local interface  
 +
| | |
 +
| | +- light address 25
 +
| +- 0=OFF
 +
+- WHO=1 lighting
 +
 +
*0*13*19#4#06##    Launch scenario 13 of scenario list 19 on interface 6
 +
| |  | |
 +
| |  | +- #4#06 = interface 6
 +
| |  +- 19 = address of scenario list
 +
| +- scenario #13
 +
+- WHO=0 scenarios
 +
 
*1*1*47#4#01##      Turn on light 4.7 on interface 1 (#4#01)
 
*1*1*47#4#01##      Turn on light 4.7 on interface 1 (#4#01)
 
*1*1*0415##        Turn on light 4.15 on local interface
 
*1*1*0415##        Turn on light 4.15 on local interface
 
*1*0*0##            Turn off all lights on local interface
 
*1*0*0##            Turn off all lights on local interface
*0*13*19#4#06##    Launch command 13 of Scenariolist 19 (e.g a F420 is addressed by 19) on interface 6
 
 
*2*1*91#4#03##      open (1) shutter 9.1 in on interface 3 (#4#03)
 
*2*1*91#4#03##      open (1) shutter 9.1 in on interface 3 (#4#03)
 
*#4*#1*#14*0225*3## Set heating zone 1 manually ON to 22.5°C
 
*#4*#1*#14*0225*3## Set heating zone 1 manually ON to 22.5°C
 
</pre>'''
 
</pre>'''
Notice: for smaller home automation facilities, the 88 available addresses (11..99, see WHERE table below) of a normal gateway (like F453AV) are sufficient and can be directly addresse via the local interface ('''<tt>##</tt>''') of the gateway. But if you have more than 88 light points (like me), you might need/have additional interfaces to extend the addressable lights. A message with an address on the local interface ends with a '''<tt>##</tt>'''. Adresses connected to on one of your extension interfaces must have the prefix '''<tt>"#4#nn</tt>''', where '''<tt>nn</tt>''' stands for the 2-digit value of the extension interface number.  So a message with an address on interface 7 ends like this: '''<tt>"#4#07##</tt>'''.
 
  
== WHO? WHAT? WHERE? ==
+
== WHERE Table ==
We know already that a standard message consists of <code>''' *WHO*WHAT*WHERE##'''</code>.
+
The WHERE field identifies the object, which can be an area, group, an environment, or just a single light or shutter etc.  
* <tt>'''WHO'''</tt> identifies the service, such as scenario, light or automation
+
 
* <tt>'''WHAT'''</tt> is the action to be performed, such as light ON/OFF or dimmer, shutter up/down etc.
+
{| class="wikitable"
* <tt>'''WHERE'''</tt> identifies the object, which can be an area, group, an environment, or just a single light or shutter etc. A <tt>'''WHERE'''</tt> field can also come with optional parameters, separated by a hash ('''#'''), e.g. <tt>'''*WHERE#PAR1#PAR2#...#PARn'''</tt>
+
! style="text-align:left;"| WHERE
 +
! style="text-align:left;"| Address
 +
! style="text-align:left;"| Info
 +
|-
 +
|0
 +
|General
 +
|The whole system, be careful!
 +
|-
 +
|1..9
 +
|Environment 1 to 9
 +
|Can be a zone or a room
 +
|-
 +
|11..99
 +
|Light point 1.1 to 9.9
 +
|Single addresses
 +
|-
 +
|0110..0915
 +
|Light point 1.10 to 9.15
 +
|Extended addresses on newer gateways
 +
|-
 +
|#1..#9
 +
|Group 1 to 9
 +
|A set of single addresses
 +
|}
 +
 
 +
* A WHERE field can also come with optional parameters, separated by a hash (<tt>#</tt>), e.g. <tt>*WHERE#PAR1#PAR2#...#PARn</tt>.
 +
 
 +
== WHO Table ==
 +
 
 +
The WHO value describes the service. Click the service name in table below to get detailed information:
  
The tables below gives you an idea of WHO, WHAT, and WHERE:
+
{| class="wikitable"  
{| class="wikitable" style="float:left; "
 
 
! style="text-align:left;"| WHO
 
! style="text-align:left;"| WHO
 
! style="text-align:left;"| Service
 
! style="text-align:left;"| Service
Line 77: Line 121:
 
|-
 
|-
 
|3
 
|3
|[[WHO=3 - Load Control|Load Control]]
+
|[[WHO=3 - Power Management|Power Management]]
 
|-
 
|-
 
|4
 
|4
Line 101: Line 145:
 
|-
 
|-
 
|15
 
|15
|[[WHO=15 - CEN MH200N|CEN MH200N]]
+
|[[WHO=15 - CEN]]
 
|-
 
|-
 
|16
 
|16
Line 116: Line 160:
 
|-
 
|-
 
|25
 
|25
|[[WHO=25 - CEN F454|CEN F454]]
+
|[[WHO=25 - CEN plus]]
 
|-
 
|-
 
|1000
 
|1000
Line 128: Line 172:
 
|-
 
|-
 
|1008
 
|1008
|[[WHO=1008 - ???? Something with Heating Diagnostic ?]]
+
|[[WHO=1008 - Door Entry System Diagnostic|Door Entry System Diagnostic]]
 
|-
 
|-
 
|1013
 
|1013
 
|[[WHO=1013 - Device Diagnostic|Device Diagnostic]]
 
|[[WHO=1013 - Device Diagnostic|Device Diagnostic]]
 
|-
 
|-
|}
+
|1018
{| class="wikitable" style="float:left; margin-left: 10px;width:200px;"
+
|[[WHO=1018 - Energy Management Diagnostic|Energy Management Diagnostic]]
! style="text-align:left;"| WHAT
 
! style="text-align:left;"| Action
 
 
|-
 
|-
|
+
|1023
|The WHAT table depends on the WHO service. Please click on the appropriate service in WHO table.
+
|[[WHO=1023 - Access Control Diagnostic|Access Control Diagnostic]]
|}
 
{| class="wikitable" style="float:left; margin-left: 10px;width:200px;"
 
! style="text-align:left;"| WHERE
 
! style="text-align:left;"| Address
 
 
|-
 
|-
|0
 
|General (covers 11..99)
 
|-
 
|1..9
 
|Zone/room 1 to 9
 
|-
 
|11..99
 
|Light point 11 to 99
 
|-
 
|#1..#9
 
|Group 1 to 9
 
 
|}
 
|}
 +
 +
Those last 2 are used by MHSuite to scan the bus... But I don't have any of those to test, yet
 +
 +
1023 scan request messages don't show up in the monitor (wireshark to the rescue)

Latest revision as of 14:08, 14 May 2018

The OpenWebNet protocol was defined in 2000 by Bticino/Legrand to specify the communication with a Bticino home automation gateway, connected via LAN, RS-232 (serial) or USB. Here you'll get a brief overview of the OWN language syntax. To watch the OWN messages of your Bticino gateway, you should try the Python Monitor in our Code Snippets section.



Basic Syntax Rules

A Bticino gateway sends and receives messages.

  • a message begins with an asterisk (*) and is terminated with a double hash (##).
  • each message contains fields separated by an asterisk (*).
  • a field can contain dimensions and values separated by an asterisk (*) and/or a hash (#)

Example: *field1*field2#dim1#value1*field3...fieldN##

The OWN message syntax

Message Type Message Note
ACK *#*1## Message accepted/understood
NACK *#*0## Message not accepted/understood
Standard *WHO*WHAT*WHERE## Standard message
Status Request *#WHO*WHERE## Request a state (e.g. if a light is ON or OFF)
Dimension Request *#WHO*WHERE*DIMENSION## Request dimension value
Dimension Write *#WHO*WHERE*#DIMENSION*VAL1*VAL2*...*VALn## Write dimension value(s)

We know already that a standard message consists of *WHO*WHAT*WHERE##.

  • WHO identifies the service, such as scenario, light or automation. See WHO table below.
  • WHAT is the action to be performed, such as light ON/OFF or dimmer, shutter up/down etc.
  • WHERE identifies the object, which can be an area, group, an environment, or just a single light or shutter etc. Check out the WHERE table below.
  • ## terminates a message. Larger facilities might have extension interfaces. Addresses connected to on one of these extension interfaces have the prefix "#4#nn, where nn reflects the 2-digit value of the extension interface number. So a message with an address on interface 7 is terminated with a "#4#07##.

Some Examples

*1*0*25##           Turn off light 2.5 on local interface 
 | | |
 | | +- light address 25
 | +- 0=OFF
 +- WHO=1 lighting

*0*13*19#4#06##     Launch scenario 13 of scenario list 19 on interface 6
 | |  | |
 | |  | +- #4#06 = interface 6
 | |  +- 19 = address of scenario list
 | +- scenario #13 
 +- WHO=0 scenarios

*1*1*47#4#01##      Turn on light 4.7 on interface 1 (#4#01)
*1*1*0415##         Turn on light 4.15 on local interface
*1*0*0##            Turn off all lights on local interface
*2*1*91#4#03##      open (1) shutter 9.1 in on interface 3 (#4#03)
*#4*#1*#14*0225*3## Set heating zone 1 manually ON to 22.5°C

WHERE Table

The WHERE field identifies the object, which can be an area, group, an environment, or just a single light or shutter etc.

WHERE Address Info
0 General The whole system, be careful!
1..9 Environment 1 to 9 Can be a zone or a room
11..99 Light point 1.1 to 9.9 Single addresses
0110..0915 Light point 1.10 to 9.15 Extended addresses on newer gateways
#1..#9 Group 1 to 9 A set of single addresses
  • A WHERE field can also come with optional parameters, separated by a hash (#), e.g. *WHERE#PAR1#PAR2#...#PARn.

WHO Table

The WHO value describes the service. Click the service name in table below to get detailed information:

WHO Service
0 Scenarios
1 Lighting
2 Automation
3 Power Management
4 Heating
5 Burglar Alarm
6 Door Entry System
7 Multimedia
9 Auxiliary
13 Device Communication
14 Light+shutters actuators lock
15 WHO=15 - CEN
16 Sound System
17 Scenario Programming
18 Energy Management
24 Lighting Management
25 WHO=25 - CEN plus
1000 Diagnostic
1001 Automation Diagnostic
1004 Heating Diagnostic
1008 Door Entry System Diagnostic
1013 Device Diagnostic
1018 Energy Management Diagnostic
1023 Access Control Diagnostic

Those last 2 are used by MHSuite to scan the bus... But I don't have any of those to test, yet

1023 scan request messages don't show up in the monitor (wireshark to the rescue)