Wyświetlenie danych z innego urządzenia

0

Witam,
mam stację pogody (HP-1001), która łączy się z siecią wifi i wysyła dane z niej do internetu, ale nie wszystkie.
Chce napisać program w java, który by te dane pobierał i wyświetlał na ekranie komputera.
Problem tkwi w tym, że nie wiem jak te dane pobrać z tej stacji. Istnieje program na PC (EasyWeather), ale sam chce to zrobić "lepiej".
W tym programie, do połączenia wpisuje się adres IP komputera. Po sprawdzeniu portów połączenia z siecią to stacja ma stały port. IP stacji jest zmienne ze względu na połączenie z routerem (w stacji nie ma możliwości ustawienia stałego IP).

0

No a ja CI odpowiem, że skoro stacja ma MAC adres a router masz Ty, to możesz najprawdopodobniej przypisać MAC adres stacji pogodowej do jakiegoś stałego IP z puli adresów dostępnych w DHCP. To taka uwaga w zakresie tematu.

0

Na początek spróbował bym Wireshark'iem podsłuchać w jaki sposób odbywa się komunikacja.

0

Tak jak wspomniano już tutaj. Wireshark pozwoli Ci na zobaczenie co właściwie wysyła stacja i w jakim czasie. Niekoniecznie musi to być protokół jawny, łatwy do odczytania.

0

Przejrzałem pakiety, ale z tego co zauważyłem to część (ta najbardziej interesująca) jest bodajże zakodowana. Te mniej interesujące dane typu nazwa stacji, dane logowania do serwera itp. są nie zakodowane.

0

Tylko Ty widziałeś te dane więc nie oczekuj od forumowiczów zbyt wiele ;)

0

Wireshark daje mi takie np. dane HEX i ASCII:
0000 74 2f 68 db 46 93 48 02 2a ec 07 5c 08 00 45 00 t/h.F.H.....E.
0010 01 40 1e 0d 40 00 80 06 57 fe c0 a8 01 2d c0 a8 .@[email protected]..
0020 01 2f fd ea 19 64 a7 f2 ae 8b 90 64 cb f6 50 18 ./...d.....d..P.
0030 00 40 f7 58 00 00 48 50 32 30 30 30 00 00 57 52 [email protected]
0040 49 54 45 00 00 00 4d 41 58 4d 49 4e 00 00 00 00 ITE...MAXMIN....
0050 00 00 00 00 00 00 18 01 00 00 5c 00 00 00 10 0a ...............
0060 04 06 0c 10 08 1e 12 27 10 08 1b 07 26 10 09 0e .......'....&...
0070 10 13 10 09 0c 12 07 10 0a 0f 0a 2a 10 08 1a 10 ...........
....
0080 18 10 0c 05 05 07 10 08 1b 13 0f 10 0c 05 0c 06 ................
0090 10 08 1a 10 06 10 08 1a 0e 38 10 08 1a 10 18 10 .........8......
00a0 0c 05 05 07 10 0c 07 09 27 10 0b 06 03 39 10 0c ........'....9..
00b0 07 09 27 10 0b 06 03 39 10 0c 01 13 25 10 0a 14 ..'....9....%...
00c0 16 27 10 0a 08 0a 17 10 0a 1d 0f 15 10 0c 07 0c .'..............
00d0 27 10 0c 02 04 10 10 0c 02 04 10 10 09 05 10 16 '...............
00e0 10 09 06 0e 24 4d 27 63 0a 00 9a 99 d5 41 cd cc ....$M'c.....A..
00f0 8c 41 9a 99 13 42 33 33 0b c1 33 33 a7 41 00 00 .A...B33..33.A..
0100 50 c1 9a 99 13 42 33 33 0b c1 9a 39 7b 44 cd ac P....B33...9{D..
0110 71 44 cd 6c 81 44 cd 4c 79 44 00 00 10 41 cd cc qD.l.D.LyD...A..
0120 a0 41 66 66 f2 41 33 33 88 42 33 33 0b 43 cd cc .Aff.A33.B33.C..
0130 12 42 cd cc 50 42 d3 4d b5 42 04 23 1a 00 00 00 .B..PB.M.B.#....
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ..............

No i co teraz z tym trzeba zrobić?
Albo co innego mam wrzucić?

0

OK. Napisałem maila do supportu producenta jak się połączyć i uzyskać dane z tejże stacji. Dostałem odpowiedź na temat całego protokołu połączenia i uzyskania danych, ale jest to program napisany w C/C++. Da ktoś to "przetłumaczyć" na java?

 UINT StartServerThread(LPVOID lp)
{
	LogicHandle * mHandle = (LogicHandle *)lp;
	//////////////////////////////////////////////////////////////////////////
	while (1)
	{
		if(mLogicHandle.mExitFlag)
			break;
		
		boolean flag = mHandle->mSockManage.OpenServer();
		if (false == flag)
		{
			TCHAR("Disconnect to server");
			
		}
		else
		{
			
			break;
		}
		
	}
	//////////////////////////////////////////////////////////////////////////
	
	mHandle->MacToDev();
	
	mHandle->mSockManage.OpenBroadcast();//////////////////////////////////////////////////////////////////////////
	AfxBeginThread(StartBroadcastThread, lp);	
	AfxBeginThread(StartLoopThread, lp);
	AfxBeginThread(recvBroadThread, lp);
	
	

	return 0;
}

Jest to tylko część kodu...

1 użytkowników online, w tym zalogowanych: 0, gości: 1