Autor Thema: [gelöst] Briefkasten (Fensterkontakt) sendet Nachricht und widerruft Alarm nicht  (Gelesen 586 mal)

Offline ffdec

  • Full Member
  • ***
  • Beiträge: 167
    • Hendriks Blog
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

« Letzte Änderung: 13 März 2018, 17:23:43 von ffdec »
HMUARTLGW HMLAN Alarmanlage ZPumpe VCONTROL Viessmann 333-F MySensors CO2 Floorplan IT Raspberry 3 CC1101 Firmata Arduino nanoCUL868

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10611
    • Otto's Technik Blog
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
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

Offline ffdec

  • Full Member
  • ***
  • Beiträge: 167
    • Hendriks Blog
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

 
Zitat
Angaben 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)
« Letzte Änderung: 12 März 2018, 22:07:35 von ffdec »
HMUARTLGW HMLAN Alarmanlage ZPumpe VCONTROL Viessmann 333-F MySensors CO2 Floorplan IT Raspberry 3 CC1101 Firmata Arduino nanoCUL868

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10611
    • Otto's Technik Blog
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
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

Offline Per

  • Hero Member
  • *****
  • Beiträge: 1368
Ich hatte gelesen, dass set-Aktionen per Komma getrennt werden.
Ja, Und was sagt wait dazu?


In 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.

Offline ffdec

  • Full Member
  • ***
  • Beiträge: 167
    • Hendriks Blog
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

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 5822
[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 mit uiTable, DOIF-Perl, THRESHOLD, FHEM-Befehl: IF
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline ffdec

  • Full Member
  • ***
  • Beiträge: 167
    • Hendriks Blog
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

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10611
    • Otto's Technik Blog
Zitat
Ich habe natürlich die Doku gelesen
hast Du nicht :(
Zitat
Beispiel: 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

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

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline ffdec

  • Full Member
  • ***
  • Beiträge: 167
    • Hendriks Blog
... 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
« Letzte Änderung: 13 März 2018, 20:52:20 von ffdec »
HMUARTLGW HMLAN Alarmanlage ZPumpe VCONTROL Viessmann 333-F MySensors CO2 Floorplan IT Raspberry 3 CC1101 Firmata Arduino nanoCUL868

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10611
    • Otto's Technik Blog
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
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

Offline ffdec

  • Full Member
  • ***
  • Beiträge: 167
    • Hendriks Blog
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

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10611
    • Otto's Technik Blog
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
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

 

decade-submarginal