{"id":23021647,"url":"https://github.com/raupulus/raspberry-project-weather-station","last_synced_at":"2025-04-23T07:50:00.523Z","repository":{"id":95712864,"uuid":"196604874","full_name":"raupulus/raspberry-project-weather-station","owner":"raupulus","description":"Proyecto de estación meteorológica con Raspberry Pi - Mirror de https://gitlab.com/raupulus/raspberry-project-weather-station","archived":false,"fork":false,"pushed_at":"2024-09-24T06:12:23.000Z","size":1245,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-03-29T22:51:16.520Z","etag":null,"topics":["anemometer","python","python3","raspberry","raspberry-pi","sensor","station","weather","weatherstation"],"latest_commit_sha":null,"homepage":"https://api.fryntiz.dev","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raupulus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2019-07-12T15:40:54.000Z","updated_at":"2024-11-18T19:09:06.000Z","dependencies_parsed_at":"2025-02-08T09:29:19.232Z","dependency_job_id":"eb8939e6-4d08-46a5-8a98-2bd94c14db54","html_url":"https://github.com/raupulus/raspberry-project-weather-station","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fraspberry-project-weather-station","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fraspberry-project-weather-station/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fraspberry-project-weather-station/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raupulus%2Fraspberry-project-weather-station/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raupulus","download_url":"https://codeload.github.com/raupulus/raspberry-project-weather-station/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250395033,"owners_count":21423368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["anemometer","python","python3","raspberry","raspberry-pi","sensor","station","weather","weatherstation"],"created_at":"2024-12-15T12:18:48.383Z","updated_at":"2025-04-23T07:50:00.518Z","avatar_url":"https://github.com/raupulus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# raspberry-weather-station\n\nProyecto de estación meteorológica con Raspberry Pi\n\nEste proyecto se describe para la distribución Raspberry OS stable, con otros\nsistemas operativos o distribuciones pueden variar dependencias y tal vez\nel código.\n\nEs un proyecto de aprendizaje personal que comparto para quien le venga útil usarlo\ncomo orientativo.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/img1.jpeg\" alt=\"Imagen 1\" width=\"200\" height=\"200\"\u003e\n  \u003cimg src=\"images/img2.jpeg\" alt=\"Imagen 2\" width=\"200\" height=\"200\"\u003e\n  \u003cimg src=\"images/img3.jpeg\" alt=\"Imagen 3\" width=\"200\" height=\"200\"\u003e\n  \u003cimg src=\"images/img4.jpeg\" alt=\"Imagen 4\" width=\"200\" height=\"200\"\u003e\n\u003c/p\u003e\n\n## Hardware\n\nEl hardware con el que ha sido utilizado y probado, esto no descarta funcionar\nen otro tipo de hardware similar o con pequeñas modificaciones.\n\n- Raspberry PI 4\n- Sensor bosh BME280 (Humedad, presión y temperatura)\n- Sensor Bosh BME680 (Humedad, presión, temperatura y calidad del aire)\n- Sensor bh1750 (Luz)\n- Sensor VEML6070 (UV)\n- Sensor VEML6075 (UV, UVA, UVB)\n- Sensor CJMCU3935 (Rayos)\n- Sensor CJMCU811 (ECO2 y TVOC)\n- Sensor MQ2 (Gases)\n- Anemómetro de interruptor por iman, al girar cierra contactos.\n- Veleta usando encoder\n\n## Software\n\n- Raspbian (Debian 10)\n- Python 3.7.3-1\n- Postgresql 11+200+deb10u1\n\n## Módulos python\n\n- python3-requests\n- python3-sql\n- python3-postgresql\n- python3-sqlalchemy\n- python3-dotenv\n- python3-smbus\n- python3-rpi.gpio\n- python3-pip\n- python3-bme680\n\n## Models\n\n- BH1750 → Modelo que representa al sensor BH1750 para medir la cantidad de\n  luz en medida **lux**\n- BME280 → Modelo que representa al sensor bosh BME280 para medir\n  temperatura, humedad y presión.\n- BME280_humidity → Modelo que representa solo la humedad para el sensor bosh\n- BME280_temperature → Modelo que representa solo la temperatura para el sensor\n  bosh\n- BME280_pressure → Modelo que representa solo la presión para el sensor bosh\n- BME680 → Modelo que representa al sensor bosh BME680 para medir\n  temperatura, humedad, presión y calidad del aire.\n- BME680_humidity → Modelo que representa solo la humedad para el sensor bosh\n- BME680_temperature → Modelo que representa solo la temperatura para el sensor\n  bosh\n- BME680_pressure → Modelo que representa solo la presión para el sensor bosh\n- BME680_air_quality → Modelo que representa solo la calidad del aire para el sensor bosh\n- Anemometer → Modelo que representa la lectura de velocidad del viento a\n  través de un anemómetro que envía pulsos por un pin GPIO\n- CJMCU3935 → Modelo para el Detector de rayos\n- CJMCU811 → Modelo para el sensor de calidad del aire\n- CJMCU811_eco2 → Modelo para ECO2\n- CJMCU811_tvoc → Modelo para tvoc\n- MQ2 → Modelo para el sensor de gases\n- VEML6070 → Modelo para sensor UV\n- VEML6075 → Modelo para sensor UV/UVA/UVB\n- VEML6075_uv_index → Modelo para el índice UV\n- VEML6075_uva → Modelo para el índice UVA\n- VEML6075_uvb → Modelo para el índice UVB\n\n## Instalación\n\nA continuación describo los pasos para instalar que he ido usando durante el\ndesarrollo de la aplicación, será necesario adaptar a vuestra situación cada\npaso.\n\nPara el desarrollo trabajo en el directorio **git** dentro del **home** del\nusuario por defecto: **/home/pi/git/raspberry-weather-station**\n\nPero sería ideal que usaras un entorno virtual python para ello, estos pasos son orientativos según como los utilizo yo.\n\n### Crear usuario y base de datos sensor_data\n\n```bash\nsudo -u postgres createuser pi\nsudo -u postgres createdb -O pi -T template1 sensor_data\n```\n\nAl crear el usuario así, tal vez necesitemos cambiar la contraseña del\nusuario recién creado.\n\nPara ello entramos al intérprete de comandos para postgres con **psql**\n\n```bash\nsudo -u postgres psql\n```\n\nUna vez dentro le pedimos cambiar la contraseña del usuario **pi**:\n\n```postgresql\n\\password pi\n```\n\n### Clonar repositorio\n\nCreamos el directorio git y entramos a él, si deseamos otro directorio no\nes inconveniente mientras existan permisos adecuados para el usuario.\n\n```bash\nmkdir /home/pi/git\ncd /home/pi/git\ngit clone https://gitlab.com/fryntiz/raspberry-weather-station.git\n```\n\n### Instalar dependencias\n\nInstalamos las dependencias desde el gestor de paquetes:\n\n```bash\nsudo apt install python3-dotenv python3-sql python3-sqlalchemy \\\n    python3-psycopg2 python3-smbus python3-requests python3-rpi.gpio \\\n    python3-pip\n```\n\nInstalamos dependencias desde el gestor de paquetes de python3, pip3\n\n```bash\npip3 install adafruit-circuitpython-veml6070\npip3 install bme680\npip3 install adafruit-circuitpython-veml6075\npip3 install RPi_AS3935\n```\n\n### Asignar tarea cron para ejecutarse automáticamente al iniciar la raspberry.\n\nPodemos hacer que se inicie automáticamente al iniciar nuestra raspberry y\nde esta forma asegurarnos que siempre tomará datos aunque sea reiniciada.\n\nEn el crontab se añade la línea hacia el script indicando que lo ejecute nuestro\nusuario.\n\nAdicionalmente guardo toda la salida en un log temporal dentro de **/tmp**,\nesto tiene el inconveniente de que se pierde al reiniciar. Lo mantengo así\npues solo lo utilizo para depurar la salida y ver errores que pueda ir\ncorrigiendo. Puedes utilizar cualquier directorio para mantener permanente el\nlog.\n\nNótese que al crontab le asigno un retardo de 30 segundos para dejar tiempo a\nterminar de cargar el sistema (no era necesario pero así aseguro que se\nejecuta cuando añada más servicios provocando el retraso del sistema listo)\n\nAñadir la siguiente línea a crontab:\n\n@reboot pi sleep 30 \u0026\u0026 python3 /home/pi/git/raspberry-weather-station/main.py \u003e\u003e /tmp/log-raspberry-weather-station.log 2\u003e\u003e /tmp/log-raspberry-weather-station.log\n\n## Añadir nuevo sensor (añadir pasos para nuevo sensor)\n\nEstá en proceso de refactorización de código para añadir un nuevo sensor de\nforma más sencilla desde un único lugar y recorrer todos los sensores de forma\ndinámica (por ejemplo en un array con el nombre de su tabla para db)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraupulus%2Fraspberry-project-weather-station","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraupulus%2Fraspberry-project-weather-station","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraupulus%2Fraspberry-project-weather-station/lists"}