Uses a Raspberry pi to monitor the water level in my sump and will send an alert when the water is higher than a certain threshold. The purpose of this tool is to be alerted in case of a sump pump failure so I can react before the basement is flooded.
The Docker image can be built with the following command
python setup.py bdist_wheel && \
docker build . -t matthewjsporter/sump-level-sensor:latest- use aws configureto login to aws.
- since this project relies on having GPIO pins, we can run locally by mocking the gpio pins using the mocksumpentrypoint.
docker run -v ${HOME}/.aws:/root/.aws matthewjsporter/sump-level-sensor:latest mocksumpUnit tests can be ran using setup.py
python setup.py testDeployments are done through github actions. The workflow will deploy the image to Dockerhub. Watchtower is deployed on the raspberry pi where it will automatically pull down the latest version and redeploy. notifications are sent to a SNS message queue and is created using CloudFormation.
docker push matthewjsporter/sump-level-sensor:latestcloudformation will run during the deployment pipeline but can be ran from local using the following command.
aws cloudformation update-stack --stack-name sump-level-sensor --template-body file://aws/cloudformation.yml --parameters  ParameterKey=EmailParameter,ParameterValue=<email> ParameterKey=SMSParameter,ParameterValue=<phone>One time installation on the raspberry pi is needed
- Configure AWS credentials
sudo systemctl edit dockerand add the following content
[Service]
Environment="AWS_ACCESS_KEY_ID=<access-key>"
Environment="AWS_SECRET_ACCESS_KEY=<secret-key>"add the following to /home/pi/.profile
export AWS_ACCESS_KEY_ID=<access-key>
export AWS_SECRET_ACCESS_KEY=<secret-key>
export AWS_DEFAULT_REGION=us-east-1Use docker compose to start the containers
curl https://raw.githubusercontent.com/matthew-js-porter/sump-level-sensor/master/docker-compose.yml > docker-compose.yml
docker-compose up -dafter the initial installation is done, watchtower will install updates automatically.
Docker image scanning is done using Snyk as part of the deployment pipeline and results can be viewed on the github action logs. You can run a scan locally by running this command.
snyk container test --exclude-base-image-vulns --file=Dockerfile --policy-path=.snyk matthewjsporter/sump-level-sensor:latestOSS image scanning is done using Snyk as part of the deployment pipeline and results can be viewed on the github action logs. You can run a scan locally by running this command.
snyk test --file=sump_level_sensor.egg-info/requires.txt --package-manager=pipSonar scans are done as part of the deployment pipeline and results can be viewed on the github action logs. Results can also be found on Sonarcloud.
Circuit design can be found in circuit-diagram.fzz


