Autor Thema: [gelöst] if(defined($defs{'objekt'})) funktioniert nicht  (Gelesen 138 mal)

Offline NehCoy

  • Full Member
  • ***
  • Beiträge: 240
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


« Letzte Änderung: 25 August 2019, 12:23:44 von NehCoy »

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20861
Antw: if(defined($defs{'objekt'})) funktioniert nicht
« Antwort #1 am: 25 August 2019, 12:09:25 »
Zitat
Was mache ich denn falsch?
' und " verwechseln

Offline NehCoy

  • Full Member
  • ***
  • Beiträge: 240
Antw: if(defined($defs{'objekt'})) funktioniert nicht
« Antwort #2 am: 25 August 2019, 12:22:11 »
 ??? :o ::)
Wie wahr!

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

Danke!
« Letzte Änderung: 25 August 2019, 12:32:11 von NehCoy »

 

decade-submarginal