上記で自宅サービスをDockerで動かせるようにしたので、ついでに今回は機能開発もした
今回追加した機能は前回の記事でも触れたエアコンを外から付けたり消したりするものを実際に運用できる形にしたもの
LINEから操作できるようにもしようと思ったのですが、Rails + Reactでつくったwebの方も使ってもらいたかったので今回のゴールはwebから操作できるようにした
Wiresharkから取得した16進数のデータはbinarylogic/settingslogicにもたせておいて
それらは下記のようなクラスを通じてUDPプロトコルで通信をさせる
require 'socket' class UdpConnector attr_reader :socket def initialize @socket = UDPSocket.new end def send_packet(data) hex_array = data.scan(/.{2}/).map {|e| "0x#{e}".hex} socket.send(hex_array.pack('C*'), 0, ENV['HOST'], ENV['PORT']) end end
UDPなので実際についたかまでは分からないですが、とりあえず通信が完了したらLINEで電源操作がされた旨を通知している
これでこの夏は凌げる気がする