Skip to content
Barış Kurtlutepe edited this page May 1, 2019 · 8 revisions

Structure

A typical omnipy setup is a comprised of the following components:

  • Android phone running Android APS
  • Raspberry pi running omnipy
  • RileyLink
  • Omnipod

Note: Omnipy is programmed using Python and raspberry pi specific bluetooth interfaces. This is the reason why a raspberry pi is required. A more generic implementation of omnipy is in development and will be installed on the same android device as Android APS, making the raspberry pi redundant.

These components build up a chain (in the given order above) and enable an artifical pancreas system to be used with the Omnipod.

Roles & Responsibilities

Android APS

Android APS makes decisions based on CGM input data and configuration of the various APS implementations. It then passes these decisions as commands to omnipy, such as "set a temp basal", "change basal schedule" etc.

Communication between Android APS and omnipy is usually achieved by creating a Bluetooth Personal Area Network (BT-PAN), i.e. using the BT-Tethering functionality on the android device.

Omnipy

Omnipy is responsible for maintaining the pod, just like the PDM: Keeping track of pod state, sending commands to it based on input from Android APS (or commandline on the raspberry pi) and interpreting pod's responses to commands.

It is also responsible for encoding these commands into low level radio packets for RileyLink to send, and decode packets received by RileyLink. Omnipy communicates with RileyLink using Bluetooth Low Energy (BLE).

RileyLink

RileyLink is a "radio gateway" which receives data via BLE and sends this using the integrated radio components on the sub-GHz (100 - 900 MHz) range and vice versa. For Omnipod, RL transmits and receives at 433MHz.

OmniPod

OmniPod is the final component in the system, which is responsible for insulin delivery at scheduled intervals as well as on command. It receives data from the RileyLink and sends back data to the RileyLink directly.