Real Test of OpenSeizureDetector


Benjamin had a seizure yesterday morning (03/05/2017).  It was not a ‘classic’ tonic clonic seizure (with rapid shaking of the arms).  Instead he was lying on his back with arms stiff in the air and ‘waving’.  This movement was on the borderline of detectability by OpenSeizureDetector.  It gave one WARNING and one ALARM.   On the positive side, it did detect the seizure.   On the negative, it only gave a single ALARM initiation, which might not be enough to wake you up if asleep.   Reducing the AlarmRatioThresh setting will increase sensitivity to improve detection reliability in the future.


The seizure was not a ‘classic’ tonic clonic seizure (quite rapid shaking of the arms).  Instead Benjamin was lying on his back with arms stiff in the air and ‘waving’.

OpenSeizureDetector gave one WARNING notification at 06:24:24 on 03/05/2017 followed by a single ALARM initiation at 06:20:30, then it re-set.

The movement was right on the limit of detection using default settings which look at a frequency range of 3bHz to 8bHz as the Region of Interest.   The movement peak was at 4bHz, but there was quite a lot of power in the 1-3bHz range too and not much above.  This meant that the region of interest average power was quite low – see graph below showing the frequency spectrum of the movement during the alarm (the grey shaded area is the 3-8 Hz region of interest).

The calculated spectrum ratio (=10x[Region of Interest Power]/Spectrum Power) was 59, against a threshold of 56 (the threshold had been set higher than the default 50 to reduce false alarm rate).

We use a second android device running OpenSeizureDetector in ‘Network’ mode to relay the alarm notifications to other parts of the house over wifi.   The second device gave a WARNING but did not go into alarm.   I think this is because of a timing issue with the ALARM being raised for only a short period, so this is something to look at as we would have expected the alarm to sound on both devices.

Changes to Settings

Detection of this particular type of seizure could be improved by reducing the Region of Interest to be 3-6 Hz rather than 3-8 Hz, but this would reduce the sensitivity to seizures resulting in higher frequency movement.   Benjamin’s worst fits have been the higher frequency type, so I am minded to retain detection in that region so have retained 3-8 Hz region of interest for now.

I have reduce the AlarmRatioThreshold back to 50 rather than the 56 that we were using to increase sensitivity.

So the main settings we will be using for now are:

  • alarmFreqMin = 3 Hz
  • alarmFreqMax = 8 Hz
  • alarmRatioThresh = 50

Software Changes

I will update the phone app to give multiple alarm sounds rather than just 3 beeps in the near future to improve the chances of you noticing a single alarm annunciation.

In the meantime, users could consider switching on the Latch Alarms option in the Alarms settings – this will make the system alarm continuously until you press the ‘Accept Alarm’ button on the phone app.


OpenSeizureDetector did detect this slightly unusual seizure, but it was right on the limit of detection, so just gave a single WARNING and a single ALARM notification.

Increasing the sensitivity by reducing the AlarmRatioThresh setting should improve detection in the future.  Other changes would improve detection of this seizure type to the detriment of detection of higher frequency movement seizures, which is probably not a good idea.

Errors from Pebble Web Site

A user has reported getting errors from the Pebble web site while installing the Pebble App to connect the watch to the phone.

You seem to get this screen when you are creating a Pebble account as part of the set-up process.

Despite the error you can go back to the Pebble App and finish the set-up ok (it will update the watch firmware etc.), and OpenSeizureDetector will work ok.

So, although we get an error, it still works – OpenSeizureDetector does not need the Pebble web site once the watch has been connected to the phone ok.

Production Release of V2.3.2

I have just released V2.3.2 of OpenSeizureDetector as the main version of the App on Google Play Store.   The main changes in this version are:

  • Changes to the Watch App to improve efficiency (Note this will also make it more sensitive, so you may need to increase the Alarm Ratio Threshold setting from the default of 30 to between 50 and 60 to reduce false alarms).
  • Improved start-up screen that has buttons to help solve problems with set-up, and make initial set-up easier – updated installation instructions page to match.
  • Added an initial run message prompting user to subscribe to updates to this web site or the facebook page.
  • Added facility to auto-start the app on phone boot up.
  • Added GPS location information to SMS alarm notification messages.
  • See for more details.

Next I will start work on converting OpenSeizureDetector to work with Android Wear and wrist worn Android Phone devices so it will continue to work once Pebble Watches are no longer available.

Implications of Pebble Sale to Fitbit on OpenSeizureDetector

A couple of weeks ago Pebble announced that they have been bought by Fitbit (who make fitness tracking devices), and no longer sell or support smart watches.

A few people have asked what this means for OpenSeizureDetector.    My thoughts are:

Short Term (around 1 year)

No change – if you already have a Pebble watch or can buy one, you will be able to install the Pebble Android App from Google Play Store to connect your pebble to the phone, and install OpenSeizureDetector on it.

It is possible that Pebbles may become scarce (or looking more positively, they may get cheap – Argos and Amazon are selling them for £49, and cheaper if you like pink! currently says they only have 5 in stock (17 December).

Medium Term (1-3 years)

The Pebble Android App and Pebble firmware may no longer be available from Pebble.   There is an open source project that implements the Bluetooth communication with the watch, so I think it will be possible to bypass the Pebble Android App and build this all into OpenSeizureDetector (OpenSeizureDetector does not need any of the Pebble web services to work) –  I will look at doing this over the winter while the Pebble software is still available.

Long Term (>3 years)

Pebble watches are unlikely to be available so we will need an alternative device.  The options are:

  1. If we are very lucky FitBit may release a pebble-like device with software development kit so you can program it like you can the Pebble, as they bought all the Pebble intellectual property.   I am not too hopeful about this – I did try to work out how to program a fitbit before I discovered Pebble, and it is all closed-source protocols….
  2. Android Wear – Android Wear watches such as Moto 360 should be capable of doing what OpenSeizureDetector does on the pebble, and use the same Android App infrastructure (since Verison 2 I have the internal structure of the code set up to use different devices).   I haven’t done this yet because Pebbles were so much cheaper than Android Wear devices, so no point using anything else….but now I’ll have to look at it.
  3. Embrace – the Embrace ‘watch’ is doing something very similar to OpenSeizureDetector and includes skin electrodes to detect stress.  This should give better false alarm discrimination than just using Acceleration like I do with the Pebble.   But, up to now I am not impressed with the reliability of the device – it drops bluetooth connections without any of the fault warning beeps that we have built into OpenSeizureDetector – I am minded to try to use Embrace as a data source for the OpenSeizureDetector alarm notification system rather than use their Android App, which relies on an active internet connection to raise alarms.
  4. Another Device – I had looked at AngelSensor, and I do have a device to work on, but I am not sure if the company still exists – no point developing for a device that no-one can get hold of….
  5. Anything else?  I’m open to suggestions for alternative devices with accelerometers that we could use the OpenSeizureDetector system with.


OpenSeizureDetector will continue to work while Pebble Watches are available (I  am confident enough that I just bought Benjamin two spares for when his current ones break).

But we need to decide what to do once Pebble Watches are not available any more…

New Features in OpenSeizureDetector V2.3.0

I have just published V2.3.0 of OpenSeizureDetector to the Google Play Store as a Beta test release.

This release introduces three changes requested by users:

  1. Add the user’s location to the SMS alarm notifications – it now sends two SMS messages – the first one gives the last known location (if we have one).  It then spends a minute trying to get the best location information it can, and sends that location as a second SMS after a minute.
  2. Added an option in the General Settings screen to auto-start the app when the phone boots.
  3. Improved Start-Up screen that now checks whether the Pebble App is installed and provides a button to install it for you if not.

To install this version you need to register as a Beta tester here.

Please let me know if you have any issues with this version.

(note on version numbering – I messed up the version numbers on the last few releases – the first two figures are supposed to match the version of the Pebble App that the Android App works with, but I forgot.    Version 2.3 of the Pebble App is included as part of the Android package, so the Android Package is V2.3.0).

Detection of Short Seizures

I originally set up OpenSeizureDetector to detect long (>1 minute) seizures so it waits to see seizure-like shaking for several seconds before raising alarms.

A couple of users said they would like to detect short (few second) seizures, so I have created a new version of the app that allows the sample period to be set by the user, so you can tell it to analyse data say every second rather than the default 5 seconds.

New settings in v2.0.7 - sample period and sample frequency.
New settings in v2.0.7 – sample period and sample frequency.

I suspect that doing this will give a lot of false alarms, but I have provided this so the users can try it and see if it works for them.

This feature is available in version 2.0.7 of the OpenSeizureDetector Android app, and version 2.3 of the watch app.  The correct version of the watch app is included in the Android package so you can install it from the OpenSeizureDetector menu.

It is available on the Beta testing channel of Google Play Store – subscribe here to access it.

As usual, feedback would be appreciated – if you do not change the settings, it should behave the same as before – please let me know if this is not the case.


OpenSeizureDetector Reliability Issues?

We have been woken up during the last couple of nights with the annoying warning pip from OpenSeizureDetector.   I am not sure what the issue is because I don’t think any of the software has changed for a few weeks and it just started happening.

There have been two issues

  1. the ‘server’ phone disconnected from our home wifi for some reason and only re-connected when I turned its screen on (no idea why, but not too much of a worry – probably some sort of wifi interference from somewhere).
  2. the ‘server’ phone showed a ‘Fault’ warning with ‘Watch App Not Running’ – this means it has not received any data from the Pebble watch recently.   The watch appears to be working ok, so I don’t know if it is a problem with the watch not sending data, or the Android Pebble App on the phone not telling OpenSeizureDetector that it has received some data for it.

I have set up our spare watch and phone to see if they do the same – I might end up swapping over the watches – the spare is older though and its battery is not as good and its screen keeps corrupting, which might annoy Benjamin…..

Is anyone else seeing similar problems?  Please let me know ( or the OpenSeizureDetector Facebook page).




Beta Release of OpenSeizureDetector 2.0.6

I have been working on a new
release of OpenSeizureDetector for some time, so I thought I ought to release it to other users.

The main changes areScreenshot_2016-07-29-08-58-54Screenshot_2016-07-29-08-58-41

  • Added menu option to view log files to help with tuning it for yourself.
  • Changed main screen graph to bar chart and highlight frequency region of interest.
  • Fixed problem with log files not showing on web interface.
  • Added system log file to help with de-bugging start-up/shutdown issues
  • Improved handling of watch app settings to make sure
    they are loaded correctly without having to re-start app (but I’d still
    recommend re-starting the watch app manually to be sure 🙂 )
  • Added options to switch off spectrum display on watch to save battery.
  • Reduced amount of bluetooth comms to the watch to save battery.
  • Added support for future watch app features (such as raw mode and digital
    filter mode).
  • Added watch app to Android phone app package so watch app can be
    installed directly from phone rather than using pebble store – to make sure that watch app and Android app are always compatible.

I have just released V2.0.6 to the Beta Test part of the play store – you need to register as a tester to use it (    I’ll give it a couple of days and publish it as the main version.

Note that when you install the new android App you MUST select the ‘Install Watch App’ button or menu item to install the new watch app that is compatible with it (V2.2 of the watch app).

Fixed Problem with Pebble Classsic Version

I noticed last week that following updates to the Pebble software, OpenSeizureDetector had become less reliable (and sometimes did not work at all) on the original Pebble Classic watches (but Pebble Time continued to work ok).

I have fixed this problem and published a new version (v2.1) on the Pebble App Store (

I recommend that all users upgrade to this version.

For those who are interested, it was a schoolboy error on my part – I had ignored a compiler warning that I was asking to allocate a lot of memory, and this could cause problems with future versions – now rather than asking for maximum memory allocation for the communications buffers I am using a fixed 512 bytes, which is plenty for the messages between watch and phone that I use – offending code here:




Issues with Pebble Time [Solved?]

Before Christmas I released an updated version of the OpenSeizureDetector watch app that will run on a Pebble Time, and at least one user got it working ok.  Another user recently reported that although the app runs on the Pebble Time, it does not send data to the phone.

I have made an updated version of the phone app addresses these issues, so if you are using OpenSeizureDetector on a Pebble Time, or a Pebble Classic using the “Pebble Time” phone app, I would recommend using  version 2.0c of OpenSeizureDetector.   Screenshots of V2.0 shown below – it now includes ‘approach to alarm’ indicator bars.

(Note that this version is a test one, so you may have to allow ‘untrusted sources’ in your android settings to get it to install – once I am happy that it is working ok, I will release it on Play Store.)