Skip to content

Commit

Permalink
v8.9.0 Release
Browse files Browse the repository at this point in the history
  • Loading branch information
kizniche committed Mar 8, 2021
1 parent e22da36 commit c503192
Show file tree
Hide file tree
Showing 39 changed files with 21,320 additions and 15,238 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 8.9.0 (Unreleased)
## 8.9.0 (2021-03-08)

This release contains bug fixes and several new types of Inputs and Outputs. These include stepper motors, digital-to-analog converters, a multi-channel PWM output, as well as an input to acquire current and future weather conditions.

Expand Down
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Mycodo

Environmental Regulation System

Latest version: 8.8.8
Latest version: 8.9.0

Mycodo is open source software for the Raspberry Pi that couples inputs and outputs in interesting ways to sense and manipulate the environment.

Expand Down
2 changes: 1 addition & 1 deletion docs/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ Activates a controller.
Parameters:
- **controller_type** - the type of controller being activated. Options are: "Conditional", "LCD", "Input", "Math", "Output", "PID", "Trigger", or "Function".
- **controller_type** - the type of controller being activated. Options are: "Function", "LCD", "Input", "Math", "Output", "PID", "Trigger", or "Function".
- **controller_id** - the unique ID of the controller to activate.
### controller_deactivate()
Expand Down
2 changes: 1 addition & 1 deletion docs/About.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Mycodo is an open-source environmental monitoring and regulation system that was built to run on the [Raspberry Pi](https://en.wikipedia.org/wiki/Raspberry_Pi).

Originally developed for cultivating edible mushrooms, Mycodo has grown to do much more. The system is comprised of two parts: a backend (daemon) and a frontend (web server). The backend performs tasks such as acquiring measurements from sensors and devices and coordinating a diverse set of responses to those measurements, including the ability to modulate outputs (switch relays, generate PWM signals, operate pumps, switch wireless outlets, publish/subscribe to MQTT, among others), regulate environmental conditions with PID control, schedule timers, capture photos and stream video, trigger actions when measurements meet certain conditions, and more. The frontend hosts a web interface that enables viewing and configuration from any browser-enabled device.
Originally developed for cultivating edible mushrooms, Mycodo has grown to do much more. The system consists of two parts: a backend (daemon) and a frontend (web server). The backend performs tasks such as acquiring measurements from sensors and devices and coordinating a diverse set of responses to those measurements, including the ability to modulate outputs (switch relays, generate PWM signals, operate pumps, switch wireless outlets, publish/subscribe to MQTT, among others), regulate environmental conditions with PID control, schedule timers, capture photos and stream video, trigger actions when measurements meet certain conditions, and more. The frontend hosts a web interface that enables viewing and configuration from any browser-enabled device.

There are a number of different uses for Mycodo. Some users simply store sensor measurements to monitor conditions remotely, others regulate the environmental conditions of a physical space, while others capture motion-activated or time-lapse photography, among other uses.

Expand Down
12 changes: 9 additions & 3 deletions docs/Data-Viewing.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ There are several ways to visualize collected data.

Page\: `Data -> Live`

The `Live` page is the first page a user sees after logging in to Mycodo. It will display the current measurements being acquired from Input and Math controllers. If there is nothing displayed on the `Live` page, ensure an Input or Math controller is both configured correctly and activated. Data will be automatically updated on the page from the measurement database.
The `Live` page is the first page a user sees after logging in to Mycodo. It will display the current measurements being acquired from Input and Function controllers. If there is nothing displayed on the `Live` page, ensure an Input or Function controller is both configured correctly and activated. Data will be automatically updated on the page from the measurement database.

## Asynchronous Graphs

Expand All @@ -23,9 +23,15 @@ The dashboard can be used for both viewing data and manipulating the system, tha

### Custom Widgets

There is a Custom Widget import system in Mycodo that allows user-created Widgets to be created an used in the Mycodo system. Custom Widgets can be uploaded and imported from the `[Gear Icon] -> Configure -> Custom Widgets` page. After import, they will be available to use on the `Data -> Dashboard` pages.
There is a Custom Widget import system in Mycodo that allows user-created Widgets to be used in the Mycodo system. Custom Widgets can be uploaded on the `[Gear Icon] -> Configure -> Custom Widgets` page. After import, they will be available to use on the `Setup -> Widget` page.

If you desire an Widget that is not currently supported by Mycodo, you can build your own Widget module and import it into Mycodo. All information about an Widget is contained within the Widget module. Open any of the built-in modules located in the [widgets directory](https://github.com/kizniche/Mycodo/tree/master/mycodo/widgets/) for examples of the proper formatting. There's also a [minimal widget module template as an example](https://github.com/kizniche/Mycodo/tree/master/mycodo/widgets/examples/custom_widget_example_simple.py).
If you develop a working Widget module, please consider [creating a new GitHub issue](https://github.com/kizniche/Mycodo/issues/new?assignees=&labels=&template=feature-request.md&title=New%20Module) or pull request, and it may be included in the built-in set.

Open any of the built-in modules located in the directory [Mycodo/mycodo/widgets](https://github.com/kizniche/Mycodo/tree/master/mycodo/widgets/) for examples of the proper formatting.

There are also example Custom Widgets in the directory [Mycodo/mycodo/widgets/examples](https://github.com/kizniche/Mycodo/tree/master/mycodo/widgets/examples)

Additionally, I have another github repository devoted to Custom Modules that are not included in the built-in set, at [kizniche/Mycodo-custom](https://github.com/kizniche/Mycodo-custom).

### Graph Widget

Expand Down
13 changes: 11 additions & 2 deletions docs/Functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,23 @@ For a full list of supported Inputs, see [Supported Functions](Supported-Functio

Function controllers perform tasks that often involve the use of Inputs and Outputs.

!!! note
"Last" means the Function will only acquire the last (latest) measurement in the database. "Past" means the Function will acquire all measurements from the present until the "Max Age (seconds)" that's been set (e.g. if measurements are acquired every 10 seconds, and a Max Age is set to 60 seconds, there will on average be 6 measurements returned to the Function to operate with).

## Custom Functions

There is a Custom Function import system in Mycodo that allows user-created Controllers to be used in the Mycodo system. Custom Functions can be uploaded on the `[Gear Icon] -> Configure -> Custom Functions` page. After import, they will be available to use on the `Setup -> Function` page.
There is a Custom Function import system in Mycodo that allows user-created Functions to be used in the Mycodo system. Custom Functions can be uploaded on the `[Gear Icon] -> Configure -> Custom Functions` page. After import, they will be available to use on the `Setup -> Function` page.

If you develop a working Function module, please consider [creating a new GitHub issue](https://github.com/kizniche/Mycodo/issues/new?assignees=&labels=&template=feature-request.md&title=New%20Module) or pull request, and it may be included in the built-in set.

There are also example Custom Function files in `Mycodo/mycodo/functions/examples`
Open any of the built-in modules located in the directory [Mycodo/mycodo/functions](https://github.com/kizniche/Mycodo/tree/master/mycodo/functions/) for examples of the proper formatting.

There are also example Custom Functions in the directory [Mycodo/mycodo/functions/examples](https://github.com/kizniche/Mycodo/tree/master/mycodo/functions/examples)

Additionally, I have another github repository devoted to Custom Modules that are not included in the built-in set, at [kizniche/Mycodo-custom](https://github.com/kizniche/Mycodo-custom).

For Functions that require new measurements/units, they can be added on the `[Gear Icon] -> Configure -> Measurements` page.

## PID Controller

A [proportional-derivative-integral (PID) controller](https://en.wikipedia.org/wiki/PID_controller) is a control loop feedback mechanism used throughout industry for controlling systems. It efficiently brings a measurable condition, such as the temperature, to a desired state and maintains it there with little overshoot and oscillation. A well-tuned PID controller will raise to the setpoint quickly, have minimal overshoot, and maintain the setpoint with little oscillation.
Expand Down
16 changes: 4 additions & 12 deletions docs/Inputs.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,17 @@ See [Building a Custom Input Module](https://github.com/kizniche/Mycodo/wiki/Bui

There is a Custom Input import system in Mycodo that allows user-created Inputs to be created an used in the Mycodo system. Custom Inputs can be uploaded and imported from the `[Gear Icon] -> Configure -> Custom Inputs` page. After import, they will be available to use on the `Setup -> Input` page.

If you have a sensor that is not currently supported by Mycodo, you can build your own input module and import it into Mycodo.
If you develop a working Input module, please consider [creating a new GitHub issue](https://github.com/kizniche/Mycodo/issues/new?assignees=&labels=&template=feature-request.md&title=New%20Module) or pull request, and it may be included in the built-in set.

Open any of the built-in modules located in the inputs directory (<https://github.com/kizniche/Mycodo/tree/master/mycodo/inputs/>) for examples of the proper formatting.
Open any of the built-in modules located in the directory [Mycodo/mycodo/inputs](https://github.com/kizniche/Mycodo/tree/master/mycodo/inputs/) for examples of the proper formatting.

There's also minimal input module template that generates random data as an example:

<https://github.com/kizniche/Mycodo/tree/master/mycodo/inputs/examples/minimal_humidity_temperature.py>

There ares also input modules that includes all available INPUT_INFORMATION options along with descriptions:

<https://github.com/kizniche/Mycodo/tree/master/mycodo/inputs/examples/example_all_options_temperature.py>

<https://github.com/kizniche/Mycodo/tree/master/mycodo/inputs/examples/example_all_options_temperature_with_channel_options.py>
There are also example Custom Inputs in the directory [Mycodo/mycodo/inputs/examples](https://github.com/kizniche/Mycodo/tree/master/mycodo/inputs/examples)

Additionally, I have another github repository devoted to Custom Modules that are not included in the built-in set, at [kizniche/Mycodo-custom](https://github.com/kizniche/Mycodo-custom).

### Input Actions

Input Actions are functions within the Input module that can be executed from the Web UI. This is useful for things such as calibration or other functionality specific to the input. By default there is at least one action, Acquire Measurements Now, which will cause the input to acquire measurements rather than waiting until the next Period has elapsed.
Input Actions are functions within the Input module that can be executed from the Web UI. This is useful for things such as calibration or other functionality specific to the input. By default, there is at least one action, Acquire Measurements Now, which will cause the input to acquire measurements rather than waiting until the next Period has elapsed.

!!! note
Actions can only be executed while the Input is active.
Expand Down
2 changes: 1 addition & 1 deletion docs/Maths.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Page\: `Setup -> Input` (Previously `Setup -> Data`)

!!! warning
Math controllers have been deprecated since Mycodo version 8.9.0. All Math controller functionality has been moved to [Functions](Functions.md). No new Math controllers can be created in Mycodo 8.9.0 and beyond, but already-existing Math controllers are permitted to operate until further notice. If you are using Mycodo version 8.9.0 or beyond, it is advised to create Functions for all your current Math controllers, because some point in the future Math controllers will not be allowed to operate. This manual page only serves as reference material for those still using Math controllers.
Math controllers have been deprecated since Mycodo version 8.9.0. All Math controller functionality has been ported to [Functions](Functions.md). No new Math controllers can be created in Mycodo 8.9.0 and beyond, but already-existing Math controllers are permitted to operate until further notice. If you are using Mycodo version 8.9.0 or beyond, it is advised to create Functions for all your current Math controllers, because at some point in the future Math controllers will be completely removed. This manual page only serves as reference material for those still using Math controllers.

!!! note
"Last" means the controller will only acquire the last (latest) measurement in the database for performing math with. "Past" means the controller will acquire all measurements from the present until the "Max Age (seconds)" set by the user (e.g. if measurements are acquired every 10 seconds, and a Max Age is set to 60 seconds, there will on average be 6 measurements returned to have math performed).
Expand Down
10 changes: 9 additions & 1 deletion docs/Outputs.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,15 @@ Outputs are various signals that can be generated that operate devices. An outpu

There is a Custom Output import system in Mycodo that allows user-created Outputs to be created an used in the Mycodo system. Custom Outputs can be uploaded and imported from the `[Gear Icon] -> Configure -> Custom Outputs` page. After import, they will be available to use on the `Setup -> Output` page.

If you desire an Output that is not currently supported by Mycodo, you can build your own Output module and import it into Mycodo. All information about an Output is contained within the Output module. Open any of the built-in modules located in the [outputs directory](https://github.com/kizniche/Mycodo/tree/master/mycodo/outputs/) for examples of the proper formatting. There's also a [minimal output module template as an example](https://github.com/kizniche/Mycodo/tree/master/mycodo/outputs/examples/example_dummy_output.py). For Outputs that require new measurements/units, they can be added on the `[Gear Icon] -> Configure -> Measurements` page.
If you develop a working Output module, please consider [creating a new GitHub issue](https://github.com/kizniche/Mycodo/issues/new?assignees=&labels=&template=feature-request.md&title=New%20Module) or pull request, and it may be included in the built-in set.

Open any of the built-in modules located in the directory [Mycodo/mycodo/outputs](https://github.com/kizniche/Mycodo/tree/master/mycodo/outputs/) for examples of the proper formatting.

There are also example Custom Outputs in the directory [Mycodo/mycodo/outputs/examples](https://github.com/kizniche/Mycodo/tree/master/mycodo/functions/examples)

Additionally, I have another github repository devoted to Custom Modules that are not included in the built-in set, at [kizniche/Mycodo-custom](https://github.com/kizniche/Mycodo-custom).

For Outputs that require new measurements/units, they can be added on the `[Gear Icon] -> Configure -> Measurements` page.

## Output Options

Expand Down
12 changes: 11 additions & 1 deletion docs/Supported-Functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ This function calculates the humidity based on wet and dry bulb temperature meas
### PID Autotune


This function will attempt to perform a PID controller autotune. That is, an output will be powered and the response measured from a sensor several times to calculate the P, I, and D gains. Updates about the operation will be sent to the Daemon log. If the autotune successfully completes, a summary will be sent to the Daemon log as well. Currently only raising a Measurement is supported, but lowering should be possible with some modification to the function controller code. It is recommended to creates a graph on a dashboard with the Measurement and Output to monitor that the Output is successfully raising the Measurement beyond the Setpoint. Note: Autotune is an experimental feature, it is not well-developed, and it has a high likelihood of failing to generate PID gains. Do not rely on it for accurately tuning your PID controller.
This function will attempt to perform a PID controller autotune. That is, an output will be powered and the response measured from a sensor several times to calculate the P, I, and D gains. Updates about the operation will be sent to the Daemon log. If the autotune successfully completes, a summary will be sent to the Daemon log as well. Currently, only raising a Measurement is supported, but lowering should be possible with some modification to the function controller code. It is recommended to create a graph on a dashboard with the Measurement and Output to monitor that the Output is successfully raising the Measurement beyond the Setpoint. Note: Autotune is an experimental feature, it is not well-developed, and it has a high likelihood of failing to generate PID gains. Do not rely on it for accurately tuning your PID controller.

### Redundancy

Expand All @@ -52,6 +52,11 @@ This function stores the first available measurement. This is useful if you have

This function acquires multiple measurements, calculates statistics, and stores the resulting values as the selected unit.

### Statistics (Past, Single)


This function acquires multiple values from a single measurement, calculates statistics, and stores the resulting values as the selected unit.

### Sum (Last, Multiple)


Expand All @@ -67,3 +72,8 @@ This function acquires the past measurements (within Max Age) for the selected m

This function calculates the vapor pressure deficit based on leaf temperature and humidity.

### Verification


This function acquires 2 measurements, calculates the difference, and if the difference is not larger than the set threshold, the Measurement A value is stored. This enables verifying one sensor's measurement with another sensor's measurement. Only when they are both in agreement is a measurement stored. This stored measurement can be used in functions such as Conditional Statements that will notify the user if no measurement is avilable to indicate there may be an issue with a sensor.

Loading

0 comments on commit c503192

Please sign in to comment.