Fhem mit Arduino, und Yowsup Probleme

Begonnen von m-d-ley, 17 August 2019, 18:29:55

Vorheriges Thema - Nächstes Thema

m-d-ley

Hallo, ich habe folgende Probleme bzw. Verstehe ich das Phänomen nicht.
Ich habe in meine Einbruchneldeanlage ein Arduino Nano verbaut und diesen via USB an meinen Server angebunden. Dort habe ich die Relaiskontakte der EMA mit den Digitalen Eingängen des Arduino verbunden, Pullups eingeschaltet etc. Das funktioniert auch alles wunderbar. Die EMA schaltet ein Relais, digital input wird in FHEM als on erkannt. Nun will ich bei einem Ereignis eine WhatsApp verschicken. Das erste wäre eine einfache Nachricht, wenn die Klingel betätigt wird (diese läuft bei mir über die EMA). Das DOIF sieht bei mir so aus:
([ema_d_in_05] eq "on" and [ema_d_in_06] eq "off") (set WhatsApp send 49176xxxxxxxxx Klingeltaste Haustür unten)

Das Problem daran: Sobald die Klingel einmal betätigt wird, schickt mir FHEM 6 bis 8 mal die Nachricht.

Das selbe Problem habe ich wenn ich einen Magnetkontakt freigegebe mit einer UND Verknüpfung. Das DOIF sieht genauso aus, nur mit anderen Eingängen.

Ich bin mittlerweile echt ratlos, weil ich die CommandRef vom notify oder DOIF nicht wirklich verstehe. Ich brauche ja nur eine simple UND Verknüpfung, welche nur einmal ausgeführt wird. Das habe ich mit einem notify nicht hinbekommen habe. Nur mit dem DOIF funktioniert es, allerdings mit dieser Einschränkung.

Jemand eine Idee?

IchEben

Hey m-d-ley,

aufs Blaue geraten würde ich sagen, dein Relais prellt. Dem kannst du entweder mit einer Hardware Entprellung entgegenwirken (z.B. einem Kondensator) oder du machst es halt per Software.
Wobei ich mit Software nicht FHEM, sondern deinen Arduino Code meine.
Such einfach mal nach ,,arduino entprellen" wenn du dir nicht sicher bist wie du eine Entprellung in arduino umsetzt.

Falls du es doch in fhem umsetzen möchtest schau mal hier:
https://groups.google.com/d/msg/fhem-users/0VlGPjZrvlA/vMpY0bwm6HYJ

define au_KlingelTaste FS20 1b1b 1121
attr au_KlingelTaste dummy 1
attr au_KlingelTaste room Aussen
attr au_KlingelTaste showtime 1

define Klingel dummy
attr Klingel room Aussen
define KlingelEnable dummy

define Klingel_Notify notify au_KlingelTaste {\                     # notify if Klingel Button is pressed
   if ( Value ("KlingelEnable") eq "1" ){\                          # Dummy variable KlingelEnable is checked if new event shall be executed
     fhem("set KlingelEnable 0");;\                                 # Reset dummy variable Klingel Enable
     fhem("set Klingel on");;\                                      # Activate Klingel ringing (in my case this rings all dect phones)
     fhem("delete kdtimer");;\                                      # Always delete hold off timer
     fhem("define kdtimer at +00:00:06 set KlingelEnable 1");;\     # set holdoff timer for 6 seconds (arround the time the phones ring)
   }\
}

m-d-ley

Hi,
vielen Dank für den Tipp mit dem Prellen.
Auf die Idee wäre ich nicht gekommen. Manchmal sieht man den Wald vor lauter Bäumen nicht. Ich war davon überzeugt, dass es definitiv ein Fehler im DOIF ist. Aber es ist definitiv das Prellen.

Habe es jetzt ziemlich simpel gelöst:
Einfach im jeweiligen DOIF attr do always und wait 1 gesetzt und dann läuft das problemlos. Für meine Zwecke das Einfachste und Praktikabelste.