Accessing Dive Info on the UEMIS SDA

Please register or login

Welcome to ScubaBoard, the world's largest scuba diving community. Registration is not required to read the forums, but we encourage you to join. Joining has its benefits and enables you to participate in the discussions.

Benefits of registering include

  • Ability to post and comment on topics and discussions.
  • A Free photo gallery to share your dive photos with the world.
  • You can make this box go away

Joining is quick and easy. Log in or Register now!

Yesterday TnT was looking for some xml and binaries to do the correspondance... so it was not exactly - to my understanding - about fine tuning at this point.
I already had figured out the basic structure of the binary data and implemented a basic parser (supporting only the time and depth data) for the libdivecomputer project at the end of 2010. But because I didn't had discovered the xml files yet, the reverse engineering was a lot more time consuming then it is now. Combined with the fact that I was very busy with other stuff (including adding support for the atomics cobalt for which we do get support from the manufacturer), I didn't really continued on the uemis support since my initial success. But due to the uemis bankruptcy I picked up where I left.

The current state is that we only have to fill in the details and map each byte to the info in the xml files (which isn't very hard as you already noticed). Is this fine tuning or not, I don't know. Anyway that doesn't really matters. What does matter is that in the end we'll be able to get at the information we want. That's one of the main reasons why I like open source. Open source is all about sharing knowledge and building upon each others work. Many hands make the job easier.

I have uploaded a webpage containing my notes on the libdivecomputer website. I'll try to update it whenever we have more info. If you have additional info, you're more than welcome too share it too.

http://www.divesoftware.org/libdc/uemis.html
 
Finally, the last piece is finished to download dives directly from the Uemis server into your offline logbook without dealing with XML files and IDs manually. First of all I want to thank BB1 and dirkhh for their great help! Without them it would not have been possible to complete this work! Now, the final result:

WebSync5.png

You can access the new sync dialog from the "Web" menu in Diving Log:

WebSync6.png

Click here to download the update zip file and extract it into the Diving Log program folder. Then login with your Uemis username and password and Diving Log will download the XML files automatically and import the dives you want. If you want to use the XML files directly (e.g. to upload them to your own server), you can find them here:

Windows Vista and 7:
C:\ProgramData\Diving Log\Uemis

Windows XP:
C:\Documents and Settings\All Users\Application Data\Diving Log\Uemis

So you can use this tool also to bulk download all files with one mouse click. Please let me know if you experience any problems and if you have any feedback. Hopefully a complete offline sync will be possible in the future, but as long as the Uemis servers are working, you can use this method to transfer your dives to your PC.
 
Well, I think I've documented most of the header of base64 structure. I'll post my findings probably tomorrow night or in the next days. It seems however that we miss the dive.xml part which includes the additional data such as buddies, name of the divespot. Therefore, there's room for development on a piece of software to download those additional data.

My final goal is to be able to generate both dive and divelog files like if they were coming from the UEMIS website. If it's doable, I guess it will easy to import them into divinglog or use them like on another website.

I can currently browse my previous dives from my website: E-Ocean - UEMIS . Not a big piece of work (some very simple php) but handy.
 
Finally, the last piece is finished to download dives directly from the Uemis server into your offline logbook without dealing with XML files and IDs manually. First of all I want to thank BB1 and dirkhh for their great help! Without them it would not have been possible to complete this work! Now, the final result:

You can access the new sync dialog from the "Web" menu in Diving Log:
Once again I have to say how much I appreciate the responsiveness and proactive support that Sven is giving the UEMIS user community. I hope every UEMIS owner has already bought divinglog - it's a very good tool and with what Sven has posted here at least as long as the UEMIS website is up it is trivial for us to liberate (and keep) our dive information.

Hopefully a complete offline sync will be possible in the future, but as long as the Uemis servers are working, you can use this method to transfer your dives to your PC.
I think we are making very good progress towards complete offline sync. Scubacaster, TnT and nicklesshead have really moved this forward. There are a few pieces still being worked, but it shouldn't be much longer till we are able to extract and parse the dive data directly from the SDA.
 
Okay, here's the list of bytes for the header. I am far from done reading it but at least that's a begining . I use the same name than the markers in divelog.xml . I've only done with one dive and it still needs some validation

1 D
2 i
3 v
4 e
5 1
6 0
7 0
8 <dive_number>
9 <dive_number>
10 <computer_id>
11 <computer_id>
12 <computer_id>
13 <computer_id>
14 <computer_type>
15 <computer_type>
16 <computer_settings>
17 <computer_settings>
18 <software_version>
19 <software_version>
20 <water>
21 <length>
22 <volume>
23 <pressure>
24 <temperature>
25 <weight>
26 <time>
27 <date>
28 <experience>
29 <gender>
30 <body_weight>
31 <body_weight>
32 <body_height>
33 <body_height>
34 <time_zone>
35 <summer_time>
36 ? likely to be <date_time>
37 ?
38 ?
39 ?
40 ?
41 ?
42 ?
43 ?
44 <air_pressure>
45 <air_pressure>
46 <temperature>
47 <temperature>
48 ? likely to be <longitude><latitude><altitude>
49 ?
50 ?
51 ?
52 ?
53 ?
55 ?
56 ?
57 ?
58 ?
59 ?
60 ? somewhere here starting <no_fly_time><no_dive_time><desaturation_time>
61 ?
62 ?
63 ?
64 ?
65 ?
66 <allowed_altitude>
67 <allowed_altitude>
68 <cns>
69 <interval_time>
70 <main_level>
71 <flow_dir>
72 ? possibly <flow_dir> as well
73 ?
74 <sender_1>
75 <sender_2>
76 <sender_3>
77 <level>
78 <deco_level>
79 <deco_level>
80 <deco_level>
81 <deco_level>
82 <deep_stop_level>
83 <deep_stop_level>
84 <deep_stop_level>
85 <deep_stop_level>
86 <stop_time>
87 <stop_time>
88 <stop_time>
89 <stop_time>
90 ? possibly <stop_depth_pressure> for the 4 different settings
91 ?
92 ?
93 ?
94 ?
95 ?
96 ?
97 ?
98 ?
99 ?
100 ?
101 ?
102 ?
103 ?
104 ?
105 ?
106 ?
107 ?
108 ?
109 ?
110 <max_dive_time>
111 <max_dive_time>
112 <max_deco_time>
113 <max_deco_time>
114 <gas_warning_time_rgt>
115 <divetime_info>

if some of you can validate, complete... :wink:
 
Just installed the update and it worked perfectly first time, thank you Sven, great work ! :)

AJ


Finally, the last piece is finished to download dives directly from the Uemis server into your offline logbook without dealing with XML files and IDs manually. First of all I want to thank BB1 and dirkhh for their great help! Without them it would not have been possible to complete this work! Now, the final result:

View attachment 98535

You can access the new sync dialog from the "Web" menu in Diving Log:

View attachment 98536

Click here to download the update zip file and extract it into the Diving Log program folder. Then login with your Uemis username and password and Diving Log will download the XML files automatically and import the dives you want. If you want to use the XML files directly (e.g. to upload them to your own server), you can find them here:

Windows Vista and 7:
C:\ProgramData\Diving Log\Uemis

Windows XP:
C:\Documents and Settings\All Users\Application Data\Diving Log\Uemis

So you can use this tool also to bulk download all files with one mouse click. Please let me know if you experience any problems and if you have any feedback. Hopefully a complete offline sync will be possible in the future, but as long as the Uemis servers are working, you can use this method to transfer your dives to your PC.
 
Posts here may not be the ideal way to communicate this...
Blue are things that I can confirm with my dive data
Green are things that I added
Red are things were I find different offset or different data size (# of bytes)

Okay, here's the list of bytes for the header. I am far from done reading it but at least that's a begining . I use the same name than the markers in divelog.xml . I've only done with one dive and it still needs some validation
1 D
2 i
3 v
4 e
5 1 (that's 0x01 - not the ASCII char '1')
6 0 (0x00)
7 0 (0x00)
8 <dive_number>
9 <dive_number>
10 <computer_id>
11 <computer_id>
12 <computer_id>
13 <computer_id>
14 <computer_type>
15 <computer_type>
16 <computer_settings>
17 <computer_settings>
18 <software_version>
19 <software_version>
20 <water>
21 <length>
22 <volume>
23 <pressure>
24 <temperature>
25 <weight>
26 <time>
27 <date>
28 <experience>
29 <gender>
30 <body_weight>
31 <body_weight>
32 <body_height>
33 <body_height>
34 <time_zone>
35 <summer_time>

36 ? likely to be <date_time>
37 ?
38 ?
39 ?
40 ?
41 ?
42 ?
43 ?
44 <air_pressure>
45 <air_pressure>
46 <temperature>
47 <temperature>

48 ? likely to be <longitude><latitude><altitude>
49 ?
50 ?
51 ?
52 ?
53 ?
55 ?
56 ?
57 ?
58 <no_fly_time>
59 <no_fly_time>
60 <no_dive_time>
61 <no_dive_time>
62 <desaturation_time>
63 <desaturation_time>

64 <allowed_altitude>
65 <allowed_altitude>
66 <cns>
67 <interval_time>
68 <interval_time>
69 <main_level>
70 <main_level>
71 <flow_dir>
72 <flow_dir>
73 <sender_1>
74 <sender_2>
75 <sender_3>

77 <level>
78 <deco_level>
79 <deco_level>
80 <deco_level>
81 <deco_level>
82 <deep_stop_level>
83 <deep_stop_level>
84 <deep_stop_level>
85 <deep_stop_level>
86 <stop_time>
87 <stop_time>
88 <stop_time>
89 <stop_time>
90 ? possibly <stop_depth_pressure> for the 4 different settings
91 ?
92 ?
93 ?
94 ?
95 ?
96 ?
97 ?
98 ?
99 ?
100 ?
101 ?
102 ?
103 ?
104 ?
105 ?
106 ?
107 ?
108 ?
109 ?
109 <max_dive_time>
110 <max_dive_time>
111 <max_deco_time>
112 <max_deco_time>
113 <gas_warning_time_rgt>
114 <divetime_info>


if some of you can validate, complete... :wink:
 
Well I guess, we'll need to find a proper plateform to share those info. What about code.google.com ?

In the meantime I am no longer able to sync my dive using the webportal :

START AgentService
Try to open the tunnel...
Setup the SSLContext...
Setup the SSLContext done.
Set up a socket to do tunneling...
Connection failed !
00:28:57
java.net.ConnectException: Connection refused: connect

Not good...
 
2 more users on the facebook page have just confirmed the same thing!

This may just be a temporary glitch like before (fingers crossed!) but if not then........

Go buy Diving Log now and download you dives quickly. The web portal is still open to review your dives and I just downloaded all my wifes dives a few minutes ago.

Downloaded all mine last night - no problems at all.

I really hope this is not UEMIS staff getting cross because we work to decode their unit. If it is and they didn't want that to happen they should have talked to us.

I'll bet they are reading all of this!

With luck the brains trust working on this - Dirkhh, Scubacast

Well I guess, we'll need to find a proper plateform to share those info. What about code.google.com ?

In the meantime I am no longer able to sync my dive using the webportal :

START AgentService
Try to open the tunnel...
Setup the SSLContext...
Setup the SSLContext done.
Set up a socket to do tunneling...
Connection failed !
00:28:57
java.net.ConnectException: Connection refused: connect

Not good...
 

Back
Top Bottom