https://github.com/b1f6c1c4/e-curtain

Minimalistic IoT on Raspberry Pi, C++, Matlab/Simulink, Rust, JavaScript

https://github.com/b1f6c1c4/e-curtain

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.9%) to scientific vocabulary

Keywords

home-automation iot raspberry-pi smarthome
Last synced: 5 months ago · JSON representation

Repository

Minimalistic IoT on Raspberry Pi, C++, Matlab/Simulink, Rust, JavaScript

Basic Info
  • Host: GitHub
  • Owner: b1f6c1c4
  • License: mit
  • Language: C++
  • Default Branch: master
  • Homepage:
  • Size: 3.18 MB
Statistics
  • Stars: 6
  • Watchers: 5
  • Forks: 1
  • Open Issues: 2
  • Releases: 0
Topics
home-automation iot raspberry-pi smarthome
Created over 6 years ago · Last pushed over 2 years ago
Metadata Files
Readme License

README.md

e-curtain

Minimalistic IoT on Raspberry Pi

Features

  • Everything is DIY
  • Automatic bedroom temperature control for optimal sleep quality
  • Automatic room ventilation for optimal air quality
  • Automatic weather information retrival
  • Automatic room temperature measurement
  • Automatic curtain control
  • Automatic window control
  • Automatic AC cooling/heating/ventilating/off mode selection
  • Automatic duct gate (cut-off) control
  • Automatic fan control (on/off)
  • Automatic space heater control using IR
  • Keyfobs for easy global mode selection
  • Web-based dashboard for monitoring

Hardware requirement

  • Raspberry Pi Zero W (x3)
  • I2C-based temperature sensor
  • Continuous rotation servo
    • For curtain control
  • Stepper with controller
    • For window control
  • Servo (x4)
    • For AC mode selection (x2)
    • For duct gate control (x2)
  • Relay
    • For fan control
  • IR transmitter
    • For space heater remote control
  • Photoresistor
    • For space heater control feedback
  • RF keyfob(s) with receiver
    • For global mode selection
  • Other stuff (electrical)
    • Power adapters (x3)
    • Resistors, capacitors, transistors
    • Breadboards
    • Jump wires
    • Headers
  • Other stuff (mechanical)
    • AC unit
    • Space heater
    • Curtain with pulleys
    • Duct gate (x2)
    • Lead screw, copper nut, shaft coupler
    • Screws, washers, nuts
    • Duct tapes
  • Auxilliary tools
    • Oscilloscope and probes
    • RF receiver
    • Glue gun
    • Screw driver
    • Power drill

Layout

  • HOST0: The central controller, running F-G0
    • Servo x4
    • RF receiver
  • HOST1: The bedroom controller, running H1-G1
    • Temperature sensor
    • Continuous rotation servo
    • Stepper with controller
    • Relay
    • IR transmitter
    • Photoresistor
  • HOST2: The living room controller, running H2 and H0-C
    • Temperature sensor

Hardware setup

Read the source code and you will figure out.

Software setup

You need cmake, make, ssh, bash, node/npm, rustc/cargo

Prepare cross-compile toolchain

  1. On a Linux machine, install crosstools-ng
  2. Get the source code:

    bash git clone --depth=1 https://github.com/b1f6c1c4/e-curtain.git cd e-curtain

  3. Run the following:

    bash cd ct-ng ct-ng build.128 # Depends on how many cores you have

Prepare toolchain for rust

bash sudo systemctl start docker cargo install cross

MATLAB Simulink code generation

You simply generate script/libdumbac.slx and put the result in a folder called libdumbac. You may need licences for doing this.

We also need you know your MATLAB installation, so run the following:

bash ln -s /opt/MATLAB/R2020a matlab

Compile

bash make build -j128 # Depends on how many cores you have

Deploy

bash make HOST0=192.168.x.x HOST1=192.168.x.x HOST2=192.168.x.x deploy

You need to put weather API key into $HOST2:/etc/e-curtain/weather.json.

Data log are written to $HOST2:/var/log/e-curtain.bin.

We are also utilizing $HOST2:/var/lib/e-curtain/ for persistent storage.

License

MIT

Owner

  • Login: b1f6c1c4
  • Kind: user
  • Location: NJ, USA
  • Company: Princeton University

52BE D143 A92D BE96 2B83 092B 9BAC 0164 9600 1E70

GitHub Events

Total
Last Year

Issues and Pull Requests

Last synced: over 1 year ago

All Time
  • Total issues: 3
  • Total pull requests: 54
  • Average time to close issues: 11 days
  • Average time to close pull requests: 1 day
  • Total issue authors: 2
  • Total pull request authors: 2
  • Average comments per issue: 1.67
  • Average comments per pull request: 0.13
  • Merged pull requests: 50
  • Bot issues: 0
  • Bot pull requests: 52
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • b1f6c1c4 (2)
  • IoriOikawa (1)
Pull Request Authors
  • dependabot[bot] (51)
  • b1f6c1c4 (2)
Top Labels
Issue Labels
enhancement (3)
Pull Request Labels
dependencies (51) rust (13) javascript (11) enhancement (2)

Dependencies

backend/Cargo.lock cargo
  • 223 dependencies
backend/Cargo.toml cargo
  • actix-files 0.4.0
  • actix-service 1.0.0
  • actix-web 3
  • crossbeam-channel 0.4.0
  • env_logger 0.7
  • futures 0.3.1
  • json 0.12
  • lazy_static *
  • log *
  • notify 4.0.12
  • num_enum 0.5
  • parking_lot *
  • serde 1.0
  • serde_json 1.0
  • strum 0.19
  • strum_macros 0.19
  • tokio 0.2
frontend/package-lock.json npm
  • 1548 dependencies
frontend/package.json npm
  • @react-corekit/use-interval ^1.1.1
  • @testing-library/jest-dom ^4.2.4
  • @testing-library/react ^9.3.2
  • @testing-library/user-event ^7.1.2
  • dayjs ^1.9.4
  • grommet ^2.15.2
  • grommet-controls ^3.0.1
  • grommet-icons ^4.5.0
  • ky ^0.24.0
  • lodash ^4.17.21
  • numbro ^2.3.2
  • react ^16.13.1
  • react-dom ^16.13.1
  • react-gauge-chart ^0.2.5
  • react-scripts 4.0.0
  • styled-components ^5.2.0