A nano-sized weather station based on a Raspberry Pi with an API, iOS & Mac Catalyst app, and sensor-based automations.

Overview

Nanotool logo Nanotool

A nano-sized weather station based on a Raspberry Pi with an API, iOS & Mac Catalyst app, and sensor-based automations.

Nanotool App Banner

Nanotool App Banner

Nanotool Circuit Diagram

Descriere

Nanotool logo Vremea este deseori instabilă și imprevizibilă. În plus, în multe locații nu se află stații meteo în apropiere, așa că prognoza pentru aceste zone nu este întocmai corectă. Multe acțiuni ale noastre depind de vreme, de la cum ne îmbrăcăm, până la udarea florilor. Cert este că trebuie să fim bine informați despre aceasta. Stația meteo Nanotool rezolvă aceste probleme.

Nanotool este o stație meteo ce are la bază un Raspberry Pi 4B. Aceasta are conectați mai mulți senzori ce monitorizează condițiile atmosferice, și dispune de un API ce facilitează comunicarea cu aceasta. Controlul stației este ușurat de aplicația pentru iPhone, iPad și Mac.

Pentru a o înțelege cât mai bine, vremea trebuie monitorizată. Stația monitorizează zilnic vremea (mai precis, viteza și direcția vântului, cantitatea de ploaie, temperatura, presiunea și umiditatea aerului) și înregistrează datele. Acestea pot fi vizualizate sub formă de grafic în orice moment, folosind aplicația stației.

Uneori este necesar un răspuns instant la acțiunea vremii, însă cand suntem la distantă de casă, nu putem realiza acțiuni precum pornitul / opritul unui furtun cu apă ce udă plantele, sau controlul jaluzelelor. Nanotool poate controla dispozitive externe automat, cu ajutorul a 4 relee și al API-ului ce ușurează configurarea acestor automatizări.

Tehnologii

Nanotool folosește un Raspberry Pi 4B (4GB RAM) cu Raspberry Pi OS Lite (Bullseye, 64-bit). La boot, aceasta rulează un script Python ce salvează zilnic datele înregistrate de senzori. Acesta conține și server-ul web API, care este folosit de aplicație pentru comunicarea cu stația meteo.

Built-in API

Nanotool logo Nanotool are un API built-in scris cu ajutorul Flask (Python)
Acesta ușurează comunicarea cu stația meteo, dar și crearea unor accesorii ce folosesc acest API. API-ul trimite răspunsuri JSON la request-uri de tip GET / POST, sau fișiere CSV atunci când datele înregistrate de senzori din zilele precedente sunt descărcate.

Cititi mai multe informatii despre software si API aici.

iOS & Mac Catalyst App

Nanotool logo Nanotool dispune de o aplicație realizată cu ajutorul SwiftUI. Aceasta foloseste API-ul pentru a comunica cu stația.
Aplicația afișează date live ale vremii, cât și un istoric pe zile. Acestea sunt dispuse sub formă de grafice.

Cititi mai multe informatii despre aplicatie aici.

Sarcini automatizate (“Automated Tasks”)

Nanotool Automated Tasks logo Sarcinile automatizate oferă un răspuns instant la acțiunea vremii. Când o anumită condiție este respectată pentru un anumit timp (valoarea înregistrată de un senzor atinge un anumit prag), atunci poate fi pornit / oprit unul dintre cele 4 relee controlate de Nanotool. Automatizările pot fi configurate cu ușurință prin API și aplicație. Astfel, Nanotool ușurează și facilitează automatizarea unor acțiuni precum udatul florilor, închiderea jaluzelelor, pornirea luminilor, sau pornirea unui sistem de încălzire / răcire.

Folosind aceste relee, se pot creea 2 tipuri de accesorii:

  • Simple - releele acționează pe post de întrerupător într-un circuit electric simplu Simple accessory example
  • Inteligente - releele acționează pe post de întrerupător conectat la un microcontroller (de exemplu: Raspberry Pi Pico, Arduino, ESP, ATTINY85). în general, aceste accesorii pot realiza de acțiuni mai complexe. Smart accessory example

Pentru automatizări au fost alese relee în loc de tranzistori, deoarece conferă un plus de siguranță prin separarea circuitelor. Pe lângă aceste accesorii controlate de relee, se pot crea altele care să folosească API-ul pentru a verifica singure datele înregistrate de senzori.

Senzori

Nanotool logoStația include mulți senzori ce permit monitorizarea vremii. Datele acestora sunt înregistrate zilnic într-un spreadsheet .csv, ce poate fi accesat prin API sub formă de JSON / descărcat.

Senzorii folosiți sunt:

  • Anemometru - măsoară viteza vântului folosind un întrerupător magnetic reed. La fiecare rotație, un magnet trece pe deasupra întrerupătorului, iar rotația este înregistrată de Pi.
  • Giruetă - măsoară direcția vântului
  • Pluviometru - măsoară cantitatea de apă provenită de la ploaie (l/m^2 = mm) într-un interval de timp dat. Acesta folosește tot un întrerupător magnetic reed.
  • BMP280 - măsoară temperatura și presiunea barometrică a aerului
  • DHT11 - măsoară umiditatea aerului
  • Raspberry Pi Camera Module v2 - folosind OpenCV, detectează prezența norilor pe cer sau venirea nopții

Senzorii custom-made (Anemometru, Giruetă și Pluviometru), cât și camera, trebuie calibrate pentru a oferi rezultate precise.

Internet, Conectivitate & Setări

Nanotool Connectivity logo Stația meteo Nanotool poate fi controlată prin conectarea la aceiași rețea de internet (Wi-Fi / Ethernet) a dispozitivelor.
API-ul poate fi folosit pentru controlarea setărilor scriptului Python. Pe lângă API, există și alte modalități prin care setările interne ale sistemului de operare pot fi modificate:

  • folosind Raspberry Pi Imager la momentul instalării OS-ului
  • prin controlul direct al plăcii folosind o tastatură și un display (placa poate fi scoasă din cutie cu ușurință pentru a o conecta la un display)
  • prin SSH

Design-ul Produsului & Sustenabilitate - Materiale reciclate

Stația este realizată cu materiale reciclate, provenite din obiecte precum becuri, jucării, ambalaje de alimente, hard disk-uri electronice și electroncasnice uzate. Acestea puteau să ajungă într-un coș de gunoi, însă soarta lor a fost schimbată de Nanotool.

Design-ul Nanotool este unul modern, simplist și modular, bazat pe elemente transparente ce expun componentele mecanice ale senzorilor custom-made, și cele electronice ale unității centrale. Chiar dacă este în mare parte realizat cu materiale reciclate, Nanotool se ridică la standardele industriale, dovedind o rigiditate sporită și rezistență la factorii de mediu, având și o eficiență sporită din punct de vedere termic.

Display-ul LCD & Librăria CharPi

Toate valorile importante înregistrate de senzori sunt afișate pe display-ul Hitachi HD44780 cu backpack I²C de 80 de caractere. Acesta are rata de refresh adaptivă, informațiile fiind actualizate pe display doar atunci când este nevoie. Pentru comunicarea cu acesta, Nanotool folosește librăria CharPi, realizată tot de creatorul stației Nanotool.

I2C

Multe dintre componentele utilizate de Nanotool folosesc I2C pentru a comunica cu Raspberry Pi-ul:

  • LCD 20x4 HD44780 - display de 80 caractere
  • BMP280 - senzor de temperatură și presiune
  • ADS1115 - convertor Analog la Digital (ADC), folosit la giruetă

Dependency-uri

Software pentru Raspberry Pi

Software-ul ce rulează pe Raspberry Pi a fost realizat în Python 3.
Următoarele module non-native Python au fost folosite pentru software:

  • CharPi (librărie realizată de creatorul Nanotool) - folosit pentru comunicarea cu LCD-ul HD44780 prin I2C
  • Flask - folosit pentru crearea server-ului web API
  • waitress - folosit pentru host-ul server-ului web atunci când API-ul trebuie să ruleze cu setările de production (nu de development)
  • adafruit_dht - folosit pentru comunicarea cu senzorul DHT11
  • adafruit_ads1x15 - folosit pentru comunicarea cu convertorul analogic la digital (ADS1115)
  • adafruit_bmp280 - folosit pentru comunicarea cu senzorul BMP280
  • board, busio - dependency-uri pentru comunicarea cu anumiți senzori ce folosesc librăriile Adafruit CircuitPython
  • OpenCV - folosit pentru analiza imaginilor capturate de cameră
  • picamera2 - folosit pentru comunicarea cu Raspberry Pi Camera Module v2
  • RPi.GPIO - folosit pentru controlul pinilor GPIO
  • gpiozero - folosit pentru a citi temperatura CPU (sau se poate folosi modulul os astfel: os.popen("vcgencmd measure_temp").read())

Aplicația iOS & Mac Catalyst

Aplicația a fost realizată în întregime folosind limbajul Swift. Au fost folosite următoarele framework-uri native ale iOS SDK:

  • SwiftUI - folosit pentru UI
  • WidgetKit - folosit pentru crearea widget-urilor pentru Home Screen și Today View pe dispozitivele iOS.
  • Intents & IntentsUI - folosit pentru configurarea widget-urilor de pe Home Screen-ul device-urilor iOS.

License

Imaginile din acest repo nu se supun condiților din licența codului open-source. Folosirea imaginilor in orice scop fără aprobarea creatorului acestui repo, cu excepția în care legislația permite acest lucru, este interzisă.

Licența poate fi accesată aici.

Legal

iPhone, iPad, iPadOS, Mac și Mac Catalyst sunt mărci comerciale ale Apple Inc., înregistrate în S.U.A. și în alte țări și regiuni.
IOS este o marcă comercială sau o marcă comercială înregistrată a Cisco, în S.U.A. și în alte țări.
Raspberry Pi este o marcă a Raspberry Pi Ltd.

You might also like...
Identify Intel-Only Apps on your Mac with ease:
Identify Intel-Only Apps on your Mac with ease:

Silicon About Identify Intel-Only Apps on your Mac with ease: License Project is released under the terms of the MIT License. Repository Infos Owner:

Manager the window of the mac.
Manager the window of the mac.

WindowManager For developping WindowManager please clone the repostority. For cloing

A command line tool for managing Swift Playground projects on your Mac.

swift-playground-tools A command line tool for managing Swift Playground projects on your Mac. Generate Xcode Project $ playground-tools generate-xcod

Billboard - Add a text to your Mac menu bar
Billboard - Add a text to your Mac menu bar

📰 Billboard Put text on your Mac status bar This is a little app that allows to

DevToys For mac
DevToys For mac

DevToysMac This is the mac app version of DevToys! How to install Download and extract the latest Releases. Extract DevToys.app from DevToys.zip Scree

Running GUI Linux in a virtual machine on a Mac

Running GUI Linux in a virtual machine on a Mac Install and run GUI Linux in a virtual machine using the Virtualization framework. การ build และใช้งาน

Google-Blogger-iOS-App - Using Google Blogger API to build an iOS app like Medium

Google Blogger iOS App Using Google Blogger API to build an iOS app like Medium!

🐦 An asynchronous Twitter library based on the Twitter v2 API

Twift Twift is an asynchronous Swift library for the Twitter v2 API. No external dependencies Only one callback-based method (requestUserCredentials)

Tofu - A simple Todo app built with SwiftUI, a REST API, and a local Realm cache
Tofu - A simple Todo app built with SwiftUI, a REST API, and a local Realm cache

Tofu A simple Todo app built with SwiftUI, a REST API, and a local Realm cache.

Releases(makefile-installer)
  • makefile-installer(Jul 14, 2022)

Owner
CMD
Hello World! I am CMD.
CMD
Docker images for Swift on Raspberry Pi and other ARM devices from balena's base images.

Swift on Balena Welcome to Swift on Balena – a set of Docker images for Swift on Raspberry Pi and other ARM devices. These images are based on balena'

Will Lisac 173 Dec 5, 2022
Demo project to sync color changes to an Raspberry Pi Mood Light via iOS/Android

Raspberry Pi Mood Light Demo project to remotely control an Raspberry Pi Mood Light over Bluetooth via iOS and Android. ?? Watch the video Overview In

Ditto 10 Oct 17, 2022
ProximitySensor - Property wrappers for using the Proximity Sensor from the SwiftUI app

ProximitySensor Property wrappers for using the Proximity Sensor from the SwiftU

null 2 Aug 20, 2022
Multiple Arcade Machine Emulator for iOS, iPadOS, tvOS, macOS (Catalyst)

MAME4iOS Original Author: David Valdeita (Seleuco) This is a port of MAME for iOS, iPadOS, tvOS and macOS. MAME4iOS is designed to run for modern iOS

null 438 Jan 4, 2023
Github iOS Client based on Github REST V3 API and GraphQL V4 API

ZLGithubClient Github iOS 客户端 by Existorlive Objective-c 2.0 Swift 5 Cocoapods 1.9.1 iOS >= 11.0 基于 Github REST V3 API 和 Github GraphQL V4 API 开发的iOS客

朱猛 55 Dec 29, 2022
Strucure: I used MVVM with Colusre binging modular architecture : Also I used openweathermap to get all information for current weather as it's easy t

Strucure: I used MVVM with Colusre binging modular architecture : Also I used openweathermap to get all information for current weather as it's easy t

Alaa Azab 0 Oct 7, 2021
A macOS menubar app to temporarily prevent the Mac from sleeping.

Caffeinate A macOS menubar app to temporarily prevent the Mac from sleeping. How does it work Left-clicking the cup will toggle Caffeinate. If the cup

Lennard Kittner 3 Dec 18, 2022
BioViewer - Protein (.pdb, .cif and .fasta) viewer for iPhone, iPad and Mac, using SwiftUI + SceneKit

BioViewer - Protein (.pdb, .cif and .fasta) viewer for iPhone, iPad and Mac, using SwiftUI + SceneKit

Raúl Montón 16 Dec 21, 2022
An ultra-lightweight native Discord client for vintage and modern Mac OS

Discord Lite An ultra-lightweight native Discord client for vintage and modern Mac OS Minimum System Requirements Mac OS X version 10.4 (Tiger) PowerP

null 155 Jan 2, 2023
MacLookup - Lookup for all Mac names, colors, model identifiers and part numbers

MacLookup Lookup for all Mac names, colors, model identifiers and part numbers.

Voyager Software Inc. 2 Jan 4, 2022