Nghiên cứu mô hình giám sát thảm họa và môi trường bờ biển việt nam

43 494 0
Nghiên cứu mô hình giám sát thảm họa và môi trường bờ biển việt nam

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Mở đầu Việt Nam là quốc gia nằm dọc bờ biển với chiều dài 11.409,1km, trong đó chiều dài bờ biển tiếp giáp biển Đông là 3.444km. Với mục tiêu đưa Việt Nam trở thành một Quốc gia mạnh về biển theo Nghị quyết về Chiến lược biển Việt Nam đến năm 2020 được thông qua tại Hội nghị lần thứ tư Ban Chấp hành Trung ương Đảng khóa X, việc bảo vệ và giám sát môi trường biển và bờ biển Việt Nam đóng một vai trò quan trọng trong Chiến lược biển Việt Nam. Trên thế giới việc nghiên cứu và phát triển mô hình và hệ thống giám sát thảm họa và môi trường Biển thu hút sự quan tâm không chỉ của cộng đồng các nhà nghiên cứu về biển và hàng hải mà còn dành được sự quan tâm của các nhà nghiên cứu thuộc các lĩnh vực khác, trong đó có các nhà khoa học máy tính, các chuyên gia công nghệ thông tin. Là một đơn vị nghiên cứu và đào tạo hàng đầu trong lĩnh vực biển và hàng hải Việt Nam, Đại học Hàng Hải Việt Nam cũng đã và đang tập trung vào việc nghiên cứu và phát triển các mô hình và hệ thống giám sát thảm họa và môi trường biển. Là những nhà khoa học hoạt động trong lĩnh vực Công nghệ Thông tin, chúng tôi muốn đề xuất một mô hình hạ tầng về công nghệ thông tin như là một phần của mô hình của hệ thống giám sát bờ biển Việt Nam. Chúng tôi đề xuất ra một mô hình giám sát thảm họa và môi trường dọc bờ biển Việt Nam, trong đó mục tiêu đưa ra giải pháp về hạ tầng công nghệ thông tin như là một phần của hệ thống giám sát thảm họa và môi trường bờ biển. Trong đề tài này, chúng tôi sẽ giới thiệu một ứng dụng mã nguồn mở có tên là DataTurbine. Báo cáo kỹ thuật bao gồm ba chương: • Chương 1 Giới thiệu tóm lược mô hình giám sát tích hợp và kiến trúc giám sát thời gian thực. Giới thiệu thách thức của việc giám sát dữ liệu từ xa. • Chương 2 Cài đặt và cấu hình DataTurbine: Chương này sẽ trình bày về các yêu cầu để cài đặt DataTurbine lên hệ thống, quá trình cài đặt và triển khai các thành phần của DataTurbine lên hệ thống. • Chương 3 Lập trình cho DataTurbine: Chương này tập trung trình bày về việc lập trình cho DataTurbine sử dụng SAPI (Simple Application Programming Interface). Trong chương sẽ có các ví dụ đơn giản để minh họa về các bước đưa dữ liệu vào server và lấy dữ liệu từ server. Chương này cũng giới thiệu một số kết quả thử nghiệm với lập trình cho DataTurbine. Mặc dù chúng tôi đã rất nỗ lực để hoàn thành đề tài với chất lượng tốt nhất có thể nhưng trong quá trình thực hiện đề tài vẫn khó tránh khỏi những sai sót. Vì vậy, chúng tôi rất mong nhận được những ý kiến đóng góp của các đồng nghiệp để đề tài hoàn thiện hơn. Chương 1 Mô hình tích hợp giám sát môi trường bờ biển 1.1 Hệ thống giám sát tích hợp Giám sát tích hợp như là đo lường một cách có hệ thống, nhất quán, và đồng bộ các biến vật lý, hóa học, sinh học, và kinh tế xã hội của các bộ phận khác nhau của hệ thống sinh thái theo thời gian và tại các vị trí xác định. Giám sát tích hợp khi được lập kế hoạch và thực thi một cách hiệu quả, sẽ mang lại hai lợi ích chính. Lợi ích đầu tiên là có được sự hiểu biết tốt hơn về các quan hệ nhân quả bên trong các hệ thống sinh thái và phản ứng của các hệ thống này đối với các hành động quản lý. Lợi ích chính thứ hai là sử dụng hiệu quả các tài nguyên hiện có để giám sát tình trạng của MNES. Hình 1.1chỉ ra các bước của một mô hình giám sát tích hợp. 1.1.1 Các chi tiết về hạ tầng Mục tiêu bao gồm: 1. Cung cấp một dịch vụ có giá trị cho vùng bằng cách cung cấp cho ngư nhân và địa phương dịch vụ để đánh giá chất lượng nước trong vùng vịnh 2. Hiểu mô hình môi trường gây lên lụt lội và các sự kiện khác 3. Cung cấp một hệ thống cảnh báo sớm cho ngư dân và địa phương

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM KHOA CÔNG NGHỆ THÔNG TIN THUYẾT MINH ĐỀ TÀI NCKH CẤP TRƯỜNG ĐỀ TÀI Nghiên cứu mô hình giám sát thảm họa môi trường bờ biển Việt Nam Chủ nhiệm đề tài: TS Trần Đăng Hoan Hải Phòng, tháng 15 /05/2015 Mục lục Mở đầu i Mô hình tích hợp giám sát môi trường bờ biển 1.1 Hệ thống giám sát tích hợp 1.1.1 Các chi tiết hạ tầng 1.1.2 Quản trị liệu 1.1.3 Phân tích liệu 1.1.4 Báo cáo truyền tin 1.2 Thách thức việc thu thập liệu từ xa 1.3 Các kiểu giám sát 1.3.1 Các báo cáo Một số ứng dụng điển hình 1.4.1 Nghiên cứu Acid hóa đại dương 1.4.2 Mạng cảm biến nhằm ứng phó với tẩy trắng san hô đảo 1.4 Racha Yai, Thái Lan 1.5 Quản trị liệu hàng hải thách thức 1.6 Kiến trúc hệ thống 1.6.1 Kien truc de xuat 1.6.2 Phần cứng Giới thiệu DataTurbine 2.1 2.2 10 DataTurbine 10 2.1.1 Kiến trúc DataTurbine 11 2.1.2 Server 11 2.1.3 Source 12 2.1.4 Sink 13 Những điểm mạnh hạn chế DataTurbine 14 MỤC LỤC Lập trình với DataTurbine 16 3.1 Tổng quan 16 3.2 Lập trình sử dụng SAPI 17 3.3 3.2.1 Các kiểu đối tượng SAPI 17 3.2.2 ChannelMap 18 Kiểu liệu kênh 19 Các phương thức ChannelMap 19 3.2.3 Client 22 3.2.4 Source Client 24 3.2.5 Sink Client 27 Một số kết thử nghiệm 30 3.3.1 Thử nghiệm liệu sensor Intel 30 3.3.2 Thử nghiệm liệu video qua chương trình video chat 32 Kết luận 35 Danh sách hình vẽ 1.1 Các bước có liên quan đến khai phá liệu, lưu trữ truy nhập, tiếp nhận liệu thô kết thúc việc công bố liệu sản phẩm, vòng đời liệu tiếp nhận từ chương trình giám sát 1.2 Một kiến trúc hệ thống cho hệ thống giám sát môi trường 2.1 Kiến trúc DataTurbine 3.1 Tải liệu vào RBNB server 11 25 3.2 Tải liệu ảnh vào RBNB server 26 3.3 Một cách khác để tải liệu ảnh vào RBNB server 26 3.4 Sink lấy liệu đưa vào RBNB server 28 3.5 Sink lấy liệu ảnh đưa vào RBNB server 29 3.6 Kênh nhiệt độ 30 3.7 Kênh ánh sáng 30 3.8 Kênh độ ẩm 31 3.9 Kênh điện 31 Danh sách bảng 3.1 Các kiểu liệu SAPI 19 3.2 Các kiểu MIME 20 Mở đầu Việt Nam quốc gia nằm dọc bờ biển với chiều dài 11.409,1km, chiều dài bờ biển tiếp giáp biển Đông 3.444km Với mục tiêu đưa Việt Nam trở thành Quốc gia mạnh biển theo Nghị Chiến lược biển Việt Nam đến năm 2020 thông qua Hội nghị lần thứ tư Ban Chấp hành Trung ương Đảng khóa X, việc bảo vệ giám sát môi trường biển bờ biển Việt Nam đóng vai trò quan trọng Chiến lược biển Việt Nam Trên giới việc nghiên cứu phát triển mô hình hệ thống giám sát thảm họa môi trường Biển thu hút quan tâm không cộng đồng nhà nghiên cứu biển hàng hải mà dành quan tâm nhà nghiên cứu thuộc lĩnh vực khác, có nhà khoa học máy tính, chuyên gia công nghệ thông tin Là đơn vị nghiên cứu đào tạo hàng đầu lĩnh vực biển hàng hải Việt Nam, Đại học Hàng Hải Việt Nam tập trung vào việc nghiên cứu phát triển mô hình hệ thống giám sát thảm họa môi trường biển Là nhà khoa học hoạt động lĩnh vực Công nghệ Thông tin, muốn đề xuất mô hình hạ tầng công nghệ thông tin phần mô hình hệ thống giám sát bờ biển Việt Nam Chúng đề xuất mô hình giám sát thảm họa môi trường dọc bờ biển Việt Nam, mục tiêu đưa giải pháp hạ tầng công nghệ thông tin phần hệ thống giám sát thảm họa môi trường bờ biển Trong đề tài này, giới thiệu ứng dụng mã nguồn mở có tên DataTurbine Báo cáo kỹ thuật bao gồm ba chương: • Chương - Giới thiệu tóm lược mô hình giám sát tích hợp kiến trúc giám sát thời gian thực Giới thiệu thách thức việc giám sát liệu từ xa • Chương - Cài đặt cấu hình DataTurbine: Chương trình bày yêu cầu để cài đặt DataTurbine lên hệ thống, trình cài đặt triển khai thành phần DataTurbine lên hệ thống • Chương - Lập trình cho DataTurbine: Chương tập trung trình bày việc i MỞ ĐẦU ii lập trình cho DataTurbine sử dụng SAPI (Simple Application Programming Interface) Trong chương có ví dụ đơn giản để minh họa bước đưa liệu vào server lấy liệu từ server Chương giới thiệu số kết thử nghiệm với lập trình cho DataTurbine Mặc dù nỗ lực để hoàn thành đề tài với chất lượng tốt trình thực đề tài khó tránh khỏi sai sót Vì vậy, mong nhận ý kiến đóng góp đồng nghiệp để đề tài hoàn thiện Chương Mô hình tích hợp giám sát môi trường bờ biển 1.1 Hệ thống giám sát tích hợp Giám sát tích hợp đo lường cách có hệ thống, quán, đồng biến vật lý, hóa học, sinh học, kinh tế xã hội phận khác hệ thống sinh thái theo thời gian vị trí xác định Giám sát tích hợp lập kế hoạch thực thi cách hiệu quả, mang lại hai lợi ích Lợi ích có hiểu biết tốt quan hệ nhân bên hệ thống sinh thái phản ứng hệ thống hành động quản lý Lợi ích thứ hai sử dụng hiệu tài nguyên có để giám sát tình trạng MNES Hình 1.1chỉ bước mô hình giám sát tích hợp 1.1.1 Các chi tiết hạ tầng Mục tiêu bao gồm: Cung cấp dịch vụ có giá trị cho vùng cách cung cấp cho ngư nhân địa phương dịch vụ để đánh giá chất lượng nước vùng vịnh Hiểu mô hình môi trường gây lên lụt lội kiện khác Cung cấp hệ thống cảnh báo sớm cho ngư dân địa phương CHƯƠNG MÔ HÌNH TÍCH HỢP GIÁM SÁT MÔI TRƯỜNG BỜ BIỂN Hình 1.1: Các bước có liên quan đến khai phá liệu, lưu trữ truy nhập, tiếp nhận liệu thô kết thúc việc công bố liệu sản phẩm, vòng đời liệu tiếp nhận từ chương trình giám sát CHƯƠNG LẬP TRÌNH VỚI DATATURBINE 21 lần cho toàn ChannleMap, trường hợp tất liệu tất kênh dùng chung nhãn thời gian Hoặc bạn gọi phương thức PutTime trước lời gọi phương thức PutData, điều đưa nhãn thời gian tới điểm liệu kênh public void PutTimeAuto(String timeMode) Phương thức thiết lập chế độ sinh nhãn thời gian tự động mà sử dụng vào lời gọi phương thức Flush() Trong timeMode nhận giá trị sau: next: Nhãn thời gian tăng lần phương thức Source.Flush gọi timeofday: Nhãn thời gian thiết lập với thời gian hệ thống phía client lần phương thức PutData gọi server: Đây chế độ mặc đinh Nhãn thời gian thiết lập với thời gian hệ thống phía server thời điểm frame đặt vào đệm vòng Chế độ không nên sử dụng với kiểu nhãn thời gian khác frame đơn • Đưa liệu vào ChannelMap Các phương thức sau đưa liệu vào ChannelMap, chúng thường sử dụng Source PlugIn Chú ý việc đưa liệu vào ChannelMap không gửi liệu tới RBNB server, xây dựng ChannelMap cục Sau xây dựng xong ChannelMap, gửi từ client tới RBNB server thông qua phương thức Source.Flush public void PutData(int channelIndex, byte[] rawData, int typeID) throws SAPIException Phương thức thêm liệu (rawData) vào channel map dạng mảng byte tới kênh xác định số kênh (channelIndex) Tham số thứ (typeID) số nguyên biểu diễn kiểu liệu, kiểu liệu SAPI public void PutDataAsXXX(int channelIndex, XXX[] data) throws SAPIException Các phương thức PutDataAsXXX rõ kiểu liệu nguyên thủy mảng liệu cung cấp, XXX tương ứng với kiểu liệu SAPI Ví dụ phương thức PutDataAsFloat32 cho phép bạn gửi trực tiếp mảng liệu kiểu float mà không cần chuyển đổi thành mảng byte PutDataAsFloat64 PutDataAsFloat32 PutDataAsInt64 PutDataAsInt32 PutDataAsInt16 PutDataAsInt8 PutDataAsString PutDataAsByte (phiên ản toàn PutData) • Lấy nhãn thời gian từ ChannelMap public double[] GetTimes(int index) Phương thức trả mảng giá trị thời gian kênh có số kênh index Sẽ có điểm thời gian điểm liệu Một tham chiếu tới mảng double lưu trữ channel map trả về, không nên chỉnh sửa người dùng cuối Mảng trả tính toán phương thức gọi lần số kênh mảng CHƯƠNG LẬP TRÌNH VỚI DATATURBINE 22 trả vào lời gọi Nếu liệu khả dụng, phương thức trả null • Lấy liệu từ ChannelMap Các phương thức sau truy cập liệu ChannelMap, chúng thường sử dụng Sink PlugIn Chú ý việc lấy liệu từ ChannelMap không lấy từ RBNB server mà từ ChannelMap cục Trước đó, ChannelMap gửi từ RBNB server tới client thông qua phương thức Sink.Fetch public byte[] GetData(int index) Phương thức trả liệu thô kênh có số index dạng mảng byte public XXX[] GetDataAsXXX(int index) Các phương thức GetDataAsXXX rõ kiểu liệu nguyên thủy mảng liệu trả về, XXX tương ứng với kiểu liệu SAPI Ví dụ phương thức GetDataAsFloat32 trả mảng liệu kiểu float mà không cần chuyển đổi từ mảng byte Nếu liệu lấy không phù hợp với kiểu gây ngoại lệ Để kiểm tra kiểu bạn sử dụng phương thức ChannelType • Lấy thông tin kênh Các phương thức sau cung cấp thông tin kênh public final int GetType(int index) Phương thức trả kiểu liệu kênh có số kênh index Chú ý phương thức không trả TYPE_USER public int TypeID(String type) public String TypeName(int typeID) Hai phương thức thực chuyển đổi chuỗi mô tả kiểu liệu sang giá trị dạng số ngược lại Có số phương thức cho phép bạn kiểm tra lấy tên kênh đối tượng ChannelMap Các phương thức là: public final String[] GetChannelList() Phương thức trả tên tất kênh chứa đối tượng ChannelMap Nếu đối tượng ChannelMap không chứa kênh mảng rỗng trả • public final int GetIndex(String channelName):Phương thức cung cấp cách thức để lấy số kênh có tên channelName 3.2.3 Client Client thao tác với ChannelMap để gửi lấy liệu từ RBNB server Lớp Client lớp sở tất tất client: Source, Sink, PlugIn Lớp sở Client đóng gói chức chung cho tất client Client có phương thức để mở đóng kết nối ứng dụng client RBNB server Để mở kết nối ta cần quan tâm đến tham số sau: • serverAddress: Địa server muốn kết nối tới CHƯƠNG LẬP TRÌNH VỚI DATATURBINE 23 • clientName: Tên sử dụng để xác định client server • userName: Tên sử dụng để đăng nhập vào server Giá trị truyền dạng văn túy không thực sử dụng để giới hạn truy cập Đây tham số tùy chọn • password: Được kết hợp với userName Giá trị truyền dạng văn túy Nếu thiết lập có client có password giống quyền truy cập liệu Dưới phương thức sử dụng để kết nối tới server public final void OpenRBNBConnection() throws SAPIException Mở kết nối tới server, sử dụng tham số mặc định: • serverAddress = “localhost:3333” • clientName = “MyClient” • userName = “” • password = “” public final void OpenRBNBConnection(String serverAddress, String clientName) throws SAPIException: Phương thức mở kết nối tới server, sử dụng tham số mặc định: • userName = “” • password = “” public final void OpenRBNBConnection(String serverAddress, String clientName, String userName, String password) throws SAPIException: Mở kết nối tới server mà không sử dụng tham số mặc định Các phương thức kết nối tới server public final void CloseRBNBConnection() Phương thức đóng kết nối với server giải phóng tài nguyên liên quan Vùng nhớ cache server bị xóa vùng lưu trữ đĩa cứng giữ nguyên lúc truy cập liệu server Nếu bạn có Source bạn muốn đóng kết nối cho phép truy cập liệu, sử dụng phương thức Source.Detach() Lấy thông tin server Hai phương thức trả tên RBNB server cục mà client kết nối tới tên client Hai phương thức sinh ngoại lệ IllegalStateException client không kết nối tới server CHƯƠNG LẬP TRÌNH VỚI DATATURBINE 24 public final String GetServerName() public final String GetClientName() Các thuộc tính đệm vòng (Ring Buffer) Các client thiết lập kích thước đệm vòng RBNB server mà gắn với liệu chúng Thông thường, điều áp dụng cho Source client Các tham số cacheSize archiveSize xác định dung lượng RAM dung lượng ổ cứng đệm vòng (trong frame) Mỗi lời gọi phương thức Flush Source tạo nên frame public void SetRingBuffer(int cache, String mode, int archive) Tham số mode nhận giá trị sau: none: Không có vùng lưu trữ sử dụng (mặc định) load: Tải vùng lưu trữ phù hợp với ứng dụng client create: Tạo vùng lưu trữ xóa cũ (nếu tồn tại) append: Thêm liệu tới vùng lưu trữ tồn tạo vùng lưu trữ chưa tồn 3.2.4 Source Client RBNB source gửi liệu tới RBNB server Để gửi liệu tới server, source cần thực bước sau: • Bước 1: Xây dựng ChannelMap (tạo đối tượng ChanneMap thêm kênh tới ChannelMap đó) • Bước 2: Đặt kiểu MIME cho kênh (sử dụng phương thức PutMIME) • Bước 3: Đặt nhãn thời gian (sử dụng phương thức PutTime) • Bước 4: Đưa liệu vào ChannelMap (sử dụng phương thức PutData) • Bước 5: Đưa liệu tới RBNB server (sử dụng phương thức Flush) Các bước từ bước tới bước trình bày phần ChanneMap Bước biết phần Đưa liệu tới RBNB server public int Flush(ChannelMap ch, boolean doSynch) throws SAPIException Phương thức gửi kênh ChannelMap ch tới server Nếu doSynch true source giao tiếp với server để xác minh xem việc đưa liệu tới server có thành công không Dữ liệu nhãn thời gian ChannelMap bị xóa hết sau chúng gửi đi, tên giữ lại Bởi liệu thêm vào ChannelMap sau lời gọi phương thức Flush trước gửi Phương thức trả số kênh gửi tới server public int Flush(ChannelMap ch) throws SAPIException Phương thức gửi liệu tới server chế độ không đồng Nó tương ứng với việc gọi phương thức Flush(ChannelMap, boolean) với giá trị false cho tham số doSynch Đóng kết nối cho phép truy cập liệu public final void CHƯƠNG LẬP TRÌNH VỚI DATATURBINE 25 http://pastebin.com/ 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 import com rbnb sapi *; public class SimpleSource { public static void main ( String [] args ) throws SAPIException { Source src = new Source () ; src OpenRBNBConnection ( " localhost " , " MySource " ) ; ChannelMap cmap = new ChannelMap () ; cmap Add ( " MyChannel " ) ; cmap PutMime (0 , " text / plain " ) ; cmap PutTimeAuto ( " timeofday " ) ; cmap PutDataAsString (0 , " Hello World ! " ) ; src Flush ( cmap ) ; src Detach () ; } } Hình 3.1: Tải liệu vào RBNB server Detach() Lớp Client cung cấp phương thức Client.CloseRBNBConnection() để đóng kết nối với server Tuy nhiên, sau gọi phương thức sink client tiếp tục truy cập liệu ghi trước Lớp Source cung cấp thêm phương thức Detach cho phép đóng kết nối với server giữ lại xử lý phía server đệm vòng Bởi sink client tiếp tục truy cập liệu ghi trước Hình 3.1 đoạn mã mở kết nối tới RBNB server gửi chuỗi “Hello World” tới Hình 3.2 đoạn mã mở kết nối tới RBNB server đưa hình ảnh có định dạng JPEG tới Cần ý file ảnh có kích thước nhỏ ví dụ bạn dùng phương thức Files.readAllBytes() để đọc tất byte từ file đưa vào kênh sử dụng phương thức PutDataAsByteArray Nhưng file ảnh có kích thước lớn bạn nên dùng cách sau: CHƯƠNG LẬP TRÌNH VỚI DATATURBINE http://pastebin.com/ 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 import java nio file *; import java io *; public class ImageSource { public static void main ( String [] args ) throws SAPIException , IOException { Source src = new Source () ; src OpenRBNBConnection ( " localhost " , " ImageSource " ) ; ChannelMap cmap = new ChannelMap () ; cmap Add ( " MyChannel " ) ; cmap PutMime (0 , " image / jpeg " ) ; cmap PutTimeAuto ( " timeofday " ) ; Path path = Paths get ( " D :/ Images " , " MyImage jpg " ) ; cmap PutDataAsByteArray (0 , Files readAllBytes ( path ) ) ; src Flush ( cmap ) ; src Detach () ; } } Hình 3.2: Tải liệu ảnh vào RBNB server http://pastebin.com/ BufferedImage img = ImageIO read ( new File ( " D :/ Images / MyImage jpg " ) ) ; Byt eArr ayOu tputS trea m os = new B y t e A r r a y O u t p u t S t r e a m () ; ImageIO write ( img , " jpg " , os ) ; cmap PutDataAsByteArray (0 , os toByteArray () ) ; Hình 3.3: Một cách khác để tải liệu ảnh vào RBNB server 26 CHƯƠNG LẬP TRÌNH VỚI DATATURBINE 3.2.5 27 Sink Client RBNB sink lấy liệu từ RBNB server Để lấy liệu từ server, sink thực bước sau: • Bước 1: Tạo đối tượng ChannelMap thêm kênh mà sink muốn lấy liệu vào ChannelMap • Bước 2: Thiết lập chế độ lấy liệu cho sink • Bước 3: Tạo ChannelMap mới, sau lấy liệu từ RBNB server đưa vào ChannelMap (sử dụng phương thức Fetch) • Bước 4: Lấy liệu thời gian từ ChannelMap vừa tạo bước (sử dụng phương thức GetData) • Bước 5: Lặp lại bước muốn với chế độ Subscribe Monitor bước với chế độ Request Như đề cập phần trước sink lấy liệu từ server theo chế độ: Request, Subscribe Monitor Request:public final void Request(ChannelMap cm, double startTime, double duration, String timeReference) throws SAPIException Chế độ yêu cầu lát thời gian liệu, startTime chạy khoảng duration, đơn vị giây Tham số timeReference xác định tham chiếu thời gian cho startTime, đó: Subscribe: Đây chế độ hiệu Nó khởi tạo luồng liệu từ server tới client, sau frame liệu truyền từ server mà không cần đợi xác nhận client Nếu client không theo kịp, liệu truyền lùi dần phía sau điểm bắt đầu liệu (cũ nhất) đệm vòng, lúc luồng ngừng lại Monitor: Đây biến thể chế độ Subscribe Điểm khác biệt Monitor so với Subscribe luồng không ngừng lại client không theo kịp liệu bị Trong chế độ này, server cố gắng gửi liệu Ví dụ 3: Viết sink lấy liệu đưa vào RBNB server ví dụ Ví dụ 4: Viết sink lấy liệu đưa vào RBNB server ví dụ CHƯƠNG LẬP TRÌNH VỚI DATATURBINE 28 http://pastebin.com/ 10 11 12 13 14 15 16 17 18 19 20 import com rbnb sapi *; public class SimpleSink { public static void main ( String [] args ) throws SAPIException { Sink sink = new Sink () ; sink OpenRBNBConnection ( " localhost " , " MySink " ) ; ChannelMap reqmap = new ChannelMap () ; reqmap Add ( " MySource / MyChannel " ) ; sink Request ( reqmap , 0.0 , 0.0 , " newest " ) ; ChannelMap getmap = sink Fetch (1000) ; System out println ( getmap GetName (0) + " : " + getmap GetDataAsString (0) [0]) ; 21 22 23 24 25 sink CloseRBNBConnection () ; } } Hình 3.4: Sink lấy liệu đưa vào RBNB server CHƯƠNG LẬP TRÌNH VỚI DATATURBINE http://pastebin.com/ 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import com rbnb sapi *; import java io *; public class ImageSink { public static void main ( String [] args ) throws SAPIException , IOException { Sink sink = new Sink () ; sink OpenRBNBConnection ( " localhost " , " ImageSink " ) ; ChannelMap reqmap = new ChannelMap () ; reqmap Add ( " ImageSource / MyChannel " ) ; sink Request ( reqmap , 0.0 , 0.0 , " newest " ) ; ChannelMap getmap = sink Fetch (1000) ; byte [][] b = getmap GetDa ta As By te Ar y (0) ; FileOutputStream fos = new FileOutputStream ( " D :/ ImageSinkTest jpg " ) ; fos write ( b [0]) ; sink CloseRBNBConnection () ; } } Hình 3.5: Sink lấy liệu ảnh đưa vào RBNB server 29 CHƯƠNG LẬP TRÌNH VỚI DATATURBINE 30 Hình 3.6: Kênh nhiệt độ Hình 3.7: Kênh ánh sáng 3.3 3.3.1 Một số kết thử nghiệm Thử nghiệm liệu sensor Intel Tập liệu chứa liệu thu thập từ 54 cảm biến triển khai phòng thí nghiệm Intel Berkeley Research từ ngày 28 tháng đến ngày tháng năm 2004 Cấu trúc file sau: Cấu trúc file sau: Trong đó, moteid nhận giá trị từ 1-54 tương ứng với 54 cảm biến; epoch:int thể lần đo thứ epcho cảm biến moteid; temperature nhiệt độ tính theo đơn vị C; humidity độ ẩm nhận giá trị từ 0-100 % ; light ánh sáng tính theo đơn vị Lux; voltage điện áp nhận giá trị từ 2-3 V Chúng đọc CHƯƠNG LẬP TRÌNH VỚI DATATURBINE Hình 3.8: Kênh độ ẩm Hình 3.9: Kênh điện 31 CHƯƠNG LẬP TRÌNH VỚI DATATURBINE 32 file đưa liệu đo từ cảm biến có moteid vào DataTurbine Server kênh tương ứng với trường thông tin temperature (nhiệt độ), humidity (độ ẩm), light (ánh sáng) voltage (điện áp) 3.3.2 Thử nghiệm liệu video qua chương trình video chat Như đề cập phần giới thiệu, khả mạnh mẽ mà DataTurbine cung cấp tính thời gian thực Sink truy cập sử dụng liệu vừa đưa tới server, bất chấp trình truyền liệu diễn Ý tưởng xây dựng hệ thống tận dụng tính thời gian thực DataTurbine Bây giờ, suy nghĩ việc cần phải làm xây dựng phần mềm video chat Dữ liệu cần trao đổi truyền tải mạng video Hệ thống client cần có khả giao tiếp với webcam microphone để thu liệu thích hợp gửi tới cho phía bên kia; đồng thời cần có khả nhận liệu từ phía bên gửi lại phát video nhận Giả sử có client chat với nhau, để tiện cho việc mô tả sau này, gọi chúng A B Theo cách tiếp cận thông thường, cần có thêm server C đóng vai trò cung cấp dịch vụ cho A B Trước chat với nhau, A B phải kết nối tới server C Khi A muốn chat với B, yêu cầu địa IP B từ server C thực kết nối tới B Nếu kết nối thành công A B chat với Tuy nhiên, công việc trở nên đơn giản sử dụng thêm RBNB server Khi A gửi tới server C yêu cầu chat với B, server C gửi yêu cầu tới cho B, B chấp nhận yêu cầu, server C ghi nhận A B trạng thái chat Lúc này, A tạo source kết nối tới RBNB server Tiếp theo đó, A gửi liệu tới RBNB server Quá trình diễn mô tả phần 2.1 Server C cần gửi cho B vị trí cụ thể liệu mà A gửi tới RBNB server theo cú pháp tên_source tên_kênh Bây lúc, tận dụng sức mạnh thời gian thực DataTurbine Ngay liệu gửi từ A đưa tới RBNB server B biết vị trí liệu, B tạo sink kết nối tới RBNB server lấy liệu Vào lúc này, A tiếp tục gửi liệu tới RBNB server Tương tự B thực hoạt động giống A Quá trình gửi nhận liệu kết thúc A B ngừng chat ngắt kết nối với server CHƯƠNG LẬP TRÌNH VỚI DATATURBINE 33 http://pastebin.com/ 10 11 12 13 14 15 16 package chatwebcamserver ; import java net *; import java util Iterator ; import java io *; public class QuanLyKetNoi extends Thread { private Socket socket ; private BufferedReader br ; private PrintWriter pw ; private AmThanhThread amThanhThread ; public QuanLyKetNoi ( Socket socket ) throws IOException { this socket = socket ; br = new BufferedReader ( new In putStr eamRea der ( socket getInputStream () ) ) ; pw = new PrintWriter ( new BufferedWriter ( new Ou utS tr ea mW ri te r ( socket getOutputStream () ) ) ) ; 17 18 19 20 21 22 23 24 25 26 27 28 29 this start () ; } public void run () { try { while ( true ) { boolean thoat = false ; try { String msg = br readLine () ; String header = msg substring (0 , 7) ; if ( header equals ( " connect " ) ) { g ui D uL ie u To i Ta tC a C l i e n t ( " insert " + msg substring (7 , msg length () ) ) ; FrmServer addClient ( msg substring (7 , msg indexOf ( " - " ) ) , msg substring ( msg indexOf ( " - " ) +5 , msg length () ) ) ; 30 FrmServer sockets put ( msg substring (7 , msg indexOf ( " - " ) ) , 31 32 33 34 guiDuLieuLanDau ( FrmServer clients size () -1) ; socket ) ; } else if ( header equals ( " disconn " ) ) { g ui D uL ie u To i Ta tC a C l i e n t ( " delete " + msg substring (10 , msg length () ) ) ; 35 36 37 38 39 40 41 42 43 FrmServer removeClient ( msg substring (10 , msg length () ) ) ; FrmServer sockets remove ( msg substring (10 , msg length () ) ) ; thoat = true ; } else { String h = msg substring (0 , 4) ; String a , b ; String receiver = msg substring ( msg indexOf ( " @@@ " ) +3 , msg lastIndexOf ( " - " ) ) ; 44 45 46 47 switch ( h ) { case " acce " : a = msg substring (6 , msg indexOf ( " - " ) ) ; b = msg substring ( msg indexOf ( " @@@ " ) + , msg lastIndexOf ( " -" ) ) ; 48 g ui D uL ie u To i T a t C a C l i e n t ( " busy " + msg substring (6 , msg indexOf ( " @@@ " ) ) + " ### " + msg substring ( msg indexOf ( " @@@ " ) + , msg length () ) ) ; 49 50 FrmServer dan h S a c h C l i e n t D a n g B a n add ( a ) ; FrmServer dan h S a c h C l i e n t D a n g B a n add ( b ) ; CHƯƠNG LẬP TRÌNH VỚI DATATURBINE Đoạn mã quản lý kết nối client server 34 Chương Kết luận Trong báo cáo khoa học đề xuất mô hình giám sát tích hợp nói chung cho khu vực bờ biển Trong giám sát liệu có vai trò quan trọng mô hình giám sát tích hợp Một thách thức việc thu thập liệu từ xa làm để có liệu từ thử nghiệm có độ xác, chất lượng cao, mà không bỏ sót hay mát thông tin DataTurbine giải pháp cho phép thu thập liệu thời gian thực DataTurbine sử dụng động liệu dòng thời gian thực, phần mềm chi phép người sử dụng tạo dòng liệu trực tiếp từ sensors, phòng thí nghiệm, điện thoại di động Công cụ khả chuyển dễ dàng khả mở để đáp ứng dung lượng liệu tạo dự án phát triển DataTurbine cung cấp giao diện lập trình ứng dụng tốt-giao thức cần mở rộng phần mềm với ứng dụng tùy chọn người sử dụng tùy biến chương trình cho nhu cầu Một đặc trưng riêng biệt DataTurbine khả cho phép ứng dụng dừng tua lại dòng liệu trực tiếp Người sử dụng làm việc với liệu đến từ phòng lab từ thực địa mà không cản trở trình thu thập liệu từ tiến trình khác Dữ liệu đến từ nguồn có chung khuôn dạng thống Người sử dụng đặc tả metadata, liệu vào DataTurbine, tất liệu có khuôn dạng chuyển tiếp khoảng thời gian liên tục Với đặc trưng trên, DataTurbine lựa chọn giải pháp cho thu thập quản trị liệu thời gian thực có từ thực địa mô hình giám sát môi trường bờ biển tích hợp 35

Ngày đăng: 14/09/2016, 12:06

Từ khóa liên quan

Mục lục

  • M u

  • Mô hình tích hp giám sát môi trng b bin

    • H thng giám sát tích hp

      • Các chi tit v ha tng

      • Quan tri d liu

      • Phân tích d liu

      • Báo cáo và truyn tin

      • Thách thc cua vic thu thp d liu t xa

      • Các kiu giám sát

        • Các báo cáo

        • Mt s ng dung in hình

          • Nghiên cu Acid hóa ai dng

          • Mang cam bin nhm ng phó vi ty trng san hô ao Racha Yai, Thái Lan

          • Quan tri d liu hàng hai và nhng thách thc

          • Kin trúc h thng

            • Kien truc de xuat

            • Phn cng

            • Gii thiu v DataTurbine

              • DataTurbine

                • Kin trúc cua DataTurbine

                • Server

                • Source

                • Sink

                • Nhng im manh và han ch cua DataTurbine

                • Lp trình vi DataTurbine

                  • Tng quan

                  • Lp trình s dung SAPI

                    • Các kiu i tng trong SAPI

                    • ChannelMap

                      • Kiu d liu cua kênh

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan