FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Sirel am 29 November 2016, 19:49:45

Titel: [Gelöst] Offene Fenstern in unterschiedlichen Räumen ermitteln
Beitrag von: Sirel am 29 November 2016, 19:49:45
Hallo zusammen,
ich möchte alle geschlossenen Fenster in einem Raum herausfinden. Der zu durchsuchende Raum soll aus einem Dummy ausgelesen werden. Es sollen auch 2 Räume durchsucht werden können.
Ich scheitere jetzt an meiner Abfrage:


sub statusFensterOffen() {
my @monitored=devspec2array("NAME=FTK_.*:FILTER=room=ReadingsVal("test","Etage","na"):FILTER=STATE!=open");
my $cnt_devs=@monitored;
my $i = 0;
my $msgtext = "";
foreach(@monitored) {
        $msgtext .= ReadingsVal($_,"Fenster",$_);
if ($i <= $cnt_devs - 2) {
  $msgtext .= ",";
}

$i++;
fhem ("set $msgtext Runter") if ($cnt_devs > 0);
}

         return $msgtext if ($cnt_devs > 0);
}
1;

Ich frage zunächst nur einen Raum ab.

Ich erhalte jedoch immer eine Fehlermeldung beim speichern:

Zitatsyntax error at ./FHEM/99_fenster_check_myUtils.pm line 21, near ""NAME=FTK_.*:FILTER=room=ReadingsVal("Test" Global symbol "@monitored" requires explicit package name at ./FHEM/99_fenster_check_myUtils.pm line 22.


Ersetze ich > ReadingsVal("test","Etage","na") < durch > Erdgeschoss <, funktioniert die Abfrage so wie sie soll.

Hat jemand eine Idee, was ich falsch mache?

Vielen Dank und Grüße,
Max
Titel: Antw:Fehler beim ermitteln von offenen Fenstern
Beitrag von: Sirel am 29 November 2016, 20:08:52
So funktioniert es:

my @monitored=devspec2array("NAME=FTK_.*:FILTER=room=(Erdgeschoss||Obergeschoss):FILTER=STATE!=open");

Erdgeschoss oder Obergeschoss sollen aber dynamisch befüllt werden...  ???

Max
Titel: Antw:Fehler beim ermitteln von offenen Fenstern
Beitrag von: Otto123 am 29 November 2016, 20:27:49
Hallo Max,

ich bin da relativ unterbelichtet, aber mein Gefühl sagt er mag die geschachtelten " nicht.
Mach den ReadingsVal("test","Etage","na") doch mal vorher separat.

Gruß Otto
Titel: Antw:Fehler beim ermitteln von offenen Fenstern
Beitrag von: Benni am 29 November 2016, 20:55:01
Zitat von: Otto123 am 29 November 2016, 20:27:49
ich bin da relativ unterbelichtet, aber mein Gefühl sagt er mag die geschachtelten " nicht.
Mach den ReadingsVal("test","Etage","na") doch mal vorher separat.

Otto hat recht!
Du solltest dir das Reading zunächst per ReadingsVal in eine Variable holen:


my $myRVal=ReadingsVal('test','Etage','na');


Dann kannst du die anschließend ganz einfach in den devspec2array-Parameter-String einbauen:


@monitored=devspec2array("NAME=FTK_.*:FILTER=room=$myRVal:FILTER=STATE!=open");

Titel: Antw:Fehler beim ermitteln von offenen Fenstern
Beitrag von: Sirel am 29 November 2016, 21:03:52
Hi Ihr zwei,
genau das war die Lösung. Hatte ich nach meinem Post dann auch probiert. Sieht jetzt so aus:

my $room_1=ReadingsVal("du_Rollladen_Etage","Raum_1","na");
my $room_2=ReadingsVal("du_Rollladen_Etage","Raum_2","na");
my @monitored=devspec2array("NAME=FTK_.*:FILTER=room=($room_1||$room_2):FILTER=STATE!=open");


Macht jetzt genau was es soll!

Vielen Dank für Eure Hilfe!

Beste Grüße,
Max
Titel: Antw:[Gelöst] Offene Fenstern in unterschiedlichen Räumen ermitteln
Beitrag von: bmilos am 13 Dezember 2016, 22:23:29
Hi,

wie sieht den eure config aus?

Gruss
Titel: Antw:[Gelöst] Offene Fenstern in unterschiedlichen Räumen ermitteln
Beitrag von: vmesser am 15 Mai 2017, 01:31:18
Hi,

ich habe das Thema Fensteroffen in einem Reading gespeichert um mir die offenen Fenster per Sonos ansagen zu lassen.

Hier der Teil für das setreading:
{fhem("setreading All.Allesaus_doif fensteroffen ".join(" ", devspec2array("state=open:FILTER=speak=yes")))}

Viele Grüße
Volker