Funktion für Tür/Fenster offen Warnungen

Begonnen von DeeSPe, 07 August 2016, 15:05:24

Vorheriges Thema - Nächstes Thema

DeeSPe

Zitat von: Damu am 13 August 2016, 21:24:49
Wie erreiche ich das nur Fenster_XXX im Text steht, ohne Alias zu benützen.

Am einfachsten:
Vergib entsprechende attr alias mit den jeweiligen Namen!

Oder ändere die sub wie folgt:

Zeile 10:
my $alias = AttrVal($dev,"alias",$dev);
ändern in:
my $alias = (split("Fenster_",$dev))[1];

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Damu

#16
Hallo

Hat geklappt, vielen Dank.
Meine Fenster und Tür Melder beginnen alle mit SE_Fenster_XXX oder SE_Tuere_XXX.

Die Sub hab ich so:
sub OffenCheck($)
{
  my ($list) = @_;
  my @aliases;
  my $text = undef;
  foreach my $dev (split(",",$list))
  {
    if (Value($dev) eq "open")
    {
      my $alias = (split("SE_",$dev))[1];
      push @aliases,$alias;
    }
  }
  if (@aliases > 0)
  {
    $text = "ACHTUNG! ".$aliases[0];
    if (@aliases > 1)
    {
      for (my $i = 1; $i < @aliases; $i++)
      {
        $text .= " und " if ($i == @aliases - 1);
        $text .= ", " if ($i < @aliases - 1);
        $text .= $aliases[$i];
        $text .= " sind" if ($i == @aliases - 1);
      }
    }
  }
  $text .= " ist" if (@aliases == 1);
  $text .= " noch geöffnet," if (@aliases > 0);
    return $text;
}


Dazu hab ich ein Dummy erstellt:
Zitatdefine OffenCheck_FT Dummy
attr webcmd push
Ein Doif lost das ganze aus und schreibt mir eine Pushmitteilung
Zitatdefine OffenCheck_Doif DOIF ([Offencheck_FT_Du] eq "push") (set pushmsg_B msg '{(OffenCheck("SE_Tuere_Freisitz,SE_Fenster_Schlafzimmer,........."))}{(localtime)}')
attr to always

Vielen Dank klappt super.

Einziges Problem ist, es zeigt nur die Fenster und Türen mit Status "open" an.
Die gekippten "tilted" zeigt es als geschlossen an.
Meine Fenster sind alle Innen verschliesbar, (mit Drehgrifsicherung) deshalb kann und will ich das so lassen.

Zayccmar

Hallo alle Zusammen

ich bekomme das nicht ans laufen, habe bei mir MAX Sensoren dran die melden ja opened anstatt open, habe dieses auch in der SUB angepasst. Aber trotz alle dem bekomme ich kein Meldung wenn ich ein Fenster aufmachen & dann in der FHEM Befehlzeile das teste.

Hat einer eine Idee?

Gruß

Markus

meine angepasste  SUB

sub OffenCheck($)
{
  my ($list) = @_;
  my @aliases;
  my $text = undef;
  foreach my $dev (split(",",$list))
  {
    if (Value($dev) eq "opened")
    {
      my $alias = AttrVal($dev,"alias",$dev);
      push @aliases,$alias;
    }
  }
  if (@aliases > 0)
  {
    $text = "ACHTUNG! ".$aliases[0];
    if (@aliases > 1)
    {
      for (my $i = 1; $i < @aliases; $i++)
      {
        $text .= " und " if ($i == @aliases - 1);
        $text .= ", " if ($i < @aliases - 1);
        $text .= $aliases[$i];
        $text .= " sind" if ($i == @aliases - 1);
      }
    }
  }
  $text .= " ist" if (@aliases == 1);
  $text .= " noch geöffnet." if (@aliases > 0);
  return $text;
}