OWN OpenWebNet Language Reference
The OpenWebNet protocol was defined in 2000 by Bticino/Legrand to specify the communication with a Bticino domotic gateway, connected via LAN, RS-232 (serial) or USB.
Contents
Basic Syntax Rules
A Bticino gateway receives and sends OPEN messages:
- A message is a simple string, containing the characters asterisk (*), hash (#) and numbers from 0 to 9.
- each message begins with an asterisk (*) and ends with a double hash (##).
- within the message, fields are separated by an asterisk (*).
Example: *field1*field2*field3*...fieldN##
The following table shows the allowed 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 a dimension |
Dimension Write | *#WHO*WHERE*#DIMENSION*VAL1*VAL2*...*VALn## | Write a dimension |
Standard Message
In the table above, we learned a Standard Message consists of *WHO*WHAT*WHERE##
.
- WHO identifies the service, such as scenario, light or automation
- 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. A WHERE field can also come with optional parameters, separated by a hash (#), e.g. *WHERE#PAR1#PAR2#...#PARn
Some Examples
*1*0*25## Turn off light 2.5 on local interface (e.g. F *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 *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) *#4*#1*#14*0225*3## Set heating zone 1 manually ON to 22.5°C
A Monitor Session with Python
To understand the OWN messages better, you should start a monitor session on your Raspberry Pi and watch the OWN messages flying in from your domotic system. Analyzing these messages gives you an idea how it works. Below is a simple monitor script in Python.
start editor nano and create monitor.py
nano monitor.py
Copy and paste the script below into that file and save it. After you saved the file, you have to make the file executable:
chmod 755 monitor.py
Copy the content of this script to moniotr.py
#! /usr/bin/python # -*- coding: utf-8 -*- import socket # IP address and port to connect to the gateway, please attapt to your environment default_gateway_host = "192.168.60.201" default_gateway_port = 20000 gateway_addr_port = default_gateway_host, default_gateway_port def monitor(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: sock.connect(gateway_addr_port) data = sock.recv(1024) # expect ACK from gateway if data != "*#*1##": raise Exception("Did not receive expected ACK, but: "+data) # Switch session to MONITOR mode sock.send("*99*1##") data = "" while 1: # Read data from MyHome(R) BUS next = sock.recv(1024) if next == "": break # EOF data = data + next eom = data.find("##") if eom < 0: continue; # Not a complete message, need more if data[0] != "*": raise Exception("Message does not start with '*': "+data) print data msg = data[1:eom] data = data[eom+2:] finally: sock.close() monitor()
Now start the monitor and watch the messages fly by. Exit with CTRL-C.
./monitor.py
The Tables of WHO WHAT WHERE
WHO | Service |
---|---|
0 | Scenarios |
1 | Lighting |
2 | Automation |
3 | Load Control |
4 | Heating |
5 | Burglar Alarm |
6 | Door Entry System |
7 | Multimedia |
9 | Auxiliary |
13 | Device Communication |
14 | Light+shutters actuators lock |
15 | CEN MH200N |
16 | Sound System |
17 | Scenario Programming |
18 | Energy Management |
24 | Lighting Management |
25 | CEN F454 |
1000 | Diagnostic |
1001 | Automation Diagnostic |
1004 | Heating Diagnostic |
1013 | Device Diagnostic |
WHAT | Adress |
---|---|
The WHAT table depends on the WHO service. Please click on the appropriate service in WHO table. |
WHERE | Location |
---|---|
0 | General |
1..9 | Zone 1 to 9 |
11..99 | Light point 11 to 99 |
#1..#9 | Group 1 to 9 |