Coder Social home page Coder Social logo

michaeljolley / aviary Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 0.0 69.61 MB

Aviary is a soil moisture management system that runs within a Particle mesh network consisting of an Argon and n Xenons.

License: MIT License

C++ 100.00%
cplusplus iot particle-argon particle-iot particle-xenon

aviary's Introduction

Find Me Everywhere!

GitHub followers Twitch Status Twitter Follow YouTube Channel Subscribers Discord

๐Ÿ‘‹ Hi! I'm Michael.

AKA: The Bald Bearded Builder

I've been a developer since... well, we didn't have CSS and you had to decide between JavaScript and VBScript for interactivity.

After years of building and leading developers, I now spend my days creating workshops, live streams, demos and other content to help developers learn new skills and level up their careers.

Here's a few of my recent ramblings:

๐Ÿ“ Recent Blog Posts

Choosing Between Controllers and Minimal API for .NET APIs

Alias any Type with C# 12

Using Primary Constructors in C# 12 & .NET 8

๐Ÿ“บ Recent YouTube Videos

Should I Use IEnumerable, IQueryable, ICollection, or IList? Don't Make This Dependency Injection Mistake! Stop Using the var Keyword!

๐Ÿ“ฝ๏ธ Random Twitch Clips

Yummy delete word Updating our VS Code extension to use ComfyJS  |  !help !theme !giving

aviary's People

Contributors

allcontributors[bot] avatar michaeljolley avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

aviary's Issues

Only request watering between the hours of X & Y

Current Situation

When the baby bird sends moisture level and mother bird determines whether to water, the decision is make irrespective of the time of day. To prevent mold & fungi, we only want to water during daylight hours.

Goal

  • Need way to store a start and end hour in 24 hr format on mother bird
  • Mother bird should consider the start and end hour and always return false if outside of those hours

Monitor moisture levels rather than distance

Current Situation

Currently the code is using a Grove ultrasonic range sensor to detect distance in centimeters. It sends that value as moistureLevel. We need to update this to actually use a moisture sensor and send actual moisture levels to Mother Bird.

@bsatrom introduced me to the Adafruit STEMMA Soil Sensor - I2C Capacitive Moisture Sensor and I've got 5 on the way here.

Goals

  • In Baby Bird, remove references/code related to the ultrasonic range sensor and replace with references/code to communicate with the Adafruit Sensor
  • Return the true moisture level in the payload to Mother Bird

Baby birds should chirp to mother

It would be nice to use something like chirp.io to play a "chirping" sound when sending info to mother-bird.

Goals

  • Identify speakers we can attach to the Xenon to play a chirp
  • Use chirp.io or something similar to play a chirp as we send data

Put the baby-bird to sleep when not actively sensing/watering to save battery power

Current Situation

The baby-bird is using delay(2000) in the loop method to check and send the moisture level every two seconds. However, we won't need to check this often and don't need to use battery power when not actively sensing or watering.

Goals

  • Let baby-bird go to sleep for X seconds and then reawaken
  • Upon startup or reawakening, check moisture level and send to mother-bird.
  • Stay awake until we hear from mother-bird
  • Upon receipt of hydration state from mother-bird:
    • If mother-bird told us to water, then begin watering and checking moisture level every Y seconds to send updated moisture level to mother-bird
    • If mother-bird told us to not water:
      • Turn off solenoid valve if currently watering
      • Go to sleep for X seconds

Activate/deactivate solenoid valve to water the planter box

Current Situation

We want to open a solenoid valve allowing water into the planter box when the Baby Bird's isHydrated property becomes false. To do this, we first have to identify a solenoid valve to use in our project.

Let's first identify, discuss & find consensus on a solenoid valve to use in this issue's comments .

Once we've identified the valve, we'll want to write some code for it.

In the solenoidControl method of Baby Bird, if isHydrated is false, we turn on the D7 LED. We'll continue doing that but we need to update the method to also activate/deactivate the solenoid valve appropriately.

Goals

  • Identify and obtain consensus on the solenoid valve we'll be using
  • Within the solenoidControl method of Baby Bird, we need to activate/deactivate the chosen solenoid valve

Check weather API for forecast

Current Situation

If moisture level drops below a certain level we are telling the baby bird to turn on the water.

Goals

We want to get the hourly rain forecast for the day. If we determine we need to water and there's a chance of rain between now and 6pm, wait until the hour with the highest rain chance passes before sending request to water.

  • Only get the hourly forecast once per day and cache on mother bird for subsequent requests that day.

Identify a power supply/solar panel for use by Baby Birds in their birdhouse

Current Situation

Our Baby Birds will live in an enclosed birdhouse. They will need an independent power supply that can power them and (hopefully) the solenoid valve identified in #11.

Ideally we'd be able to achieve the goals below.

Goals

  • Identify a power supply that can provide constant power to the Baby Bird (Particle Xenon) and occasional (at most daily for ~20 minutes) power to the solenoid valve identified in #11. (Some type of battery)
  • Identify a solar panel that can sit on our birdhouse roof to allow recharging of the battery above.
  • Possibly have some juice left over to power some speakers (we'll want to eventually add the ability to chirp when sending data to Mother Bird)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.