commit 220c5585bb064a7f93ed2c651c8a25198f5bb265 Author: Asaril Date: Thu Mar 12 02:30:41 2020 +0100 first commit diff --git a/_data/body_21.txt b/_data/body_21.txt new file mode 100644 index 0000000..b2cc713 --- /dev/null +++ b/_data/body_21.txt @@ -0,0 +1 @@ +A100000000000000132c5386000000000000000000000000c8b1ad8d \ No newline at end of file diff --git a/_data/body_22.txt b/_data/body_22.txt new file mode 100644 index 0000000..c39da9e --- /dev/null +++ b/_data/body_22.txt @@ -0,0 +1 @@ +A20000000000000000000000000000000000000000000000c9950d3f \ No newline at end of file diff --git a/_data/body_24.txt b/_data/body_24.txt new file mode 100644 index 0000000..faafbd6 --- /dev/null +++ b/_data/body_24.txt @@ -0,0 +1 @@ +A00000000000000001000000000000000000000000000000bec650a1 \ No newline at end of file diff --git a/_data/body_25.txt b/_data/body_25.txt new file mode 100644 index 0000000..faafbd6 --- /dev/null +++ b/_data/body_25.txt @@ -0,0 +1 @@ +A00000000000000001000000000000000000000000000000bec650a1 \ No newline at end of file diff --git a/_data/body_28a.txt b/_data/body_28a.txt new file mode 100644 index 0000000..a701ea9 --- /dev/null +++ b/_data/body_28a.txt @@ -0,0 +1 @@ +A5000000000000000100000000000000000000000000000056e5abd9 \ No newline at end of file diff --git a/_data/body_28b.txt b/_data/body_28b.txt new file mode 100644 index 0000000..a701ea9 --- /dev/null +++ b/_data/body_28b.txt @@ -0,0 +1 @@ +A5000000000000000100000000000000000000000000000056e5abd9 \ No newline at end of file diff --git a/_data/body_29.txt b/_data/body_29.txt new file mode 100644 index 0000000..e69de29 diff --git a/_data/hdr_21.txt b/_data/hdr_21.txt new file mode 100644 index 0000000..5b70e6b --- /dev/null +++ b/_data/hdr_21.txt @@ -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 + diff --git a/_data/hdr_22.txt b/_data/hdr_22.txt new file mode 100644 index 0000000..2713306 --- /dev/null +++ b/_data/hdr_22.txt @@ -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 + diff --git a/_data/hdr_24.txt b/_data/hdr_24.txt new file mode 100644 index 0000000..a4b6c42 --- /dev/null +++ b/_data/hdr_24.txt @@ -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 + diff --git a/_data/hdr_25.txt b/_data/hdr_25.txt new file mode 100644 index 0000000..5b70e6b --- /dev/null +++ b/_data/hdr_25.txt @@ -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 + diff --git a/_data/hdr_28a.txt b/_data/hdr_28a.txt new file mode 100644 index 0000000..5b70e6b --- /dev/null +++ b/_data/hdr_28a.txt @@ -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 + diff --git a/_data/hdr_28b.txt b/_data/hdr_28b.txt new file mode 100644 index 0000000..5b70e6b --- /dev/null +++ b/_data/hdr_28b.txt @@ -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 + diff --git a/_data/hdr_29.txt b/_data/hdr_29.txt new file mode 100644 index 0000000..442ee1e --- /dev/null +++ b/_data/hdr_29.txt @@ -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 + diff --git a/scale_proto.md b/scale_proto.md new file mode 100644 index 0000000..6b00110 --- /dev/null +++ b/scale_proto.md @@ -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 "-" "-" + + + diff --git a/scalesrv.py b/scalesrv.py new file mode 100644 index 0000000..4d21034 --- /dev/null +++ b/scalesrv.py @@ -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()