A novel context-aware RPL algorithm based on a triangle module operator