LoginSignup
0
0

More than 3 years have passed since last update.

ECHONET用電文のEDTを自動生成

Last updated at Posted at 2020-05-03

目的

  • Pyhon3で書く
  • ECHONET用電文のEDTを自動生成する
  • EDTは0~99(0x00~0x63)まで
  • 電文はSET用とGET用を交互に生成する
  • qiitaに投稿してみる

code

MessageGenerator4ECHONET-Lite.py
#! /uer/bin/env python
# -*- coding: utf-8 -*-

import sys

# 初期値
setget_flag = True      # True:set,False:getの時を表す、0or1のほうが判定速いのかは知らない。
i = 0                   # カウンタ
ipv6Addr = "AAAAAAAA"   # ダミー値。本当はもっと長いけど、今は特に関係ないのでこのまま。

GET_E2 = b"\x10\x81\x12\x34\x05\xFF\x01\x02\x88\x01\x62\x01\xE2\x00"
# 積算電力量計測値履歴1(正方向計測値)(EPC=0xE2)
SET_E5_base = "1081123405FF010288016201E501"
# 積算履歴収集日1(0:当日 1~99:前日の日数)(EPC=E5)

# 適用先の都合でwhile文にしています
while 1:
    if setget_flag == True:
        # set時の動作
        # E5の電文を作成
        SET_E5 = bytes.fromhex(SET_E5_base + '{:02X}'.format(i))
        command = "SKSENDTO 1 {0} 0E1A 1 {1:04X} {2}".format(ipv6Addr, len(SET_E5), SET_E5)
        setget_flag = False  # フラグをFalse:getに
        print(command)
    else :
        # get時の動作
        # E2の電文は毎回一緒なのでそのまま
        command = "SKSENDTO 1 {0} 0E1A 1 {1:04X} {2}".format(ipv6Addr, len(GET_E2), GET_E2)
        setget_flag = True   # フラグをTrue:setに
        i += 1               # 後に送る電文側でインクリメントする
        print(command)
    # 電文作成が100回になったら糸冬了
    if i == 100:
        print("100回糸冬了")
        sys.exit()  #### 糸冬了 ####

結果

SKSENDTO 1 AAAAAAAA 0E1A 1 000F b'\x10\x81\x124\x05\xff\x01\x02\x88\x01b\x01\xe5\x01\x00'
SKSENDTO 1 AAAAAAAA 0E1A 1 000E b'\x10\x81\x124\x05\xff\x01\x02\x88\x01b\x01\xe2\x00'
~省略~
SKSENDTO 1 AAAAAAAA 0E1A 1 000F b'\x10\x81\x124\x05\xff\x01\x02\x88\x01b\x01\xe5\x01c'
SKSENDTO 1 AAAAAAAA 0E1A 1 000E b'\x10\x81\x124\x05\xff\x01\x02\x88\x01b\x01\xe2\x00'
100回糸冬了

考察

  • ECHONET用電文のEDTを自動生成できた
  • EDTは0~99(0x00~0x63)まで対応した
  • 電文はSET用とGET用を交互に生成した
  • qiitaに投稿した
    • Markdown記法に少し慣れた
    • はてブよりもコードは見やすい
    • コメントの書き方がわからんかったので、資料を参考にしてみた

参考資料

Pythonのコメント、コメントアウトの書き方

追記

  • 元のコードをPython3用に書き直したが動かず。
    • Python3はバイナリデータの扱いが下手なのか・・・?
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0