Verständnisfrage insb. zur Mehrfachnutzung eines Ausführungsteils

Begonnen von FHEMAN, 14 Dezember 2020, 21:08:47

Vorheriges Thema - Nächstes Thema

Damian

Immer ein komplettes list liefern, mit den Bruchstücken kann man nichts anfangen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FHEMAN

Zitat von: Damian am 28 Dezember 2020, 19:50:52
Immer ein komplettes list liefern, mit den Bruchstücken kann man nichts anfangen.
Hi Damian, hier das list:
Internals:
   DEF        ([Residents.R:state] eq "on" or [Residents.M:state] eq "on" or [Residents.C:state] eq "on" or [Residents.E:state] eq "on" or [Residents.Unbekannt:state] eq "on")(
{
my @Residents =("Residents.R","Residents.M","Residents.Unbekannt");
my $PresenceCount = 0;
my $PresenceResidents = "";
foreach my $Resident (@Residents) {
my $ResidentState = (Value($Resident) eq "on") ? "1" : "0";
my $ResidentShort = alias($Resident);
if (($ResidentShort ne "Unbekannt") && ($ResidentState eq "1")) {
$PresenceResidents .= " $ResidentShort";
$PresenceCount++;
}
fhem("setreading Anwesenheit:FILTER=r:$ResidentShort!=$ResidentState $ResidentShort $ResidentState");
}
if ($PresenceResidents eq "") {
$PresenceResidents = "0";
}
fhem("setreading Anwesenheit PresenceResidents $PresenceResidents");
fhem("setreading Anwesenheit:FILTER=r:PresenceCount!=$PresenceCount PresenceCount $PresenceCount");
fhem("set Anwesenheit:FILTER=STATE!=on on");
my $ResidentTrigger = ReadingsVal("doif.Anwesenheit","cmd_event",-1);
}
) DOELSE ([Residents.R:state] eq "off" or [Residents.M:state] eq "off" or [Residents.C:state] eq "off" or [Residents.E:state] eq "off" or [Residents.Unbekannt:state] eq "off")(
{
fhem("setreading Anwesenheit:FILTER=r:Unbekannt!=0 Unbekannt 0");
fhem("setreading Anwesenheit:FILTER=r:PresenceCount!=0 PresenceCount 0");
fhem("setreading Anwesenheit:FILTER=r:PresenceResidents!=0 PresenceResidents 0");
fhem("set Anwesenheit:FILTER=STATE!=off off");
}
)
   FUUID      5f8c4fde-f33f-6078-ae31-c79ab2edfb5311e9
   MODEL      FHEM
   NAME       doif.Anwesenheit
   NOTIFYDEV  Residents.M,Residents.Unbekannt,Residents.R,Residents.E,Residents.C,global
   NR         1003
   NTFY_ORDER 50-doif.Anwesenheit
   STATE      cmd_1
   TYPE       DOIF
   VERSION    23235 2020-11-25 22:42:28
   READINGS:
     2020-12-30 14:11:15   Device          Residents.R
     2020-12-30 14:11:15   cmd             1
     2020-12-30 14:11:15   cmd_event       Residents.R
     2020-12-30 14:11:15   cmd_nr          1
     2020-12-30 14:10:15   e_Residents.M_state on
     2020-12-30 14:11:15   e_Residents.R_state on
     2020-12-30 14:10:40   e_Residents.Unbekannt_state on
     2020-12-28 17:02:10   mode            enabled
     2020-12-30 14:11:15   state           cmd_1
   Regex:
     accu:
     cond:
       Residents.C:
         0:
           state      ^Residents.C$:^state:
       Residents.E:
         0:
           state      ^Residents.E$:^state:
       Residents.M:
         0:
           state      ^Residents.M$:^state:
       Residents.R:
         0:
           state      ^Residents.R$:^state:
       Residents.Unbekannt:
         0:
           state      ^Residents.Unbekannt$:^state:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'Residents.R','state') eq "on" or ::ReadingValDoIf($hash,'Residents.M','state') eq "on" or ::ReadingValDoIf($hash,'Residents.C','state') eq "on" or ::ReadingValDoIf($hash,'Residents.E','state') eq "on" or ::ReadingValDoIf($hash,'Residents.Unbekannt','state') eq "on"
   do:
     0:
       0            { my @Residents =("Residents.R","Residents.M","Residents.Unbekannt"); my $PresenceCount = 0; my $PresenceResidents = ""; foreach my $Resident (@Residents) { my $ResidentState = (Value($Resident) eq "on") ? "1" : "0"; my $ResidentShort = alias($Resident); if (($ResidentShort ne "Unbekannt") && ($ResidentState eq "1")) { $PresenceResidents .= " $ResidentShort"; $PresenceCount++; } fhem("setreading Anwesenheit:FILTER=r:$ResidentShort!=$ResidentState $ResidentShort $ResidentState"); } if ($PresenceResidents eq "") {  $PresenceResidents = "0"; } fhem("setreading Anwesenheit PresenceResidents $PresenceResidents"); fhem("setreading Anwesenheit:FILTER=r:PresenceCount!=$PresenceCount PresenceCount $PresenceCount"); fhem("set Anwesenheit:FILTER=STATE!=on on"); my $ResidentTrigger = ReadingsVal("doif.Anwesenheit","cmd_event",-1); }
     1:
       0          [Residents.R:state] eq "off" or [Residents.M:state] eq "off" or [Residents.C:state] eq "off" or [Residents.E:state] eq "off" or [Residents.Unbekannt:state] eq "off"
       1            { fhem("setreading Anwesenheit:FILTER=r:Unbekannt!=0 Unbekannt 0"); fhem("setreading Anwesenheit:FILTER=r:PresenceCount!=0 PresenceCount 0"); fhem("setreading Anwesenheit:FILTER=r:PresenceResidents!=0 PresenceResidents 0"); fhem("set Anwesenheit:FILTER=STATE!=off off"); }
   helper:
     DEVFILTER  ^global$|^Residents.M$|^Residents.Unbekannt$|^Residents.E$|^Residents.R$|^Residents.C$
     NOTIFYDEV  global|Residents.M|Residents.Unbekannt|Residents.E|Residents.R|Residents.C
     event      on
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   Residents.R
     timerevent on
     triggerDev Residents.R
     timerevents:
       on
     timereventsState:
       state: on
     triggerEvents:
       on
     triggerEventsState:
       state: on
   internals:
   readings:
     all         Residents.R:state Residents.M:state Residents.C:state Residents.E:state Residents.Unbekannt:state
   trigger:
   uiState:
   uiTable:
Attributes:
   do         always
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

Damian

DOELESE hat keine Bedingung, was du meinst ist wohl DOELSEIF
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FHEMAN

Argh, ist mir komplett entgangen, da ich die zweite Bedingungen erst später formuliert habe. Die Fehlermeldung ist jetzt weg, danke!
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB