
evarsanyi
Members-
Posts
106 -
Joined
-
Last visited
Everything posted by evarsanyi
-
There's nothing the ISY can do in this case. The lame implementation of the switchlinc has a bug (imo) in that when there's a collision sending a message it immediately retries rather than waiting a pseudo-random amount of time and retrying. Thus, if you have 2 switches next to each other that must do something on the network (talk to the ISY or control another switchlink) and you press both paddles with the same hand at the same time the network traffic doesn't make it. Smarthome's response to this was that 'no one could ever time their paddle presses that accurately'. Well, that's crap. There's debounce and an implicit synchronization with the cmd line zero crossing (16ms or so) -- its quite easy to hit both units on or off so that they end up trying to transmit on the same powerline cycle and failing (over and over again until they give up). Unless the ISY went out and did a timed query of everything now and then (easy to implement using these programs/timers we have today even) it cannot know status reliably. I'll try Chris's workaround, but IMO it shouldn't end up looping in any case -- the program should only restart if the result of the query was a change in state of a queried device.
-
The following program results in the Queries running continuously. There's barely enough time between cycles to get in and disable the program to stop the loop. The 'queries' are in there because of the stupid bug in the Insteon switchlinc that prevents it from sending any status message if 2 switches are pressed at the same time (the original message and all retries overlap and nothing makes it). I figured the queries would update the state but it seems like the program starts over after the first query and keeps this up forever. If Status 'Mbath/Toilet1 - Fan' is On And Status 'Mbath/Toilet2 - Vanity' is Off And Status 'Mbath1 - Shower' is Off And Status 'Mbath2 - Vanity' is Off Then Set 'Mbath/Toilet2 - Vanity' Query Set 'Mbath1 - Shower' Query Set 'Mbath2 - Vanity' Query Wait 20 minutes Set 'Mbath/Toilet1 - Fan' Off Else - No Actions - (To add one, press 'Action')
-
That did it, it looks fine now.
-
I mentioned it because the previous problem with timers not running also updated the 'last run time' and didn't run it. I'll report if it doesn't run it again. Other programs I had removed the '2 minutes' hack on DID run OK FWIW.
-
The following didn't run (this was one I forgot to remove the 'for 2 minutes' from, but I think it still should have worked): If On Mon, Tue, Wed, Thu, Fri From Sunset - 25 minutes For 2 minutes Then Set 'CBR/SouthWall - Tracks' On Else - No Actions - (To add one, press 'Action') In the summary screen it shows that it ran at 4:12 pm, so it may just be some communications issue rather than something with scheduling.
-
This is OSX 10.5, Safari, default Java configuration except that console is enabled.[/img]
-
I thought it might be like that, so I reversed the order of the AND in the 2nd program hoping it wouldn't see RF1 being true on the first 'pass' -- however it still triggers. Maybe I can fool it with a short wait somehow... I'll try that. Thanks for the idea!
-
I'm trying to build a simple state machine that cycles on an X10 received event. I thought I would have 2 programs that each use their status bit to contribute to the current state and push the 2 programs between states via X10 events and timeouts. The problem I'm having is it seems like receiving an X10 event is being treated as a level trigger (the device/control state) rather than an event (X10 L9/On received) and so both programs are seeing the same L9/On event and cycling through quickly. Is there some time window in which receipt of an X10 event is 'pinned' so every program can see it? How are cross dependencies between programs status handled (if you build a D flip flop with 2 programs status bits and actions that refer to each other what is the clock, or does every change in any state just make a single pass through every condition? If so how do you determine the order in which conditions are evaluated?) The code is simple and probably clearer than my explanation/questions above: RF1: If X10 'L9/On (3)' is Received Then Wait 5 seconds Run program 'RF1' (Else Path) Else - No Actions - (To add one, press 'Action') RF2: If Program 'RF1' is True And X10 'L9/On (3)' is Received Then Wait 5 seconds Run program 'RF2' (Else Path) Else - No Actions - (To add one, press 'Action') The idea is the first L9/On sets RF1 to state 'true' for 5 seconds, if we get to the end of the wait the 'run else' on itself sets it status to false. RF2 is 'armed' by RF1 being true and the 2nd L9/On similarly triggers it for 5 seconds after which it resets. My first attempt also had RF2 run the else in RF1 to clear it so only one of them would be 'true'. If I can get this to work other programs will then trigger on the combined states of RF1/RF2 and do real work. My previous (hand built) Insteon system allowed state machines to be built and I used it for timers: turn on a fan with 1 click and it runs for 20 minutes, click again ON within a few seconds and it stays on until you turn it off, click yet again on and it goes back to 20 minutes.
-
In the programs tree under Program Details I'm editing and moving programs that were migrated from the previous scheduler into the top level folder. This is a really minor nit, but you have to click on the program in the tree once to select it, then again (and hold) to grab it so it can be moved. If you just click and drag on it it selects it but doesn't move it.
-
Some time fields in programs show all '...'s in the edit window:
-
I'm trying to build a cascade of 3 programs that cycle based on X10 events (ie: I want to have the state of 3 programs reflect if an X10 ADDR+ON was received once, twice, or 3 times in a short time span). I don't know if this will work at all yet (I don't really understand how to set a program status explicitly), but I ran into this minor issue: If I run the program below and it is triggered it gets stuck in 'Running Then' (apparently forever) unless another L9/On is received at this point it stops. After this each L9/On causes it to very briefly flash to Running Then and back to Idle again (it does not wait 5 seconds). If I put a 'Notify All' after the Wait 5 seconds it runs exactly 5 seconds every time I get an L9/On. If X10 'L9/On (3)' is Received Then Wait 5 seconds Else - No Actions - (To add one, press 'Action')
-
Will we be able to use X10 cmds picked up to trigger things? If so this means I can use my Harmony remote to control scenes again (high WAF item) and use my occupancy sensors to shut off various lights. One (minor) possible feature for trigger->timers that I had and used a lot in my prior system: if you allow different trigger actions to run depending on the state of a timer you can set it up so a single press of 'on' turns on a (say) fan which will then go off after 20 minutes, but a 2nd press while the timer is running will cancel the timer (or schedule an even longer one) leaving it on. This is also great for utility areas (garage, basement storage) where usually you want the lights off after a short delay, but sometimes you're working in there and want to stick them on. In my old system I would make a nearby light (or the load) blink to indicate 'stuck on' state was entered. Oh, this also allows you to simply reset the timer when 'on' is pressed to 'extend' the on time if that's all you want.
-
I've been trying to access the iSY remotely and find that a simple TCP tunnel isn't good enough. I can make the connection on my port (16565) via an ssh tunnel (-L16565:isy:16565) by going to http://127.0.0.1:16565/0/p. It even loads up the applet, but the applet then appears to try to establish another inbound connection using the ISY's own notion of its address (ie: not knowing about NATting taking place). After a timeout I get 'XML parse error http://192.172.252.77:16565/0/d.xml' (that IP is my 'inside the NAT' address that the ISY knows itself at). I've also tried a socks5 and squid proxy, but the java stack (in this case on a Mac) seems to ignore the firefox proxy settings and try to connect directly. Is there any way to tell the applet to use a proxy or tunnel rather than asking the ISY over the initial connection what its own address is? Even if I couldn open up a single outside IP and forward the port through, how would the ISY know that I was using NAT and answer with the correct outside address only when contacted from the outside? I have a workaround (I run a browser local to the ISY via a VNC session, which tunnels easily), mostly this is a query if there is something configurable in this area rather than a feature request (I suspect not too many people would care about tunnelling through SSH or another similar VPN). Thanks, -Eric Boring network details that motivate this: I can't easily expose a single port on a single IP through my firewall -- my network is multi-homed (I have 2 internet connections) yet I do not participate in BGP or have my own ASN so I end up with different external IP address ranges on each ISP's connection. My firewall (iptables based) is set up variably NAT and dynamically route traffic to either connection based on per-connection rules (what machine is the source of the connection, the TCP/UDP port its originating from, the load status of the ISP interfaces). The upshot of all this unfortunate complexity is machines on the inside believe there is 1 default router and have only 1 IP address -- except for machines that must accept inbound traffic, these machines must be able to run on two different virtual subnets so the firewall/nat state can figure out which ISP to use when response packets are sent back. I own the class C 192.172.252 and used to advertise it via BGP, when I went to a natted solution I just didn't change my internal nets to use a 10 or 192.168 range.
-
Here's another idea not as severe as reprogramming the link databases: If scene change speed is not a hard requirement (time from pressing the scene button to implementation) then another possibility would be to simply indirect scene control through the ISY in party sensitive areas: - Set up a scene with no controllers - Use triggers to implement a scene when a button is pressed on the ISY (I've tried this after a fashion, the iSY is IMO plenty fast enough to make this work with a good end user experience) - In party mode disable the appropriate triggers To do this: - The trigger facility in the ISY would have to be able to trigger on non-toggle buttons (I believe that's a pending feature for the 'advanced trigger' release) - The trigger facility would have to allow for conditions based on a state of a controller (or other input) Local load control on Switchlincs and 6 button (ie: unable to set non-toggle mode on load button) KPL's would still be an issue.
-
I If you could have an attribute on a scene that means the scene is inactive (treat it as a 'comment') which when set or cleared restored all devices associated with the scene -- then allow setting/clearing that attribute using a trigger or timer -- you could mostly do this. The only missing bit would be local load control. For 8 button KPL's you could set Load/A button into non toggle mode and program it with the 'locked' scenes level, so that would at least take care of the KPL's loads but I can't think of a way to suppress switchlincs other than using an inlinelinc or the like for the actual load. I actually asked SHL's insteon PM about breaking the implicit tie between the load and the paddle on a switchlinc (and button on the KPL's) so the load would just look like an additional responder not associated with any button (almost 2 years ago now). The answer I got back was not encouraging: "why would anyone want to do that?"; I came up with a couple of scenarios where the paddle and the load didn't make sense tied together but he just didn't get it. This party lock down mode is yet another good reason to do this. Its frustrating they hardcoded these weird limitations, I wish they had been willing to 'burn' their first prototype (just the s/w, the h/w isn't bad) and make a production version from the ground up after they learned all they could from the prototype -- but it appears we got the prototype in production.
-
I started trying to do this but couldn't because it won't let me put 2 controllers off the same KPL into the same scene. Thinking about it a bit this is what drove me to use multiple scenes when I tried to make this work over the weekend, I thought it was oh so clever until I ran into the one KPL where I actually do use the triac to run a load. When you make it possible to do a trigger based on a non-toggle button event (or when I write some code to make this happen from my server, something I might do anyway just so I can link my IR system in again) I'll be able to see the scene be invoked and fixup the stray indicators/loads on the KPL's. Its like smarthome never actually tried to use these things before starting to crank them out in bulk. Given the cost delta to get a flash programmable device vs the BOM cost of the whole KPL unit its just amazing that SH didn't make at least the KPL if not the KPL and the SWL field upgradable. Sorry for the mini-rant, this stuff is so good in general its frustrating the last 5% is broken and pretty much unfixable.
-
Aaaaah, that's what the 'copy attributes from scene' is all about. I see now how you must be setting up the link databases in this case (since each controller has to have a seperate responder link in each target you can clearly put differing values in for each). I'll recast this one room in those terms, that's much simpler. The only part that's still wonky about this setup then is when other KPL buttons that are in their own scenes with some of the units are listed as a responder, and the level is 0% for them (and they are in toggle mode) the light doesn't go off when an 'on' is sent to the scene from a non-toggle button (and thus the KPL buttons are now out of sync wrt the loads, to turn them back on from one of these kpl's you have to press the button twice). I was going to use a trigger to send an 'off' but as I mentioned in a previous posting (and you said would be fixed in the next release) you can't make a trigger based on an event, just on a level edge. This will also allow me to set the other buttons on the same KPL sending the non-toggle scene command to the appropriate states.
-
Great! Is there a mailing list for the ISY that I should be watching or are you just being impressed its on the TODO list for the next release?
-
I noticed in the case of a responder only (LampLinc, RelayLinc) the right pane shows 'Managed By' and a list of scenes the unit is a member of. For SwitchLinc, KPL, RL, etc it shows 'Manages' but not 'Managed By'... is there some way to show everything that manages a given responder even if its also a controller?
-
Ah, I thought I read elsewhere that dragging multiple units was a future feature. That will make it a lot easier. I like the realtime updates too when I'm making tweaks but when setting up a lot of units ("All Lights") its really painful doing it one at a time with enough of a delay you get bored and forget where you are for each one. I'd actually just be happy with an XML import, then I could export the world -- hack on it using my existing scene tools and re-import and set up the system. Then use the ISY UI for moves and changes ongoing. Perhaps I'm being to anal about getting all the right KPL buttons into the right groups or something, but with my mid size (60 units) installation I've spent about 20 hours so far doing setup, most of it spent watching the progress bar spin as I add units to groups.
-
I have a scene with 15 responders (many of them are buttons on KPL's) and I'd like to duplicate it 3 more times then edit the copies with different levels (basically the same set of lights, different actual scene). I spent a couple of hours doing this in one area manually (with 3 scenes, ie: dinner, movie, dark), but is a very tedious manual affair. Is there any way to copy/duplicate a scene (leaving any non-responders out of the copy, or perhaps just making any controllers responders unless this would violate the rule one cannot have a controller and responder on the same KPL)? The other thing that would make this less tedious would be something like an 'offline' mode so I could do all the work (manually) but w/o waiting 20-30 sec between each click for the network to catch up -- then once all the editing was done I could just restore the appropriate devices and let that run for 10 minutes w/o me watching it...
-
Is there any option to give a device a new insteon ID? I know I'd have to reinit each device it was linked with as well as the device itself, but that beats setting up the scenes memberships again.
-
In 2.3 I've set up a KPL button as non-toggle (sending 'on') and I can add this to a scene and have it work as expected. I created a trigger saying when this button is on turn on another device and it never fires. The KPL button is in no scenes. I also tried saying 'when button is off'.
-
Is it possible to extract/download a jar file for the client and just run it as a normal app (java -jar ...) rather than having to fire up a browser?