From: <krk...@gm...> - 2013-05-29 00:45:34
|
<div dir="ltr">Richard,<div><br></div><div>Sorry, I don't completely follow what you are describing and I don't use X10.</div><div><br></div><div>I gather some version of dimming for X10 devices isn't working. A few quick questions:</div> <div>- Does X10 support dimming to a specified level e.g. 20%? Does that currently work?</div><div>- Does X10 support relative dimming such as -20%? Does that currently work?</div><div><br></div><div> It looks like the dimming you are describing requires a "start_dim" command to be sent and then a "stop_dim" command to be sent at some point thereafter? I think this is something the code could support, at least something like dim for X seconds. The user could then elect the number of seconds to dim which should overcome the various issues with different brands.</div> <div><br></div><div>Kevin</div> </div> |
From: Richard K. <n1...@ho...> - 2013-05-31 21:30:26
|
Hi Kevin, Thanks for the reply. For some reason, lately, I haven't been getting updates from the mis...@li... list. Although I do get it through hotmail.com so maybe that's the issue. As for the X10 Dim / Insteon problem... Below is some sample basic code from http://www.madreporite.com/insteon/x10.html to show how to dim an X10 light from an Insteon controller. Also below that is some "RRK" log prints that I instrumented in mh/lib/Insteon/Message.pm to show that when a Dim cmd (such as -70) is ignored (or incorrectly sent) by the routine. Perhaps changes could be made in the Insteon code to do something like the basic code suggests for X10 Dim commands? ================= mh/lib/Insteon/Message.pm: sub generate_commands my $cmd=$p_state; &::print_log("RRK PLM:cmd=$cmd"); $cmd=~ s/\:.*$//; $cmd=lc($cmd); my $msg; my $id=lc($p_setby->{id_by_state}{$cmd}); &::print_log("RRK PLM:id=$id"); my $hc = lc(substr($p_setby->{x10_id},1,1)); my $uc = lc(substr($p_setby->{x10_id},2,1)); &::print_log("RRK PLM:p_setby=$p_setby->{x10_id}"); ======= here I sent a Dim by -70 cmd to an X10 lamp module ======== 05/26/13 10:21:23 RRK PLM:cmd=-70 05/26/13 10:21:23 RRK PLM:id= 05/26/13 10:21:23 RRK PLM:p_setby=XB2 05/26/13 10:21:23 [Insteon_PLM] x10 sending code: B2 as insteon msg RRK1: 0000 05/26/13 10:21:23 [Insteon_PLM] DEBUG2: Sending 0000 incurred delay of 0.00 seconds; starting hop-count: ? 05/26/13 10:21:23 [Insteon_PLM] DEBUG3: Sending PLM raw data: 02630000 05/26/13 10:21:23 [Insteon_PLM] DEBUG4: PLM Command: (0263) x10_send X10 Message: 0000 X10 House Code: (0) M X10 Unit Code: (0) D 05/26/13 10:21:23 [Insteon_PLM] DEBUG3: Received PLM raw data: 0263000006 05/26/13 10:21:23 [Insteon_PLM] DEBUG4: PLM Command: (0263) x10_send X10 Message: 0000 X10 House Code: (0) M X10 Unit Code: (0) D PLM Response: (06) ACK 05/26/13 10:21:23 [Insteon_PLM] DEBUG3: Received PLM acknowledge: 0000 ========== basic Dim X10 cmd code ========= To send an X10 Bright command:Dim data(3) as Byte Dim Level as integer ' the amount to brighten (on a scale 0-100) Dim i as Short data(0) = 2 ' start first message: send X10 address only data(1) = 99 ' 0x063 = Send X10 data(2) = PLM_X10_House(house + 1) + PLM_X10_Device(device) ' X10 address (house + device) data(3) = 0 ' flag = this is the address SerialPLM.Write(data, 0, 4) For i = 1 To Int(Level * 0.22) Wait(500) ' brighten repeatedly to get to Level. 22 levels = 100% ' just send house + command (faster to not repeat address) data(0) = 2 ' start second message: send X10 house + command data(1) = 99 ' 0x063 = Send X10 data(2) = PLM_X10_House(house + 1) + 5 ' X10 address (house + command) data(3) = 128 ' flag = this is house + address SerialPLM.Write(data, 0, 4) Next i To send an X10 Dim command:Dim data(3) as Byte Dim Level as integer ' the amount to brighten (on a scale 0-100) Dim i as Short data(0) = 2 ' start first message: send X10 address only data(1) = 99 ' 0x063 = Send X10 data(2) = PLM_X10_House(house + 1) + PLM_X10_Device(device) ' X10 address (house + device) data(3) = 0 ' flag = this is the address SerialPLM.Write(data, 0, 4) For i = 1 To Int(Level * 0.22) Wait(500) ' brighten repeatedly to get to Level. 22 levels = 100% ' just send house + command (faster to not repeat address) data(0) = 2 ' start second message: send X10 house + command data(1) = 99 ' 0x063 = Send X10 data(2) = PLM_X10_House(house + 1) + 4 ' X10 address (house + command) data(3) = 128 ' flag = this is house + address SerialPLM.Write(data, 0, 4) Next i Date: Wed, 29 May 2013 00:37:44 +0000 From: krk...@gm... To: n1...@ho... CC: mis...@li... Subject: Re: [mh] Clues on how to dim an X10 light using Insteon Controller Richard, Sorry, I don't completely follow what you are describing and I don't use X10. I gather some version of dimming for X10 devices isn't working. A few quick questions: - Does X10 support dimming to a specified level e.g. 20%? Does that currently work?- Does X10 support relative dimming such as -20%? Does that currently work? It looks like the dimming you are describing requires a "start_dim" command to be sent and then a "stop_dim" command to be sent at some point thereafter? I think this is something the code could support, at least something like dim for X seconds. The user could then elect the number of seconds to dim which should overcome the various issues with different brands. Kevin ------------------------------------------------------------------------------ Introducing AppDynamics Lite, a free troubleshooting tool for Java/.NET Get 100% visibility into your production application - at no cost. Code-level diagnostics for performance bottlenecks with ________________________________________________________ To unsubscribe from this list, go to: http://sourceforge.net/mail/?group_id=1365 |
From: Kevin R. K. <ke...@kr...> - 2013-05-31 22:59:51
|
So if I read all of that correctly: - there are 22 "dim/bright" levels - only "dim" and "bright" commands exist. - so to dim 20% roughly 4.4 dim messages must be sent. - according to http://www.madreporite.com/insteon/x10.html the delay between messages is only to avoid overloading the PLM. The new insteon code already has PLM "overload" prevention, although I will need to check to see if it applies to X10 messages as well. So theoretically, to dim a light by about 20%, we would just need to put 4 dim commands into the queue and walk away. The rest of the code should handle the sending. Seems easy enough, although since X10 messages are not ACK'd, if one is missed, the light will dim to a different level. I will try and look at this more this weekend, but that seems really easy to implement. |
From: Richard K. <n1...@ho...> - 2013-05-31 23:21:39
|
Yes, I believe you are correct. I appreciate your help. -Rick Date: Fri, 31 May 2013 15:59:41 -0700 From: ke...@kr... To: n1...@ho... CC: mis...@li... Subject: Re: [mh] Clues on how to dim an X10 light using Insteon Controller So if I read all of that correctly:- there are 22 "dim/bright" levels- only "dim" and "bright" commands exist. - so to dim 20% roughly 4.4 dim messages must be sent. - according to http://www.madreporite.com/insteon/x10.html the delay between messages is only to avoid overloading the PLM. The new insteon code already has PLM "overload" prevention, although I will need to check to see if it applies to X10 messages as well. So theoretically, to dim a light by about 20%, we would just need to put 4 dim commands into the queue and walk away. The rest of the code should handle the sending. Seems easy enough, although since X10 messages are not ACK'd, if one is missed, the light will dim to a different level. I will try and look at this more this weekend, but that seems really easy to implement. ------------------------------------------------------------------------------ Get 100% visibility into Java/.NET code with AppDynamics Lite It's a free troubleshooting tool designed for production Get down to code-level detail for bottlenecks, with ________________________________________________________ To unsubscribe from this list, go to: http://sourceforge.net/mail/?group_id=1365 |