
Security News
Crates.io Users Targeted by Phishing Emails
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
aquarium-control
Advanced tools
Automated lighting control software for an aquarium using a Raspberry Pi. Lighting can be run on a schedule, configurable by the user, that can change lights at a set time, or based on a solar event such as sunrise and sunset. A server is provided that displays a mobile web friendly status page and exposes the override controls.
Note: figuring out how to connect the Pi to the lighting hardware is left as an exercise for the reader since there are so many different lighting systems out there.
Install with NPM:
npm install -g aquarium-control
To get aquarium control to start on startup, you can use PM2 or a similar system.
IMPORTANT: your Raspberry Pi must be set to local time, but by default it is set to UTC. To change it, run sudo dpkg-reconfigure tzdata
and follow the prompts.
There are two files that need to be configured before you can use Aquarium Control: config.json and schedule.json
This file contains the main configuration for Aquarium Control. An example configuration file looks like:
{
"location": {
"latitude": 37.546267,
"longitude": -121.971132
},
"port": 3000,
"pins": {
"day": "GPIO17",
"night": "GPIO5"
},
"schedule": "./schedule.json",
"logFile": "/var/log/aquarium-control"
}
The location
option specifies the latitude and longitude of the server. You can use a site such as latlong.net to find your location. These coordinates are used to calculate the sunrise and sunset times for your location.
The port
option specifies the port that the status and override server listens on. This parameter is optional and defaults to 80.
The pins
option is used to specify the two pins that control the day and night time lights. For more information on pin naming schemes, check out the Raspi IO wiki.
The schedule
option specifies where to find the second configuration file. This path is relative to the config.json file.
The logFile
option specifies the folder to store log files in. By default, log files are capped in size, and archived in files called log1, etc, which is why they are stored in a folder.
This file contains all of the information about lighting state and it's schedule. An example schedule file looks like:
{
"mode": "program",
"overrideState": "day",
"schedule": [
{
"name": "Sunrise",
"type": "dynamic",
"event": "sunrise",
"state": "day"
},
{
"name": "Sunset",
"type": "dynamic",
"event": "sunset",
"state": "night"
},
{
"name": "Night",
"type": "manual",
"time": {
"hour": 23,
"minute": 0
},
"state": "off"
}
]
}
The first entry, mode
, specifies whether we are in program mode or automatic mode. This is set automatically by the configuration server.
The next entry, ```overrideState`, specifies what lighting state the aquarium should be in when in override mode. This is also set automatically by the configuration server.
The third entry, schedule
, must be specified manually. This is the schedule the lights will follow when in program mode. Each entry in the array represents a state change.
Each entry comes in one of two forms: manual and dynamic. A manual entry takes in a specific time and always runs at that specific time. A dynamic entry, however, figures out the time for a specified solar event for each day, and will vary throughout the year.
The first part of each entry is the name
property. This is used for display on the configuration website, and is not used for any other purpose.
The type
property specifies whether the entry is a dynamic or manual entry, and must be either dynamic
or manual
.
The state
property specifies what the lighting state should be switched to, and must be day
, night
, or off
.
If the entry's mode is dynamic
, there must be an event
property that specifies what event to use. This value must be one of the properties specified by suncalc.
If the entry's mode is manual
, there must be a time
property that specifies the hour
(in 24 hour format) and the minute
of the entry.
All schematics, layouts, software, and other documentation for aquarium-control is released under the General Public License.
Copyright (C) 2013-2015 Bryan Hughes bryan@theoreticalideations.com
Aquarium Control is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Aquarium Control is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Aquarium Control. If not, see http://www.gnu.org/licenses/.
FAQs
Runs on a Raspberry Pi to control lighting for an aquarium
We found that aquarium-control demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
Product
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.