Skip to content

Software Specification

Jelle Bouwhuis edited this page May 28, 2019 · 8 revisions

This page contains the requirements specification and the usecase descriptions of the bGeigieNano - stationary unit.

Requirements

Initial requirements

TODO: Discuss and add more

Type Description
Functional User can switch from mobile mode to stationary mode
Functional User can switch from stationary mode to mobile mode
Functional System uploads reading to the API every 5 minutes
Functional The current mode / state is displayed to the user through a RGB LED
Functional User can set configuration for the wifi and API without reflashing the hardware
Usability bGeigieNano can be used as a fixed sensor
Usability System is intuitive to use, 100% of current volunteers should be able to understand the system
Reliability If temporarily disconnected, the system should keep up to 15 (?) minutes worth of data
Performance Using the system should have the same impact on the battery life while in mobile mode as using the BLEBee extension
Supportability The system is compatible with the bGeigieNanoKit
Supportability The bGeigieNanoKit should not require any changes to the source code or hardware design
Supportability The source code is fully documented with comments in the code as well as design diagrams on the github wiki

Future additions / requirements

Type Description
Functional The system can upload un-uploaded logs to the API
Functional

Use cases

Use cases of the system. Only those for the esp32 controller are described here. The diagram contains some use cases for the bGeigie controller as well, but are not included in this document. All use cases require the esp32 controller to be connected to the bGeigie, powered on and working correctly (no hardware faults).

Diagram

use case diagram

Descriptions

Set config

  • Pre-conditions: webserver is running
  • Post-conditions: New configurations are saved on flash memory

User connects (browser) to the system through the pre-defined ip address of the esp32. System displays login form. User uses the pre-defined username and password to authenticate. System displays form with configurations, pre-filled with current config. Fields are: SSID, password, API key. User updates the fields and submits the form. System saves the new configurations to the flash memory. System displays a success message to the user.

Note: additional fields might be added later

Set esp stationary mode

  • Pre-conditions: esp is in mobile mode
  • Post-conditions: esp is in stationary mode, LED color is StationaryLedColor

User places the bGeigie in the stationary dock. User presses the button on the esp32. System sets the LED color to ConnectingLedColor. System connects to the wifi based on configurations. System tests API availability. System sets the LED color to StationaryLedColor.

Set esp mobile mode

  • Pre-conditions: esp is in stationary mode
  • Post-conditions: esp is in mobile mode, final data is send to API, LED color is MobileLedColor

User takes the bGeigie from the stationary dock. User presses the button on the esp32. System sends the latest readings to the API. System disconnects the wifi. System sets the LED color to MobileLedColor.

Report data

  • Pre-conditions: System is initialized
  • Post-conditions: Data has been reported

bGeigieNano controller reports new readings to the system. System parses the reading string into values. System validates the reading data. System <>. System <> (if in staionary mode).

Report to API

  • Pre-conditions: esp is in stationary mode, esp is connected to WiFi, 5 minutes have passed since the last send (or connect)
  • Post-conditions: latest data has been send to the API, temporarily saved readings are send to the API

TODO

Report over bluetooth

  • Pre-conditions: -
  • Post-conditions: latest reading has been published over bluetooth

TODO