Hallo,
ich habe meine Alarmanlage auf der Grundlage derer aus dem Wiki http://www.fhemwiki.de/wiki/Alarmanlage (http://www.fhemwiki.de/wiki/Alarmanlage) eingerichtet und auch ein paar Anpassungen vorgenommen, da mich die dort in Kauf genommenen Fehlermeldungen gestört haben. Siehe auch unten: eine weitere if-Abfrage, ob der Timer verzoegert_scharf überhaupt läuft, regelt das. So weit so gut.
Eine Sache habe ich bisher noch nicht hinbekommen und bitte um eure Hilfe. Beim Unscharfschalten wird sicherheitshalber ein "Alarm_Melder off", das heißt: "Sirene aus" gesendet, ohne deren Status vorher abzufragen. Ich finde das ok, denn unscharf bedeutet Sirene wirklich aus, ohne wenn und aber.
Der Code hat nur einen kleinen Schönheitsfehler, den ich gern korrigieren möchte:
set ANLAGE_SCHARF,ANLAGE_SCHARF_intern off
in Zeile 3 des notify auf ANLAGE_SCHARF.* löst diesen selber aus und dadurch wird die Sirene bei jedem Unscharfschalten doppelt ausgeschaltet, obwohl sie aus war. Ich muss das jedoch setzen, denn beide Schalter (ANLAGE_SCHARF und ANLAGE_SCHARF_intern) müssen hinterher aus off stehen, unabhängig davon, welchen ich betätigt habe.
Wie kann ich " ... set ANLAGE_SCHARF,ANLAGE_SCHARF_intern off")} umsetzen, ohne das notify, in dem es selbst steht, auszulösen? Ich habe bereits versucht, zwei notifys zu erstellen, eines für ANLAGE_SCHARF und eines für ANLAGE_SCHARF_intern, aber auch damit bekomme ich das nicht hin. Hat jemand eine Idee?
########
# unscharf
define act_on_ANLAGE_SCHARF_off notify ANLAGE_SCHARF.*:off {if (Value("ANLAGE_STATUS") eq "scharf_intern" || \
Value("ANLAGE_STATUS") eq "scharf") {fhem("set ALARM_Melder off;;set ALARM_STATUS unscharf ;; \
set ANLAGE_STATUS unscharf ;; set Scharfanzeige1,Scharfanzeige2 off ;; set ANLAGE_SCHARF,ANLAGE_SCHARF_intern off")} \
else {if (Value("ANLAGE_STATUS") ne "60sec") {fhem("set ALARM_Melder off ;; set ALARM_STATUS unscharf ;; \
set ANLAGE_STATUS unscharf ;; set Scharfanzeige1 off")} else {fhem("set ALARM_Melder off ;; \
set ALARM_STATUS unscharf ;; set ANLAGE_STATUS unscharf ;; set Scharfanzeige1 off;;delete verzoegert_scharf")}}}
Hi,
wie wäre es das betroffene notify vor dem off setzen zu disablen? Und im Anschluss wieder zu enablen?
Greetz
Eldrik
Danke für den Tip. Ich sehe, ich bin im richtigen Unterforum. ;D Wat dat nich all gifft.
Also etwa in der Art:
.. attr act_on_ANLAGE_SCHARF_off disable 1 ;;;; set ANLAGE_SCHARF,ANLAGE_SCHARF_intern off;;;;attr act_on_ANLAGE_SCHARF_off disable 0
Hi,
ja genau so könnte ich es mir in deinem Fall vorstellen! Die Syntax schaut soweit auch korrekt aus.
Greetz
Eldrik
Super, danke. Das probiere ich heute Abend gleich mal aus.
Hallo,
wenn es dir nur darum geht den Status passend zu setzen ohne ein notify zu triggern schau dir mal setstate an.
Grüße
Mann bin ich blöd. Was finde ich, als ich den mir bis eben unbekannten Befehl gesucht habe:
Die Alarmanlagen-Wiki-Seite mit dem Satz an der entscheidenden Stelle:
"Hier liesse sich eventuell auch mit "setstate" anstatt "set" arbeiten, da setstate nur den Status auf dem Webfrontend ändern würde."
Wer lesen kann, ist echt im Vorteil. Wird jetzt öfter mal spät wegen der WM. 8) Danke für die Nachhilfe.
So, Variante 1 ist es geworden (attr disable ...) aus 2 Gründen:
1. Eine "Zustandsänderung" durch setstate wird auf der Webseite erst beim Neuladen derselben angezeigt. Schlecht für floorplan und Co.
2. Sollte ich doch mal eine hardwaremäßige Anzeige realisieren wollen, würde das mit setstate nicht richtig funktionieren.
Das hier tut nun, was es soll:
define act_on_ANLAGE_SCHARF_off notify ANLAGE_SCHARF.*:off {if (Value("ANLAGE_STATUS") eq "scharf_intern" || \
Value("ANLAGE_STATUS") eq "scharf") {fhem("set ALARM_Melder off;;set ALARM_STATUS unscharf ;; \
set ANLAGE_STATUS unscharf ;; set Scharfanzeige1,Scharfanzeige2 off ;; attr act_on_ANLAGE_SCHARF_off disable 1 ;;set ANLAGE_SCHARF,ANLAGE_SCHARF_intern off;;attr act_on_ANLAGE_SCHARF_off disable 0")} \
else {if (Value("ANLAGE_STATUS") ne "60sec") {fhem("set ALARM_Melder off ;; set ALARM_STATUS unscharf ;; \
set ANLAGE_STATUS unscharf ;; set Scharfanzeige1 off")} else {fhem("set ALARM_Melder off ;; \
set ALARM_STATUS unscharf ;; set ANLAGE_STATUS unscharf ;; set Scharfanzeige1 off;;delete verzoegert_scharf ;; \
attr act_on_ANLAGE_SCHARF_off disable 1 ;;set ANLAGE_SCHARF,ANLAGE_SCHARF_intern off;;attr act_on_ANLAGE_SCHARF_off disable 0")}}}
Danke nochmal an alle.