Acme::FishFarm::WaterLevelMaintainer - Water Level Maintainer for Acme::FishFarm

- NAME
- VERSION
- SYNOPSIS
- EXPORT
- CREATION RELATED MEHODS
  - install ( %options )
- WATER LEVEL DETECTION RELATED METHODS
  - current_water_level ( $new_water_level )
  - low_water_level_threshold
  - set_low_water_level_threshold ( $new_threshold )
  - is_low_water_level
- PUMPS RELATED METHODS
  - water_level_increase_height
  - set_water_level_increase_height ( $new_height )
  - pump_water_in
- AUTHOR
- BUGS
- SUPPORT
- ACKNOWLEDGEMENTS
- LICENSE AND COPYRIGHT

# NAME

Acme::FishFarm::WaterLevelMaintainer - Water Level Maintainer for Acme::FishFarm

# VERSION

Version 1.01

# SYNOPSIS

        use 5.010;

        use Acme::FishFarm qw( reduce_precision );
        use Acme::FishFarm::WaterFiltration;

        my $water_level = Acme::FishFarm::WaterLevelMaintainer->install;

        say "Water level maintainer installed and switched on!\n";

        my $height_increase;
        my $water_level_threshold;
        my $current_reading;

        while ( "Fish are living under the water..." ) {

            $current_reading = reduce_precision( rand(10) );
            $height_increase = $water_level->water_level_increase_height;
            $water_level_threshold = $water_level->low_water_level_threshold;

            $water_level->current_water_level( $current_reading ); # input by user
            print "Current Water Level: ", $current_reading, " m (low: < ", $water_level_threshold, " m)\n";

            if ( $water_level->is_low_water_level ) {
                print "  !! Water level is low!\n";
                $water_level->pump_water_in;
                print "  Pumping in ", $height_increase, " m of water...\n";
                print "Current Water Level: ", $water_level->current_water_level, "\n";
            } else {
                print "  Water level is still normal.\n";
            }

            sleep(1);
            say "";
        }

# EXPORT

None

# CREATION RELATED MEHODS

## install ( %options )

Installs a water level maintainer system. This system only pumps water in if the water level is lower than the threshold value.

The supported `%options` are:

current_water_level

  The default water level is to `5 unit`.

low_water_level_threshold

  The default threshold is `2 unit`.

  If the current water level is lower than this threshold, then you need to pump water into the tank.

increase_water_level_by

  This is the height of the water level to increase when the water is pumped in.

  The default value is `0.5 unit`.

# WATER LEVEL DETECTION RELATED METHODS

## current_water_level ( $new_water_level )

Sets / returns the current water level of the water.

`$new_water_level` is optional. If present, the current water level will be set to `$new_water_level`. Otherwise, returns the current water level (depth).

## low_water_level_threshold

Returns the low water level threshold.

## set_low_water_level_threshold ( $new_threshold )

Sets the low water level threshold.

## is_low_water_level

Returns `1` if the DO level is less than the threshold value. Otherwise, returns `0`.

# PUMPS RELATED METHODS

For the pumping mechanism, just assume that the pumps can actually pump in certain metres of water each time :)

## water_level_increase_height

Returns the height of water level to increase each water pumping action. See `pump_water_in` below.

## set_water_level_increase_height ( $new_height )

Sets the height of water level to increase to `$new_height`.

## pump_water_in

Pumps water into the tank to increase the height of the water level.

# AUTHOR

Raphael Jong Jun Jie, `<ellednera at cpan.org>`

# BUGS

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.

# SUPPORT

You can find documentation for this module with the perldoc command.

        perldoc Acme::FishFarm::WaterLevelMaintainer

You can also look for information at:

- RT: CPAN's request tracker (report bugs here)

  https://rt.cpan.org/NoAuth/Bugs.html?Dist=.

- CPAN Ratings

  https://cpanratings.perl.org/d/.

- Search CPAN

  https://metacpan.org/release/.

# ACKNOWLEDGEMENTS

Besiyata d'shmaya

# LICENSE AND COPYRIGHT

This software is Copyright (c) 2021 by Raphael Jong Jun Jie.

This is free software, licensed under:

      The Artistic License 2.0 (GPL Compatible)