graficar_variables_de_ups_en_grafana
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| graficar_variables_de_ups_en_grafana [2024/05/25 17:07] โ created oso | graficar_variables_de_ups_en_grafana [2024/10/17 21:42] (current) โ external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| **Objective: | **Objective: | ||
| + | {{: | ||
| + | |||
| + | ๐ //This image was created in May 2024, using Bing AI. Apparently it struggles a bit with the cable routing... ToDo: create this same prompt (raspberry pi connected to an UPS using an USB cable, photorealistic) in a couple of years.// | ||
| ===== Code ===== | ===== Code ===== | ||
| Line 23: | Line 26: | ||
| host=" | host=" | ||
| port=3306, | port=3306, | ||
| - | user="facundo",ย | + | user="f******",ย |
| - | password=" | + | password=" |
| database=" | database=" | ||
| ) | ) | ||
| Line 96: | Line 99: | ||
| </ | </ | ||
| + | ===== Database Creation ===== | ||
| + | |||
| + | To create the database and the necessary tables for storing the UPS data in MariaDB, you would use the following SQL commands: | ||
| + | |||
| + | 1. **Create the Database:** | ||
| + | |||
| + | <code sql> | ||
| + | CREATE DATABASE UPSstats; | ||
| + | </ | ||
| + | |||
| + | 2. **Use the Database:** | ||
| + | |||
| + | <code sql> | ||
| + | USE UPSstats; | ||
| + | </ | ||
| + | |||
| + | 3. **Create the `variables` Table:** | ||
| + | |||
| + | This table will store the variable names and their corresponding IDs. | ||
| + | |||
| + | <code sql> | ||
| + | CREATE TABLE variables ( | ||
| + | id_variable INT PRIMARY KEY, | ||
| + | variable_name VARCHAR(255) NOT NULL | ||
| + | ); | ||
| + | </ | ||
| + | |||
| + | 4. **Insert the Variables: | ||
| + | |||
| + | Insert the variables you are interested in tracking into the `variables` table. | ||
| + | |||
| + | <code sql> | ||
| + | INSERT INTO variables (id_variable, | ||
| + | (1, ' | ||
| + | (2, ' | ||
| + | (3, ' | ||
| + | (4, ' | ||
| + | (5, ' | ||
| + | (6, ' | ||
| + | (7, ' | ||
| + | </ | ||
| + | |||
| + | 5. **Create the `ups_data` Table:** | ||
| + | |||
| + | This table will store the actual data readings from the UPS. | ||
| + | |||
| + | <code sql> | ||
| + | CREATE TABLE ups_data ( | ||
| + | id INT AUTO_INCREMENT PRIMARY KEY, | ||
| + | id_variable INT, | ||
| + | value VARCHAR(255), | ||
| + | timestamp DATETIME, | ||
| + | FOREIGN KEY (id_variable) REFERENCES variables(id_variable) | ||
| + | ); | ||
| + | </ | ||
| + | |||
| + | With these commands, you will have a database named `UPSstats` with two tables: `variables` for storing the names and IDs of the variables, and `ups_data` for storing the actual readings along with their timestamps. Make sure to execute these commands in your MariaDB client to set up the database before running your Python script. | ||
| + | |||
| + | <code sql> | ||
| + | |||
| + | <code sql> | ||
| ===== Flask Service ===== | ===== Flask Service ===== | ||
| Line 142: | Line 206: | ||
| **Note:** This script requires the following dependencies: | **Note:** This script requires the following dependencies: | ||
| </ | </ | ||
| + | |||
| + | ===== Design notes: ===== | ||
| + | |||
| + | In summary: | ||
| + | |||
| + | * Querying UPS status with ' | ||
| + | * Linux uses the ' | ||
| + | * ' | ||
| + | |||
| + | * Executing 'upsc ups' command with Python: | ||
| + | * In a Python script, the `subprocess` module is used to execute the 'upsc ups' command and capture the standard output (stdout). This allows integrating the UPS status query within the Python program' | ||
| + | |||
| + | * Receiving HTTP requests with Flask: | ||
| + | * A Flask server runs on a Raspberry Pi, listening for HTTP requests on port 5000. | ||
| + | * When a request is received at the URI '/ | ||
| + | |||
| + | * Querying UPS status from another server: | ||
| + | * From another server, a script performs the " | ||
| + | - It connects to the MariaDB database. | ||
| + | - Sends an HTTP request to the Raspberry Pi to execute 'upsc ups' and get the current UPS status. | ||
| + | - Receives the response and uses regular expressions (regex) to parse the output and extract the relevant values. | ||
| + | |||
| + | * Storing the data in MariaDB: | ||
| + | * The extracted data is inserted into the MariaDB database with a timestamp, assigning each value to its corresponding variable (e.g., ' | ||
| + | * This stored information is later used for visualizations and analysis in a Grafana dashboard. | ||
| ==== Results ==== | ==== Results ==== | ||
| Line 150: | Line 239: | ||
| {{: | {{: | ||
| + | **Live site:** | ||
| + | https:// | ||
graficar_variables_de_ups_en_grafana.1716656841.txt.gz ยท Last modified: 2024/10/17 21:42 (external edit)
