私は Python を初めて使用し、数週間のプログラミングの学習と実践の後、ホーム オートメーション プロジェクトを開始しました。
私の目的は、私の Windows マシンで実行される C-Gate と呼ばれる Java ベースのサービスと対話することです。これは、Clipsal C-Bus 自動化システムによって送受信されるはるかに複雑なコマンドを解釈して通信します。
これまでのところ、telnelib と書き込み/読み取りコマンドを使用して C-Gate への接続を作成することができました。
私がしばらくの間理解しようとしてきたのは、C-Gate によって与えられた応答を使用して、光のレベルなどの特定の値を抽出し、それを使用できる変数に変換する方法です。
そこから、理解を深め、これらの値を使用/監視するためのインターフェイスの構築を開始できるはずです。
これまでの私のコードは次のとおりです。
import telnetlib
HOST = "localhost"
PORT = "20023"
def read_until(cue, timeout=2):
print tn.read_until(cue, timeout)
def tn_write(text):
tn.write(text)
tn = telnetlib.Telnet(HOST, PORT)
tn_write('project load MYHOUSE\r\n')
read_until('200 OK.')
tn_write('project use MYHOUSE\r\n')
read_until('200 OK.')
tn_write('net open 254\r\n')
read_until('200 OK: //MYHOUSE/254')
tn_write('project start\r\n')
read_until('200 OK.')
tn_write('get 254/56/1 level\r\n')
tn_write('get 254/56/2 level\r\n')
tn_write('get 254/56/3 level\r\n')
tn_write('get 254/56/4 level\r\n')
tn_write('get 254/56/5 level\r\n')
tn_write('get 254/56/6 level\r\n')
tn_write('get 254/56/7 level\r\n')
tn_write('get 254/56/8 level\r\n')
read_until('300 //MYHOUSE/254/56/1: level=0\r\n')
これにより、次の応答が出力されます。
201 Service ready: Clipsal C-Gate Version: v2.9.5 (build 2460) #cmd-syntax=1.0
200 OK.
200 OK.
200 OK: //MYHOUSE/254
200 OK.
300 //MYHOUSE/254/56/1: level=100
300 //MYHOUSE/254/56/2: level=0
300 //MYHOUSE/254/56/3: level=0
300 //MYHOUSE/254/56/4: level=0
300 //MYHOUSE/254/56/5: level=0
300 //MYHOUSE/254/56/6: level=0
300 //MYHOUSE/254/56/7: level=0
300 //MYHOUSE/254/56/8: level=0