{"id":23635047,"url":"https://github.com/struct78/iot-pool-temperature-sensor","last_synced_at":"2026-04-11T18:02:55.396Z","repository":{"id":149715086,"uuid":"574008251","full_name":"struct78/iot-pool-temperature-sensor","owner":"struct78","description":"A solution for checking your pool temperature without getting wet","archived":false,"fork":false,"pushed_at":"2026-03-23T05:56:38.000Z","size":1327,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-24T02:11:36.748Z","etag":null,"topics":["arduino","aws","aws-api-gateway","aws-cloudformation","aws-ec2","aws-lambda","aws-rds","aws-s3","cdk","cpp","mysql","react"],"latest_commit_sha":null,"homepage":"https://canwegointhepool.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/struct78.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-12-04T05:47:00.000Z","updated_at":"2026-03-23T05:56:43.000Z","dependencies_parsed_at":"2024-03-09T08:32:26.601Z","dependency_job_id":"18ad294e-58a9-4d85-95f4-bf5556b9639d","html_url":"https://github.com/struct78/iot-pool-temperature-sensor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/struct78/iot-pool-temperature-sensor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/struct78%2Fiot-pool-temperature-sensor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/struct78%2Fiot-pool-temperature-sensor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/struct78%2Fiot-pool-temperature-sensor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/struct78%2Fiot-pool-temperature-sensor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/struct78","download_url":"https://codeload.github.com/struct78/iot-pool-temperature-sensor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/struct78%2Fiot-pool-temperature-sensor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31689762,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T13:07:20.380Z","status":"ssl_error","status_checked_at":"2026-04-11T13:06:47.903Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","aws","aws-api-gateway","aws-cloudformation","aws-ec2","aws-lambda","aws-rds","aws-s3","cdk","cpp","mysql","react"],"created_at":"2024-12-28T05:29:51.274Z","updated_at":"2026-04-11T18:02:55.353Z","avatar_url":"https://github.com/struct78.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IOT Pool Temperature Sensor\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=struct78_iot-pool-temperature-sensor\u0026metric=alert_status\u0026token=c19464f3e3829c4002e9b4fe9e740a7b943e53d2)](https://sonarcloud.io/summary/new_code?id=struct78_iot-pool-temperature-sensor) [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=struct78_iot-pool-temperature-sensor\u0026metric=bugs\u0026token=c19464f3e3829c4002e9b4fe9e740a7b943e53d2)](https://sonarcloud.io/summary/new_code?id=struct78_iot-pool-temperature-sensor) [![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=struct78_iot-pool-temperature-sensor\u0026metric=code_smells\u0026token=c19464f3e3829c4002e9b4fe9e740a7b943e53d2)](https://sonarcloud.io/summary/new_code?id=struct78_iot-pool-temperature-sensor) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=struct78_iot-pool-temperature-sensor\u0026metric=coverage\u0026token=c19464f3e3829c4002e9b4fe9e740a7b943e53d2)](https://sonarcloud.io/summary/new_code?id=struct78_iot-pool-temperature-sensor) [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=struct78_iot-pool-temperature-sensor\u0026metric=reliability_rating\u0026token=c19464f3e3829c4002e9b4fe9e740a7b943e53d2)](https://sonarcloud.io/summary/new_code?id=struct78_iot-pool-temperature-sensor) [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=struct78_iot-pool-temperature-sensor\u0026metric=security_rating\u0026token=c19464f3e3829c4002e9b4fe9e740a7b943e53d2)](https://sonarcloud.io/summary/new_code?id=struct78_iot-pool-temperature-sensor) [![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=struct78_iot-pool-temperature-sensor\u0026metric=sqale_index\u0026token=c19464f3e3829c4002e9b4fe9e740a7b943e53d2)](https://sonarcloud.io/summary/new_code?id=struct78_iot-pool-temperature-sensor) [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=struct78_iot-pool-temperature-sensor\u0026metric=sqale_rating\u0026token=c19464f3e3829c4002e9b4fe9e740a7b943e53d2)](https://sonarcloud.io/summary/new_code?id=struct78_iot-pool-temperature-sensor) [![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=struct78_iot-pool-temperature-sensor\u0026metric=vulnerabilities\u0026token=c19464f3e3829c4002e9b4fe9e740a7b943e53d2)](https://sonarcloud.io/summary/new_code?id=struct78_iot-pool-temperature-sensor)\n\nThis project was inspired by my children, who kept asking to go outside to check if the pool was warm or not. Which prompted some questions:\n\n1) How warm is warm enough for everyone?\n2) How cold does the pool get in winter?\n3) Why are you asking me? Check the website! [canwegointhepool.com](https://canwegointhepool.com)\n\n#### Oh hell no\n![Cold](https://raw.githubusercontent.com/struct78/iot-pool-temperature-sensor/master/app/public/cold.png)\n\n#### You can go in, I'm just going to watch\n![Not bad](https://raw.githubusercontent.com/struct78/iot-pool-temperature-sensor/master/app/public/not-bad.png)\n\n#### Woohoo! Let's go!\n![Perfect](https://raw.githubusercontent.com/struct78/iot-pool-temperature-sensor/master/app/public/perfect.png)\n\n\n## How to install\nThe first step is to clone this repository, and update `config.json` with the domain name you want to use.\n\n## Infrastructure\nThe platform is built on AWS, which collects temperature readings in a database and serves the web app. The CDK project includes:\n\n- Route 53\n- API Gateway w/ Lambda integrations (including API key for the write endpoint)\n- DynamoDB\n\nThe web app is deployed using Vercel.\n\n### Estimated Cost\nThe deployed AWS infrastructure, depending on your region(s) and usage, will cost about $1-2 per month.\n\n### How to deploy \u0026 destroy\n\nTo install dependencies:\n```bash\ncd infrastructure\nnpm i\n```\n\nTo deploy, first we need to build the app:\n```bash\ncd app\nnpm run build\ncd ../infrastructure\n```\n\nThen run the deploy command:\n```bash\nnpm run deploy\n```\n\nTo destroy:\n```bash\nnpm run destroy\n```\n\n## App\nThe web app is a simple Next.js site which pulls the latest temperature reading from the API Gateway.\n\nTo install dependencies:\n\n```bash\ncd app\nnpm i\n```\n\nTo run:\n\n```bash\nnpm run develop\n```\n\nTo build:\n\n```bash\nnpm run build\n```\n\n## Arduino\nThe code for the Arduino project is also included. You will need the following items for it to work:\n\n| Item | Price |\n-------|---------\n[Arduino Uno Wifi Rev2](https://core-electronics.com.au/arduino-uno-wifi-rev2.html) | AUD$96.90\n[ProtoShield + Mini Breadboard for Arduino](https://core-electronics.com.au/protoshield-mini-breadboard-for-arduino.html) | AUD$8.25\n[Temperature Sensor - Waterproof (DS18B20)](https://core-electronics.com.au/temperature-sensor-waterproof-ds18b20.html) | AUD$21.13\n[Flanged Weatherproof Enclosure With PG-7 Cable Glands](https://core-electronics.com.au/flanged-weatherproof-enclosure-with-pg-7-cable-glands.html) | AUD$28.10\n[5mm Pitch 2-Pin Screw Terminal Block](https://core-electronics.com.au/2-pin-screw-terminal-block-5mm-pitch.html) | AUD$0.44\n[POLOLU-2443 - Screw Terminal Block: 3-Pin, 5 mm Pitch, Top Entry](https://core-electronics.com.au/screw-terminal-block-3-pin-5-mm-pitch-top-entry-4-pack.html) | AUD$3.44\n[Jumper wires](https://core-electronics.com.au/jumbo-jumper-wire-kit-for-solderless-breadboard-350-pcs.html) | AUD$27.50\n----------------\n\nTotal Spend: AUD $185.76\n\n### How to run\nFirst create a `credentials.h` file.\n\n```bash\ncd arduino/iot-pool-temperature-sensor\ncp credentials.h.example credentials.h\n```\n\nUpdate the credentials:\n```c++\nconst char WIFI_SSID[] = \"network\";\nconst char WIFI_PASSWORD[] = \"password\";\nconst char API_GATEWAY_ENDPOINT[] = \"api.{YOUR_DOMAIN}\";\nconst int API_GATEWAY_PORT = 443;\nconst char API_KEY[] = \"abc1234\"; # Retrieve this value from Secrets Manager\n```\n\nConnect the Arduino to your computer via USB and then deploy via the Arduino IDE.\n\n### Diagram\nI've created a simple [Fritzing](https://fritzing.org) diagram which explains how to wire everything up: [Download Fritzing Diagram](https://raw.githubusercontent.com/struct78/iot-pool-temperature-sensor/master/arduino/diagram.fzz)\n\n![IOT Pool Temperature Sensor Fritzing Diagram](https://raw.githubusercontent.com/struct78/iot-pool-temperature-sensor/master/arduino/diagram.svg)\n\n## Known Issues\n\nThere is a [known issue](https://github.com/arduino-libraries/WiFiNINA/issues/200) with the Arduino WiFi Rev2 and the WiFiNiNA library, whereby if you have multiple APs (wifi booster, range extenders, etc) with the same SSID, the board will often connect to the most distant AP. i.e. it is not smart enough to connect to the closest/strongest one, which leads to periodic drop outs.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstruct78%2Fiot-pool-temperature-sensor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstruct78%2Fiot-pool-temperature-sensor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstruct78%2Fiot-pool-temperature-sensor/lists"}