自宅サービスUPDATE: エアコンが外から操作できるようになった

hatappi.hateblo.jp

上記で自宅サービスをDockerで動かせるようにしたので、ついでに今回は機能開発もした

hatappi.hateblo.jp

今回追加した機能は前回の記事でも触れたエアコンを外から付けたり消したりするものを実際に運用できる形にしたもの
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で電源操作がされた旨を通知している

f:id:hatappi1225:20170715160235g:plain

f:id:hatappi1225:20170715160354p:plain

これでこの夏は凌げる気がする