diff --git a/lib/Insteon/BaseInsteon.pm b/lib/Insteon/BaseInsteon.pm index 948ef3288..aede7a7e6 100644 --- a/lib/Insteon/BaseInsteon.pm +++ b/lib/Insteon/BaseInsteon.pm @@ -1464,6 +1464,8 @@ sub manual_awake { my ($self, $p_time) = @_; $$self{manual_awake} = time + $p_time if $p_time; + #Start sending any messages that are queued for the device + $self->_process_command_stack(); return $$self{manual_awake}; } @@ -3367,7 +3369,7 @@ sub _process_sync_queue { my $link_req_ptr = shift(@{$$self{sync_queue}}); my %link_req = %$link_req_ptr; my $link_member = $link_req{member}; - if ($link_member->is_deaf){ + if ($link_member->is_deaf && !$link_member->is_awake){ $link_member->_build_deaf_sync_queue($link_req_ptr); $self->_process_sync_queue(); } diff --git a/lib/Insteon_PLM.pm b/lib/Insteon_PLM.pm index 806594ef9..588dec1c9 100644 --- a/lib/Insteon_PLM.pm +++ b/lib/Insteon_PLM.pm @@ -704,6 +704,12 @@ sub _parse_data { $self->_clear_timeout('command'); $self->clear_active_message(); } + elsif ($record_type eq $prefix{plm_set_config}) { + # The PLM ACK is all we get in response to + # setting the config parameters + $self->clear_active_message(); + } + $data =~ s/^$ackcmd//; } elsif ($is_nack) {