[gelöst] if(defined($defs{'objekt'})) funktioniert nicht

Begonnen von NehCoy, 25 August 2019, 12:01:53

Vorheriges Thema - Nächstes Thema

NehCoy

Hallo!

Ich versuche gerade zu erkennen, ob ein Gerät bereit angelegt wurde. Aber irgendwie klappt das nicht.
Ein Notify auf "dy.Bewaesserung..*" ruft folgendes PERL-Skript auf:
sub
BewaesserungMapping($$)
{
  my ($TARGET,$EVENT) =  @_;
  my $knxDevice = $TARGET;
 
  Log3(undef, 3, "BewaesserungMapping target=$TARGET event= $EVENT");
 
 
  #Replace dy (length=2) with knx
  substr($knxDevice, 0, 2) = "knx";
  Log3(undef, 3, "BewaesserungMapping knxDevice=$knxDevice");
 
  #if(defined($defs{'$knxDevice.Delayed.On'}))
  if(exists($defs{'$knxDevice.Delayed.On'}))
  {
    Log3(undef, 3, "Delete $knxDevice.Delayed.On");
fhem "delete $knxDevice.Delayed.On";
  }
  else
  {
    Log3(undef, 3, "Gibt's nicht $knxDevice.Delayed.On");
 
  }
 
  #if(defined($defs{'$knxDevice.Delayed.Off'}))
  if(exists($defs{'$knxDevice.Delayed.Off'}))
  {
    Log3(undef, 3, "Delete $knxDevice.Delayed.Off");
    fhem "delete $knxDevice.Delayed.Off";
  }
  else
  {
    Log3(undef, 3, "Gibt's nicht $knxDevice.Delayed.Off");
 
  }
 
  if($EVENT eq "on")
  {
     fhem "define $knxDevice.Delayed.On at +00:00:30 set $knxDevice on";
     fhem "define $knxDevice.Delayed.Off at +02:00:00 set $knxDevice off";
  }
  else
  {
     fhem "set $knxDevice off";
  }
}


Die Prüfung " if(defined($defs{'objekt'}))" oder  if(exists($defs{'objekt'})) ist aber immer "falsch", weshalb meine Logs z.B. dann so aussehen:
2019-08-25 11:54:06 dummy dy.Bewaesserung.Tropfbewaesserung.Hochbeete on
2019.08.25 11:54:29 3 : BewaesserungMapping target=dy.Bewaesserung.Tropfbewaesserung.Hochbeete event= on
2019.08.25 11:54:29 3 : BewaesserungMapping knxDevice=knx.Bewaesserung.Tropfbewaesserung.Hochbeete
2019.08.25 11:54:29 3 : Gibt's nicht knx.Bewaesserung.Tropfbewaesserung.Hochbeete.Delayed.On
2019.08.25 11:54:29 3 : Gibt's nicht knx.Bewaesserung.Tropfbewaesserung.Hochbeete.Delayed.Off
2019.08.25 11:54:29 3 : define knx.Bewaesserung.Tropfbewaesserung.Hochbeete.Delayed.On at +00:00:30 set knx.Bewaesserung.Tropfbewaesserung.Hochbeete on : knx.Bewaesserung.Tropfbewaesserung.Hochbeete.Delayed.On already defined, delete it first
2019.08.25 11:54:29 3 : define knx.Bewaesserung.Tropfbewaesserung.Hochbeete.Delayed.Off at +02:00:00 set knx.Bewaesserung.Tropfbewaesserung.Hochbeete off : knx.Bewaesserung.Tropfbewaesserung.Hochbeete.Delayed.Off already defined, delete it first
2019.08.25 11:54:29 3 : ntfy.Bewaesserung return value: knx.Bewaesserung.Tropfbewaesserung.Hochbeete.Delayed.Off already defined, delete it first


Was mache ich denn falsch?

Danke und Grüße
NehCoy



rudolfkoenig

ZitatWas mache ich denn falsch?
' und " verwechseln

NehCoy

#2
 ??? :o ::)
Wie wahr!

Das ' kam aus diesem Artikel: https://forum.fhem.de/index.php?topic=27084.0

Danke!