Difference between revisions of "A Monitor Session with Python"

From piMyHome Project
Jump to navigation Jump to search
(Blanked the page)
 
Line 1: Line 1:
−
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
 
−
<pre>nano monitor.py</pre>
 
−
 
−
Copy and paste the script below into that file and save it.
 
−
After you saved the file, you have to make the file executable:
 
−
<pre>chmod 755 monitor.py</pre>
 
−
 
−
Copy the content of this script to moniotr.py
 
−
<pre>#! /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()</pre>
 
−
 
−
Now start the monitor and watch the messages fly by. Exit with CTRL-C.
 
−
<pre>./monitor.py</pre>
 

Latest revision as of 10:56, 16 November 2014