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
