CH regional: regional cluster head node |
Repeater: relay node |
N RCH_member: regional cluster member node |
N normal: normal node before joining the cluster |
N regional: regional node |
N sleep: sleep node |
|
Initialize: |
(1) generate (random_delay Time) /by normal nodes |
|
Main Processing: /clustering process by normal nodes |
(1) if (nodes weight value > 0) |
(2) decrease weight value by 1 point |
(3) end if |
(4) Calculate available time slot period by weight value |
(5) delay Time <- generate (random_delay Time) |
(6) wait for delay Time or until receiving {any advertisement |
message} |
(7) if (delay Time_Expired) |
(8) if (nodeID == Nnormal) |
become Nregional |
broadcast (the Advertisement Message {nodeID, the 1st |
sensing value, position, altitude}) |
(9) else |
cancel the delay Time |
(10) end if |
(11) else |
(12) if (receive the Advertisement Message {the 1st sensing value, |
altitude} == the 1st sensing value, altitude) |
become Nsleep |
else |
wait for delay Time or until receiving {any advertisement |
Message} |
(13) end if |
(14) end if |
(15) if (nodeID == Nregional) |
increase weight value by 1 point |
delay Time <- generate (random_delay Time) |
(16) wait for delay Time or until receiving {any advertisement |
message} |
(17) if (delay Time_Expired) |
(18) if (nodeID == Nregional) |
become CHregional |
increase weight value by 2 points |
broadcast (the Advertisement Message {NodeID, position}) |
(19) else |
cancel the delay time |
(20) end if |
(21) else |
(22) if (receive the Advertisement Message) |
cancel the delay time |
become NRCH_member |
else |
wait for delay Time or until receiving {any |
advertisement Message} |
(23) end if |
(24) end if |
(25) if (nodeID == NRCH_member) |
(26) if (# of neighbor CHregional) > 2 && |
(27) # of neighbor CHregional < 6) |
(28) become repeater |
(29) broadcast (the Advertisement Message {NodeID, position}) |
(30) end if |
(31) end if |
|
CHregional |
(1) broadcast (the Advertisement Message {nodeID, the 1st sensing |
value, position}) |
(2) accept (join Message) |
(3) aggregate sensing data |
(4) transmit_data_to_Sink (sensing value, nodeID, position) |
|
NRCH_member |
(1) join to cluster (CHnodeID, nodeID, position) |
|
Repeater |
(1) join to cluster (CHnodeID, nodeID, position) |
(2) relay data |