最近暑くなってきて何が困るかでいうと外から帰宅した時の家に熱がこもってる時ですね
エアコンをつけてもすぐ涼しくなるわけではない
そこで休日に秋葉原にいってネットワーク対応した学習リモコンをかった
ただそれは専用アプリからしか操作が出来ないものでAPIなどはなかった
でもどうしてもLINEから「エアコンつけて」としたかったのでAPIで実行できるようにする必要があった
そこでパケットをキャプチャして同じ通信で操作を試みた
パケットキャプチャはこの道で定番のWiresharkを使う
キャプチャするとUDPでどのホストにどのIP宛てに送信しているかが分かる
そして16進数の送信しているデータもとれるのでそれをコピーする
あとはデータグラムで扱う必要があるのでRubyのUDPSocketを使う
プログラムは下記のような感じになる
require "socket" host = "xx.xx.xx.xx" port = xxxx row_data ="ff00・・・・・・" # Wiresharkから取得した16進数ストリーム # 2文字づつで区切ってその文字列を16進数の表現と見なして整数に変換してあげる hex_array = row_data.scan(/.{2}/).map {|e| "0x#{e}".hex} socket = UDPSocket.new socket.send(hex_array.pack('C*'), 0, host, port)