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
2025
2026
 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