0.0
No commit activity in last 3 years
No release in over 3 years
Gizwits Snoti API Client for Ruby.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.13
>= 0
~> 10.0
~> 3.0
 Project Readme

GizwitsSac-rb

GizwitsSac is short for Gizwits Snoti API Client, and GizwitsSac-rb just a Ruby version, which I hope it can help you more easily to connect to Gizwits Snoti API.

Installation

Add this line to your application's Gemfile:

gem 'gizwits_sac'

Usage

1. GizwitsSac::SnotiClient

Simply you can just use GizwitsSac::SnotiClient, and focus on the event via callback as the example below. (GizwitsSac::SnotiClient will handle heartbeat for you in ervery seconds you set.)

require "gizwits_sac"

event_push_handler = Proc.new do |event_push_data|
	# Here it just care the event *device_status_raw*.
	if event_push_data["event_type"] == "device_status_raw"
		puts "event_push_data =====> #{event_push_data}"
	end
end
remote_ctrl_handler = Proc.new do
	get_your_remote_ctrl_req
end
remote_ctrl_res_handler = Proc.new do |r_ctrl_res_data|
	puts "r_ctrl_res_data =====> #{r_ctrl_res_data}"
end

client = GizwitsSac::SnotiClient.new({
	event_push: event_push_handler,
	remote_ctrl: remote_ctrl_handler,
	remote_ctrl_res: remote_ctrl_res_handler,
	heartbeat_interval: 60, # default value is 5
	retry_count: 10, # default value is 5
	logger: Logger.new(STDOUT),
	host: "snoti.gizwits.com",
	port: "2017",
	connect_timeout: 3, # default value is 3 seconds
	read_timeout: 3, # default value is 3 seconds
	write_timeout: 3, # default value is 3 seconds
	prefetch_count: 50, # default value is 50
	auth_data: [
		{
			product_key: "your_product_key_here",
			auth_id: "your_auth_id_here",
			auth_secret: "your_auth_secret_here",
			subkey: "your_subkey_here",
			events: ['event_you_care_about', 'event_you_care_about', ...]
		}
	]
})

client.start

2. GizwitsSac::SnotiSocket

Another way, you can use GizwitsSac::SnotiSocket, and build a client as you like. Here is a very very simple example as below.

require "gizwits_sac"

socket = GizwitsSac::SnotiSocket.new({
	host: "snoti.gizwits.com",
	port: "2017",
	connect_timeout: 3, # default value is 3 seconds
	read_timeout: 3, # default value is 3 seconds
	write_timeout: 3, # default value is 3 seconds
	prefetch_count: 50, # default value is 50
	auth_data: [
		{
			product_key: "your_product_key_here",
			auth_id: "your_auth_id_here",
			auth_secret: "your_auth_secret_here",
			subkey: "your_subkey_here",
			events: ['event_you_care_about', 'event_you_care_about', ...]
		}
	]
})

socket.connect
if socket.login_ok?
	puts "login ok"	
	loop do
		data = socket.read
		puts data
		sleep 2
	end
else
	puts "login failed"
end

TODO: Unit Test