Nature Remo Local API를 사용하여 브라우저에서 Nature Remo 작업

개요



LAN 내에서만 Nature Remo를 조작할 수 있는 Rails 애플리케이션을 만들었습니다. Nature Remo Local API 을 이용하고 있습니다.

사전에 가전 리모컨의 적외선 신호를 DB에 저장해 두면 Nature Remo 서버와의 통신이 잘 되지 않아도 Nature Remo에서 적외선 신호를 전송할 수 있습니다. 라즈파이 등으로 기동해 두면 비상시에 활약한다고 생각합니다.

리포지토리: chappy30313331/nature_remo_local

데모





환경



아래와 같은 환경에서 동작 확인하고 있습니다.
  • Nature Remo 펌웨어
  • Remo/1.0.79-gbbcb0e8

  • OS
  • Raspberry Pi 4: Raspbian 10.6
  • macOS: Mojave 10.14.6

  • PostgreSQL
  • Raspberry Pi 4: psql (PostgreSQL) 11.9 (Raspbian 11.9-0+deb10u1)
  • macOS: psql (PostgreSQL) 13.1

  • Ruby 2.6.6
  • Rails 6.0.3.4

  • 설정



    참조에 따라 Nature Remo의 호스트 이름 또는 IP 주소를 확인하고 환경 변수로 설정하십시오.
    $ export NATURE_REMO_HOST=192.168.XX.XX
    # OR
    $ export NATURE_REMO_HOST=Remo-XXXXXX.local
    
    $ bundle install
    $ bin/rails db:setup
    $ bin/rails server
    

    사용법


  • 서버를 시작하고 톱 페이지에 액세스
  • 가전 추가
  • 가전에 버튼 추가
  • 리모컨을 Nature Remo에 가깝게 추가하고 추가하려는 버튼을 누르고 파란색으로 빛나면 OK
  • "읽기"버튼을 클릭하면 읽은 신호가 "신호"란에 표시되므로 이름을 지정하고 저장합니다.

  • 추가 된 버튼을 가전 화면에서 클릭하면 Nature Remo에서 적외선 신호가 전송됩니다.

    구현



    Nature Remo에 요청하여 반환된 신호를 저장하고 버튼을 누를 때 그대로 전송하면 됩니다. 간단한 화면을 만들어 CRUD와 송수신 기능을 구현하고 있습니다.
  • Nature Remo로 전송된 신호 읽기
  • app/services/read_signal.rb


  • read_signal.rb
    class ReadSignal
      include Service
    
      def call
        uri = URI::HTTP.build(host: ENV['NATURE_REMO_HOST'], path: '/messages')
        HTTP.timeout(10)
            .headers('X-Requested-With' => 'local')
            .get(uri)
      end
    end
    
  • Nature Remo에서 신호 보내기
  • app/services/send_signal.rb


  • send_signal.rb
    class SendSignal
      include Service
    
      def initialize(signal)
        @signal = signal
      end
    
      def call
        uri = URI::HTTP.build(host: ENV['NATURE_REMO_HOST'], path: '/messages')
        HTTP.timeout(10)
            .headers('X-Requested-With' => 'local')
            .post(uri, body: @signal)
      end
    end
    

    참고 링크


  • Nature Remo Local API
  • Nature Remo Local API로 로컬에서 리모컨 신호 보내기
  • 좋은 웹페이지 즐겨찾기