Modul 95_Alarm.pm

Begonnen von Prof. Dr. Peter Henning, 09 Januar 2021, 10:44:29

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Dieser thread dient dem Support des Moduls 95_Alarm.pm, das ich 2014 programmiert habe. Eine genauere Dokumentation findet man im Wiki https://wiki.fhem.de/wiki/Modul_Alarm

Wer das Modul nicht nutzen will, soll sich bitte irgendwelcher Bemerkungen enthalten.

LG

pah

Romoker

Ich nutze das Alarm-Modul seit vielen Jahren. Bei einer notwendigen Konfigurationsanpassung im Set Action-Feld des Actor-Panels kann ich jetzt nicht mehr einen Funktionsaufruf mit Parameterübergabe definieren. Ich bekomme folgende Fehlermeldung im Log:
2021.04.16 14:29:11.212 1: PERL WARNING: String found where operator expected at (eval 206653) line 1, near "Test")}""
2021.04.16 14:29:11.212 3: eval: {Alarm_Test("AZFhem","{aaa("Test")}")}
2021.04.16 14:29:11.212 1: ERROR evaluating {Alarm_Test("AZFhem","{aaa("Test")}")}: syntax error at (eval 206653) line 1, near ""{aaa("Test"


Die entsprechende Definition in meinem Alarm-Objekt lautet:
attr AZFhem level2onact {aaa('Test')}

Ein Set Action mit {bbb()} macht keine Probleme. Wie gesagt, der Funktionsaufruf mit Parameterübergabe hat schon mal funktioniert.
Die Modulversion und FHEM sind aktuell.

Vielel Grüße
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

Prof. Dr. Peter Henning

Hm. Keine Änderung am Modul seit ewigen Monaten, und bei mir funktioniert sowohl das Setzen von Argumenten wie
Zitat{speak('Tab1.EG','Achtung,Einbruchswarnung')}
problemlos.

Möglicherweise hat sich etwas geändert an der Verarbeitung in der REST-Schnittstelle.

Bitte mal mit der angehängten alarm.js in in /opt/fhem/www/pgm2/ probieren.

LG

pah

Romoker

Hallo pah,
yep, mit Deiner neuen alarm.js funktioniert bei mir der Funktionsaufruf mit Parametern wieder.
Danke für den Support.

Viele Grüße
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

Romoker

Hallo pah,
ich war etwas zu voreilig. Meine Funktion
Zitat{telebot_call('Geräteausfall', '$SHORT')}
wird erfolgreich ausgeführt, aber im Log steht jetzt noch folgender Warnhinweis:

2021.04.17 13:41:21.259 1: PERL WARNING: Unrecognized escape \K passed through at (eval 278202) line 1.
2021.04.17 13:41:21.259 3: eval: {telebot_call("Geräteausfall", "\Kurznachricht")}


Übergebe ich $SHORT ohne eingefasste Hochkommata, wird die Funktion nicht ausgeführt:
2021.04.17 13:35:11.943 1: ERROR evaluating {telebot_call("Geräteausfall", \Kurznachricht)}: Bareword "Kurznachricht" not allowed while "strict subs" in use at (eval 277867) line 1.

Viele Grüße
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

Prof. Dr. Peter Henning

Schon richtig - die Sequenz \K wird nicht erkannt. Was soll denn der "\"darin bewirken?

LG

pah

Romoker

"\Kurznachricht" liefert das Alarmmodul, wenn ich die Actor Action über die Testfunktion aufrufe. Das Verhalten ist dann der Testfunktion geschuldet, mit der ich bisher die Actor Action getestet habe. Bei einem echten Alarm-Event wird die Kurznachricht korrekt generiert und es gibt auch keine Warnungen im Log.

Viele Grüße
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

Prof. Dr. Peter Henning

Nein, das ist nicht gemeint. "\K" wird nicht als "Schrägstrich-K" interpretiert, sondern als Abkürzung für einen Sonderbefehl wie "Zeilenumbruch = \n". Also was soll "\K" bedeuten, was hat das "\" da verloren?

LG

pah

Romoker

Der Backslash kommt nicht von mir, sondern wird von der Testfunktion des Alarm-Moduls generiert:

  • In meiner Set Action ist definiert: {telebot_call('Geräteausfall', '$SHORT')}
  • Führe Testfunktion "T" aus
  • Das Pop-Up-Panel zeigt den modifizierten Aufruf mit Backslash an: {telebot_call("Geräteausfall", "\$SHORT")}
Im Testfall ist das Reading short vom Alarmobjekt leer. Die Funktion wird aber korrekt mit dem Text 'Kurznachricht' ausgeführt.

Viele Grüße

BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

Prof. Dr. Peter Henning

Kann ich so nicht stehenlassen. Beim Dollarzeichen: Ja. Weil das sonst von Perl gefressen wird (als Beginn eines Variablennamens). Aber es wird nicht aus "K" ein "\K" gemacht.

LG

pah

Romoker

Wenn bei Dir in meinem Testfall mit übergebener $SHORT-Variable im Pop-Up-Panel kein Backslash vor dem $ erscheint, habe ich auch keine Erklärung, woher der Backslash bei mir herkommt. Aber wie gesagt, mit der korrigierten alarm.js funtionieren die Actions im Event-Fall wieder wie erwartet. Die Warnings im Log bei Testausführung kann ich ignorieren.

Viele Grüße
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

alanblack

Hallo pah,

Du hast ja schon bemerkt, dass ich mir dieses Modul anschaue. Ich bekomme bei der Einrichtung aber immer wieder Logmeldungen:
1.

2021.12.08 21:21:40 1: PERL WARNING: Use of uninitialized value in index at ./FHEM/95_Alarm.pm line 1414.
2021.12.08 21:21:40 3: eval: {Alarm_Html("ZZ_Alarm")}
2021.12.08 21:21:40 1: PERL WARNING: Use of uninitialized value $aval[1] in concatenation (.) or string at ./FHEM/95_Alarm.pm line 1417.
2021.12.08 21:21:40 3: eval: {Alarm_Html("ZZ_Alarm")}
2021.12.08 21:21:40 1: PERL WARNING: Use of uninitialized value $aval[2] in concatenation (.) or string at ./FHEM/95_Alarm.pm line 1418.
2021.12.08 21:21:40 3: eval: {Alarm_Html("ZZ_Alarm")}
2021.12.08 21:21:40 1: PERL WARNING: Use of uninitialized value $aval[3] in string eq at ./FHEM/95_Alarm.pm line 1419.
2021.12.08 21:21:40 3: eval: {Alarm_Html("ZZ_Alarm")}
2021.12.08 21:21:40 1: PERL WARNING: Use of uninitialized value $aval[3] in string eq at ./FHEM/95_Alarm.pm line 1421.
2021.12.08 21:21:40 3: eval: {Alarm_Html("ZZ_Alarm")}

ZZ_Alarm ist der Name meines Alarm-Devices. Diese Meldungen kommen beim "define" des Devices.

Kurz danach meckert FHEM - 2.

2021.12.08 21:21:40 1: [Alarm] Settings incomplete for alarmSensor EG_Bad_Fenster

im Abstand von einer bis ein paar Sekunden viermal pro als attr x alarmDevice Sensor festgelegtem Device.

Vielleicht ist der Ablauf der Einrichtung im Wiki auch nicht hinreichend nachvollziehbar beschrieben.

Grüße
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

Prof. Dr. Peter Henning

ZitatVielleicht ist der Ablauf der Einrichtung im Wiki auch nicht hinreichend nachvollziehbar beschrieben.
Sicher nicht. Sowohl im Wiki (schon älter) als auch in den SmartHome Hacks ist das genau beschrieben.

Und die Probleme kann ich auch nicht nachvollziehen - eine Neuinstallation eines Alarmdevices in einem frischen FHEM liefert keines der genannten Resultate.

Zitat[Alarm] Settings incomplete for alarmSensor EG_Bad_Fenster
Nun, dann muss man sie eben im Frontend von Alarm setzen...

LG

pah

alanblack

Zitat von: Prof. Dr. Peter Henning am 09 Dezember 2021, 12:10:23
Sicher nicht. Sowohl im Wiki (schon älter) als auch in den SmartHome Hacks ist das genau beschrieben.
Du kannst mir ja mal ein Exemplar zur Rezension schicken.  8)

Was ich meine ist:
define => attr alarmDevice => Settings ? oder
attr alarmDevice => define => Settings ?

Kann ich nicht herauslesen.

Zitat
Und die Probleme kann ich auch nicht nachvollziehen - eine Neuinstallation eines Alarmdevices in einem frischen FHEM liefert keines der genannten Resultate.

Jedenfalls kommen die Fehler bei
define => attr alarmDevice => Settings
beim ersten Aufruf des AlarmRoom.

Zitat
Nun, dann muss man sie eben im Frontend von Alarm setzen...
Da wollte ich hin. Es irritiert mich aber, wenn beim Aufruf des AlarmRoom Einträge mit Loglevel 1 erzeugt werden.

Laut Wiki
Zitat
Das Attribut alarmSettings wird beim Setzen der Alarme auf der Alarmkonfigurationsseite automatisch befüllt.
allerdings wird beim Generieren des HTML für den AlarmRoom

1403           my $avl = AttrVal($d, "alarmSettings","");
...
1406           if( int(@aval) != 4){
1407             Log3 $hash, 1, "[Alarm] Settings incomplete for alarmSensor $d";

anscheinend dieses Attribut als gefüllt vorausgesetzt.

Damit beißt sich diese Maus in den Schwanz; durch die Fehler werden in Folge die Sensoren NICHT angezeigt, so dass ich diese auch nicht setzen kann.
Bei den Aktoren hast Du die alarmSettings über die sub "Alarm_getsettings" geholt. Darin gibt es

431  my $avl = AttrVal($dev, "alarmSettings","|||0:00");

einen Defaultwert. Im Gegensatz dazu ist in

1403          my $avl = AttrVal($d, "alarmSettings","");

ein leerer Defaultwert. Wäre hier nicht auch ein nicht-leerer Defaultwert sinnvoll?

Grüße
FHEM 6.0 auf raspi3&ODROID XU4 mit HMLAN und HM-MOD-RPI-PCB, LaCrosse via JeeLink, COC868 und CUL433, Xiaomi Aqara+div. Zigbee via deCONZ, Dooya via SIGNALDuino, ZWave mit Danalock
Jeder Witz kann ein Einzeiler sein mit genügend Semikolons

Prof. Dr. Peter Henning

ZitatDu kannst mir ja mal ein Exemplar zur Rezension schicken.  8)
Ach danke, es betteln mich zwar immer wieder Menschen um kostenlose Exemplare an, aber meine diversen Bücher verkaufen sich auch so ganz gut.

ZitatWas ich meine ist:
define => attr alarmDevice => Settings ? oder
attr alarmDevice => define => Settings ?

Kann ich nicht herauslesen.
Ich verstehe nicht, wie das gemeint ist. Bevor eine Alarmanlage definiert ist, gibt es das globale UserAttr alarmDevice gar nicht

Zitatein leerer Defaultwert. Wäre hier nicht auch ein nicht-leerer Defaultwert sinnvoll?
Aber nicht doch. Ich habe es gerade eben noch einmal ausprobiert, mit einem ganz jungfräulichen FHEM. Selbstverständlich wird ein Device, bei dem das alarmDevice Attribut gesetzt wird, in der Alarm-Oberfläche angezeigt - und zwar unabhängig von den alarmSettings, und ohne Fehlermeldung. Sobald ein "Parameter setzen" in der Alarmanlage ausgeführt wird, wird das alarmSettings-Attribut auch befüllt.

Zusammengefasst: Ich sehe das Problem nicht - und > 300 andere Nutzer des Moduls haben es offenbar auch nicht.

LG

pah

marwal

Hallo zusammen, habe dazu letztes Jahr bereits ein separates Thema aufgemacht, hoffe allerdings dass ich hier besser aufgehoben bin.

Ich habe FHEM mit dem Alarm-Modul ingesamt 3x laufen, zu Hause, in einer Garage und in der Ferienwohnung.
Alle Systeme sind auf dem aktuellem Stand, allerdings wird bei der Garage die Verzögerung nicht mehr berücksichtigt. Sobald ein Event kommt, gibt es trotz eingestellter 50sek. Verzögerung Alarm. An den anderen Stationen läuft alles Reibungslos.

Hier mal der Code vom Alarm-Device:
Internals:
   FUUID      5e68c27f-f33f-950c-fc34-76fcbdb6e8a0cbd6
   FVERSION   95_Alarm.pm:0.173440/2018-09-14
   NAME       AAA
   NR         20
   STATE       
   TYPE       Alarm
   VERSION    5.0
   DATA:
     savedate   2021-12-21 20:14:06
     armstate:
       level6     armed
       level7     armed
   READINGS:
     2020-06-29 10:53:38   level0          disarmed
     2020-06-29 10:53:38   level1          disarmed
     2020-06-29 10:53:38   level2          disarmed
     2020-06-29 10:53:38   level3          disarmed
     2020-06-29 10:53:38   level4          disarmed
     2020-06-29 10:53:38   level5          disarmed
     2021-12-18 12:50:15   level6          armed
     2021-12-21 20:14:06   level7          armed
     2020-03-11 14:00:13   lockstate       unlocked
     2021-12-21 20:14:06   savedate        2021-12-21 20:14:06
     2021-12-21 20:06:20   short           
     2021-12-21 20:14:06   state           
     2021-12-21 20:14:06   status          scharf
Attributes:
   armact     set telegram msg @xxx Alarmanlage ist scharf geschalten; set telegram msg @xxx Alarmanlage ist scharf geschalten; set telegram msg @xxx Alarmanlage ist scharf geschalten
   armdelay   0:15
   armwait    set telegram msg @xxx Alarmanlage wird scharf geschalten; set telegram msg @xxx Alarmanlage wird scharf geschalten; set telegram msg @xxx Alarmanlage wird scharf geschalten
   cancelact  set telegram msg @xxx Alarmanlage wird wieder scharf geschalten; set telegram msg @xxx Alarmanlage wird wieder scharf geschalten; set telegram msg @xxx Alarmanlage wird wieder scharf geschalten; set GA_SZ_innr off; delete at_SireneAUS
   disarmact  set telegram msg @xxx Alarmanlage wird unscharf geschalten; set telegram msg @xxx Alarmanlage wird unscharf geschalten; set telegram msg @xxx Alarmanlage wird unscharf geschalten; set GA_SZ_innr off; delete at_SireneAUS
   level0autocan 0:00
   level0cond 1
   level0end  23:59
   level0msg  --
   level0start 0:00
   level1autocan 0:00
   level1cond 1
   level1end  23:59
   level1msg  --
   level1start 0:00
   level2autocan 0:00
   level2cond 1
   level2end  23:59
   level2msg  --
   level2start 0:00
   level3autocan 0:00
   level3cond 1
   level3end  23:59
   level3msg  --
   level3start 0:00
   level4autocan 0:00
   level4cond 1
   level4end  23:59
   level4msg  --
   level4start 0:00
   level5autocan 0:00
   level5cond 1
   level5end  23:59
   level5msg  --
   level5start 0:00
   level6autocan 0:00
   level6cond 1
   level6end  23:59
   level6msg  -- FEUER!
   level6offact 1
   level6onact 1
   level6start 0:00
   level7autocan 0:00
   level7cond 1
   level7end  23:59
   level7msg  -- Einbruch!
   level7offact
   level7onact defmod alarm7dly1 at +00:00:50 set telegram msg @xxx $SHORT; set telegram msg @xxx $SHORT; {alarmGarage()}; set telegram msg @xxx $SHORT; set GA_SZ_innr on; defmod at_SireneAUS at +00:00:05 set GA_SZ_innr off;
   level7start 0:00
   room       AlarmRoom


Und hier vom Kontakt welcher auslöst:
Internals:
   DEF        sensor 5 1 IODev=conbee
   FUUID      5f689579-f33f-950c-4b1a-5769a7f84280e9b9
   FVERSION   31_HUEDevice.pm:0.253510/2021-12-17
   ID         S5
   INTERVAL   1
   IODev      conbee
   NAME       FK_TuerEingang_aqara
   NR         34
   STATE      closed
   TYPE       HUEDevice
   lastupdated 2021-12-21 19:13:53
   lastupdated_local 2021-12-21 20:13:53
   manufacturername LUMI
   modelid    lumi.sensor_magnet.aq2
   name       FK_TuerEingang_aqara
   on         1
   reachable  1
   swversion  20161128
   type       ZHAOpenClose
   uniqueid   00:15:8d:00:04:5c:de:87-01-0006
   READINGS:
     2021-12-18 12:50:00   IODev           conbee
     2021-12-21 19:11:00   battery         98
     2021-12-21 19:11:00   batteryPercent  98
     2021-12-18 12:30:41   lastseen        2021-12-18T11:30:41.127
     2021-12-21 19:11:00   reachable       1
     2021-12-21 20:13:53   state           closed
     2021-12-21 19:11:00   temperature     12
   helper:
     devtype    S
     reachable  0
     update_timeout 1
     configList:
     json:
       ep         1
       etag       3dc9ea6ddaf816847d81541c1c44a694
       lastseen   2021-12-21T19:13:53.047
       manufacturername LUMI
       modelid    lumi.sensor_magnet.aq2
       name       FK_TuerEingang_aqara
       swversion  20161128
       type       ZHAOpenClose
       uniqueid   00:15:8d:00:04:5c:de:87-01-0006
       config:
         battery    98
         temperature 1200
       state:
         lastupdated 2021-12-21T19:13:53.047
     setList:
Attributes:
   IODev      conbee
   alarmDevice Sensor
   alarmSettings alarm7,|FK_TuerEingang_aqara:open|Eingangstür offen|on
   alias      Eingangstür
   devStateIcon open:fts_window_1w_open@#e56524 closed:fts_window_1w
   model      lumi.sensor_magnet.aq2
   room       83_CONBEE


und ein Teil vom Log, allerdings kein Verbose 5:
2021.12.21 19:24:52 1: [Alarm 0] No "Cancel" device defined, level will be ignored
2021.12.21 19:24:52 1: [Alarm 1] No "Cancel" device defined, level will be ignored
2021.12.21 19:24:52 1: [Alarm 2] No "Cancel" device defined, level will be ignored
2021.12.21 19:24:52 1: [Alarm 3] No "Cancel" device defined, level will be ignored
2021.12.21 19:24:52 1: [Alarm 4] No "Cancel" device defined, level will be ignored
2021.12.21 19:24:52 1: [Alarm 5] No "Cancel" device defined, level will be ignored
2021.12.21 19:24:52 3: [Alarm 6] Created cancel notifier
2021.12.21 19:24:52 3: [Alarm 6] Created raise notifier
2021.12.21 19:24:52 1: [Alarm] Settings |set telegram msg @xxx $SHORT; set telegram msg @xxx $SHORT; set telegram msg @xxx $SHORT||00:00 incomplete for alarmActor d_feuer
2021.12.21 19:24:52 3: [Alarm 7] Created cancel notifier
2021.12.21 19:24:52 3: [Alarm 7] Created raise notifier
2021.12.21 19:24:52 1: [Alarm] Settings |set telegram msg @xxx $SHORT; set telegram msg @xxx $SHORT; set telegram msg @xxx $SHORT||00:00 incomplete for alarmActor d_feuer
2021.12.21 19:24:53 3: [Alarm 7] Created disarm notifier
2021.12.21 19:27:41 3: [Alarm 7] raised from device FK_TuerEingang_aqara with event open
2021.12.21 19:27:46 1: [Alarm] Killing delayed action alarm7dly1
2021.12.21 19:27:46 3: set telegram msg @xxx Alarmanlage wird wieder scharf geschalten; set telegram msg @xxx Alarmanlage wird wieder scharf geschalten; set telegram msg @xxx Alarmanlage wird wieder scharf geschalten; set GA_SZ_innr off; delete at_SireneAUS : Please define at_SireneAUS first
2021.12.21 19:27:46 3: [Alarm 7] canceled from device program
2021.12.21 19:27:46 3: define alarm7.disarm.T at +00:00:03 set telegram msg @xxx Alarmanlage wird unscharf geschalten; set telegram msg @xxx Alarmanlage wird unscharf geschalten; set telegram msg @xxx Alarmanlage wird unscharf geschalten; set GA_SZ_innr off; delete at_SireneAUS : Please define at_SireneAUS first
2021.12.21 19:27:46 3: alarm7.disarm.N return value: [Alarm 7] disarmed from alarmSensor GA_rr_schalter_aqara with event 1002


Liebe Grüße und Besten Dank!


Prof. Dr. Peter Henning

Sorry, aber mit diesen Log-Auszügen kann ich gar nichts anfangen, hier liegt irgendein Fehler in der Konfiguration vor. Tipp zum selbst suchen: Wird das at-Device bei der Auslösung des Alarmsensors wirklich angelegt? Wenn ja, mit welchen Parametern?

LG

pah

P.S.: Auch wenn man das leider immer häufiger liest: Geräte werden nicht "geschalten", sondern "geschaltet".

marwal

Danke pah, bin alles nochmal durchgegangen ...

Es lag an folgender Zeile:
   level7onact defmod alarm7dly1 at +00:00:50 set telegram msg @xxx $SHORT; set telegram msg @xxx $SHORT; {alarmGarage()}; set telegram msg @xxx $SHORT; set GA_SZ_innr on; defmod at_SireneAUS at +00:00:05 set GA_SZ_innr off;

Setzte ich hier anstatt einem Semikolon 2, wird alles richtig interpretiert. Gab es eine Änderung? es hatte bis vor kurzem super funktioniert ?!

Zitat[P.S.: Auch wenn man das leider immer häufiger liest: Geräte werden nicht "geschalten", sondern "geschaltet"./quote]

Man lernt nie aus, besten dank  ;D

Prof. Dr. Peter Henning

ZitatGab es eine Änderung?
Nein. Bei Alarm seit vielen Monaten nicht - und die zwei ;; sind bei FHEM-Kommandos eigentlich immer schon Standard.

LG

pah

Blauhorn

Hallo,

ich habe nun endlich mal das seit einigen Monaten schlummernde Alarmdevice in Betrieb genommen, funktioniert auch alles soweit.
Nun kann man ja aber jeden Sensor nur einmal verwenden, zwar in verschiedenen Alarmleves aber nicht für verschieden Aktionen.
Mein gewünschte Anwendungsfall wäre, einen Hardware-Button zu haben, der Einfach, Doppel oder auch Dreifach-click versteht, und diese dann auch für Schärfen, Entschärfen und Widerruf nutzt. Ich würde das jetzt mit einem separaten Notify machen, aber schmuck wär's ja, wenn das direkt in Alarmkonfiguration einstellbar ist.

Gruß vom Blauhorn
1xBananaPi; 1x FB7490; 1xCUL433; 1x CC2530+CC2591; OpenMiLight-Gateway; 1xHMUART; HM-LC-Sw4-DR; Sonoff* mit TASMOTA, LEDController; MySensors; zigbee2mqtt;

Prof. Dr. Peter Henning

Zitatwenn das direkt in Alarmkonfiguration einstellbar ist
::)

Es steht jedem frei, sein eigenes Modul zu schreiben.

pah

87insane

Hey zusammen,

da ich mich nun mit dem Modul auch einige Zeit beschäftigt habe und nicht weiter komme, hier meine Fragen.

Die "Set Action" im "Actors" Bereich sollen wie genau geschrieben werden?
Wenn ich z.B. versuche einen Alias anstelle des Gerätenamens via AttrVal auslesen möchte klappt dies leider nicht.. Ich hab sowas gedacht:

{my $temp = AttrVal($NAME,'alias','ERROR');fhem('set DEV_123 speak $temp')}
{my $temp = AttrVal($d,'alias','ERROR');fhem('set DEV_123 speak $temp')}

geht beides nicht aber auch andere Ideen klappen nicht. Daher die Frage, ist das in dem Bereich nicht gewollt?

An sich würde ich $Short gerne einfach umstellen. Anstelle von der Meldung des Alarm Level am Ende würd ich diesen gern vorne haben und danach was passiert.
Beispiel: Einbruch - Fenster xy wurde geöffnet

Aktuell ist das im Modul umgekehrt. Es kommt zuerst Message Part I und dann Part II. Ggf kann man auch die Parts einzeln aufrufen. Aber ich habe weder im Wiki was gefunden noch habe ich den Quelltext soweit verstehen können. Ich bin über Infos sehr erfreut :)

Danke und Gruß,
87Insane

Prof. Dr. Peter Henning

Erstens stellt sich mir die Frage, was das Log dazu sagt.

Und zweitens: Hieran gedacht?

https://forum.fhem.de/index.php?topic=99995.0

LG

pah

87insane

1) Leider sagt das LOG nichts dazu. Es erscheint weder ein Fehler noch sonst irgendeine Info.

2) Was genau soll ich damit in Zusammenhang bringen? Ich möchte darüber nichts schalten - lediglich die den Ausgabe Text anpassen. Für mich wäre es auch ok, wenn ich Message Part I und II einfach als VAR zur Verfügung hätte.
Ich wundere mich das PERL dort nicht funktioniert.

TomLee

Zitat von: 87insane am 17 Dezember 2022, 20:16:56

{my $temp = AttrVal($NAME,'alias','ERROR');fhem('set DEV_123 speak $temp')}
{my $temp = AttrVal($d,'alias','ERROR');fhem('set DEV_123 speak $temp')}

geht beides nicht ...

Nie mit dem Modul beschäftigt und keine Ahnung was du da machst, aber in den zwei gezeigten Test-Beispielen klappen die Sprachbefehle nicht, weil $temp nicht in den einfachen Quotes evaluiert wird.

87insane

ZitatNie mit dem Modul beschäftigt und keine Ahnung was du da machst, aber in den zwei gezeigten Test-Beispielen klappen die Sprachbefehle nicht, weil $temp nicht in den einfachen Quotes evaluiert wird.

Hach wie ich diese Freundlichkeit hier wieder liebe. Ich habe X Dinge getestet, wie auch geschrieben.
Im Wiki steht nichts über weitere (bis auf $Short, VARs).

{my $alias = "BLA"; fhem("set ECHO_G2A1B50305030CH2 speak $alias")}
geht auch nicht! - Genau wie noch x andere Tests. Versuch es doch auch mal und berichte mir wie es lief.

Woher nimmst du die Erkenntnis das ich mit dem Modul nie beschäftigt habe? Finde solche pauschal Aussagen immer spannend. Ich denke das man an diversen Beiträgen sieht das ich mich sowohl mit FHEM und auch den Modulen immer auseinander setze bevor ich was schreibe.

rudolfkoenig

Bevor hier zum Handgreiflichkeiten kommt: ich habe TomLee so verstanden, dass er sich noch nicht mit dem Modul beschaeftigt hat.

87insane

Danke @rodolfkoenig. Vermutlich war es so gemeint... Sorry @TomLee.

Aber leider bleibt da Thema offen, denn es klappt ja leider nicht. Gibt es da ein Attr oder irgendwas, um das so wie ich das vorhabe zu nutzen?

dkalass

Moin zusammen,
ich habe mal eine andere Frage:
Ich habe meine fhem.cfg in viele .cfg Dateien aufgeteilt weil ich finde, das es viel übersichtlicher ist.
Aufgefallen ist mir bei diesem Modul, das obwohl es in einen eigenen .cfg hinterlegt ist, Änderungen immer wieder in die fhem.cfg eingetragen werden.
Vielleich kann man das bei der nächsten Version berücksichtigen, wäre toll!


Prof. Dr. Peter Henning

ZitatAufgefallen ist mir bei diesem Modul, das obwohl es in einen eigenen .cfg hinterlegt ist, Änderungen immer wieder in die fhem.cfg eingetragen werden.
Das ist granatenmäßiger Unsinn. Die interne Konfiguration der Alarmanlage im AlarmFILE hat nichts mit den Definitionen in der fhem.cfg zu tun.

ZitatVielleich kann man das bei der nächsten Version berücksichtigen, wäre toll!
Sicher nicht.

pah

dkalass

Hallo Herr Prof. Dr. Peter Henning,

mich überrascht der ungehörige Ton von Ihnen!
Diese Einträge stammen doch aus dem Modul, oder?

define alarm0.off.N notify (TFClose.warn:yes)|(Cancel:on) {main::Alarm_Exec("Alarmanlage",0,"$NAME","$EVENT","off")}
setuuid alarm0.off.N 63d2438a-f33f-24ff-b0d3-b1c6b008ba6d103b
attr alarm0.off.N group alarmNotifier
attr alarm0.off.N room Alarm
define alarm0.on.N notify (BK.F:open)|(HM_MOD_EM_8_PEQ1916517_1:open)|(HM_MOD_EM_8_PEQ1916517_2:open)|(HM_MOD_EM_8_PEQ1916517_3:open)|(HM_MOD_EM_8_PEQ1916517_4:open)|(HM_MOD_EM_8_PEQ1916517_5:open)|(HM_MOD_EM_8_PEQ1916517_6:open)|(HM_MOD_EM_8_PEQ1916517_7:open)|(HM_MOD_EM_8_PEQ1916517_8:open)|(TFOpen.warn:.*) {main::Alarm_Exec("Alarmanlage",0,"$NAME","$EVENT","on")}
setuuid alarm0.on.N 63d2438b-f33f-24ff-03a1-7a80436174c4a058
attr alarm0.on.N group alarmNotifier
attr alarm0.on.N room Alarm

Wenn man so schlau ist wie sie, könnte man das auch freundlich erklären, oder ist das in ihren Kreisen nicht mehr gang und gebe?

Prof. Dr. Peter Henning

#31
1. Keineswegs "schreibt das Modul in die fhem.cfg" - das ist die Aufgabe von FHEM, wenn man so will also von fhem.pl.
2. Woher soll FHEM (nicht etwa ein bestimmtes Modul) wissen, dass eine bestimmte Device-Definition in die ausgelagerte Konfigurationsdatei "meine_Alarmanlage.cfg" des Users xyz geschrieben werden soll? Edit: Wie Rudi unten anmerkt, weiß FHEM das sehr wohl. Da das Modul - in dem Fall 95_Alarm.pm - aber gar nicht in eine Konfigurationsdatei schreibt, sodern dies FHEM überlässt, ist das nicht relevant.

Ich habe hier nur einen Hinweis: Finger weg von manuell editierten Konfigurationsdateien (und damit auch vom Aufspalten derselben).

LG

pah

rudolfkoenig

Zitat2. Woher soll FHEM (nicht etwa ein bestimmtes Modul) wissen, dass eine bestimmte Device-Definition in die ausgelagerte Konfigurationsdatei "meine_Alarmanlage.cfg" des Users xyz geschrieben werden soll?
Das wird vom $hash->{CFGFN} abgeleitet.
Bei Include-Dateien wird das gesetzt, damit die aus dieser Datei gelesenen Definitionen auch dahin zurueckgeschrieben werden.

usm

Hallo,
ich hangel mich gerade durch die Wiki Beschreibung und versuche zu einem EnOcean windowHandle die unterschiedlichen Level zu definieren. Das Device meldet folgende vier Stati:
open, closed, tilted, open_from_tilted
Es bietet sich also an eine Warnung bei tilted (z.B. beim Verlassen) zu definieren und einen Einbruch zu melden wenn der windowHandle bei Abwesenheit den Status open_from_tilted meldet.

Ist so eine Konfiguration im Modul umsetzbar, oder können unterschiedliche Stati gar nicht definiert werden?

Lieben Dank
usm

Prof. Dr. Peter Henning

Das Modul ist so aufgebaut, dass ein (logisches) Gerät mit einem Event zwar verschiedene Alarmlevel auslösen kann. Aber nicht mit verschiedenen Events verschiedene Alarmlevel.

Hier müsste man (das halte ich auch für sauberer) zu einem physisch vorhandenen Gerät mehrere logische Geräte (z.B. als Dummy, oder mit CustomReadings) definieren - deren Events dann unterschiedliche Level auslösen.

LG

pah

P.S.: Die Mehrzahl von Status ist Status.

87insane

#35
Hallo zusammen,

ich würde hier gerne nochmal auf die Messageparts zu sprechen kommen (siehe Seite 2). Wie kann man diese "umdrehen"? Wenn ich $SHORT verwende kommt immer zuerst PART I und dann PART II. Mag in der Reihenfolge logisch klingen aber ich finde es falsch herum. Ich würde mir gerne Nachrichten senden in denen z.B. steht:
Zugang Fenster XY nicht aber wie es in $SHORT steht: Fenster XY Zugang.

Innerhalb des Wikis findet man die Message Parts nicht einzeln. $SHORT beinhaltet schon beide.

Zweites Thema:
Wenn ich z.B. weg gehe und den Alarm (Einbruch) scharf schalte, habe ich einen delay, damit ich es auch bis zur Tür schaffe und nicht direkt einen Alarm auslöse. Nun suche ich einen Weg um den delay NUR auf die Türe zu schalten. Alles andere soll sofort scharf sein. Denn ich benutze immer nur die Türe und gehe nie durchs Fenster hinaus. Die Wahrscheinlichkeit dass ein Einbrecher am Fenster wartet ist natürlich gering aber rein logisch wäre für mich:
1. Alarm scharf stellen
2. Alle Fenster und ggf. sonstige Türen sind scharf
3. Delay auf Türe (z.B. 10 Sekunden) aktiv
4. Nach den 10 Sekunden ist dann auch die Türe aktiv / scharf geschaltet

Gruß,
87Insane

Prof. Dr. Peter Henning

Die Reihenfolge der Message Parts werde ich nicht ändern, weil die Semantik so herum korrekt ist. Wer das haben möchte, kann ja Zeile 709 des Moduls umstellen.

Betreffend die unterschiedlichen Delays: Auch das wird nicht im Modul geändert. Man kann in wenigen Zeilen ein DOIF erstellen, das die Scharfstellung der Tür verzögert, und alle anderen Alarme sofort scharf macht. Dazu muss dann aber natürlich der "allgemeine" Delay in der Weboberfläche auf Null gesetzt werden.

LG

pah


87insane

Schade, dann baue ich mir das direkt selber. Die Zeilen für die Befehle sind z.b. auch relativ klein. Ich dachte das "Verbesserungen" ggf. sinnig sind. Aber wenn ich drumherum alles mögliche anpassen muss, kann ich lieber direkt einen großen MSwitch bauen oder DOIF.

Betreffend der Message Parts müsste man ja nichtmal etwas umdrehen aber du könntest einfach zwei Variablen dafür belegen. Einfach sowas wie $SHORT1 und $SHORT2 und die Welt wäre ok. Wenn wirklich mal einer einbricht, will ich nicht zuerst die Info lesen was passiert ist sondern wo. Das ist in meinen Augen wichtig. Gleiches bei Brand oder sonst was.

Gruß,
87Insane