Coder Social home page Coder Social logo

ruby-mios's Introduction

MiOS

Gem that uses the URL API for the Vera family of products from MiCasaVerde.

Installation

Add this line to your application's Gemfile:

gem 'mios'

And then execute:

$ bundle

Or install it yourself as:

$ gem install mios

Usage

MiOS works on a job queue. If you wish to change an attribute or the status of a particular device, you must submit a job to MiOS and wait for it to be succeed or fail or require a requeue. Most of this functionality is hidden behind the scenes and an idiomatic synchronous closure interface is exposed that manages it all for you, as you'll see below. Most methods can also be used asynchronously but you need to know what you are doing as this is not really an event-driven system and inconsistencies can occur if used improperly.

Create a reference to your local MiOS device

mios = MiOS::Interface.new('http://192.168.15.1:3480')

Devices could be anything of course, assuming here the first is a switch

switch = mios.devices[0]

Turn the switch off (light switch or outlet or anything classed as a switch)

switch.off!

The job object is returned from calls that require API calls

job = switch.on!

Execute some code once the job has finished

switch.off! { |obj|
  puts "The #{obj.name} is now off"
}
puts "This will get printed once the switch is off and the block has been executed"

Execute some code asynchronously from the job

switch.on!(true) { |obj|
  puts "The #{obj.name} is now on"
}
puts "This will output immediately"
sleep(5) # Sleep to wait for the thread to finish, will clean this up later

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.