Hauptmenü

probleme mit script

Begonnen von satprofi, 25 August 2025, 11:10:53

Vorheriges Thema - Nächstes Thema

satprofi

Hallo.
Habe tip bekommen, ein script zu erstellen, welches mir Werte in definierte Zahlen umschreibt.

Habe jetzt eines geschrieben, das aber nur mit Zahlen richtig klappt, steht ein Buchstabe drinn klappt es nicht mehr. Warum?

sub Ladepreis(){
  my $a=ReadingsNum("test_1","state",0);
  my $ret="what";
   if( $a=="255" ){
    fhem("setreading test_1 1a 2");
  }elsif ( $a==2 ){
    fhem("setreading test_1 1a ?");
  }elsif ( $a=="MC_T_450.*" ){
    fhem("setreading test_1 1a ?");
  }else {
    fhem("setreading test_1 1a $ret");
  }

}

dieses klappt wenn man nur mit zahlen arbeitet . steht aber im reading COM255 und ich ändere die Zeile mit "if" auf COM255 dann wirft er mit das "else" aus.
was muss man da beachten?
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Damian

Zeichenketten werden in Perl mit eq verglichen und nicht mit ==

Das findest du aber in jeder Perldoku.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

passibe

Damian war schneller, aber still:

eq statt == verwenden.
eq vergleicht einen string, == nur Zahlen.

Vielleicht willst du hier aber auch lieber =~ nutzen, um mit einer regex arbeiten zu können?

Siehe zu allem: https://stackoverflow.com/a/1438631

satprofi

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram