Giter VIP home page Giter VIP logo

x10's Introduction

For now, here's my post to comp.lang.perl.modules about this package,
explaining what I have in mind...

---

I've been writing software for myself to control X10 devices in my home
for the past 6 years.  Up until the last 6 months, it had all been in C.

About 6 months ago, I started from scratch in Perl, and I think it's
time to start publishing my results so I can get some serious feedback.

I code is entirely object-oriented, including several X10 
computer-interface modules inherited from a common abstract module,
support for event scheduling, event callbacks (event-driven), and an
abstracted client-server interface over TCP sockets.  Some of these
capabilities are limited for computer-interface hardware that is 
transmit-only.

Hardware support already exists for the Firecracker, ActiveHome, and
TwoWay/TW523 interfaces, though not all features of these interfaces
are currently used.

I'd like to get this code uploaded to CPAN some time soon, so please voice
your opinions on the namespace ASAP, here on comp.lang.perl.modules or
to me directly at [email protected].

---


Here's some info regarding the object model, so that you can, if so inclined,
extend this package to support additional hardware devices (X10 <-> computer
interfaces).

All of the modules in this package represent classes -- the package is
entirely object-oriented.

The 'X10' module is designed to set up all the other modules in a
relationship that would implement an X10 daemon process, with scheduler,
macro processor, network listener, etc.

The X10::Controller module is not designed to be used directly -- it's
an abstract class from which other controller modules are derived.
It provides X10 event queueing, compiling of X10 events into X10
instructions (the actual words that go over the wire), and optimization
of the X10 instruction sequences.  It also provides the framework for an
event callback mechanism, whereby any other object may monitor X10 events.

Derived from X10::Controller are several classes that implement the
specifics for several X10 controllers.  Currently implemented are
X10::ActiveHome, X10::TwoWay (for the two-way/TW523 combination),
X10::FireCracker, and X10::Network.  The first three are for actual
interfaces, and the last is for a 'virtual' X10 controller accessed
via a TCP socket.  The other end of X10::Network's TCP connection is
implemented in X10::Server.  The X10::FireCracker has limited capabilities
since the FireCracker device can only send, and not receive, X10 events.

A couple other modules written in support of an X10 server daemon are
X10::Scheduler and X10::MacroProc.  These modules implement an event
scheduler and macro processor, respectively.  The latter relies on
event callbacks to trigger macros, so a bidirectional computer interface
is required.  Macros themselves can be X10 events, or perl code refs,
which means you can control just about anything via X10 -- anything that
you can do in perl.

The remaining modules are for general support of the other modules:
X10::Macro, X10::SchedEvent, X10::Event, X10::EventList...

X10::Device represents a physical device controlled via X10:  a light or
appliance, for example.  My intention is to render this an abstract class,
and the inheriting classes would somehow implement specific behaviours
of certain types of devices and/or X10 modules.  For example, a device
might be configured to be momentary.  Or a device may be pollable to
determine its on/off status or dim level.



PLEASE send feedback/suggestions to me at [email protected].


x10's People

Watchers

 avatar  avatar  avatar

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.