FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Gueco315 am 03 April 2024, 13:26:29

Titel: [Gelöst] Alarmanlage, Abfrage und Ausgabe der Sensoren, die Alarm auslösen
Beitrag von: Gueco315 am 03 April 2024, 13:26:29
Hallo Zusammen,

ich habe eine Alarmanlage mit Fhem Hausmitteln programmiert, läuft soweit prima.
Durch Nutzung einer Vielzahl von Homematic Tür- und Fenstersensoren habe ich 3 Structures gebildet.
Eins für die Aktoren im Keller, ein zweites für die im Erdgeschoss und für die beiden Zusammen ein Homestrucure.
Bei Aktivierung des Dummys Alarmanlage_scharfstellen, frage ich den Homestruc auf "geschlossen" ab. Es melden sich die Sensoren, die auf sind, somit verhindere ich die AKtivierung der Alarmanlage, weil diese nur auf on geht wenn alles Fenster und Türen geschlossen sind. So weit so gut.

Nun zu meinem Problem, meiner Frage:
Die Sensoren haben alle Bezeichnungen wie KG_FK_Keller_Li zum Beispiel. Bedeutet: Sensor Fenster Kellerraum links.
Pushover meldet mir dann den Aktor mit diesem Namen. Auch im Fall eines Einbruchs.

Gerne hätte ich die Ausgabe des Alias(da passt der Name) oder kann ich feste readings für die Sensoren bilden oder muss ich eine Routine schreiben.
Denn im Schlafzimmer lasse ich mir bei dem Squeezebox Radio auch die Einbruchsstelle mitteilen.

Bin für jeden Denkansatz dankbar.

Gruß GÜnter


ich habe folgendes Problem:
Titel: Aw: Alarmanlage, Abfrage und Ausgabe der Sensoren, die Alarm auslösen
Beitrag von: MadMax-FHEM am 03 April 2024, 13:52:36
Zitat von: Gueco315 am 03 April 2024, 13:26:29Pushover meldet mir dann den Aktor mit diesem Namen. Auch im Fall eines Einbruchs.

Gerne hätte ich die Ausgabe des Alias(da passt der Name) oder kann ich feste readings für die Sensoren bilden oder muss ich eine Routine schreiben.
Wie machst du die pushover-Nachricht bzw. die Ansage?

Einfach "dort" ein AttrVal($name, "alias", "n.a.) einbauen. Bzw. je nachdem wie/wo du das machst auch statt $name $DEVICE oder $NAME oder oder oder...

Gruß, Joachim
Titel: Aw: Alarmanlage, Abfrage und Ausgabe der Sensoren, die Alarm auslösen
Beitrag von: Gueco315 am 03 April 2024, 14:15:37
Hallo Joachim,

vielen Dank für die schnelle Antwort.

Beim Aktivieren der Alarmanlage frage ich das wie folgt ab:

Alarm:on IF ([Hausfenster:state] eq "closed") (set Pushover msg 'ALARMANLAGE' '-> ist scharf geschaltet!!!!' '' 1 '') ELSE
(set Pushover msg 'ALARMANLAGE' '-> Deaktiviert! Erst [Hausfenster:LastDevice_Abs] schließen!!!!' '' 1 '', sleep 2, set Alarm off)
Titel: Aw: Alarmanlage, Abfrage und Ausgabe der Sensoren, die Alarm auslösen
Beitrag von: Gueco315 am 03 April 2024, 15:10:35
.. wie sieht der Code dann konkret aus?
Titel: Aw: Alarmanlage, Abfrage und Ausgabe der Sensoren, die Alarm auslösen
Beitrag von: MadMax-FHEM am 03 April 2024, 16:54:51
Naja, ich nutze "setmagic" nicht aber ich denke evtl. so und ich nutze auch kein DOIF, von daher wiß ich nicht wie es da "nach Perl geht", aber evtl. so ähnlich:

({my $DevName=ReadingsVal("Hausfenster", "LastDevice_Abs", "n.a."); $DevName=AttrVal($DevName, "alias", "n.a."); fhem("set Pushover msg 'ALARMANLAGE' '-> Deaktiviert! Erst $DevName schließen!!!!' '' 1 ''; sleep 2; set Alarm off")})

Evtl. geht auch:
({my $DevName=AttrVal(ReadingsVal("Hausfenster", "LastDevice_Abs", "n.a."), "alias", "n.a."); fhem("set Pushover msg 'ALARMANLAGE' '-> Deaktiviert! Erst $DevName schließen!!!!' '' 1 ''; sleep 2; set Alarm off")})

Wie gesagt, keine Ahnung wie bei DOIF Perl geht...
In einem notify wäre es ohne die äußeren runden Klammern...

Evtl. ins passende Unterforum zu DOIF verschieben...

Gruß, Joachim
Titel: Aw: Alarmanlage, Abfrage und Ausgabe der Sensoren, die Alarm auslösen
Beitrag von: Gueco315 am 04 April 2024, 10:39:32
Hallo Joachim,

dank deiner Hilfe und ChatGPT läuft es jetzt:

Alarm:on {
    my $DevName = AttrVal(ReadingsVal("Hausfenster", "LastDevice_Abs", "n.a."), "alias", "n.a.");

    if (ReadingsVal("Hausfenster", "state", "") eq "closed") {
        fhem("set Pushover msg ALARMANLAGE -> ist scharf geschaltet!!!!");
    } else {
        fhem("set Pushover msg ALARMANLAGE -> Deaktiviert! Erst $DevName schließen!!!!");
        sleep(2);
        fhem("set Alarm off");
    }
}

Danke nochmal.

Gruß Günter
Titel: Aw: Alarmanlage, Abfrage und Ausgabe der Sensoren, die Alarm auslösen
Beitrag von: Beta-User am 04 April 2024, 10:50:05
Mach aus dem Perl-sleep ein fhem-sleep....
Titel: Aw: Alarmanlage, Abfrage und Ausgabe der Sensoren, die Alarm auslösen
Beitrag von: Gueco315 am 04 April 2024, 13:14:59
Alarm:on {
    my $DevName = AttrVal(ReadingsVal("Hausfenster", "LastDevice_Abs", "n.a."), "alias", "n.a.");

    if (ReadingsVal("Hausfenster", "state", "") eq "closed") {
        fhem("set Pushover msg ALARMANLAGE -> ist scharf geschaltet!!!!");
    } else {
        fhem("set Pushover msg ALARMANLAGE -> Deaktiviert! Erst $DevName schließen!!!!");
        fhem("sleep 2");
        fhem("set Alarm off")
    }
}

Wie setzte ich den Beitrag auf Gelöst? Finde den Button nicht mehr :-(
Titel: Aw: Alarmanlage, Abfrage und Ausgabe der Sensoren, die Alarm auslösen
Beitrag von: TomLee am 04 April 2024, 13:21:49
Hallo,

ich meine das wird so nicht klappen, das sind drei Funktionen die einfach hintereinander abgearbeitet werden:

        fhem("set Pushover msg ALARMANLAGE -> Deaktiviert! Erst $DevName schließen!!!!");
        fhem("sleep 2");
        fhem("set Alarm off")

Du musst einen fhem-Befehl draus machen:
fhem("set Pushover msg ALARMANLAGE -> Deaktiviert! Erst $DevName schließen!!!!;sleep 2;set Alarm off");
ZitatWie setzte ich den Beitrag auf Gelöst? Finde den Button nicht mehr :-(

Im ersten Beitrag den Betreff aktualisieren.
Titel: Aw: Alarmanlage, Abfrage und Ausgabe der Sensoren, die Alarm auslösen
Beitrag von: Beta-User am 04 April 2024, 14:22:26
Zitat von: Gueco315 am 04 April 2024, 10:39:32dank deiner Hilfe und ChatGPT läuft es jetzt:
Auch eine KI ist nicht unfehlbar - was man nicht nur an der mangelnden Unterscheidung von FHEM-sleep und Perl-sleep sehen kann, sondern auch an dem hier:

    my $DevName = AttrVal(ReadingsVal("Hausfenster", "LastDevice_Abs", "n.a."), "alias", "n.a.");Preisfrage: Was kommt da raus, wenn man keinen alias gesetzt hat?

(Lösungsansatz: Erst die Ausgabe von ReadingsVal() in eine Variable nehmen, und dann diese Variable auch als default-Rückgabe verwenden... Bekommt man vielleicht auch ohne KI hin.)
Titel: Aw: Alarmanlage, Abfrage und Ausgabe der Sensoren, die Alarm auslösen
Beitrag von: Prof. Dr. Peter Henning am 06 April 2024, 05:34:37
ChatGPT ist auch nicht "eine KI". Sondern ein reines Sprachmodell. Wer um Himmels willen würde denn von einem Menschen, der nur gut Texte wiedergeben, aber nicht programmieren kann, die Lösung einer Programmieraufgabe erwarten? Es ist reiner Zufall, dass dies manchmal gut geht.

ZitatBin für jeden Denkansatz dankbar.

Prima, also dann: Den eigenen Code als Lernerfahrung wegstecken und das Modul 95_Alarm.pm nutzen.

LG

pah