FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Nighthawk am 24 Juni 2024, 19:31:27

Titel: [gelöst] Datenbank Werte manipulieren
Beitrag von: Nighthawk am 24 Juni 2024, 19:31:27
Hallo zusammen,

gibt es eine halbwegs einfache Möglichkeit die Werte in der Datenbank nachträglich zu verändern?
Es geht um Werte eines Gaszählers, die durch 10 dividiert werden sollen, also jeder einzelne Wert / 10.
Auf die Schnelle habe ich in der DBRep Wiki keine klare Möglichkeit gefunden, aber evtl. übersehe ich da etwas.

Der DB-Inhalt sieht wie folgt aus:
| 2023-05-20 09:15:27 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12313            | Gaszaehler_Longcount | 12313            | NULL |
| 2023-05-20 09:17:27 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12314            | Gaszaehler_Longcount | 12314            | NULL |
| 2023-05-20 09:20:27 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12315            | Gaszaehler_Longcount | 12315            | NULL |
| 2023-05-20 09:23:27 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12316            | Gaszaehler_Longcount | 12316            | NULL |
| 2023-05-20 09:25:27 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12317            | Gaszaehler_Longcount | 12317            | NULL |
| 2023-05-20 09:28:26 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12318            | Gaszaehler_Longcount | 12318            | NULL |
| 2023-05-20 09:30:26 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12319            | Gaszaehler_Longcount | 12319            | NULL |
| 2023-05-20 09:33:26 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12320            | Gaszaehler_Longcount | 12320            | NULL |
| 2023-05-20 09:36:26 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12321            | Gaszaehler_Longcount | 12321            | NULL |
| 2023-05-20 09:38:26 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12322            | Gaszaehler_Longcount | 12322            | NULL |
| 2023-05-20 09:41:30 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12323            | Gaszaehler_Longcount | 12323            | NULL |
| 2023-05-20 09:43:26 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12324            | Gaszaehler_Longcount | 12324            | NULL |
| 2023-05-20 09:46:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12325            | Gaszaehler_Longcount | 12325            | NULL |
| 2023-05-20 09:49:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12326            | Gaszaehler_Longcount | 12326            | NULL |
| 2023-05-20 09:51:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12327            | Gaszaehler_Longcount | 12327            | NULL |
| 2023-05-20 09:54:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12328            | Gaszaehler_Longcount | 12328            | NULL |
| 2023-05-20 09:57:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12329            | Gaszaehler_Longcount | 12329            | NULL |
| 2023-05-20 09:59:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12330            | Gaszaehler_Longcount | 12330            | NULL |
| 2023-05-20 10:02:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12331            | Gaszaehler_Longcount | 12331            | NULL |
| 2023-05-20 10:04:24 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12332            | Gaszaehler_Longcount | 12332            | NULL |

nach der Manipulation sollte dann folgendes in der DB stehen:

| 2023-05-20 09:15:27 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12313            | Gaszaehler_Longcount | 1231.3            | NULL |
| 2023-05-20 09:17:27 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12314            | Gaszaehler_Longcount | 1231.4            | NULL |
| 2023-05-20 09:20:27 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12315            | Gaszaehler_Longcount | 1231.5            | NULL |
| 2023-05-20 09:23:27 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12316            | Gaszaehler_Longcount | 1231.6            | NULL |
| 2023-05-20 09:25:27 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12317            | Gaszaehler_Longcount | 1231.7            | NULL |
| 2023-05-20 09:28:26 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12318            | Gaszaehler_Longcount | 1231.8            | NULL |
| 2023-05-20 09:30:26 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12319            | Gaszaehler_Longcount | 1231.9            | NULL |
| 2023-05-20 09:33:26 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12320            | Gaszaehler_Longcount | 1232.0            | NULL |
| 2023-05-20 09:36:26 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12321            | Gaszaehler_Longcount | 1232.1            | NULL |
| 2023-05-20 09:38:26 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12322            | Gaszaehler_Longcount | 1232.2            | NULL |
| 2023-05-20 09:41:30 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12323            | Gaszaehler_Longcount | 1232.3            | NULL |
| 2023-05-20 09:43:26 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12324            | Gaszaehler_Longcount | 1232.4            | NULL |
| 2023-05-20 09:46:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12325            | Gaszaehler_Longcount | 1232.5            | NULL |
| 2023-05-20 09:49:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12326            | Gaszaehler_Longcount | 1232.6            | NULL |
| 2023-05-20 09:51:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12327            | Gaszaehler_Longcount | 1232.7            | NULL |
| 2023-05-20 09:54:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12328            | Gaszaehler_Longcount | 1232.8            | NULL |
| 2023-05-20 09:57:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12329            | Gaszaehler_Longcount | 1232.9            | NULL |
| 2023-05-20 09:59:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12330            | Gaszaehler_Longcount | 1233.0            | NULL |
| 2023-05-20 10:02:25 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12331            | Gaszaehler_Longcount | 1233.1            | NULL |
| 2023-05-20 10:04:24 | AC     | ARDUCOUNTER | Gaszaehler_Longcount: 12332            | Gaszaehler_Longcount | 1233.2            | NULL |
Titel: Aw: Datenbank Werte manipulieren
Beitrag von: DS_Starter am 24 Juni 2024, 20:17:47
Der Setter

 changeValue

mit der Perl code enclosed in {"..."}-Option sollte das tun was du suchst. Also:

... new={"$VALUE = $VALUE/10"}

Denke an ein Backup oder vllt. hast du eine DB zum üben vorher.
Die Selektionskriterien (Device, Reading) richtig einstellen damit auch nur die richtigen Datensätze umgesetzt werden.
Titel: Aw: Datenbank Werte manipulieren
Beitrag von: Nighthawk am 26 Juni 2024, 20:04:44
Hallo Heiko,

danke, das ist genau das was ich gesucht habe :-)

Gruß
Alex