Hi,

I'm finally finding some time to write the next generation of my home
control system. I have had a number on control ideas I have wanted to
try out, and it is time to give them a try. The control and sensor plant
in my house is close to ridiculously complex.

One fun thing is that I am getting rid of the ability for users to set
the room target temperature. Instead, there will be buttons that say
"I'm cold" and and "I'm hot". Push once if you are a little so, push
more than once if you are really so. The rest is figured out by the
control system.

This comes from my belief that 72F is a random control knob that has no
real meaning to a person in a room. If you want to prove this, go to the
supermarket, pick up a room thermometer from the housewares aisle, then
go and stand in the section where the frozen food is. How cold do you
feel, what's the temperature say. Odds are you feel colder and the
temperature says it's higher...


I am building this in python/django (ruby on rails for python) an a
linux box. There is a database at the center of things and I want to
make the various parts to be independent processes. I want this so I can
do things like replace the heating controls without impacting the
ventilation and cooling code at all.

The 1 wire reading is pretty easy, I create a process for each bus and
each process pulls the list to read, finds which ones are on its bus,
reads them and stores them into the database. Each process is self
scheduling (easy pieces built into python for this.)

I am having more trouble deciding on partitioning the controller and
driver parts. Part of this comes from how to make things stable and
simple, part comes from needing to decide where different functions
should be done.

I don't think each process should be accessing the control points
directly, these are mostly done via a mport box interfacing RS485 nudam
controller pods. Having each one setting up telnet sessions and writing
whenever they think it's reasonable does not seem like the path to
reliability.

I also want to be able to do things like:
Almost all controls are variable, and I want to use this. So when a zone
calls for heat, it wants to open the water valves in a particular
stepped pattern, go to an higher than final flow rate for a period of
time (based on the lag of the zone) and then return to the final flow
rate until the temperature reaches the target.

This means that a single valve may be getting new position commands
every 10 seconds or so during the startup phase. I have plenty of
signalling bandwidth and there is plent of slow in the control system, I
just don't want to swamp either the database or the cpu by having lots
of processes polling every second. I also don't want t be waiting 15s
for something to happen that was only supposed to be there for 10s.


I would like opinions on two things:
   Do you think that things like start-up patterns should go in the
heating controller or the driver?

   What method makes a reasonable balance of simplicity, efficiency and
response for passing actions between the controllers and drivers?

All other kibitzing is also welcome.

jerry


------------------------------------------------------------------------------
Learn Windows Azure Live!  Tuesday, Dec 13, 2011
Microsoft is holding a special Learn Windows Azure training event for 
developers. It will provide a great way to learn Windows Azure and what it 
provides. You can attend the event by watching it streamed LIVE online.  
Learn more at http://p.sf.net/sfu/ms-windowsazure
_______________________________________________
Owfs-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/owfs-developers

Reply via email to