[gelöst] Briefkasten (Fensterkontakt) sendet Nachricht und widerruft Alarm nicht

Begonnen von ffdec, 12 März 2018, 20:24:45

Vorheriges Thema - Nächstes Thema

ffdec

Hi, wenn der Fenstekontakt im Briekasten geschlossen wird, wird eine Sprachansage erzeugt und der Alarm in der Alarmanlage widerrufen.
Leider funktioniert letzteres nicht regelmäßig, Außerdem wird beim Widerrufen die Ansage zum Einwurf übersprochen. Das habe ich mich wait zum lösen versucht, nur klappt es auch nicht rihtig. Hier der letzte Code. Hat jemand eine Idee ;-)

define Briefk_Einwurf DOIF ([Briefkasten] eq "closed") ({fhem ("set WARNER canceled 1")}, set HM_541A8B_Mp3 playTone 030)

define Briefk_Einwurf DOIF ([Briefkasten] eq "closed") (set HM_541A8B_Mp3 playTone 030, {fhem ("set WARNER canceled 1"))
set Briefk_Einwurf wait 0, 10


HMUARTLGW HMLAN Alarmanlage ZPumpe VCONTROL Viessmann 333-F MySensors CO2 Floorplan IT Raspberry 3 CC1101 Firmata Arduino nanoCUL868

Otto123

Hast Du den Code im Lotto gewonnen?

Ich weiß, dass manche Perl bervorzugen, aber was soll das: ({fhem ("set WARNER canceled 1")}, set HM_541A8B_Mp3 playTone 030) ???
Ich kann mich nicht entscheiden? ;D ;D ;D

Und wait ist ein Attribute und wird nicht per set übergeben!?

Hast Du schon mal in die Doku geschaut?
define Briefk_Einwurf DOIF ([Briefkasten] eq "closed") (set HM_541A8B_Mp3 playTone 030) (set WARNER canceled 1)
attr Briefk_Einwurf wait 0,10



Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

ffdec

Ich habe natürlich die Doku gelesen und Deinen Code habe ich so sicher auch schon so oder ähnlich getestet. Ich hatte gelesen, dass set-Aktionen per Komma getrennt werden. So richtig bin ich nicht schlau geworden. Das attr ist auch nicht die Ursache, ich habe es hier ja nur als Beispiel nachformuliert. Das Perlisieren habe ich nur gemacht, weil ich da eine Fehlerquelle sah. In der Alarmanlage funktioniert es nur mw in Perl. Naja egal. Ich versuche Dein Beispiel mal. Gehe aber erst morgen wieder an den Briefkasten.

Gruß JH

ZitatAngaben im Ausführungsteil:   back

Der Ausführungsteil wird durch runde Klammern eingeleitet. Es werden standardmäßig FHEM-Befehle angegeben, wie z. B.: ...(set lamp on)

Sollen mehrere FHEM-Befehle ausgeführt werden, so werden sie mit Komma statt mit Semikolon angegeben ... (set lamp1 on, set lamp2 off)

Falls ein Komma nicht als Trennzeichen zwischen FHEM-Befehlen gelten soll, so muss der FHEM-Ausdruck zusätzlich in runde Klammern gesetzt werden: ...((set lamp1,lamp2 on),set switch on)
HMUARTLGW HMLAN Alarmanlage ZPumpe VCONTROL Viessmann 333-F MySensors CO2 Floorplan IT Raspberry 3 CC1101 Firmata Arduino nanoCUL868

Otto123

Moin,

nimm meine scherzhafte Bemerkung nicht krumm  ;)

Wenn Du aber von zwei Befehle hintereinander einen mit einem wait verzögern willst, musst Du beide Befehle separat klammern. In einer Klammer sind die Befehle aus Sicht des wait nur Einer.
Diese Erklärung findest Du direkt auf meinem Link, ich habe nicht einfach auf irgendeine Doku verwiesen  :D

BTW: Das im DOIF (und nur dort) Befehle innerhalb der Klammer mit Komma getrennt werden ist aus meiner Sicht ein großes Übel.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Per

Zitat von: ffdec am 12 März 2018, 21:59:34Ich hatte gelesen, dass set-Aktionen per Komma getrennt werden.
Ja, Und was sagt wait dazu?


Zitat von: ffdec am 12 März 2018, 21:59:34In der Alarmanlage funktioniert es nur mw in Perl
Dann dürftest du es aber nicht wieder über fhem() aufrufen müssen. {fhem(abc)} = abc, dauert nur länger.

ffdec

Beides geht nicht. Der Alarm wird ausgelöst aber der Rest wird nicht ausgeführt. set WARNER canceled 1 funktioniert direkt in der Eingabezeile.

define Briefk_Einwurf DOIF ([Briefkasten] eq "closed") (set HM_541A8B_Mp3 playTone 030) (set WARNER canceled 1)
attr Briefk_Einwurf wait 0:10


[code]define Briefk_Einwurf DOIF ([Briefkasten] eq "closed") (set HM_541A8B_Mp3 playTone 030) (set WARNER canceled 1)
attr Briefk_Einwurf wait 0,10
[/code]
HMUARTLGW HMLAN Alarmanlage ZPumpe VCONTROL Viessmann 333-F MySensors CO2 Floorplan IT Raspberry 3 CC1101 Firmata Arduino nanoCUL868

Damian

Zitat von: ffdec am 13 März 2018, 16:23:08
[code]define Briefk_Einwurf DOIF ([Briefkasten] eq "closed") (set HM_541A8B_Mp3 playTone 030) (set WARNER canceled 1)
attr Briefk_Einwurf wait 0,10


Hast du das auch mit Attribut do always probiert?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

ffdec

Zitat von: Damian am 13 März 2018, 16:27:29
Hast du das auch mit Attribut do always probiert?

Jetzt rennt es. Das war es. Gestern hatte ich es auch mal drin aber da war wieder was anderes falsch. Ich muss es mir noch mal genau durchlesen. Dankee an Alle für die Hilfe
HMUARTLGW HMLAN Alarmanlage ZPumpe VCONTROL Viessmann 333-F MySensors CO2 Floorplan IT Raspberry 3 CC1101 Firmata Arduino nanoCUL868

Otto123

ZitatIch habe natürlich die Doku gelesen
hast Du nicht :(
ZitatBeispiel: Bei einer Befehlssequenz, hier: (set lamp1 on, set lamp2 on), soll vor dem Schalten von lamp2 eine Verzögerung von einer Sekunde stattfinden. Die Befehlsfolge muss zunächst mit Hilfe von Klammerblöcke in eine Befehlssequenz aufgespalten werden: (set lamp1 on)(set lamp2 on). Nun kann mit dem wait-Attribut nicht nur für den Beginn der Sequenz, sondern für jeden Klammerblock eine Verzögerung, getrennt mit Komma, definieren werden, hier also: wait 0,1. Damit wird lamp1 sofort, lamp2 eine Sekunde danach geschaltet. Die Verzögerungszeit bezieht sich immer auf den vorherigen Befehl.
Der : ist für Bedingungsblöcke  ;D

ZitatDer Alarm wird ausgelöst
das war aber dann kein Bestandteil des DOIF - oder?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

ffdec

... doch sogar mehrmals, aber ich habe es nicht richtig verstanden. Nun ist der Groschen durch  ;D
Okay die Doku ist ja sehr viel, kann wirklich sein, dass ich das nicht gelesen habe, denn es steht ja sehr klar dort. Ich habe wahrscheinlich auch keine gute Suche/Maschine...

Ja, Alarm löst der Kontakt in der Alarmanlage aus und wird dann durch das doif gecancelt also widerrufen, damit der nächste Postmann wieder den Alarm/die Ansage auslöst
HMUARTLGW HMLAN Alarmanlage ZPumpe VCONTROL Viessmann 333-F MySensors CO2 Floorplan IT Raspberry 3 CC1101 Firmata Arduino nanoCUL868

Otto123

Was ich noch nicht verstehe: Wieso Du do always brauchst. Dein Fensterkontakt wechselt doch von closed auf open - oder? Liefert der immer nur closed Events?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

ffdec

Der liefert in der "Klappe zu Position" immer open. Nur wenn er (die Klappe) geöffnet wird, wir die Lichtschranke durch eine Alufolienfahne geschlossen und liefert closed. Kann auch sein, dass da mal Preller dabei sind. Wahrscheinlich brauch er always, weil der Briefkasten ja mehrmals am Tag geöffnet wird und damit auch immer den letzteren Befehl ausführt --- klingt komisch, es werden ja immer (eigentlich) beide Befehle ausgeführt??? Vlt ist da ja doch noch etwas im doif inkorrekt.
HMUARTLGW HMLAN Alarmanlage ZPumpe VCONTROL Viessmann 333-F MySensors CO2 Floorplan IT Raspberry 3 CC1101 Firmata Arduino nanoCUL868

Otto123

Das meine ich, mit dem Event und Zustandswechsel von closed nach open ändert doch die Bedingung ihren Zustand. Damit wäre ohne do always auch alles ok.
So dachte ich, hätte ich do always verstanden  :-[
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz