Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DESIGN] - Automation Software, Cloud Backend #130

Open
JLefebvre55 opened this issue Jul 16, 2022 · 1 comment · May be fixed by #131
Open

[DESIGN] - Automation Software, Cloud Backend #130

JLefebvre55 opened this issue Jul 16, 2022 · 1 comment · May be fixed by #131
Assignees
Labels
Scope: Engineering Design Design features and ideas Status: In Progress Work on this feature has begun Type: New Feature New feature

Comments

@JLefebvre55
Copy link
Member

JLefebvre55 commented Jul 16, 2022

Completion is tracked below.

Design Scope

Design and implement all software libraries and scripts for the automation subsystem.

Purpose

The purpose of the automation subsystem software suite is to enable sensor reading, actuator control, camera capture, environment schedule parsing and implementation, and cloud monitoring and control.

Method

See software control flow diagram.

@JLefebvre55 JLefebvre55 added Type: New Feature New feature Status: In Progress Work on this feature has begun Scope: Engineering Design Design features and ideas labels Jul 16, 2022
@JLefebvre55 JLefebvre55 self-assigned this Jul 16, 2022
@JLefebvre55 JLefebvre55 added this to Not Queued in PeaPod Design via automation Jul 16, 2022
@JLefebvre55 JLefebvre55 added this to the Design Sprint 1 milestone Jul 16, 2022
@JLefebvre55 JLefebvre55 linked a pull request Jul 16, 2022 that will close this issue
@JLefebvre55
Copy link
Member Author

JLefebvre55 commented Jul 16, 2022

Background

ToDo

As of Jul 16, 2022

  • Computer Software (Raspberry Pi Zero 2 W, TypeScript)

    • Main Menu/Idle State
    • Check env fields on import
    • Camera capture (w/ lighting control)
    • Controller Interface Class
      • Message parsing
      • Publisher start → Pull arduino reset → Revision listener → write initial instructions
      • Implement compile and flash (update) util function
      • Test board-to-board ICSP programming
      • Test automated flashing on revision fail
    • Control Systems Classes
      • PID (Air, Water temp)
      • Bang-Bang (Humidity, Gas Concentration)
    • Cloud Publishing Interface Class
      • Firebase Device Flow, Self-Registration, Key Caching
      • Project, Program Selection
      • MQTT batch publishing (data, error, debug) and subscribing (commands, config aka environment schedule)
        • Direct arduino instruction send via GCP “command”
        • Change data batch from “label:{batch:[{timestamp:..., value:...}, ...]}” to “label:[{timestamp:..., value:...}, ...]” (same for CloudPonics)
    • Local Logging Interface Class
  • Microcontroller Software (Arduino Nano, C/C++)

    • More sophisticated sensor/actuator object states (error codes, etc.)
    • Sensor and actuator toJSON method (names, ids, data labels)
    • Include units (str), precision (uint8_t numbers after decimal) in data messages
    • Sensor Interface Classes
      • CO2 Sensor (K30 Extended Range)
      • Air Temp, Hum Sensor (SHT31)
      • Water Temp Sensor
      • Water Pressure Sensor
    • Actuator Interface Classes
      • Lighting
      • Supply Pump, Solenoid
      • Dosage Pumps
      • Peltier TEC
    • JSON messaging, instruction parsing libraries
    • Main Menu/Idle State
    • Accountability (WDT, error/debug codes, software revision checks, unit tests)
      • Upload/wiring (blink)
      • JSON messaging
      • JSON parsing, instruction implementation
      • Sensor unit tests
  • Cloud Backend (Google Cloud Platform IoT Core, PubSub; Firebase PubSub, Cloud Functions, Firestore)

    • MQTT subscribing (data, error, debug), send to Firestore
    • MQTT publishing (commands, config selection/updating) from CloudPonics

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Scope: Engineering Design Design features and ideas Status: In Progress Work on this feature has begun Type: New Feature New feature
Projects
PeaPod Design
Not Queued
Development

Successfully merging a pull request may close this issue.

1 participant