The database is a Postgres database running in the database container on the controller edge-device. The database code in contained in the migrations directory. The database is kept up-to-date by running all the migrations in the directory every time the container restarts. The migration utility is a distinct Go project
Table | Description |
---|---|
ac_device | Single AC device that is associated with a single outlet |
additive | A single liquid that can be loaded into a dispenser |
alertcondition | NOT USED - intended to represent a condition that might trigger a notification |
automationsettings | The stages of a crop and the target environmental conditions for each stage |
contact | NOT USED |
crop | NOT USED - intended to represent a single cycle through all the stages of the crop |
currentevent | NOT USED |
device | An edge device - one each for cabinet and external |
devicetype | Type of edge device (Raspberry Pi) |
dispenser | A dispenser that can dispense a single additive |
displaysettings | Station-specific settings like language, font, units |
event | Each sensor reading becomes a row in the event table |
growlog | NOT USED - intended to hold freeform events like "lollipopped plants for harvest" |
module | An add-on module to the Pi that can hold 1 or more sensors |
notification | NOT USED - intended to represent a notification that has been delivered |
outlet | An AC mains outlet that is associated with a particular GPIO pin driving an AC mains relay. |
plant | NOT USED - intended to represent a single plant |
registrationcode | |
schema_migrations | USED BY THE MIGRATION TOOL. DO NOT MODIFY. |
seed | NOT USED - intended to represent a single seed (breed ...) |
sensor | A single sensor that can be standalone, or one of many on a module. |
site | The farm that the one or more stations belong to |
station | The cabinet that contains the edge-devices |
user | The user that logs in to the user interface |
usersettings | User specific setting, mostly not used. |
Column | Description |
---|---|
siteid | The unique identifier for this site. |
sitename | The name of this site (e.g. "John's farm") |
userid_user | Foreign key link to the user that owns this site |
Column | Description |
---|---|
stationid | The unique identifier for this station. |
siteid_site | Foreign key link to the site this station belongs to |
humidifier | Flag indicating the presence of this capability |
humidity_sensor_internal | Flag indicating the presence of this capability |
humidity_sensor_external | Flag indicating the presence of this capability |
light_sensor_internal | Flag indicating the presence of this capability |
light_sensor_external | Flag indicating the presence of this capability |
light_bloom | Flag indicating the presence of this capability |
light_vegetative | Flag indicating the presence of this capability |
light_germinate | Flag indicating the presence of this capability |
heater | Flag indicating the presence of this capability |
water_pump | Flag indicating the presence of this capability |
air_pump | Flag indicating the presence of this capability |
station_door_sensor | Flag indicating the presence of this capability |
outer_door_sensor | Flag indicating the presence of this capability |
movement_sensor | Flag indicating the presence of this capability |
pressure_sensors | Flag indicating the presence of this capability |
root_ph_sensor | Flag indicating the presence of this capability |
water_level_sensor | Flag indicating the presence of this capability |
intake_fan | Flag indicating the presence of this capability |
exhaust_fan | Flag indicating the presence of this capability |
heat_lamp | Flag indicating the presence of this capability |
heating_pad | Flag indicating the presence of this capability |
height_sensor | Flag indicating the presence of this capability |
water_heater | Flag indicating the presence of this capability |
ec_sensor | Flag indicating the presence of this capability |
voc_sensor | Flag indicating the presence of this capability |
co2_sensor | Flag indicating the presence of this capability |
water_dispenser | Flag indicating the presence of this capability |
phup_dispenser | Flag indicating the presence of this capability |
phdown_dispenser | Flag indicating the presence of this capability |
automatic_control | Flag indicating that the device, in sense-go, should control the on/off state of things like heater to keep parameters within range |
tamper_xmove | Size of the X movement that triggers a TILT alarm |
tamper_ymove | Size of the Y movement that triggers a TILT alarm |
tamper_zmove | Size of the Z movement that triggers a TILE alarm |
time_between_pictures_in_seconds | How often in seconds should look-inside pictures be taken |
time_between_sensor_polling_in_seconds | How often should environmental sensors be polled? |
Column | Description |
---|---|
deviceid | Unique id for this device |
userid_user | HISTORICAL RELIC - Foreign key link to the user this device belongs to |
stationid_station | Foreign key link to the station this belongs to |
devicetypeid_device | Foreign key link to the devicetype this device is |
created | NOT USED - timestamp of the creation of this device |
lastseen | NOT USED - timestampe of last communication received from this device |
devicename | Name of this device (e.g. "cabinet") |
externals | The balena UUID of this device |
log_level | NOT USED - Text log level the device should use |
picamera | Flag indicating this device has Pi camera attached |
picamera_resolutionx | X resolution of the pi camera |
picamera_resolutiony | Y resolution of the pi camera |
latest_picture_filename | Local filename of the latest look-inside picture for this device |
latest_picture_datetimemillis | Timestamp of the latest look-inside picture |
Column | Description |
---|---|
moduleid | Unique id of this module |
deviceid_device | Foreign key link to the edge-device this is attached to |
module_name | Common name for the module "e.g. bme280" |
container_name | Name of the container this module belongs to |
module_type | Official type name of the module (e.g. "bme280") |
i2caddress | The i2c address of the module in hex format (e.g. "0x23") |
protocol | Name of the protocol the module uses to communicate (e.g. "i2c" or "one-wire") |
Column | Description |
---|---|
sensorid | Unique id for this sensor |
moduleid_module | Foreign key link to the module that hosts this sensor |
sensor_name | The name of the sensor (e.g. "pH") |
extraconfig | |
latest_calibration_datetimemillis | NOT USED |
Column | Description |
---|---|
ac_deviceid | Unique id for this ac_device |
outletid_outlet | Foreign key link to the outlet that this device is plugged into |
ac_device_name | The name of the device (e.g. "heater", "humidifier") |
autonomous | NOT USED - Flag true if the device controls itself and should always be ON |
Column | Description |
---|---|
outletid | Unique id of this outlet |
stationid_station | Foreign key link to the station this belongs to |
deviceid_device | Foreign key link to the device that controls this outlet |
name | Name of this outlet (e.g. "humidifier") |
index | |
bcm_pin_number | The BCM pin number of the GPIO pin that controls this outlets ON/OFF state |
autonomous | NOT USED - Flag true if the device controls itself and should always be ON, redundant with ac_device |
Column | Description |
---|---|
stationid_station | Foreign key link to the station |
deviceid_device | Foreign key link to the edge-device this is attached to |
currently_loaded_additiveid | Foreign key link to the additive currently loaded in this dispenser |
dispenser_name | A name for this dispenser |
index | |
bcm_pin_number | The BCM pin number of the GPIO pin that controls this dispensers ON/OFF state |
milliliters_per_millisecond | The number of milliliters that will be dispensed when the valve is open for one millisecond |
Column | Description |
---|---|
manufacturer_name | The name of the producer of the nutrient (e.g. General Hydroponics) |
additive_name | The name of the nutrient (e.g. RapidGro) |
spec_url | URL of the manufacturers datasheet for the nutrient |
is_pgr | Flag true if the nutrient is considered PGR |
Column | Description |
---|---|
eventid | Unique id for this event |
siteid_site | Foreign key link to the site |
stationid_station | Foreign key link to the station |
userid_user | HISTORICAL RELIC - Foreign key link to the user this device belongs to |
deviceid_device | Foreign key link to the edge-device that generated this event |
datetimemillis | Milliseconds since the epoch timestamp for this event |
subeventdatemillis | NOT USED |
type | what type of event is this? e.g. "measurement" |
message | |
filename | If the event is stored in a .json file, the filename of that file |
floatvalue | The float value of this measurement |
intvalue | The integer value of this measurement |
stringvalue | The string value of this measurement |
textvalue | NOT USED |
rawjson | The entire raw JSON that was sent by the edge-device for this event |
time | |
units | The units that this value represents (e.g. "gallons") |
value_name | The name of this measurement (e.g. "temperature_middle") |
Column | Description |
---|---|
current_lighting_schedule | Text description of the lighting schedule (e.g. 12/12) |
light_on_start_hour | 0-23 hour in local time when light should go ON |
target_temperature | Target air temperature for this stage |
temperature_min | Minimum air temperature to display on chooser slider |
temperature_max | Maximum air temperature to display on chooser slider |
humidity_min | Minimum humidity to display on chooser slider |
humidity_max | Maximum humidity to display on chooser slider |
target_humidity | The desired humidity for this stage |
humidity_target_range_low | |
humidity_target_range_high | |
current_light_type | Which light - blooming or vegetative should be used in this stage |
target_water_temperature | The desired water temperature for this stage |
water_temperature_max | Maximum water temperature to display on chooser slider |
water_temperature_min | Minimum water temperature to display on chooser slider |
stage_name | The name of this stage - e.g. BLOOMING, VEGETATIVE ... |