[gelöst] Anfängerfrage zu userreading

Begonnen von Octopus180, 28 Juli 2018, 13:26:11

Vorheriges Thema - Nächstes Thema

Octopus180

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
                                         

mi.ke

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

Hoffe das hilft Dir.

Cheers

mi.ke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

Octopus180

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

rischbiter123

Bin mir nicht ganz sicher, aber sollte es nicht my $c heißen und nicht @c ?
Der Rest sieht nämlich eigentlich gut aus.
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

Octopus180

Wenn ich das in $c ändere , funktioniert es überhaupt nicht mehr.

Byte09

#5
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) }

frank

maskiere den punkt beim splittrennzeichen mit backslash.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Prof. Dr. Peter Henning

#7
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

rischbiter123

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.
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

Octopus180

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ß

Otto123

Hi,

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

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Byte09

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

Otto123

Hallo Octopus180,

und dein Konstrukt läuft auch, wenn Du die Antwort von frank berücksichtigst
'.' -> '\.'
::)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Octopus180

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

cheanrod

Wenn Du bei Dir im join den Punkt vorgibst und keinen leeren String, funktioniert auch Deine Lösung.