Difference between revisions of "Code Snippets"
Line 1: | Line 1: | ||
== Sending messages with netcat == | == Sending messages with netcat == | ||
The Linux command <tt>'''[http://en.wikipedia.org/wiki/Netcat netcat]'''</tt> makes it very easy to send messages from a Raspberry Pi to a Bticino Gateway. The syntax is: | The Linux command <tt>'''[http://en.wikipedia.org/wiki/Netcat netcat]'''</tt> makes it very easy to send messages from a Raspberry Pi to a Bticino Gateway. The syntax is: | ||
− | < | + | <source lang="bash">pi@raspberry ~ $ echo "<message>" | netcat <gateway-IP> <gateway-port></source > |
− | pi@raspberry ~ $ echo "<message>" | netcat <gateway-IP> <gateway-port></ | + | |
+ | For example: turn off light 94 (9.4) on interface 5: | ||
+ | <source lang="bash">pi@raspberry ~ $ echo "*1*0*94#4#05##" | netcat 192.168.1.55 20000</source > | ||
== A Python Monitor Session with Bticino Gateway == | == A Python Monitor Session with Bticino Gateway == |
Revision as of 12:50, 16 November 2014
Contents
Sending messages with netcat
The Linux command netcat makes it very easy to send messages from a Raspberry Pi to a Bticino Gateway. The syntax is:
pi@raspberry ~ $ echo "<message>" | netcat <gateway-IP> <gateway-port>
For example: turn off light 94 (9.4) on interface 5:
pi@raspberry ~ $ echo "*1*0*94#4#05##" | netcat 192.168.1.55 20000
A Python Monitor Session with Bticino Gateway
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.
For Raspberry Pi
Start editor an editor (in our example 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
Now start the monitor and watch the messages fly by. Exit with CTRL-C.
./monitor.py
For Windows
Download and install Python for Windows and create the file monitor.py and edit with an text editor. Copy and paste the source code below in that file and save it. Then just double click monitor.py.
The Python Script monitor.py
Copy the content of this script to monitor.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import socket
# IP address and port to connect to the gateway, please
# change these values according 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 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()