Sha256: 634698a977908599b5cfae48f7d9f3c35b0b9d09e470bddfbcac873ac1e3da01

Contents?: true

Size: 999 Bytes

Versions: 1

Compression:

Stored size: 999 Bytes

Contents

require 'net/http'
require 'json'

# Home Assistant notifier
class Hass
  def initialize(url, password, logger)
    @url = url
    @password = password
    @logger = logger
  end

  def notify(state = true, sensor_name = 'motion', friendly_name = 'Motion Sensor')
    url = "#{@url}/api/states/sensor.#{sensor_name}"
    data = { 'state' => (state ? 'on' : 'off'), 'attributes' => { 'friendly_name' => friendly_name } }.to_json
    Thread.new { send_data(url, data) }
  end

  def send_data(url, data)
    uri = URI(url)
    puts "Starting request to #{url} with data #{data}"
    https = Net::HTTP.new(uri.host, uri.port)
    request = Net::HTTP::Post.new(uri.path)
    request['Authorization'] = "Bearer #{@password}"
    request['Accept-Encoding'] = 'deflate'
    request.body = data
    https.use_ssl = true if uri.scheme == 'https'
    response = https.request request
    @logger.log("Request to Home Assistant failed (#{response.code}): #{response.body}") #  if response.code > 299
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ws_light-0.4.2 lib/ws_light/hass.rb