Reading enthält mehrere Werte

Begonnen von Pi_01, 02 August 2020, 14:25:02

Vorheriges Thema - Nächstes Thema

Pi_01

Hallo,
ich habe ein Reading im folgenden Format vorliegen:

2020-08-02 14:14:43|20544

Wie kann ich innerhalb der Datei 99_myUtils.pm auf den ersten ("2020-08-02 14:14:43") und zweiten ("20544") Wert zugreifen?

Mit dem PERL-Code

my $var = ReadingsVal("meineRep","SqlResultRow_2","nothing");

erhalte ich den vollständigen "String"

2020-08-02 14:14:43|20544

zurück.

Ich dachte mit

@array=split(/|/,$var);

könnte ich die zwei Werte in zwei verschieden Variablen speichern. Das geht aber nicht.

Wo liegt der Fehler?

DS_Starter

Du musst den senkrechten Strich escapen damit er im Regex als normales Zeichen gewertet wird:

@array=split(/\|/,$var);
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Pi_01

oh mann, dass das |-Zeichen auch escapt werden muss, daran hätte ich nie gedacht.
Danke DS_Starter.

Abschließend noch eine Frage (ich möchte deswegen nicht extra einen neuen Thread aufmachen):

Wie kann man in PERL mit Datum arbeiten?
Ich habe das Format 2020-08-02 14:14:43 vorliegen und möchte prüfen: "nach 12 Uhr und vor 14 Uhr"

DS_Starter

#3
Zitatoh mann, dass das |-Zeichen auch escapt werden muss, daran hätte ich nie gedacht.
Ja, sonst wird | in einem Regex als "oder" Bedingung verwendet.

ZitatIch habe das Format 2020-08-02 14:14:43 vorliegen und möchte prüfen: "nach 12 Uhr und vor 14 Uhr"
Es gibt wie immer viele Möglichkeiten. Hier eine auf die Schnelle ohne Anspruch auf Fehlerfreiheit.
Nehmen wir an du hast:

$dt = "2020-08-02 14:14:43";

Dann kannst du anwenden:

my ($h) = $dt =~ /\s([0-9]*?):/;

In $h steht in dem Beispiel dann "14". Damit kannst du weitermachen.
Alternativ kannst du natürlich wieder splitten oder auch mit substr arbeiten.

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter