Skip to content

Instantly share code, notes, and snippets.

@jadonk
Last active May 11, 2017 18:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jadonk/f2323348eb7706889f88 to your computer and use it in GitHub Desktop.
Save jadonk/f2323348eb7706889f88 to your computer and use it in GitHub Desktop.
Mimo baby monitor

Some background on the sensor

Data format

This is courtesy of Carson Darling per https://forum.quantifiedself.com/t/tapping-into-mimo-smart-baby-monitor/1758

Byte    Name            Description
=========================================================
00      Turtle ID       3 byte TurtleID
01
02      
--------------------------------------------------------
03      Packet Identifier
04      
---------------------------------------------------------
05      Respiration     5x 16-bit samples, starting
06                      with the oldest, big-endian
07      
08      
09      
10      
11      
12      
13      
14
---------------------------------------------------------
15      Acceleration    One byte per axis, in order of
16                      X, Y, Z, signed
17      
---------------------------------------------------------
18      Temperature     Relative scale
---------------------------------------------------------
19      Battery         0-100%


For example:
aaed18009d0a3b0a3a0a370a350a380300b99558
aaed18 - Turtle ID
      009d - Packet identifier
          0a3b - Respiration #1
              0a3a - Respiration #2
                  0a37 - Respiration #3
                      0a35 - Respiration #4
                          0a38 - Respiration #5
                              03 - X axis
                                00 - Y axis
                                  b9 - Z axis
                                    95 - Relative temperature
                                      58 - Battery
root@beaglebone:/var/lib/cloud9# hcitool lescan
LE Scan ...
9C:20:7B:A2:1A:5F (unknown)
9C:20:7B:A2:1A:5F (unknown)
68:D9:3C:91:EA:80 (unknown)
7C:D1:C3:00:DA:1E (unknown)
68:D9:3C:91:EA:80 (unknown)
00:07:80:77:C4:5A (unknown)
00:07:80:77:C4:5A
7C:D1:C3:00:DA:1E (unknown)
C1:87:44:21:74:CD (unknown)
C1:87:44:21:74:CD fA7
^Croot@beaglebone:/var/lib/cloud9# python /usr/local/lib/python2.7/dist-packages/bluepy/btle.py 00:07:80:77:C4:5A
Connecting to: 00:07:80:77:C4:5A, address type: public
Service <uuid=d96a513d-a6d8-4f89-9895-ca131a0935cb handleStart=1 handleEnd=65535> :
Characteristic <c3ae33e1-e40c-4137-a040-adbab921d894>, supports NOTIFY READ
-> '\xaa\xed\x18\x01\x01\x00\x00\x9d\x00R\x86Y'
root@beaglebone:/var/lib/cloud9# python readturtle.py
aaed1800ab00000000000000000000d8e2ca9258
aaed1800a600000000000000000000d7f9ca9558
aaed1800a1000000000000000000001d380a9558
aaed18009d00000000000000000090fd0dbc9558
aaed18009d008f009300a0008d0092e2debb9358
aaed18009d083500ab00a700b000b80df63d9658
aaed18009d00c900d50372009500950bc4069558
aaed18009d00980095009f00a800b106c1019658
aaed18009d00b400ad00ae00aa00ac09c1fa9558
aaed18009d00af00b200a0009a009b07c6199558
aaed18009d0099009b009b0099009108f0ca9558
aaed18009d008d00890094009b00dff7fac29458
aaed18009d0137033d0a330a450a48fe01bc9558
aaed18009d0a4b0a4c0a4f0a4f0a50fb03c09558
aaed18009d0a4f0a4f0a520a4f0a4dff00bd9458
aaed18009d0a4b0a4b0a4a0a490a49ff01be9558
aaed18009d0a470a480a450a460a45fe00bd9558
aaed18009d0a430a430a450a420a43ff01bc9558
aaed18009d0a3e0a3e0a410a400a40fe00be9658
aaed18009d0a3d0a3e0a3a0a3a0a3bfe00bd9358
aaed18009d0a3b0a3a0a370a350a380300b99558
aaed18009d0a370a350a360a360a33ff00bc9558
aaed18009d0a340a330a340a310a31fd00bd9558
aaed18009d0a300a2e0a300a2f0a2efe01bd9558
aaed18009d0a2b0a2a0a290a290a28fffdc19658
aaed18009d0a280a280a270a270a27ff01bd9658
aaed18009d0a270a250a240a250a22fe01bd9758
aaed18009d0a230a230a230a230a23fd01bd9758
aaed18009d0a230a200a210a1f0a22ff01bd9558
aaed18009d0a200a1e0a1e0a1d0a1d0101bd9558
aaed18009d0a1d0a1e0a1b0a1c0a1bfe01bd9558
aaed18009d0a1a0a1c0a1b0a1b0a1bfd01ba9558
aaed18009d0a1a0a1a0a1a0a190a19ff00bd9558
aaed18009d0a190a190a170a190a19ff00bc9458
aaed18009d0a150a170a150a120a12fe01bd9458
aaed18009d0a130a140a120a130a13fe02bd9458
aaed18009d0a120a130a110a120a10ff00be9558
aaed18009d0a120a100a100a120a10ff00bd9758
aaed18009d0a110a100a130a0f0a0dfb02bd9458
aaed18009d0a0f0a0c0a0d0a0d0a0dfe01be9558
aaed18009d0a0d0a0e0a0a0a0c0a0effffb99558
aaed18009d0a0f0a110a0e0a0e0a0fff00bd9458
aaed18009d0a0e0a0f0a0b0a0b0a0bff01bc9458
aaed18009d0a070a0a0a0b0a090a0afe01be9558
aaed18009d0a080a080a080a060a04fe01be9458
aaed18009d0a040a060a040a070a02fe01bd9458
aaed18009d0a060a060a050a050a04fe02be9558
aaed18009d0a040a050a040a010a04fe00be9558
aaed18009d0a050a030a030a030a04fe01bd9458
aaed18009d0a030a040a040a020a01ff00bd9458
aaed18009d0a010a040a030a010a01fe00bd9558
aaed18009d0a030a020a020a020a00fe01be9458
aaed18009d09fe0a020a030a0409feff01bd9458
aaed18009d0a040a030a040a020a01fc00bc9258
aaed18009d0a020a0009ff09fe0a02ff01bd9258
aaed18009d07b9036a071c0298064dfbffb69158
aaed18009d00900201028302f00071fafe3f9258
aaed18009d00730074007200720071fd003f9258
aaed18009d00720075007100740072fc033c9158
aaed18009d00730072007200720073fc023e9158
aaed18009d00740071007100740072fd01409158
aaed18009d00720075007300730073fd013f9158
aaed18009d00730073007300720073fd013f9258
aaed18009d00740073007300720074fd013e9258
aaed18009d00740074007300710073fd013d9158
aaed18009d00740072007300730074fc013e9158
aaed18009d00730073007400740074fd013f8f58
aaed18009d00730074007400730075fd013f9258
aaed18009d00730073007100730074fc003e9258
aaed18009d00730073007300740073fe003e8f58
aaed18009d00730072007200720074fd003e9158
aaed18009d00730073007100740073fd023e8e58
aaed18009d00730075007300740074fc013e8f58
aaed18009d00740072007300730072fc003f9158
aaed18009d0072007200730071008901163c8f58
aaed18009d008e008500a9035103fcff1dc38f58
aaed18009d010c008a007d007e008cfd0abe9058
aaed18009d009c00b500cd02c502d8fe01bb9158
aaed18009d033703dc0497056a0959ff00bd8f58
aaed18009d071f0ff3066d01f902140000bc9058
aaed18009d00b50176020901a501c90000be9058
aaed18009d007c0084013c017403b1fffebc8f58
aaed18009d04ee045c059005b30576fe00bd9158
aaed18009d053904b305110513023eff00bd9058
aaed18009d0233021e01ed021f01ecff02be9158
aaed18009d01f201e101ed01d801ad0001c38e58
aaed18009d01c7011a00a500a9019af50c1a9058
aaed18009d03910517068406380666c01d819158
aaed18009d081f00b900c800af00a9d044df9158
aaed18009d00aa00a0009b009500a1caba808f58
aaed18009d00bc00cf00fc01f3018a04ced99158
aaed18009d004c007100cc00a8004803e1c88e58
aaed18009d006b00a100bc00e1010ee9f5c29158
aaed18009d00d600df00db00e200efeaf3be9058
aaed18009d00ea00ed0141031404d7eeffc09158
aaed18009d0438042e0472047a04a5ee01c19358
aaed18009d04a404b904df050d0531e9efc29258
aaed18009d017000ee0201007a0057ece5c49158
aaed18009d005a005e006400860199eee9c59158
aaed18009d0069006b00db026001c9f0f0c19158
aaed18009d01df0235007c005f0050f0e3c59558
aaed18009d004f0102010c00fc013cf1dbbb9358
aaed18009d0043033405df017e00a1120bc39258
aaed18009d009f008d0628071b0724ff01be9558
aaed18009d0724072b072c072d0731fe01bc9358
aaed18009d072f072f072f07310733fe01bd9458
aaed18009d0730073007310732072efe01bc9458
aaed18009d0731073207330731072ffd01bd9558
aaed18009d0731072e0730072f072ffe00bd9458
aaed18009d07300730072f072e072efe01bd9558
aaed18009d072f072f072e072e072cfe02bd9458
aaed18009d072d072d072c072f072cfe01be9558
aaed18009d072b072b072b072f072bfe01be9658
aaed18009d072c072b072e072c072bfe01bd9658
aaed18009d072c072c072b072a0729faffbe9658
aaed18009d072c072d072b0729072aff01bd9458
aaed18009d0729072a072c0727072aff01bd9458
aaed18009d0728072807280728072aff01bc9658
aaed18009d07290726072707270725fe01bc9558
aaed18009d07280728072807280726fe01bd9558
aaed18009d07260727072907290725fd01be9358
aaed18009d07260725072407270725fe00bd9658
aaed18009d07240726072407250726ff01be9558
aaed18009d07230724072407240723fe03bd9558
aaed18009d07250724072407250723fe01bd9558
aaed18009d07240725072207250724ff00bd9758
aaed18009d072207250723072407220300b99558
aaed18009d07220722072207240723fe01bc9358
aaed18009d07200725072507240725ff02c29658
aaed18009d07250723072207230723fe01be9558
aaed18009d07230725072307240722fe01bd9558
aaed18009d07250722072307220723fe01bc9658
aaed18009d07240723072507220722fd02bc9658
aaed18009d072207220723071f0721fe00be9558
aaed18009d07230722072107230723ff01bf9758
aaed18009d07230722072107230720ff01bd9258
aaed18009d07220721072207220722fe01be9558
aaed18009d07220721072007210722ff01bc9458
aaed18009d07230721072107220721fe00bc9658
aaed18009d07200722072307230721fe01bd9658
aaed18009d07210722072207240720fe03c29558
aaed18009d0722071f072107210721fe00bd9658
aaed18009d0722072007220720071ffe00c09558
aaed18009d07200720072007230720fe02bd9558
aaed18009d071d071f0720071f0722fe00bc9558
aaed18009d071e0720071f071e071ffe00bc9558
aaed18009d071f0720071f07220720ff01be9558
aaed18009d071e07210720071f071ffe01be9458
aaed18009d0720071f071f071f071ffe01bc9558
aaed18009d071e0720071d0722071d0001bd9558
aaed18009d071e071f071f0720071ffe01bd9558
aaed18009d071d07200720071f071efe01bd9558
aaed18009d071e071e071c071f0721ff01bd9558
aaed18009d071d071c071f0721071eff02bc9658
aaed18009d071f071e071d071e071efe01bc9558
aaed18009d071e0720071c0721071efe01bd9558
aaed18009d0720071c071c071c0720fe01bd9558
aaed18009d071c071e071d071d071ffe00be9458
aaed18009d071c071e071f071f0720fd01bd9558
aaed18009d071d071e071f071d0721ff01bc9458
aaed18009d071f071f071d071c071fff01bc9458
aaed18009d071d071e071f071c071dfe02bd9458
aaed18009d071e071d0720071e071cfe01bd9458
aaed18009d071d071e071f071e071eff02bd9458
aaed18009d071e071e071f0720071eff00bd9558
aaed18009d071f0720071e07200720ff01bc9558
aaed18009d0720071f071e071e071e0300be9558
aaed18009d071d071f071e071e071cfe01bd9558
aaed18009d071d071c071e071e071ffe00be9258
aaed18009d071d071e071d0721071ffe01be9458
aaed18009d071c0720071e071d071cff00bd9258
aaed18009d071d071c071f071f071dfe00bd9258
aaed18009d071c0720071d071f071dfe00bd9458
aaed18009d071c071f071b071e071cfe00bd9258
aaed18009d071f071d071f071f071dff00bd9258
aaed18009d071a071c071e071f071fff00bd9258
aaed18009d071f071d0720071d071ffe01bd9258
aaed18009d071d071b071f071b0720fe01bd9258
aaed18009d071f071e071e071d071dfe01bd9158
aaed18009d071e071f071a071f071eff01bd9158
aaed18009d071d071c071f071e071eff01bd9158
aaed18009d071f071f071d071f071cfe01bd9258
aaed18009d071d071f071d071d071dfe00be8f58
aaed18009d071d0720071f071d071dfe01bd9158
aaed18009d071f071e071c0720071dfe02bc9258
aaed18009d071c071e071f071d071efe01bc9158
aaed18009d071c071a071e071d071dfe01bd9058
aaed18009d071d071c071f071e071ffe00bd9158
aaed18009d071d071d071e071f071cff00bc9158
aaed18009d071e071b071b071c071dfe01bd9158
aaed18009d071d071c071c071b071efe00be9158
aaed18009d071b071d071d071c071cfe01bd8f58
aaed18009d071d071a071d071e071bfe00bd9058
aaed18009d071e071d071f071c071dfe01be8e58
aaed18009d071f071e071b0722071fff00bd8f58
aaed18009d071d071c071d071f071cfe00bd9058
aaed18009d071d071d071c071c071efe01bc8f58
aaed18009d071d071d071d071b071efe01bd8f58
aaed18009d071d071c071c071d071dfe01be8f58
aaed18009d071d071c071d071b071bfe00bc9158
aaed18009d071e071f071b071e071bfe00bc8f58
aaed18009d071e071b071c0719071efe01be8f58
aaed18009d071c071f071f071c071cfe01be8f58
aaed18009d071b0720071c071e071cfe01bd9058
aaed18009d071c071f071b071d071ffe00bc9058
aaed18009d071e071e071d071c071efe02bb8f58
aaed18009d071e071d071f071d071bfe00be9158
aaed18009d071d071c071d071d071afe01bd8f58
aaed18009d071f071c071e071d0721fd01bd8f58
aaed18009d071c071f071b071c071bfe00bc8f58
aaed18009d071d0720071b071f071eff00be8f58
aaed18009d071b071e071c071d071cfe00bd9058
aaed18009d071f071d071e071f071efd02be8d58
aaed18009d071d071e071d071f071efe01bd9058
aaed18009d071f071d071c071f071d02fcc18f58
aaed18009d071e071e071c071e071ffe01bd8f58
aaed18009d0721071e071c071d071ffe02bd8f58
aaed18009d071c071e071c071c071cfe00bd8f58
aaed18009d0719071e071b071b071dfe00bd8e58
aaed18009d0720071c071b071d0719fe01be8d58
aaed18009d071e071e071e071e071cfe02bd8d58
aaed18009d071b071e071e071c071dff00bd8c58
aaed18009d071a0720071e071d071dff01bd8f58
aaed18009d071d071d071d071d071eff00bd8c58
aaed18009d071d071f071d071e071ffd01be8d58
aaed18009d071d071f071d071f071cfe01bc8f58
aaed18009d071f071e071c071e071efe00be8c58
aaed18009d071c071d071f071c071cff01bd8d58
aaed18009d071d071f071d071c071cff00b98c58
aaed18009d071c071d071d071c071f02ffbe8b58
aaed18009d071c071e071f071f071dfe01bc8d58
aaed18009d071e071f071c071f071dff02bc8d58
aaed18009d071d0720071c071c071f0201b88b58
aaed18009d071c071d071e071b071dff01bd8b58
aaed18009d071d071c071e071d071dfe01bd8c58
aaed18009d071d071d071e071e071dfe01bd8b58
aaed18009d071d071f071f071e071cfe01bd8958
aaed18009d071d071c071d071d071ffd01bd8b58
aaed18009d071e071f0720071e071ffe01bc8a58
aaed18009d071d071c071f071c071efe00bc8b58
aaed18009d071c071e0720071b071fff00be8958
aaed18009d071c071f071b071e071ffe00bc8a58
aaed18009d071f071f071b071d071bfe00bd8958
aaed18009d071d071e071f0720071eff00bd8858
aaed18009d071e071e071f071e071cfe01bc8958
aaed18009d0721071d071e071f071cfe01be8658
aaed18009d071e071e071b071e071dff01bd8858
aaed18009d071c07210720071e071efe01be8858
aaed18009d071e071d071b071f071f0001bc8658
aaed18009d0720071f071d07200721fe00be8758
aaed18009d071e071f071f071e071efe01be8858
aaed18009d071c071e071d071e071ffe01be8658
aaed18009d071f071e071b071f071dfc02bf8558
aaed18009d071e071f07200720071fff01be8558
aaed18009d06b900c0015001a401b506f8b58758
aaed18009d009b0075007605320516f51bc28758
aaed18009d00b2035d00ea031607cc06f6da8958
aaed18009d008a008900820083008aef04cd8658
aaed18009d0086009200b500b500b5f902b88558
aaed18009d00b000ac00b100b300b5f5edc08758
aaed18009d00b400a600a500a000a80202bc8858
aaed18009d00a800bb00b100a800b0ff04bb8558
aaed18009d00e400e700e300de00beffffae8958
aaed18009d00c000be00b400b200b604f6c08958
aaed18009d00f4004f004300440058fe02bd8958
aaed18009d0044004c004900480049fe01be8958
aaed18009d0045004c0043002f003dfe01bc8958
aaed18009d004e004b004300520050fe01bd8958
aaed18009d0055004b004c00480050fe01bd8958
aaed18009d0038004e0051004d0045fe02bd8c58
aaed18009d00540051004a0054004ffe01bd8b58
aaed18009d004f004c004e0050003dfe01bd8c58
aaed18009d004f004c004e0050003dfe01bd8c58
aaed18010100009d004b8d58
aaed18010100009d004b8d58
aaed18010100009d004b8c58
aaed18010100009d004b8c58
aaed18010100009d00838d58
aaed18010100009d00838d58
aaed18010100009d007d8b58
aaed18010100009d02718b58
aaed18010100009d02718b58
Traceback (most recent call last):
File "readturtle.py", line 14, in <module>
val = binascii.b2a_hex(ch.read())
File "/usr/local/lib/python2.7/dist-packages/bluepy/btle.py", line 142, in read
return self.peripheral.readCharacteristic(self.valHandle)
File "/usr/local/lib/python2.7/dist-packages/bluepy/btle.py", line 405, in readCharacteristic
resp = self._getResp('rd')
File "/usr/local/lib/python2.7/dist-packages/bluepy/btle.py", line 303, in _getResp
raise BTLEException(BTLEException.DISCONNECTED, "Device disconnected")
bluepy.btle.BTLEException: Device disconnected
root@beaglebone:/var/lib/cloud9# python readturtle.py
Traceback (most recent call last):
File "readturtle.py", line 8, in <module>
p = Peripheral("00:07:80:77:C4:5A", "public")
File "/usr/local/lib/python2.7/dist-packages/bluepy/btle.py", line 194, in __init__
self.connect(deviceAddr, addrType)
File "/usr/local/lib/python2.7/dist-packages/bluepy/btle.py", line 328, in connect
"Failed to connect to peripheral %s, addr type: %s" % (addr, addrType))
bluepy.btle.BTLEException: Failed to connect to peripheral 00:07:80:77:C4:5A, addr type: public
import binascii
import struct
import time
from bluepy.btle import UUID, Peripheral
uuid = UUID("d96a513d-a6d8-4f89-9895-ca131a0935cb")
p = Peripheral("00:07:80:77:C4:5A", "public")
try:
ch = p.getCharacteristics()[0]
if (ch.supportsRead()):
while 1:
val = binascii.b2a_hex(ch.read())
print str(val) + ""
time.sleep(1)
finally:
p.disconnect()
@Chaffelson
Copy link

I'm very interested in an accessible baby monitor API, did you get any further with this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment