Commentum

Der Einfall, die Lüge, die Erdichtung



Die Wetterdatenbank 

Nachdem ja die "alte" WS1080-Wetterstation keine Daten mehr an MySql, später SQLite liefert, habe ich mich für eine "neue" Datenbank entschlossen. Sie soll (und muß ja nun) unabhängig von Programmen wie "WEEWX" die Daten der Wetterstation so einfach wie möglich speichern und für Auswertungen und die Darstellung im Web zur Verfügung stellen.

Also erzeugen wir  zuerst eine Tabelle für die Wetterdaten (einige Spalten habe ich nur für Testzwecke angelegt, diese können bei Bedarf geändert werden).

CREATE TABLE `Umgebungsdaten` (

`OID` bigint(20) NOT NULL,

`DATUM` date NOT NULL,

`UHRZEIT` time NOT NULL,

`DatumUhrzeit` datetime NOT NULL,

`TempBME280` decimal(8,2) DEFAULT NULL,

`TempDHT22` decimal(8,2) DEFAULT NULL,

`TempDS18B20Luft` decimal(8,2) DEFAULT NULL,

`TempDS18B20Boden` decimal(8,2) DEFAULT NULL,

`FeuchteBME280` decimal(8,2) DEFAULT NULL,

`FeuchteDHT22` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,

`LuftdruckBME280` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,

`LichtwertLDR1` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,

`LichtwertLDR2` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,

`Regenmenge` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,

`Windrichtung` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,

`Windstärke` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,

`Teichtemperatur` decimal(8,2) DEFAULT NULL,

`Wohnzimmer` decimal(8,2) DEFAULT NULL,

`Schlafzimmer` decimal(8,2) DEFAULT NULL,

`Arbeitszimmer` decimal(8,2) DEFAULT NULL,

`Keller` decimal(8,2) DEFAULT NULL,

`LFWohnzimmer` decimal(8,2) NOT NULL,

`LFSchlafzimmer` decimal(8,2) NOT NULL,

`LFArbeitszimmer` decimal(8,2) NOT NULL,

`LFKeller` decimal(8,2) NOT NULL,

`Zeitstempel` timestamp NULL DEFAULT current_timestamp()

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='Wetterdatenbank';

Nun können die Daten der Sensoren in die Tabelle eingefügt werden.  Hier nur ein Beispiel:

INSERT INTO `WETTERDATEN` (`OID`, `DATUM`, `UHRZEIT`, `DatumUhrzeit`, `TempBME280`, `TempDHT22`, `TempDS18B20Luft`, `TempDS18B20Boden`, `FeuchteBME280`, `FeuchteDHT22`, `LuftdruckBME280`, `LichtwertLDR1`, `LichtwertLDR2`, `Regenmenge`, `Windrichtung`, `Windstärke`, `P1`, `P2`, `P3`, `P4`, `Zeitstempel`, `P6`) VALUES (NULL, '2021-06-15', '11:22:43', '2021-06-15 11:22:43', '20,5', '20.3', '20,6', '19,5', '45', '46', '80', '12', '13', '0', '12', '6', NULL, NULL, NULL, NULL, '2021-06-16 11:22:43.000000', NULL);

Eine Datenbankabfrage könnte so aussehen: 

SELECT * FROM `WETTERDATEN` WHERE `DATUM` = '2021-06-15' AND `TempBME280` LIKE '%2%';

Mehrfachselektionen sind natürlich auch möglich:

SELECT * FROM `WETTERDATEN` WHERE `DATUM` = '2021-06-15' AND `TempBME280` LIKE '%2%' OR  `DATUM` = '2021-06-13' AND `TempDS18B20Luft` LIKE '%2%';

Diese Beispiele machen natürlich wenig Sinn, sollen aber einfach die Möglichkeiten aufzeigen.

Die Wetterdatenbank und die Tabellen mit der Wetterstation, aber auch der Umgebungsdaten:

Nach der Installation von MARIADB geht es los mit dem Erzeugung einer Datenbank und deren Tabellen.

Anmelden:

root@MANTELLA:/var# sudo mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 39
Server version: 10.5.15-MariaDB-0+deb11u1 Raspbian 11
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


Datenbank erzeugen:

MariaDB [(none)]> CREATE DATABASE wetterdaten;
Query OK, 1 row affected (0.001 sec)

Tabelle erzeugen:


CREATE TABLE `Umgebungsdaten` (
`OID` bigint(20) NOT NULL,
`DATUM` date NOT NULL,
`UHRZEIT` time NOT NULL,
`DatumUhrzeit` datetime NOT NULL,
`TempBME280` decimal(8,2) DEFAULT NULL,
`TempDHT22` decimal(8,2) DEFAULT NULL,
`TempDS18B20Luft` decimal(8,2) DEFAULT NULL,
`TempDS18B20Boden` decimal(8,2) DEFAULT NULL,
`FeuchteBME280` decimal(8,2) DEFAULT NULL,
`FeuchteDHT22` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,
`LuftdruckBME280` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,
`LichtwertLDR1` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,
`LichtwertLDR2` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,
`Regenmenge` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,
`Windrichtung` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,
`Windstärke` varchar(5) COLLATE utf8mb4_bin DEFAULT NULL,
`Teichtemperatur` decimal(8,2) DEFAULT NULL,
`Wohnzimmer` decimal(8,2) DEFAULT NULL,
`Schlafzimmer` decimal(8,2) DEFAULT NULL,
`Arbeitszimmer` decimal(8,2) DEFAULT NULL,
`Keller` decimal(8,2) DEFAULT NULL,
`LFWohnzimmer` decimal(8,2) NOT NULL,
`LFSchlafzimmer` decimal(8,2) NOT NULL,
`LFArbeitszimmer` decimal(8,2) NOT NULL,
`LFKeller` decimal(8,2) NOT NULL,
`Zeitstempel` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='Wetterdatenbank';

MariaDB [wetterdaten]> desc Umgebungsdaten;
+------------------+--------------+------+-----+---------------------+-------+
| Field            | Type         | Null | Key | Default             | Extra |
+------------------+--------------+------+-----+---------------------+-------+
| OID              | bigint(20)   | NO   |     | NULL                |       |
| DATUM            | date         | NO   |     | NULL                |       |
| UHRZEIT          | time         | NO   |     | NULL                |       |
| DatumUhrzeit     | datetime     | NO   |     | NULL                |       |
| TempBME280       | decimal(8,2) | YES  |     | NULL                |       |
| TempDHT22        | decimal(8,2) | YES  |     | NULL                |       |
| TempDS18B20Luft  | decimal(8,2) | YES  |     | NULL                |       |
| TempDS18B20Boden | decimal(8,2) | YES  |     | NULL                |       |
| FeuchteBME280    | decimal(8,2) | YES  |     | NULL                |       |
| FeuchteDHT22     | varchar(5)   | YES  |     | NULL                |       |
| LuftdruckBME280  | varchar(5)   | YES  |     | NULL                |       |
| LichtwertLDR1    | varchar(5)   | YES  |     | NULL                |       |
| LichtwertLDR2    | varchar(5)   | YES  |     | NULL                |       |
| Regenmenge       | varchar(5)   | YES  |     | NULL                |       |
| Windrichtung     | varchar(5)   | YES  |     | NULL                |       |
| Windstärke       | varchar(5)   | YES  |     | NULL                |       |
| Teichtemperatur  | decimal(8,2) | YES  |     | NULL                |       |
| Wohnzimmer       | decimal(8,2) | YES  |     | NULL                |       |
| Schlafzimmer     | decimal(8,2) | YES  |     | NULL                |       |
| Arbeitszimmer    | decimal(8,2) | YES  |     | NULL                |       |
| Keller           | decimal(8,2) | YES  |     | NULL                |       |
| LFWohnzimmer     | decimal(8,2) | NO   |     | NULL                |       |
| LFSchlafzimmer   | decimal(8,2) | NO   |     | NULL                |       |
| LFArbeitszimmer  | decimal(8,2) | NO   |     | NULL                |       |
| LFKeller         | decimal(8,2) | NO   |     | NULL                |       |
| Zeitstempel      | timestamp    | YES  |     | current_timestamp() |       |
+------------------+--------------+------+-----+---------------------+-------+
26 rows in set (0.003 sec)

Tabelle mit Testdaten füllen:

MariaDB [wetterdaten]> INSERT INTO `Umgebungsdaten` (`OID`, `DATUM`, `UHRZEIT`, `DatumUhrzeit`, `TempBME280`, `TempDHT22`, `TempDS18B20Luft`, `TempDS18B20Boden`, `FeuchteBME280`,  `FeuchteDHT22`, `LuftdruckBME280`, `LichtwertLDR1`, `LichtwertLDR2`,  `Regenmenge`, `Windrichtung`, `Windstärke`, `Teichtemperatur`, `Wohnzimmer`,`Schlafzimmer`, `Arbeitszimmer`, `Keller`,      `LFWohnzimmer`, `LFSchlafzimmer`, `LFArbeitszimmer`, `LFKeller`, `Zeitstempel`) VALUES  ('1', '2021-06-15', '11:22:43', '2021-06-15 11:22:43', '20.5', '20.3', '20.6', '19.5', '45',  '46', '80', '12', '13',  '10', '12', '6', '8', '6', '45', '56', '54',  '89', '90', '88', '22', '2022-02-19 11:22:43.000000');

Tabelle auslesen:

MariaDB [wetterdaten]> select * from Umgebungsdaten;https://homepagedesigner.telekom.de/.cm4all/widgetres.php/com.cm4all.wdn.Button/images/thumbnail.svg

+-----+------------+----------+---------------------+------------+-----------+-----------------+------------------+---------------+--------------+-----------------+---------------+---------------+------------+--------------+-------------+-----------------+------------+--------------+---------------+--------+--------------+----------------+-----------------+----------+---------------------+
| OID | DATUM      | UHRZEIT  | DatumUhrzeit        | TempBME280 | TempDHT22 | TempDS18B20Luft | TempDS18B20Boden | FeuchteBME280 | FeuchteDHT22 | LuftdruckBME280 | LichtwertLDR1 | LichtwertLDR2 | Regenmenge | Windrichtung | Windstärke  | Teichtemperatur | Wohnzimmer | Schlafzimmer | Arbeitszimmer | Keller | LFWohnzimmer | LFSchlafzimmer | LFArbeitszimmer | LFKeller | Zeitstempel         |
+-----+------------+----------+---------------------+------------+-----------+-----------------+------------------+---------------+--------------+-----------------+---------------+---------------+------------+--------------+-------------+-----------------+------------+--------------+---------------+--------+--------------+----------------+-----------------+----------+---------------------+
|   1 | 2021-06-15 | 11:22:43 | 2021-06-15 11:22:43 |      20.50 |     20.30 |           20.60 |            19.50 |         45.00 | 46           | 80              | 12            | 13            | 10         | 12           | 6           |            8.00 |       6.00 |        45.00 |         56.00 |  54.00 |        89.00 |          90.00 |           88.00 |    99.00 | 2021-06-16 11:22:43 |
|   1 | 2021-06-15 | 11:22:43 | 2021-06-15 11:22:43 |      20.50 |     20.30 |           20.60 |            19.50 |         45.00 | 46           | 80              | 12            | 13            | 10         | 12           | 6           |            8.00 |       6.00 |        45.00 |         56.00 |  54.00 |        89.00 |          90.00 |           88.00 |    99.00 | 2022-02-16 11:22:43 |
|   1 | 2021-06-15 | 11:22:43 | 2021-06-15 11:22:43 |      20.50 |     20.30 |           20.60 |            19.50 |         45.00 | 46           | 80              | 12            | 13            | 10         | 12           | 6           |            8.00 |       6.00 |        45.00 |         56.00 |  54.00 |        89.00 |          90.00 |           88.00 |    99.00 | 2022-02-19 11:22:43 |
|   1 | 2021-06-15 | 11:22:43 | 2021-06-15 11:22:43 |      20.50 |     20.30 |           20.60 |            19.50 |         45.00 | 46           | 80              | 12            | 13            | 10         | 12           | 6           |            8.00 |       6.00 |        45.00 |         56.00 |  54.00 |        89.00 |          90.00 |           88.00 |    22.00 | 2022-02-19 11:22:43 |
+-----+------------+----------+---------------------+------------+-----------+-----------------+------------------+---------------+--------------+-----------------+---------------+---------------+------------+--------------+-------------+-----------------+------------+--------------+---------------+--------+--------------+----------------+-----------------+----------+---------------------+
4 rows in set (0.001 sec)

Zurück



E-Mail
Infos