FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Octopus180 am 28 Juli 2018, 13:26:11

Titel: [gelöst] Anfängerfrage zu userreading
Beitrag von: Octopus180 am 28 Juli 2018, 13:26:11
Moin

ich habe folgendes Reading :

t_001_bdate              02.08.2018          2018-07-28 12:50:54

ich möchte gerne daraus ein neues Reading machen und zwar ungefähr so:

t_001_bdate_neu      02.08.                   2018-07-28 12:50:54

ich habe das mit

attr v_Geburt userReadings t_001_bdate_neu { my @c = split '.',ReadingsVal($name,'t_001_bdate',0);join(' ', $c[0], $c[1]) }

versucht, doch leider kommt nur ein leeres Reading dabei raus.

Ich habe schon gefühlte tausend Sachen gelesen aber als Anfänger verstehe ich nur Bahnhof.

Könnte mir bitte jemand erklären was ich machen muss um die Jahreszahl wegzubekommen.

Danke

Gruß Peter
                                         
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: mi.ke am 28 Juli 2018, 14:02:35
Moin.
Zunächst: Bitte benutze CodeTags (das # im Editor)

Zu Deinem Problem:Du könntest es z.B. mit "substr" versuchen
http://www.hidemail.de/blog/substr-perl.shtml (http://www.hidemail.de/blog/substr-perl.shtml)

Hoffe das hilft Dir.

Cheers

mi.ke
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: Octopus180 am 28 Juli 2018, 14:44:04
Erstmal Danke für deine Antwort. Die Seite habe ich auch schon öfters gefunden, aber als Anfänger verstehe ich nicht wie ich das in mein userreading umsetzten soll.

Gruß Peter
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: rischbiter123 am 28 Juli 2018, 15:01:34
Bin mir nicht ganz sicher, aber sollte es nicht my $c heißen und nicht @c ?
Der Rest sieht nämlich eigentlich gut aus.
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: Octopus180 am 28 Juli 2018, 16:03:58
Wenn ich das in $c ändere , funktioniert es überhaupt nicht mehr.
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: Byte09 am 28 Juli 2018, 16:27:33
Zitat von: Octopus180 am 28 Juli 2018, 13:26:11
Moin

ich habe folgendes Reading :

t_001_bdate              02.08.2018          2018-07-28 12:50:54

ich möchte gerne daraus ein neues Reading machen und zwar ungefähr so:

t_001_bdate_neu      02.08.                   2018-07-28 12:50:54

ich habe das mit

attr v_Geburt userReadings t_001_bdate_neu { my @c = split '.',ReadingsVal($name,'t_001_bdate',0);join(' ', $c[0], $c[1]) }

versucht, doch leider kommt nur ein leeres Reading dabei raus.

Ich habe schon gefühlte tausend Sachen gelesen aber als Anfänger verstehe ich nur Bahnhof.

Könnte mir bitte jemand erklären was ich machen muss um die Jahreszahl wegzubekommen.

Danke

Gruß Peter
                                       


t_001_bdate_neu  { substr(ReadingsVal("$name","state","0"),0,5) }
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: frank am 28 Juli 2018, 16:32:46
maskiere den punkt beim splittrennzeichen mit backslash.
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: Prof. Dr. Peter Henning am 28 Juli 2018, 16:36:13
Und warum nicht mit einem regulären Ausdruck ?

{my $s=ReadingsVal($name,'t_001_bdate',0);;$s =~ s/201\d//;;$s=~s/date/date_neu/;;$s}

LG

pah
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: rischbiter123 am 28 Juli 2018, 16:42:42
In Antwort5 von Byte09 steht es doch schon richtig drin. Nur müsste es , glaube ich, ,6 heißen, sonst fehlt der Punkt hinter dem Monat.
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: Octopus180 am 28 Juli 2018, 18:24:46
Moin

wenn ich das so eingebe wie von Byte09 geschrieben kommt das Reading raus:

t_001_bdate_neu    t: 10     2018-07-28 18:21:52

auch wenn ich aus der 5 eine 6 mache.

Gruß
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: Otto123 am 28 Juli 2018, 18:44:27
Hi,

naja ganz genau so darfst Du es nicht machen, Byte09 hat den state genommen, Du hast ein Reading!

Gruß Otto
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: Byte09 am 28 Juli 2018, 18:45:32
Zitat von: Octopus180 am 28 Juli 2018, 18:24:46
Moin

wenn ich das so eingebe wie von Byte09 geschrieben kommt das Reading raus:

t_001_bdate_neu    t: 10     2018-07-28 18:21:52

auch wenn ich aus der 5 eine 6 mache.

Gruß

weil dein reading nicht 'state' heisst, sondern 't_001_bdate' ! ... das musst du ändern , ich hatte das reading nur nicht zum probieren.

bitte nicht 'blind' copy & paste , sondern auch mal drüberschauen .

gruss Byte09
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: Otto123 am 28 Juli 2018, 18:49:42
Hallo Octopus180,

und dein Konstrukt läuft auch, wenn Du die Antwort von frank berücksichtigst
'.' -> '\.'
::)
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: Octopus180 am 28 Juli 2018, 19:03:17
Erstmal Danke an alle, es funktioniert jetzt.

Ja , Byte09 , du hast recht natürlich sollte man nochmal rüber schauen. Aber als Anfänger ist es manchmal schwer zu Verstehen wie sich sowas zusammen setzt und was wie zusammen gehört.

Deine Lösung hat jetzt funktioniert, nachdem ich das ,,State" geändert habe.

Meine Lösung funktioniert leider nicht ganz, das Reading wird erzeugt aber es fehlen die Punkte zwischen den Zahlen.

Aber das ist ja nicht weiter schlimm, da ja Byte09 Lösung funktioniert.

Gruß Peter
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: cheanrod am 28 Juli 2018, 19:07:34
Wenn Du bei Dir im join den Punkt vorgibst und keinen leeren String, funktioniert auch Deine Lösung.
Titel: Antw:Anfängerfrage zu userreading
Beitrag von: Octopus180 am 28 Juli 2018, 19:15:33
Stimmt, aber dann ist nur zwischen Tag und Monat einen Punkt aber nicht hinterm Monat
Titel: Antw:[gelöst] Anfängerfrage zu userreading
Beitrag von: Otto123 am 28 Juli 2018, 19:35:21
Die Copy&Paste (ohne Kopf dazwischen) Variante  :D
attr v_Geburt userReadings t_001_bdate_neu  { my @c = split '\.',ReadingsVal($name,'t_001_bdate',0);;join('.', $c[0], $c[1]).'.'}
einfach mit Verkettung ein Punkt angehangen

Gruß Otto
Titel: Antw:[gelöst] Anfängerfrage zu userreading
Beitrag von: frank am 28 Juli 2018, 20:18:13
hallo otto,
mach mal aus dem vorletzten punkt noch ein komma.
Titel: Antw:[gelöst] Anfängerfrage zu userreading
Beitrag von: Otto123 am 28 Juli 2018, 20:53:58
naja ich bin nicht so der Spezi und habe alles durchprobiert, so wie es dasteht geht es. Wenn ich Deinen Vorschlag mache dann ist das Resultat nur ein .
Mann kann sowas machen $c[1],'.')} - dann werden es aber zwei Punkte  :D
Titel: Antw:[gelöst] Anfängerfrage zu userreading
Beitrag von: frank am 28 Juli 2018, 21:10:54
sorry otto,
ich hatte tomaten auf den augen.  :(

ZitatMann kann sowas machen $c[1],'.')} - dann werden es aber zwei Punkte  :D
genau das hatte ich im sinn, da ich die klammer nicht gesehen habe.