Jump to content

Release 3.1.2 (Beta) Is Now Available


Recommended Posts

Hello all,

 

I am happy to announce the availability of our 3.1.2 release! For a list of changes, please take a look at this post:

viewtopic.php?t=6015

 

Things to test:

Variables!

i2 commands

 

 

For a discussion of variables, please look at the new Program Variables forum

viewforum.php?f=68

 

 

Notes:

1. ISY-26 is no longer included in the firmware builds

2. Due to the sensitive nature of supporting MorningLinc, users now must agree to terms and conditions upon Admin Console start up otherwise the dialog keeps popping up every time the Admin Console is started

3. IMPORTANT If you have already installed a self signed certificate and your current firmware is 2.7.10 and below, you must reinstall a new one before the upgrade:

http://www.universal-devices.com/mwiki/ ... rtificates

 

Instructions:

1. Please backup your ISY (File | Backup ISY)

 

2. Please download the firmware for your platform - please do not unzip

ISY 99i Series: http://www.universal-devices.com/update ... _3.1.2.zip

OR 992i Series: http://www.universal-devices.com/update ... _3.1.2.zip

OR 994i Series: http://www.universal-devices.com/update ... _3.1.2.zip

 

3. Important

Due to invalid Java certificate chain in releases 2.8.5 and above, please make sure to remove all Universal Devices certificates from Java:

a. Close all browser sessions

b. Open Java Control Panel (Java Preferences on MAC)

c. Click on the Security tab. Remove all Universal Devices certificates (on MAC, click on the '-' button at the bottom)

e. Clear your Java Cache ( http://www.universal-devices.com/mwiki/ ... Java_Cache

)

 

4. Login to the Admin Console and choose Help | Manually Upgrade [the name of your system]

 

5. Choose the file saved in step 2

 

MAC users: if upgrade fails, please add https://your.isy.ip.address to ISY Finder (see 3f above)

 

6. After the upgrade, ISY reboots. Please do ensure to clear your Java Cache:

http://www.universal-devices.com/mwiki/ ... Java_Cache

 

7. IMPORTANT Once upgrade is completed and ISY reboots, use any of the following methods to access your ISY's Admin Console:

a. http://isy/admin - applet (Windows only)

b. http://isy/admin.jnlp - Java application (Windows only)

c. http://your.isy.ip.address/admin - applet

d. http://your.isy.ip.address/admin.jnlp - Java application

e. http://www.universal-devices.com/99i/3.1.2 - applet

f. http://www.universal-devices.com/99i/3.1.2/admin.jnlp - Java application

 

 

 

Thanks and with kind regards,

Michel

Link to comment
Share on other sites

A bug:

 

This program will run all the way to the wait 10 seconds then it stops.

If
       Status  'Kitchen / LightKitchenIsland' is On
   And Status  'Kitchen / LightKitchenSink' is On
   And Control 'Outside / Lights / LightBackPorch' is switched On

Then
       Set 'Outside / Lights / LightBackPorch' 250 (Beep Duration)
       Set 'Kitchen / LightKitchenSink' Off
       Set 'Kitchen / LightKitchenIsland' Off
       Set 'Outside / Lights / LightBackPorch' Off
       Wait  10 seconds
       Set 'Outside / Lights / LightBackPorch' On

Else
  - No Actions - (To add one, press 'Action')

 

After further review I have noticed that it quits at the wait line.

Link to comment
Share on other sites

polexian

 

That is normal operation for the way the Program is coded. Any time a Wait or Repeat is encountered the If statement can be reevaluated. In this case the Program is turning LightKitchenSink Off which makes the If False when it is reevaluated at the Wait.

 

Lee

 

EDIT: excerpt from the Wiki regarding statement execution…

 

A series of statements within a Then clause (or within an Else clause), up to the next Wait or Repeat statement, are atomic. In other words, all such statements are executed before the conditions of the program are retested. The program's conditions are reevaluated each time a Wait or Repeat statement is encountered, and at the end of each iteration of a Repeat loop.

 

What this means is that if a program's Then clause changes a condition which causes the program's overall condition to become false (or if the program's Else clause changes a condition which causes the program's overall condition to become true), the current atomic statement group will complete, and at that point execution will transfer from the Then clause (or the Else clause) to the Else clause (or the Then clause).

 

Therefore, if a Then clause (or an Else clause) contains no Wait or Repeat statements, the entire clause is atomic, and will complete before the program's conditions are reevaluated.

Link to comment
Share on other sites

polexian

 

That is normal operation for the way the Program is coded. Any time a Wait or Repeat is encountered the If statement can be reevaluated. In this case the Program is turning LightKitchenSink Off which makes the If False when it is reevaluated at the Wait.

Would love to see an old request of mine make its way into one of these betas - having a checkbox option, or a 2nd type of wait that doesn't re-evaluate after time expires.

Link to comment
Share on other sites

Thank you. So what I'm going to do to fix this is make a second program with no if's that from the first program when you run it, then it will start the second program and wait the desired time then do what I want. Code is as follows:

 

*RunningLightsTimer

 

If
       Status  'Kitchen / LightKitchenIsland' is On
   And Status  'Kitchen / LightKitchenSink' is On
   And Control 'Outside / Lights / LightBackPorch' is switched On

Then
       Set 'Outside / Lights / LightBackPorch' 250 (Beep Duration)
       Set 'Kitchen / LightKitchenSink' Off
       Set 'Kitchen / LightKitchenIsland' Off
       Set 'Outside / Lights / LightBackPorch' Off
       Disable Program 'OneOutsideOnAllOn' //This program just keeps on the outside lights at night so the wife can't turn them off.
       Run Program 'RunningLightsFinishTimer' (If)

Else
  - No Actions - (To add one, press 'Action')



*RunningLightsFinishTimer


If
  - No Conditions - (To add one, press 'Schedule' or 'Condition')

Then
       Wait  5 seconds
       Set 'Outside / Lights / LightBackPorch' On
       Enable Program 'OneOutsideOnAllOn'  //This program just keeps on the outside lights at night so the wife can't turn them off.

Else
  - No Actions - (To add one, press 'Action')

Link to comment
Share on other sites

polexian

 

That is normal operation for the way the Program is coded. Any time a Wait or Repeat is encountered the If statement can be reevaluated. In this case the Program is turning LightKitchenSink Off which makes the If False when it is reevaluated at the Wait.

 

Lee

 

EDIT: excerpt from the Wiki regarding statement execution…

 

A series of statements within a Then clause (or within an Else clause), up to the next Wait or Repeat statement, are atomic. In other words, all such statements are executed before the conditions of the program are retested. The program's conditions are reevaluated each time a Wait or Repeat statement is encountered, and at the end of each iteration of a Repeat loop.

 

What this means is that if a program's Then clause changes a condition which causes the program's overall condition to become false (or if the program's Else clause changes a condition which causes the program's overall condition to become true), the current atomic statement group will complete, and at that point execution will transfer from the Then clause (or the Else clause) to the Else clause (or the Then clause).

 

Therefore, if a Then clause (or an Else clause) contains no Wait or Repeat statements, the entire clause is atomic, and will complete before the program's conditions are reevaluated.

 

I'm a little confused. If I read this right my irrigation program should only turn on Zone 1 and then exit.

 

The program runs at 4:30 am and

 

Turn on Zone 1

Wait 15 mins

Turn on Zone 2

Wait 15 mins

etc.

 

So when the Wait statement is encountered the program is re-evaluated. It is no longer 4:30am so the program should run the Else statement which has nothing causiing the program to end?

 

It does work well and cycles through all the Zones which would contradict what the Wiki states.

Link to comment
Share on other sites

andyf0

 

Post the actual If statement. For the Program to continue it would seem the ISY does not consider the If condition has changed to False. Could be like an If Control On is not False after a Wait if no other command has been received.

 

The conclusion that the If has changed state in the original example is not in question. The If is gated on multiple devices being On which are ANDed together. The Then clause turns multiple devices Off which is changing the evaluation from True to False.

 

Lee

Link to comment
Share on other sites

I think someone else may have reported this. I have a program that is triggered at dawn. It runs the first so many steps because things happen like I would expect i.e. lights going off. It then runs into a wait and it never gets past that wait because the other events never happen. The other interesting thing is in the summary it looks like it never ran. There isn't a a start time or end time. This worked until 3.1.1 and broke after that I think.

Link to comment
Share on other sites

andyf0,

 

LeeG is right on ... if you want your programs to complete without interruption, then it's best to call another program without a condition.

 

RLIKWARTZ,

 

You might want to check the schedule grace period. Once you hit Wait and if the current time +/- grace period does not evaluate to true, then your program stops. Or, instead of using Dawn, use From/To (i.e from Dawn to Dawn + 1 hour).

 

With kind regards,

Michel

Link to comment
Share on other sites

andyf0,

 

LeeG is right on ... if you want your programs to complete without interruption, then it's best to call another program without a condition.

 

 

With kind regards,

Michel

 

That's very interesting. My program here seems to run fine.

 

If

On Sat, Mon, Thu

Time is 4:30:00AM

 

Then

Set 'DEVICES / EZFLORA / 1. FL Beds/Lawn (Blue)' On

Wait 15 minutes

Set 'DEVICES / EZFLORA / 2. FL Lawn (Red)' On

Wait 15 minutes

Set 'DEVICES / EZFLORA / 3. FR Beds/Lawn (Black)' On

Wait 15 minutes

Set 'DEVICES / EZFLORA / 4. BR Lawn (Orange)' On

Wait 15 minutes

Set 'DEVICES / EZFLORA / 5. BL Lawn (Green)' On

Wait 15 minutes

Set 'DEVICES / EZFLORA / 5. BL Lawn (Green)' Off

 

Else

- No Actions - (To add one, press 'Action')

Link to comment
Share on other sites

OK, I fixed my program to actually call another program to do the zone cycling.

 

Question: If you use a program that is only called by another program, does it have to be enabled? Or can it be called even if it's disabled?

Link to comment
Share on other sites

andyf0

 

Excerpt from the Wiki regarding the Run statement ….

 

“the target program will begin execution regardless of the state of its Enabled checkbox, and the target program will not begin execution if it resides within a folder tree any of whose folder's conditions are false.â€

 

Be careful when you have multiple questions running in the same thread. I do not think you needed to break up the irrigation program particularly if it has been running as you want. The post stating the need to have two programs was in response to the original question and is confirming what the Wiki is saying about Wait/Repeat and If statement reevaluation.

 

The second question, does the irrigation Program If statement change state from True to False, is separate and apart from the fact that an If can be reevaluated due to a Wait/Repeat. I intend to run some tests regarding triggering a Program with a time based event to see what effect elapsed time has on the True/False result of the If. There is a Grace period configuration value that may affect the result.

 

Lee

Link to comment
Share on other sites

Apologies for the multiple questions. It's my enthusiam coming through. I keep thinking up so many questions in my attempt to understand all this. I did read the Wiki and I do remember now reading that, sorry! I am an embedded programmer by trade but this is very different than what I do.

 

I will be very interested in the results of your experiments with time based programs. I'm a little OCD when it comes to the number of programs I have and would really like to run just one.

Link to comment
Share on other sites

andyf0

 

A Program that is triggered by a simple time based event does not change the If status from True to False. I thought the default 15 minute Grace period might have an effect but it did not. During the second round of tests I then ran with a 20 minute Wait time in between Insteon commands. All the commands were executed and the Program summary page showed Running ‘Then’ with a status of True. This result is consistent with what you experienced when the irrigation program ran successfully as one program.

 

Don’t worry about multiple questions. That is common practice. Just have to be sure which question any given answer or suggestion applies to.

 

Lee

Link to comment
Share on other sites

As a follow up. I was thinking and just on a lark I went out and change the wait interval, update and changed it back and updated it and then saved the program and the program now seems to be working correctly again.

Link to comment
Share on other sites

Settable parameters work for synchrolinc (trigger/watts, holdoff/delay, hysteresis/threshold) -- thank you.

 

However all units I have (6) experience the same failure in writing device links -20000/-8 or -20000/-51 using link management/new device or link management/start linking correspondingly.

 

Part of the daignostic dialog during the process states that I2 data transfer has failed and was reverting back to I1. As a result, no devices can be linked through ISY/admin. Devices can be manually linked via the set-buttons.

 

The set-parameters have been confirmed to be written into the unit, however, the devices all appear in the admin/window as update-pending and receives communication failure ("!") when any other device goes through an update. Work-around is to leave auto-write changes off.

 

The units seem to populate the settable parameters during the calibration phase. I've observed different values when setting these units up. Need to be careful not to recalibrate the unit after moving/disconnecting it. A right-click restore/write-updates restores the correct values to the unit -- but also gets communication failure.

 

The status in the isy/admin page does not change unless query is issued -- perhaps this also due to the communication problems. Workaround is to use a program to query w/variable to determine state-change.

 

First two units are now able to activate a coaster-pager in response to washer/dryer completing a cycle. I'd like to utilize the other units in places that are rather inaccessible (kitchen ceiling w/o access door, to slave blower fans, gate-control, to control driveway lighting and garage door, etc).

 

Please let me know what additional information I can provide; loaner device available. Current system size 98 Devices, 50 scenes, 75 programs, and still growing.

Link to comment
Share on other sites

OK, I fixed my program to actually call another program to do the zone cycling.

 

Question: If you use a program that is only called by another program, does it have to be enabled? Or can it be called even if it's disabled?

 

As mentioned, yes. This is exactly what you do to get a then clause to run all the way through without possibility of being interupted.

 

Put the "then" claue in a disabled program and use an enabled program to call it up.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...