Jump to content
AT&T to end email-to-text ×

sperok

Members
  • Posts

    56
  • Joined

  • Last visited

Everything posted by sperok

  1. Does anyone know what these messages in the error log indicate? Is there documentation of the error messages anywhere? The errors seem to be about 10 seconds apart and continue for hours. Thanks, Spero Thu 2011/07/14 02:45:44 System -170001 UDQ:Queue Full: AL&N Thu 2011/07/14 02:45:53 System -170001 UDQ:Queue Full: AL&N Thu 2011/07/14 02:46:02 System -170001 UDQ:Queue Full: AL&N ... Thu 2011/07/14 08:07:46 System -170001 UDQ:Queue Full: VAR ... Thu 2011/07/14 08:08:51 System -170001 UDQ:Queue Full: SND
  2. I am implementing ISY control over EZIO8T relays (EZFLORA does not support multiple zones on at once) to create a very flexible irrigation system covering 40+ valves. In building the system one critical issue is how to deal with occasional communication failures. My experience is that if a program sends an insteon command to turn a valve on or off, and a communication failure occurs, the program simply continues and the valve state is indeterminate. A subsequent (non-error) query of the valve will return the correct state. How do experienced ISY programmers deal with this sort of error condition? Do you simply repeat sending the command until the status changes? Yes, getting rid of the communication failure would be a good thing to do, but these are very intermittent and tough to pin down. When it comes to leaving the water running, I'd really like a very reliable solution. The approach I have taken to solving the problem is illustrated below. I'd appreciate feedback on whether this actually adds any reliability or if it causes more problems than it solves. The huge downside of this approach is that it requires 3 variables and 3 programs per valve, so I'm now stuck maintaining 132+ programs for the 44 valves ... For anyone interested in taking a look, here are the main components of the "reliable" irrigation controller: ---- Functionality ----- 1. Reliably turn valves on/off 2. Allow grouping of related valves 3. Support concurrent start of valves in one group (for drip applications) with independent run times 4. Support sequential operation of valves in one group without the need to specify start times for each valve (run one after another) 5. All run-times managed through the "variables" tab without updating programs 6. Very flexible watering schedules 7. Mutual exclusion of groups to prevent overloading pump (can't run two groups at once) 8. Scaling allows all valves to be run at 0-100% of normal run-time ---- Variables used for each valve ----- INTEGER runtime. = xx /* Amount of time the valve should remain open */ STATE timer. = xx /* This gets set > 0 to enable a valve and counts down 1/minute */ group. = [LAWN|VINEYARD|OLIVES|LANDSCAPE] /* The valve needs to belong to a group */ ---- "Global" Variables ---- irrigation.master = [ENABLED|DISABLED] /* Turn the irrigation system on/off globally */ irrigation.scalefactor = [0-100] /* Scale the run-time for a valve by 0-100% */ irrigation.group = [iDLE|LAWN|VINEYARD|OLIVES|LANDSCAPE] /* Only valves that match the current group are allowed to run */ irrigation.counter = xx /* this is used to cycle through the valves in a group */ ---- Programs for each valve ----- /* To turn a valve on it is required to set $irrigation.group and $timer.. This should ** continually retry turning the valve on every 10 seconds while the status is Off, the timer is > 0 ** and the valve belongs to the current $irrigation.group. This sample code is for the valve ** named "vineyard_1" which is located on EZIO8T #1, Relay #1, designated S1V1 */ Program: S1V1-On If Status 'Irrigation and Sensors / Sprinkler 1 / 1.Vineyard 1' is Off And $timer.vineyard_1 > 0 And $irrigation.group is $group.vineyard_1 Then Repeat Every 10 seconds Set 'Irrigation and Sensors / Sprinkler 1 / 1.Vineyard 1' On /* Here is the corresponding code to turn a valve off when the timer pops or group changes. ** Keep trying until the status is off. This counts on the REPEAT clause running until the status changes. ** If the valve fails to shut off the timer will continue to pop with values < 0 every minute. */ Program: S1V1-Off If Status 'Irrigation and Sensors / Sprinkler 1 / 1.Vineyard 1' is On And ( $irrigation.group is not $group.vineyard_1 Or $timer.vineyard_1 <= 0 ) Then Repeat Every 10 seconds Set 'Irrigation and Sensors / Sprinkler 1 / 1.Vineyard 1' Off /* Decrement the valve timer every minute if the valve is on. ** We let this go negative so that it will cause a trigger to pop every minute if the valve fails to shut off at 0. */ Program: S1V1-Timer If Status 'Irrigation and Sensors / Sprinkler 1 / 1.Vineyard 1' is On Then Wait 1 minute $timer.vineyard_1 -= 1 /* If any valve in a group is on the status of this program is TRUE. ** Once all the valves in the group have turned off the status goes FALSE */ Program: Vineyard Group On If Status 'Irrigation and Sensors / Sprinkler 1 / 6.Vineyard 6' is On Or Status 'Irrigation and Sensors / Sprinkler 1 / 5.Vineyard 5' is On Or Status 'Irrigation and Sensors / Sprinkler 1 / 4.Vineyard 4' is On Or Status 'Irrigation and Sensors / Sprinkler 1 / 3.Vineyard 3' is On Or Status 'Irrigation and Sensors / Sprinkler 1 / 1.Vineyard 1' is On Then - No Actions - (To add one, press 'Action') /* Increment the $irrigation.counter to move to the next set of valves within a group ** Wait 5 seconds to "debounce" the Off signal */ Program: Increment Vineyard Group If Program 'Vineyard Group On' is False Then Wait 5 seconds $irrigation.counter += 1 /* If $irrigation.master is set to DISABLED then shut everything off */ Program: Force Everything Off If $irrigation.master is $DISABLED Then $irrigation.group = $IDLE $irrigation.counter = 0 Run Program 'Reset all timers' (Then Path) /* Turn everything off and water the vineyard. This can be invoked from ** a schedule or from a program bound to a keypad. By setting a group ** then setting the $irrigation_counter, the corresponding program within ** the group will get invoked (see below). */ Program: Water the Vineyard If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Run Program 'Force Everything Off' (Then Path) Wait 5 seconds $irrigation.group = $VINEYARD Wait 2 seconds $irrigation.counter = 1 /* Within the Vineyard group there are multiple programs which run in sequence. ** When $irrigation.counter is = 1 the "01-Vineyard Blocks 1 and 4" program will ** trigger. It will startup 2 valves a few minutes apart. Once these valves have ** finished (their run-times could be different) the "Vineyard Group On" will go ** FALSE. When that happens "Increment Vineyard Group" will trigger and $irrigation.counter will increment ** which will then trigger "02-Vineyard Block 3". ** ** Note the implementation of the scalefactor, allowing watering times to be globally modified by ** changing $irrigation.scalefactor to compensate for unusually wet, dry, hot or cool conditions. ** ** The good news - the state machine for the valves is easy to see based on the naming conventions ** and states don't need to know about each other. ** ** Folder: Group-Vineyard is enabled only when $irrigation.group = $VINEYARD ** These programs are inside the folder. */ Program: 01-Vineyard Blocks 1 and 3 If $irrigation.counter is 1 Then $timer.vineyard_1 = $runtime.vineyard_1 $timer.vineyard_1 *= $irrigation.scalefactor $timer.vineyard_1 /= 100 Wait 5 minutes $timer.vineyard_4 = $runtime.vineyard_4 $timer.vineyard_4 *= $irrigation.scalefactor $timer.vineyard_4 /= 100 /* Once $irrigation.counter increments, the next program is triggered */ Program: 02-Vineyard Block 3 If $irrigation.counter is 2 Then $timer.vineyard_3 = $runtime.vineyard_3 $timer.vineyard_3 *= $irrigation.scalefactor $timer.vineyard_3 /= 10 /* Set the schedule for the Vineyard */ Program: Schedule-Vineyard If On Tue Time is 10:00:00PM Then Run Program 'Water the Vineyard' (Then Path) /* Turn a group on from a keypad */ Program: Vineyard Manual On If Control 'Irrigation and Sensors / Vineyard-2' is switched On Then $irrigation.master = $ENABLED Run Program 'Water the Vineyard' (Then Path) /* And turn it off */ Program: Vineyard Manual Off If Control 'Irrigation and Sensors / Vineyard-2' is switched Off Then $irrigation.group = $IDLE /* Reflect the status of a group on Keypad LED's */ Program: Vineyard Scene If Program 'Vineyard Group On' is True Then Set Scene 'Scenes / Irrigation / Vineyard' On Else Set Scene 'Scenes / Irrigation / Vineyard' Off
  3. Thanks Michel. That is as expected. The module I have developed is pretty complex and difficult to maintain because it uses 3 programs per valve. Since there is no way that I know of to pass parameters to programs, this results in lots of duplicated code. Is there any hope of creating program instances which can be invoked with parameters (i.e. valve #, time_to_run)? I understand the complexity and don't really expect it, but I can hope ...
  4. I am in the process of creating an irrigation control system that consists of 44 valves and which will be built using EZIO8T's instead of EZFlora because of the EZFlora single zone at one time restriction. I'm not sure it is the best way to do it, but the approach I've hit upon requires 3 programs per valve, all pretty much identical. Is there any way for me to create these programs in an outside editor, since this would be MUCH, MUCH faster than the ISY environment, and then download to the ISY? If anyone is interested in yet another irrigation controller, I am happy to post the working code once it is tested. The key features which I have not found in other controllers are and am planning to build include. Please stop me if this is already available elsewhere. 1. Supports assignment of multiple valves into "groups". All the valves in a group start near concurrently, but end based on the individual valve run time. 2. Allows all run-time and group assignments to be done via setting "init" values on variables. 3. Supports both time based and sequential operation of groups. For example, Group 1 could start M/W/F at 9 AM, Group 2 starts when Group 1 is complete. 4. Reliably turns valves on/off even when communication errors occur (assuming communication gets re-established at some point). 5. Is able to recover after power outages of the ISY or which impact the EZIO8T or pumps. Thanks, Spero
  5. Thanks for the responses. WRT "Why not lock it and let the tenant pay the bill?" This is a vacation rental (3-30 days) so operation, training and payments need to be kept really simple. I want to keep the temps set "uncomfortable" when vacant and allow limited control when occupied. I also want to make sure the heat does not get turned completely off in the winter or AC left on in the summer. The intent here is really to create a "locked cover" in software that will allow the up and down arrow keys to be pressed, but control the limits and make sure the modes stay set to AUTO. This is cost and damage control. Currently I find the heat and cool setpoints modified to values between 0 and 100+, obviously not the intent of the end user or matching my desired operational model. My primary goal is to 100% reliably set upper and lower bounds, conscious of the ongoing discussion of Venstar issues. Should the following approach be 100% reliable at keeping the thermostats limited between 50-70 heat and 78-98 cool? Noting that each key press on the Venstar either increases or decreases BOTH setpoints. The intent is for "TS-Query" to force a status update every 2 hours as a precaution against Venstar flakiness, then to have 4 seperate programs that test the min/max heat and cool limits. TS-Vacant will establish the setpoints at either the vacant or occupied settings based on changes to the variable $vacant which can be triggered by motion sensors or other means.TS-Mode will force the heat/cool and fan modes to auto in case the button on the front of the thermostat has been pressed. Program: TS-Query If From Sunrise + 1 second To Sunrise - 1 second (next day) And Time is Last Run Time for 'TS-Query' + 2 hours Then Set 'Heating and Cooling / Downstairs-Control' Query Set 'Heating and Cooling / Upstairs-Control' Query Query the Thermostats every 2 hours, run at startup Program: TS-Vacant If $vacant is $TRUE Then Run Program 'TS-Setpoints ' (Then Path) Else Run Program 'TS-Setpoints ' (Else Path) Program: TS-Setpoints If - No Conditions - (To add one, press 'Schedule' or 'Condition') Then Send Notification to 'Tell Spero' Set 'Heating and Cooling / Downstairs-Control' 50° (Heat Setpoint) Wait 5 seconds Set 'Heating and Cooling / Upstairs-Control' 50° (Heat Setpoint) Wait 5 seconds Set 'Heating and Cooling / Downstairs-Control' 98° (Cool Setpoint) Wait 5 seconds Set 'Heating and Cooling / Upstairs-Control' 98° (Cool Setpoint) Else Send Notification to 'Tell Spero' Set 'Heating and Cooling / Downstairs-Control' 64° (Heat Setpoint) Wait 5 seconds Set 'Heating and Cooling / Upstairs-Control' 64° (Heat Setpoint) Wait 5 seconds Set 'Heating and Cooling / Downstairs-Control' 84° (Cool Setpoint) Wait 5 seconds Set 'Heating and Cooling / Upstairs-Control' 84° (Cool Setpoint) Program: TS-CoolMaxLimit If Status 'Heating and Cooling / Upstairs-Control' > 99° (Cool Setpoint) Then Wait 1 minute Set 'Heating and Cooling / Upstairs-Control' 98° (Cool Setpoint) React to user pressing buttons, waiting 1 minute to "debounce" keystrokes Program: TS-CoolMinLimit If Status 'Heating and Cooling / Upstairs-Control' LT 78 (Cool Setpoint) Then Wait 1 minute Set 'Heating and Cooling / Upstairs-Control' 78° (Cool Setpoint) Program: TS-HeatMinLimit If Status 'Heating and Cooling / Upstairs-Control' LT 50 (Heat Setpoint) Then Wait 1 minute Set 'Heating and Cooling / Upstairs-Control' 50° (Heat Setpoint) Program: TS-HeatMaxLimit If Status 'Heating and Cooling / Upstairs-Control' > 70° (Heat Setpoint) Then Wait 1 minute Set 'Heating and Cooling / Upstairs-Control' 70° (Heat Setpoint) Program: TS-Mode If Status 'Heating and Cooling / Upstairs-Control' is not Mode Auto Or Status 'Heating and Cooling / Upstairs-Control' is not Fan Auto Then Set 'Heating and Cooling / Upstairs-Control' Mode Auto Set 'Heating and Cooling / Upstairs-Control' Fan Auto Force the Mode to Auto in case it gets changed manually
  6. Should the following code ensure that the AC can never be lowered below 78 degrees by manually pressing the Venstar buttons? It does not appear to be working reliably for me, getting confused by rapid button presses. This is a rental property, so user training is not an option. If Status 'Heating and Cooling / Downstairs-Control' < 78° (Cool Setpoint) Then Set 'Heating and Cooling / Downstairs-Control' 78° (Cool Setpoint) Else - No Actions - (To add one, press 'Action')
  7. We also have a Pentair Screenlogic and can monitor the pool with it, controlling it via the web and iPhone. The system in general works as advertised and provides good visibility and control. The software is licensed from Homelogic. AFAIK there is NO WAY (at reasonable cost) to monitor chlorine levels. The Pentair chlorine generators (and most others out there) simply generate chlorine at a programmable rate which can be changed via the automation interface (0-100% duty cycle). For a home automation enthusiast or remote application, Screenlogic has a few major deficiencies: - It is a closed system with no API's - The RS-485/Ethernet protocol adapter which they sell is perfect for integrating with the ISY, with one small problem, they have implemented an undocumented binary protocol which they proxy through a server. - To integrate with an HA system you need a separate serial interface locally terminated to your HA system (can't do this with the ISY, but you may be able to connect it to your ELK) - For remote access the proxy which they use requires a low latency broadband connection. In my case the property where I have this installed is remote, with only wireless access. Screenlogic often "fails to connect" and when it does get connected consistently loses connections multiple times while monitoring or trying to get something done. If I had it to do all over again, I would not use Screenlogic, but would think about "rolling my own" pool system using Insteon/ELK controlled relays for the pumps/filters. Not sure how I would control the heater at this moment, but sure it could be figured out.
  8. sperok

    EZIO8T in scenes?

    Thanks for the update and info.
  9. Since I've had a few water system failures at a vacation property it has become important to me to generate an alarm when there is unexpected demand. I've connected an EZIO8T to the pulse output of a water meter and built the following ISY program to count the pulses. Am I in for any surprises? Can the ISY reliably count these pulses? My expectation is that every On to Off transition of the EZIO8T input will trigger a pulse. It appears to work, but I have not tried to calibrate the pulses against the meter yet to get a gallons/pulse figure. If Status 'Irrigation and Sensors / Sprinkler 1 / Irrigation Water Meter' is Off Then $water_pulse += 1 Else - No Actions - (To add one, press 'Action') EZIO8T Inputs are normally pulled up to +5V indicating 'ON'. This counter should increment when grounded by the pulse output on the meter.
  10. Is there a definitive answer regarding the use of the SHN EZIO8T in scenes with ISY-99i beta release 3.1.2? - EZIO8T's are brand new and report version v.92 - EZIO8T's are linked and individual relays correctly respond to ON/OFF When used in scenes the wrong relays appear to be turned on/off. It looks like the relay number is being treated as bit mask rather than an index. For example turning on 5 appears to turn on #'s 1 and 3 (00000101). I've noticed other posts which caution about other SHN products being used in scenes, just verifying this is the case.
  11. Does anyone know of a meter that can monitor Propane usage from a residential tank (400 Gallon) and report via Insteon/UDI? The application is for monitoring consumption at a vacation rental property. I would love to get "Propane Low" warnings so I can notify the gas company to show up, and also to measure utilization during a guest stay so that if they do something dumb (like heat the swimming pool in the winter) I can bill them. The RobertShaw RS-228 is an inexpensive $65 "Base station" that connects wirelessly (433 Mhz, 150 ft) to an $8 "Dial Face" mounted on the tank. This provides a nice in-home display - but no remote capability. Is there anything like this that supports automation? Thanks, Spero
  12. Unfortunately that will have the effect of turning on lights that are currently off. My goal is to be able to adjust ONLY the lights within the scene that are already on.
  13. Is there an easy way to dim all the lights that are currently on? It would be great to have a scene containing all of my interior lights and to be able to use a simple control to dim all the lights within the scene that are currently at some level of on. Is there an easy way to do this, other than testing every light?
×
×
  • Create New...