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
ZitatWas mache ich denn falsch?
' und " verwechseln
??? :o ::)
Wie wahr!
Das ' kam aus diesem Artikel: https://forum.fhem.de/index.php?topic=27084.0
Danke!