Acme::FishFarm::WaterConditionMonitor - Water Condition Monitor for Acme::FishFarm
Version 1.01
use 5.010;
use Acme::FishFarm::WaterConditionMonitor;
use Acme::FishFarm::OxygenMaintainer;
my $water_monitor = Acme::FishFarm::WaterConditionMonitor->install;
my $oxygen = Acme::FishFarm::OxygenMaintainer->install( DO_generation_volume => 1.92 );
$water_monitor->add_oxygen_maintainer( $oxygen );
# always check water conditions before checking LEDs and buzzers
# also, these four method will return 1 or 0, upon calling them, the status of LEDs and buzzers will also be updated
$water_monitor->ph_is_normal;
$water_monitor->temperature_is_normal;
$water_monitor->lacking_oxygen;
$water_monitor->water_dirty;
if ( $water_monitor->is_on_LED_DO ) {
# do something, same goes to the rest of the LEDs
}
if ( $water_monitor->is_on_buzzer_short ) {
# do something
} elsif ( $water_monitor->is_on_buzzer_long ) {
# do something
}
None
Some of the methods in this module can be confusing expecially when it comes to checking abnormal water conditions.
Please always always always check the water condition before checking the LEDs and buzzers status.
Acme::FishFarm
contains subroutines to check all the abnormal water conditions to ease this job.
Only 3 sensors are built-in. However, there is a 4th socket for the oxygen maintainer. For this socket, you'll need to manuall connect an Acme::FishFarm::OxygenMaintainer object by calling the add_oxygen_maintainer
method.
More sockets might be available in the future.
Installs a water condition monitoring system.
The %sensors
included are:
Optional. The default threshold range is [6.5, 7.5]
and the default pH is 7.0
.
This will set the threshold value of the water pH. Please pass in an array reference to this key in the form of [min_pH, max_pH]
The values are in the range of 1-14
. However, this range is not checked for incorrect values.
Optional. The default threshold range is [20, 25]
degree celcius and the default temprature is 25
.
This will set the threshold value of the water temperature. Please pass in an array reference to this key in the form of [min_temperature, max_temperature]
The ranges of values are between 0
and 50
degree celcius. However, this range is not checked for incorrect values. The unit celcius
is just a unit, it doesn't show up if you call any of it's related getters.
Optional. The default threshold is 180 ntu
and the default turbidity is set to 10 ntu
.
This will set the threshold of the turbidity of the water.
The range of values are between 0 ntu
and 300 ntu
. However, this range is not checked for incorrect values. The unit ntu
is just a unit, it doesn't show up if you call any of it's related getters.
Connects the oxygen maintainer ie Acme::FishFarm::OxygenMaintainer
system to this monitoring system.
For now, this module can only check if the oxygen is lacking or not. This module contains a user friendly method compared to the standard terminology used in the Acme::FishFarm::OxygenMaintainer
module. Other user friendly methods will be added in the future.
Sets / returns the current pH of the water.
$new_pH
is optional. If present, the current pH will be set to $new_ph
. Otherwise, returns the current pH reading.
Returns the pH threshold as an array ref.
Sets the pH threshold.
Returns true if the current pH is within the set range of threshold.
The pH LED will light up and a short buzzer will be turned on if only the pH is not normal.
Don't worry about the long buzzer as it will be taken care of behind the scene.
Sets / returns the current temperature of the water.
$new_temperature
is optional. If present, the current temperature will be set to $new_temperature
. Otherwise, returns the current temperature reading.
Returns the acceptable temperature range as an array ref.
Sets the water temperature threshold.
Returns true if the current temperature is within the set range of threshold.
The temperature LED will light up and a short buzzer will be turned on if only the temperature is not normal.
Don't worry about the long buzzer as it will be taken care of behind the scene.
Returns true if the current DO content is lower than the threshold.
Sets / returns the current turbidity of the water.
$new_turbidity
is optional. If present, the current turbidity will be set to $new_turbidity
. Otherwise, returns the current turbidity reading.
Returns the turbidity threshold.
Sets the turbidity threshold to $new_turbidity_threshold
.
Returns true if the current turbidity is highter then the threshold.
The turbidity LED will light up and a short buzzer will be turned on if only the turbidity is not normal.
Don't worry about the long buzzer as it will be taken care of behind the scene.
Returns true if the short buzzer is turned on.
A short buzzer will buzz ie turned on if there is 1 abnormal condition. If more than 1 abnormal conditions are present, the long buzzer will be turned on and this short buzzer will be turned off so that it's not too noisy :)
Returns true if the long buzzer is turned on and also turns off the short buzzer to reduce noise.
Tweak the buzzers. It's either the short buzzer or the long buzzer switched on only. This subroutine will be called whenever a condition checking method is called in order to update the buzzers status.
An LED is lighted up if the corresponding parameter is in abnormal state.
Lights up the LED for pH sensor, indicating abnormal pH.
Returns true if the LED of pH is lighted up.
Lights up the LED for temperature sensor, indicating abnormal water temperature.
Returns true if the LED of temperature is lighted up.
Lights up the LED for dissolved oxygen sensor, indicating low DO content. You fish might die :)
Returns true if the LED of DO is lighted up.
Light up the LED for turbidity sensor, indicating high level of waste etc. Fish might die :)
Returns true if the LED of DO is lighted up.
Returns the number of LEDs lighted up currently
Raphael Jong Jun Jie, <ellednera at cpan.org>
Please report any bugs or feature requests to bug-. at rt.cpan.org
, or through the web interface at https://rt.cpan.org/NoAuth/ReportBug.html?Queue=.. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc Acme::FishFarm::WaterConditionMonitor
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
CPAN Ratings
Search CPAN
Besiyata d'shmaya
This software is Copyright (c) 2021 by Raphael Jong Jun Jie.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)