first commit
This commit is contained in:
commit
220c5585bb
16 changed files with 270 additions and 0 deletions
1
_data/body_21.txt
Normal file
1
_data/body_21.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
A100000000000000132c5386000000000000000000000000c8b1ad8d
|
1
_data/body_22.txt
Normal file
1
_data/body_22.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
A20000000000000000000000000000000000000000000000c9950d3f
|
1
_data/body_24.txt
Normal file
1
_data/body_24.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
A00000000000000001000000000000000000000000000000bec650a1
|
1
_data/body_25.txt
Normal file
1
_data/body_25.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
A00000000000000001000000000000000000000000000000bec650a1
|
1
_data/body_28a.txt
Normal file
1
_data/body_28a.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
A5000000000000000100000000000000000000000000000056e5abd9
|
1
_data/body_28b.txt
Normal file
1
_data/body_28b.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
A5000000000000000100000000000000000000000000000056e5abd9
|
0
_data/body_29.txt
Normal file
0
_data/body_29.txt
Normal file
6
_data/hdr_21.txt
Normal file
6
_data/hdr_21.txt
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:21:10 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 56
|
||||||
|
Content-Type: text/html
|
||||||
|
|
6
_data/hdr_22.txt
Normal file
6
_data/hdr_22.txt
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:21:11 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 56
|
||||||
|
Content-Type: text/html
|
||||||
|
|
6
_data/hdr_24.txt
Normal file
6
_data/hdr_24.txt
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:36:26 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 56
|
||||||
|
Content-Type: text/html
|
||||||
|
|
6
_data/hdr_25.txt
Normal file
6
_data/hdr_25.txt
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:21:10 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 56
|
||||||
|
Content-Type: text/html
|
||||||
|
|
6
_data/hdr_28a.txt
Normal file
6
_data/hdr_28a.txt
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:21:10 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 56
|
||||||
|
Content-Type: text/html
|
||||||
|
|
6
_data/hdr_28b.txt
Normal file
6
_data/hdr_28b.txt
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:21:10 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 56
|
||||||
|
Content-Type: text/html
|
||||||
|
|
6
_data/hdr_29.txt
Normal file
6
_data/hdr_29.txt
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:21:11 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 0
|
||||||
|
Content-Type: text/html
|
||||||
|
|
165
scale_proto.md
Normal file
165
scale_proto.md
Normal file
|
@ -0,0 +1,165 @@
|
||||||
|
# soehnle web connect
|
||||||
|
|
||||||
|
url
|
||||||
|
http://bridge1.soehnle.de/devicedataservice/dataservice?data=25e4e40901a2c100000000000000000000413a41040000000000000000001d9222e6
|
||||||
|
|
||||||
|
## dataservice message types
|
||||||
|
|
||||||
|
- 0x21:
|
||||||
|
- A10000000000000009c4914c0000000000000000000000001d095ec4
|
||||||
|
- 0x22:
|
||||||
|
- A20000000000000000000000000000000000000000000000c9950d3f
|
||||||
|
- 0x24: measurement
|
||||||
|
- 24e4e40901a2c1db020200d49c0138132c560e233c00000000000000000039f052f7
|
||||||
|
- A00000000000000001000000000000000000000000000000bec650a1
|
||||||
|
- 0x25: presence / registration
|
||||||
|
- 25e4e40901a2c100000000000000000000413a41040000000000000000001d9222e6
|
||||||
|
- A00000000000000001000000000000000000000000000000bec650a1
|
||||||
|
- 0x28:
|
||||||
|
- A5000000000000000100000000000000000000000000000056e5abd9
|
||||||
|
|
||||||
|
### measurement (0x24)
|
||||||
|
24 e4e40901a2c1 db020200d49c0138 132c560e 233c 0000 0000 0000000000 39f052f7
|
||||||
|
24 e4e40901a2c1 db020200d49c0138 09c492cb 233c 1303 15f5 0000000000 5848fded
|
||||||
|
MT bridge_id wght watr?
|
||||||
|
|
||||||
|
{
|
||||||
|
msg_type: u8
|
||||||
|
bridge_id: u8[6] (mac)
|
||||||
|
scale_id?: u8[8]
|
||||||
|
?
|
||||||
|
weight: u16 (kg/100)
|
||||||
|
water?: u16
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## req
|
||||||
|
ar/2020:01:12:26 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=25e4e40901a2c100000000000000000000413a41040000000000000000001d9222e6 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:12:37 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=25e4e40901a2c100000000000000000000413a41040000000000000000001d9222e6 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:12:37 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=28e4e40901a2c1000000000000e6ccaab5000020ea00000000000000000078c4249e HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:12:48 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=28e4e40901a2c1000000000000e2707d59000020f600000000000000000042ddf39d HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:12:48 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=21e4e40901a2c100000000000000000000000000000000000000000000006c395ed8 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:13:00 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=21e4e40901a2c100000000000000000000000000000000000000000000006c395ed8 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:13:00 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=22e4e40901a2c1000000000000000000000000000000000000000000000028987bc0 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:13:11 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=22e4e40901a2c1000000000000000000000000000000000000000000000028987bc0 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:13:11 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=29e4e40901a2c10000000000000000000000000000000000000000000000544f40d9 HTTP/1.1" 499 0 "-" "-"
|
||||||
|
|
||||||
|
|
||||||
|
192.168.178.38 - - [12/Mar/2020 01:25:44] "GET /devicedataservice/dataservice?data=25e4e40901a2c100000000000000000000413a41040000000000000000001d9222e6 HTTP/1.0" 200 -
|
||||||
|
192.168.178.38 - - [12/Mar/2020 01:25:55] "GET /devicedataservice/dataservice?data=25e4e40901a2c100000000000000000000413a41040000000000000000001d9222e6 HTTP/1.0" 200 -
|
||||||
|
192.168.178.38 - - [12/Mar/2020 01:25:55] "GET /devicedataservice/dataservice?data=28e4e40901a2c1000000000000fb6c646900000012000000000000000000546ced23 HTTP/1.0" 200 -
|
||||||
|
192.168.178.38 - - [12/Mar/2020 01:26:06] "GET /devicedataservice/dataservice?data=28e4e40901a2c1000000000000f9f6c1d50000001e0000000000000000002390bef9 HTTP/1.0" 200 -
|
||||||
|
192.168.178.38 - - [12/Mar/2020 01:26:06] "GET /devicedataservice/dataservice?data=21e4e40901a2c100000000000000000000000000000000000000000000006c395ed8 HTTP/1.0" 200 -
|
||||||
|
192.168.178.38 - - [12/Mar/2020 01:26:17] "GET /devicedataservice/dataservice?data=21e4e40901a2c100000000000000000000000000000000000000000000006c395ed8 HTTP/1.0" 200 -
|
||||||
|
192.168.178.38 - - [12/Mar/2020 01:26:17] "GET /devicedataservice/dataservice?data=22e4e40901a2c1000000000000000000000000000000000000000000000028987bc0 HTTP/1.0" 200 -
|
||||||
|
192.168.178.38 - - [12/Mar/2020 01:26:28] "GET /devicedataservice/dataservice?data=22e4e40901a2c1000000000000000000000000000000000000000000000028987bc0 HTTP/1.0" 200 -
|
||||||
|
|
||||||
|
|
||||||
|
curl -D hdr_25.txt "http://bridge1.soehnle.de/devicedataservice/dataservice?data=25e4e40901a2c100000000000000000000413a41040000000000000000001d9222e6" > body_25.txt
|
||||||
|
curl -D hdr_28a.txt "http://bridge1.soehnle.de/devicedataservice/dataservice?data=28e4e40901a2c1000000000000e6ccaab5000020ea00000000000000000078c4249e" > body_28a.txt
|
||||||
|
curl -D hdr_28b.txt "http://bridge1.soehnle.de/devicedataservice/dataservice?data=28e4e40901a2c1000000000000e2707d59000020f600000000000000000042ddf39d" > body_28b.txt
|
||||||
|
curl -D hdr_21.txt "http://bridge1.soehnle.de/devicedataservice/dataservice?data=21e4e40901a2c100000000000000000000000000000000000000000000006c395ed8" > body_21.txt
|
||||||
|
curl -D hdr_22.txt "http://bridge1.soehnle.de/devicedataservice/dataservice?data=22e4e40901a2c1000000000000000000000000000000000000000000000028987bc0" > body_22.txt
|
||||||
|
curl -D hdr_29.txt "http://bridge1.soehnle.de/devicedataservice/dataservice?data=29e4e40901a2c10000000000000000000000000000000000000000000000544f40d9" > body_29.txt
|
||||||
|
|
||||||
|
|
||||||
|
## raw
|
||||||
|
|
||||||
|
> GET /devicedataservice/dataservice?data=25e4e40901a2c100000000000000000000413a41040000000000000000001d9222e6 HTTP/1.1
|
||||||
|
> Host: bridge1.soehnle.de
|
||||||
|
> User-Agent: curl/7.64.0
|
||||||
|
> Accept: */*
|
||||||
|
>
|
||||||
|
< HTTP/1.1 200 OK
|
||||||
|
< Date: Thu, 12 Mar 2020 00:02:19 GMT
|
||||||
|
< Server: Apache
|
||||||
|
< Content-Length: 56
|
||||||
|
< Content-Type: text/html
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
21
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:21:10 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 56
|
||||||
|
Content-Type: text/html
|
||||||
|
|
||||||
|
A100000000000000132c5386000000000000000000000000c8b1ad8d
|
||||||
|
|
||||||
|
22
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:21:11 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 56
|
||||||
|
Content-Type: text/html
|
||||||
|
|
||||||
|
A20000000000000000000000000000000000000000000000c9950d3f
|
||||||
|
|
||||||
|
25
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:21:10 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 56
|
||||||
|
Content-Type: text/html
|
||||||
|
|
||||||
|
A00000000000000001000000000000000000000000000000bec650a1
|
||||||
|
|
||||||
|
28a
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:21:10 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 56
|
||||||
|
Content-Type: text/html
|
||||||
|
|
||||||
|
A5000000000000000100000000000000000000000000000056e5abd9
|
||||||
|
|
||||||
|
28b
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:21:10 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 56
|
||||||
|
Content-Type: text/html
|
||||||
|
|
||||||
|
A5000000000000000100000000000000000000000000000056e5abd9
|
||||||
|
|
||||||
|
29
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 12 Mar 2020 00:21:11 GMT
|
||||||
|
Server: Apache
|
||||||
|
Content-Length: 0
|
||||||
|
Content-Type: text/html
|
||||||
|
|
||||||
|
|
||||||
|
## measurements
|
||||||
|
### without bia
|
||||||
|
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:31:46 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=24e4e40901a2c1db020200d49c0138132c560e233c00000000000000000039f052f7 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:31:57 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=24e4e40901a2c1db020200d49c0138132c560e233c00000000000000000039f052f7 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:31:57 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=22e4e40901a2c1000000000000000000000000000000000000000000000028987bc0 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:32:08 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=22e4e40901a2c1000000000000000000000000000000000000000000000028987bc0 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:32:08 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=29e4e40901a2c10000000000000000000000000000000000000000000000544f40d9 HTTP/1.1" 499 0 "-" "-"
|
||||||
|
|
||||||
|
### with bia
|
||||||
|
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:32:41 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=24e4e40901a2c1db020200d49c013809c492cb233c130315f500000000005848fded HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:32:52 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=24e4e40901a2c1db020200d49c013809c492cb233c130315f500000000005848fded HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:32:52 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=22e4e40901a2c1000000000000000000000000000000000000000000000028987bc0 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:33:03 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=22e4e40901a2c1000000000000000000000000000000000000000000000028987bc0 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:01:33:03 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=29e4e40901a2c10000000000000000000000000000000000000000000000544f40d9 HTTP/1.1" 499 0 "-" "-"
|
||||||
|
|
||||||
|
|
||||||
|
### bia stored
|
||||||
|
93.219.157.105 - - [12/Mar/2020:02:09:35 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=24e4e40901a2c1db020200d49c013809c49b04233c12e715ef00000000004f41ae41 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:02:09:46 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=24e4e40901a2c1db020200d49c013809c49b04233c12e715ef00000000004f41ae41 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:02:09:46 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=24e4e40901a2c1db020200d49c013809c49b1d238c12cc15c9000000000025ef6a3e HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:02:09:57 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=24e4e40901a2c1db020200d49c013809c49b1d238c12cc15c9000000000025ef6a3e HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:02:09:57 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=24e4e40901a2c1db020200d49c013809c49b4823501319163f00000000006fbfa447 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:02:10:08 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=24e4e40901a2c1db020200d49c013809c49b4823501319163f00000000006fbfa447 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:02:10:08 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=22e4e40901a2c1000000000000000000000000000000000000000000000028987bc0 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:02:10:19 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=22e4e40901a2c1000000000000000000000000000000000000000000000028987bc0 HTTP/1.1" 200 56 "-" "-"
|
||||||
|
93.219.157.105 - - [12/Mar/2020:02:10:19 +0100] "GET http://scalefix.asaril.de/devicedataservice/dataservice?data=29e4e40901a2c10000000000000000000000000000000000000000000000544f40d9 HTTP/1.1" 499 0 "-" "-"
|
||||||
|
|
||||||
|
|
||||||
|
|
57
scalesrv.py
Normal file
57
scalesrv.py
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
import http.server
|
||||||
|
import socketserver
|
||||||
|
import urllib.parse
|
||||||
|
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
|
PORT=18001
|
||||||
|
|
||||||
|
|
||||||
|
DATA_SRV_PATH = "/devicedataservice/dataservice"
|
||||||
|
#?data=25e4e40901a2c100000000000000000000413a41040000000000000000001d9222e6
|
||||||
|
|
||||||
|
|
||||||
|
RESPONSES = {
|
||||||
|
0x24:"A00000000000000001000000000000000000000000000000bec650a1",
|
||||||
|
0x22:"A20000000000000000000000000000000000000000000000c9950d3f",
|
||||||
|
0x25:"A00000000000000001000000000000000000000000000000bec650a1",
|
||||||
|
0x28:"A5000000000000000100000000000000000000000000000056e5abd9",
|
||||||
|
0x21:"A10000000000000009c4914c0000000000000000000000001d095ec4",
|
||||||
|
0x29:""
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Handler(http.server.SimpleHTTPRequestHandler):
|
||||||
|
|
||||||
|
def do_GET(self):
|
||||||
|
parts = urllib.parse.urlsplit(self.path)
|
||||||
|
|
||||||
|
if parts.path == DATA_SRV_PATH:
|
||||||
|
self.do_dataservice(parts)
|
||||||
|
|
||||||
|
def do_dataservice(self, urlparts):
|
||||||
|
params = urllib.parse.parse_qs(urlparts.query)
|
||||||
|
if 'data' not in params:
|
||||||
|
print ('got message without data: ' + urlparts.query)
|
||||||
|
self.send_error(400,'invalid message')
|
||||||
|
|
||||||
|
data_str = params['data'][0]
|
||||||
|
|
||||||
|
bin_data = bytes.fromhex(data_str)
|
||||||
|
msg_type = bin_data[0]
|
||||||
|
|
||||||
|
if msg_type not in RESPONSES:
|
||||||
|
print ('got unknown message: ' + data_str)
|
||||||
|
self.send_error(400,'unknown message')
|
||||||
|
|
||||||
|
response = RESPONSES[msg_type]
|
||||||
|
|
||||||
|
self.send_response(http.server.HTTPStatus.OK)
|
||||||
|
self.send_header("Content-type", "text/html")
|
||||||
|
self.send_header("Content-Length", len(response))
|
||||||
|
self.end_headers()
|
||||||
|
self.wfile.write(response.encode('utf-8'))
|
||||||
|
|
||||||
|
with socketserver.TCPServer(("",PORT), Handler) as httpd:
|
||||||
|
print('started at port %d'%PORT)
|
||||||
|
httpd.serve_forever()
|
Loading…
Reference in a new issue