Project

General

Profile

Bug #863

All-link messages are parsed incorrectly

Added by Luke Murphey over 9 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Target version:
Start date:
10/17/2014
Due date:
% Done:

100%


Description

All-link messages might be getting parsed incorrectly because the to address is being parsed as an actual address (is is the group number) and the from address is actually the destination.

See:

SA ALL-Link Commands are sent twice, first in an SA ALL-Link Broadcast message to all of the
members of an ALL-Link Group, followed by separate SC ALL-Link Cleanup messages sent to each
individual member of the ALL-Link Group.

In the SA ALL-Link Broadcast message, the ALL-Link Group Number appears in the To Address field,
and the Command 2 field contains 0x00 (with one exception for certain legacy devices as noted in the table
below for the Light Start Manual Change Command 0x17).

In SC ALL-Link Cleanup messages, the ALL-Link Group Number moves to the Command 2 field,
because the To Address field contains the INSTEON Address of the individual ALL-Link Group member.


Related issues

Related to Insteon - Feature #852: Resolve command types Closed 10/12/2014

History

#1 Updated by Luke Murphey over 9 years ago

  • Description updated (diff)

#2 Updated by Luke Murphey over 9 years ago

Here is the all link send I am seeing:

02 61 03 11 00 06
MisterHouse parses the body as:
  1. group
  2. command1
  3. command2

This seems to make sense except that the "ALL-Link Recall" has a different group number.

#3 Updated by Luke Murphey over 9 years ago

I need to have it pass through the command field if one is provided by the data-source.

#4 Updated by Luke Murphey over 9 years ago

The big question is how do I interpret the command in the all-link recall field?

#5 Updated by Luke Murphey over 9 years ago

  • Status changed from New to In Progress
  • % Done changed from 0 to 50

This is mostly working now. The only thing I need to do is to determine if the commands associated with the all-link groups can be determined.

#6 Updated by Luke Murphey over 9 years ago

Some of the 'All-Link Cleanup Report' messages seem incorrect.

#7 Updated by Luke Murphey over 9 years ago

0x58 messages contain an ack/nak byte that needs to be parsed.

#9 Updated by Luke Murphey over 9 years ago

Here is a description of how all-link works: https://github.com/hollie/misterhouse/issues/75

#10 Updated by Luke Murphey over 9 years ago

The answer might to be to annotate all_link_group states. Then when an all-link recall state happens, it can be annotated as that action.

From what I can tell, "ALL-Link Recall" indicate that the group was acknowledged, "ALL-Link Send" is a requested to initiate the group.

#11 Updated by Luke Murphey over 9 years ago

In the case of a SynchroLinc, I see an "ALL-Link Recall" message when I turn it on and then an "ALL-Link Alias 1 Low" when I turn it off.

#12 Updated by Luke Murphey over 9 years ago

The group numbers seemed to be getting parsed correctly now. I think the only to make this work is to allow users to annotate the commands.

#13 Updated by Luke Murphey over 9 years ago

Apparently, the all_link_group numbers are shared. 19.8e.06 sent an all_link_group=1 command but so does 30.46.f6.

The question is: how do I distinguish between the all-link groups? I would have thought they were unique.

#14 Updated by Luke Murphey over 9 years ago

The to address for the "All-Link Cleanup Report" are things like 11.01.01. I wonder what the other attributes are.

#15 Updated by Luke Murphey over 9 years ago

According to the docs regarding the command2 field in a 0x50 modem command:

This byte contains the ALL-Link Group Number of the ALL-Link Broadcast when either bit 6 of the <Message Flags> byte is set (ALL Link Cleanup) or bits 6 and 5 of the <Message Flags> byte are set (ALL-Link Cleanup ACK).

Note that bit 4 is the extended flag. If I understand correctly, bit 5 is ACK and 6 is all-link.

Basically, if all-link is set, then parse command2 as the group number.

#16 Updated by Luke Murphey over 9 years ago

The docs for 0x51 also say that the low byte of the to address contains the group number:

The low byte of the INSTEON ID of the message addressee.
If the message is an ALL-Link Broadcast (bits 7 and 6 of the
<Message Flags> byte are set) then this will indicate the ALL-Link
Group Number.

It also indicates that the middle and high bytes of the to address should be zero in these cases (all_link=1, broadcast=1). I'm not seeing this.

#17 Updated by Luke Murphey over 9 years ago

  • Status changed from In Progress to Closed
  • % Done changed from 50 to 100

Also available in: Atom PDF