FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: RedStar73 am 28 Februar 2015, 21:16:48

Titel: split geht nicht :(
Beitrag von: RedStar73 am 28 Februar 2015, 21:16:48
hi,
was stimmt mit diesem splitBefehl nicht, es kommt immer die meldung Global symbol requires explicit package name , habe es auch mit @@temp1 probiert, nix,
ohne split geht es.

define heizungaenderung notify SZThermostat { \
my $temp=(ReadingsVal("SZThermostat","desired-temp","99"));;\
my @temp1=split(/\./,$temp);;\
if ( Value("Handy")  eq "present") {{{bueroheizung}};;{fhem("set MyTTSsz tts die gewünschte Temperatur beträgt $temp1[0]")} } }



danke im voraus für die hilfe
Titel: Antw:split geht nicht :(
Beitrag von: betateilchen am 28 Februar 2015, 21:23:34
Was willst Du eigentlich machen? Nur die Nachkommstelle abschneiden?

Dazu braucht es doch kein split.

my $temp = int(ReadingsVal("SZThermostat","desired-temp","99"))

oder doch besser auf keine Nachkommstellen runden?

my $temp = round(ReadingsVal("SZThermostat","desired-temp","99"),0)
Titel: Antw:split geht nicht :(
Beitrag von: RedStar73 am 28 Februar 2015, 21:29:49
danke für die schnelle antwort,wollte splitten, weil im tts Engine, höre ich z.b 22 pause 5,ich wollte splitten, dann erstmal die erste hälfte dann schreibe ich Komma ,dann die zweite hälfte, also $temp1[0] Komma $temp1[1] = z.b 22 Komma 5.
danke

ps: es ist ein punkt kein Komma dazwischen, desired-temp=23.5
Titel: Antw:split geht nicht :(
Beitrag von: betateilchen am 28 Februar 2015, 21:47:53
noch einfacher...


my $temp = ReadingsVal("SZThermostat","desired-temp","99");
$temp =~ s/\./ Komma /;


In $temp steht danach der Text im gewünschten Format.
Titel: Antw:split geht nicht :(
Beitrag von: RedStar73 am 28 Februar 2015, 21:54:03
geil, danke  ;D
geht 1a,aber wo könnte man lesen wofür steht die s und der Schrägstrich usw. , und wie könnte man es doch mit Split machen, wegen andere Projekte.
danke
Titel: Antw:split geht nicht :(
Beitrag von: betateilchen am 28 Februar 2015, 22:10:39
Zitat von: RedStar73 am 28 Februar 2015, 21:54:03
wo könnte man lesen wofür steht die s und der Schrägstrich usw.

Überall da, wo regexp erklärt wird, und zu diesem Thema gibt es gefühlte 2 Millionen Tutorials im Internet.

Zitat von: RedStar73 am 28 Februar 2015, 21:54:03
und wie könnte man es doch mit Split machen, wegen andere Projekte.


my $temp = ReadingsVal(irgendeinSensor,irgendeinReading,"99.0");
my @a = split(/\./,$temp);
$temp = "$a[0] Komma $a[1]";


Funktioniert hier einwandfrei.