[Gelöst] Alarmanlage, Abfrage und Ausgabe der Sensoren, die Alarm auslösen

Begonnen von Gueco315, 03 April 2024, 13:26:29

Vorheriges Thema - Nächstes Thema

Gueco315

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:
Fhem 6.0, JeeLink, CUL 868 auf Raspi 4, Buster, IT-1500, 4x SB_Player, Squeezebox auf Raspi 4, 3x Fritzbox,  WIFI Light, EGPM2LAN, ENIGMA, Sec-SCO,CC-RT-DN,TC-IT-WM-W-EU,SEN-Wa-Od,ES-PMSw1-PW,HM-SE, Sonoff, Shelly,SMA

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Gueco315

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)
Fhem 6.0, JeeLink, CUL 868 auf Raspi 4, Buster, IT-1500, 4x SB_Player, Squeezebox auf Raspi 4, 3x Fritzbox,  WIFI Light, EGPM2LAN, ENIGMA, Sec-SCO,CC-RT-DN,TC-IT-WM-W-EU,SEN-Wa-Od,ES-PMSw1-PW,HM-SE, Sonoff, Shelly,SMA

Gueco315

Fhem 6.0, JeeLink, CUL 868 auf Raspi 4, Buster, IT-1500, 4x SB_Player, Squeezebox auf Raspi 4, 3x Fritzbox,  WIFI Light, EGPM2LAN, ENIGMA, Sec-SCO,CC-RT-DN,TC-IT-WM-W-EU,SEN-Wa-Od,ES-PMSw1-PW,HM-SE, Sonoff, Shelly,SMA

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Gueco315

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
Fhem 6.0, JeeLink, CUL 868 auf Raspi 4, Buster, IT-1500, 4x SB_Player, Squeezebox auf Raspi 4, 3x Fritzbox,  WIFI Light, EGPM2LAN, ENIGMA, Sec-SCO,CC-RT-DN,TC-IT-WM-W-EU,SEN-Wa-Od,ES-PMSw1-PW,HM-SE, Sonoff, Shelly,SMA

Beta-User

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Gueco315

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 :-(
Fhem 6.0, JeeLink, CUL 868 auf Raspi 4, Buster, IT-1500, 4x SB_Player, Squeezebox auf Raspi 4, 3x Fritzbox,  WIFI Light, EGPM2LAN, ENIGMA, Sec-SCO,CC-RT-DN,TC-IT-WM-W-EU,SEN-Wa-Od,ES-PMSw1-PW,HM-SE, Sonoff, Shelly,SMA

TomLee

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.

Beta-User

#9
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.)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Prof. Dr. Peter Henning

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