[Gelöst] Problem mit Peha EnOcean Bewegungsmelder

Begonnen von lrosebrock, 04 August 2014, 23:44:31

Vorheriges Thema - Nächstes Thema

lrosebrock

Moin Moin zusammen,

ich mache derzeit meine ersten Schritte mit FHEM und bin begeistert - komme aus der Ecke IP-Symcon.

Leider hakt es aber nunmehr massiv bei dieser Aufgabenstellung:

Bei der Bewegungserkennung durch den Peha Bewegungsmelder  EnOcean soll Licht für 120 sec geschaltet werden.

Die Rahmenbedingungen:

Fhem info:
  Release  : 5.5
  Branch   : DEVELOPMENT
  OS       : linux
  Arch     : arm-linux-gnueabihf-thread-multi-64int
  Perl     : v5.14.2
  uniqueID : fbadeff0c8dc70c38dedca6221406529
  upTime   : 00:25:26

Defined modules:
  Calendar       : 1
  EnOcean        : 17
  FB_CALLMONITOR : 1
  FHEMWEB        : 6
  FLOORPLAN      : 1
  FileLog        : 13
  TCM            : 1
  Weather        : 1
  at             : 1
  autocreate     : 1
  dummy          : 9
  eventTypes     : 1
  notify         : 10
  readingsGroup  : 1
  structure      : 7
  telnet         : 1
  weblink        : 1

Das Device:

define BM_Garten EnOcean 000106E5
attr BM_Garten IODev TCM310_0
attr BM_Garten manufID 001
attr BM_Garten room EnOcean,Garten
attr BM_Garten subType lightTempOccupSensor.01
define FileLog_BM_Garten FileLog ./log/BM_Garten-%Y.log BM_Garten
attr FileLog_BM_Garten logtype text
attr FileLog_BM_Garten room EnOcean


die Problemzeile:
define garten_movement notify BM_Garten{ if ReadingsVal('BM_Garten', 'motion', "" ) eq "on" ) { fhem "set Grillschuppen on-for-timer 120"}}

das Ziel:

### Garten Schalter 2 Schuppen links / Bodenbeleuchtung
###### physikalischer Schalter 2 ######
define 4TG2 EnOcean 00117135
attr 4TG2 IODev TCM310_0
attr 4TG2 room EnOcean
attr 4TG2 subType switch
define TG2_A dummy
attr TG2_A eventMap AI:on A0:off
attr TG2_A room EnOcean
define n_A2 notify 4TG2:.*A.* { fhem("set TG2_A ".($EVENT=~m/AI/ ? "on" : "off")) }
define TG2_B dummy
attr TG2_B eventMap BI:on B0:off
attr TG2_B fp_Garten 50,200,1,
attr TG2_B room EnOcean
define n_B2 notify 4TG2:.*B.* { fhem("set TG2_B ".($EVENT=~m/BI/ ? "on" : "off")) }
define FileLog_4TG2 FileLog ./log/EnO_switch_00157702-%Y.log EnO_switch_00157702
attr FileLog_4TG2 logtype text
attr FileLog_4TG2 room EnOcean

#Definition des Fhem Schalters Garten 2 links =====  FF8F3C85  ======
define fh_garten02_li EnOcean FF8F3C85
attr fh_garten02_li IODev TCM310_0
attr fh_garten02_li eventMap BI:on B0:off
attr fh_garten02_li fp_Garten 50,200,1,
attr fh_garten02_li icon icoBELEUCHTUNG.png
attr fh_garten02_li room EnOcean
attr fh_garten02_li subType switch

### Kopplung Schalter phy und fhem ########
define Grillschuppen structure room fh_garten02_li TG2_B
attr Grillschuppen clientstate_behavior last
attr Grillschuppen eventMap BI:on B0:off
attr Grillschuppen fp_Garten 50,200,1,
attr Grillschuppen room EnOcean,Garten


Tests:
In der FHEM-Kommandozeile:

{ReadingsVal('BM_Garten', 'motion', "");;}

ergibt den jeweils sauberen Zustand vom PeHa


set Grillschuppen on-for-timer 120

schalte brav das gewünschte Licht für 120 sec  .... nur leider funktioniert die o.a. Zeile nicht so richtig ....
.... falls das Problem an der Intelligenz vor meiner Maschine oder hinter meiner Brille liegen, bitte ich um NAchsicht und einen kleine Tipp, wie ich hier vorwärts komme ... meine Perl-Kenntnisse muß ich wohl auch mal wieder massiv auffrischen.

Vielen Dank vorab

krikan

Bitte schau Dir notify in der commandref an. Du hast kein pattern: ..........M:.on
Einsteiger-pdf enthält auch Infos dazu.

lrosebrock

Hi, und danke für die flotte Antwort,

aber warum soll der Auslöser denn auf den Zustand gebunden werde ? Ich ging davon aus, das der Wechsel von BM_Garten als Auslöser reicht - die Bedingung wird dann im if geprüft, und die Folge generiert .....

... wo genau fängt denn da jetzt mein Holzweg an ?

krikan

Sorry,aber da ich die Events nicht kenne, habe ich beim Pattern ein Beispiel geliefert. Wenn bspw. motion: on , dann motion:.on usw. Oder ich brauche mehr Details......

lrosebrock

Hi Krikan,

nein, sorry muß ich sagen - hier die nötigen Details, die ich vorher vergessen habe:
Internals
DEF
000106E5
IODev

TCM310_0
LASTInputDev

TCM310_0
MSGCNT

32
NAME

BM_Garten
NOTIFYDEV

global
NR

213
STATE

M: off E: 136 P: absent T: 0.0 U: 3.3
TCM310_0_DestinationID

FFFFFFFF
TCM310_0_MSGCNT

32
TCM310_0_PacketType

1
TCM310_0_RSSI

-79
TCM310_0_ReceivingQuality

good
TCM310_0_RepeatingCounter

0
TCM310_0_SubTelNum

3
TCM310_0_TIME

2014-08-05 06:34:49
TYPE

EnOcean


Readings

brightness

510

2014-08-05 06:52:07
motion

off

2014-08-05 06:52:07
presence

absent

2014-08-05 06:52:07
state

M: off E: 510 P: absent T: 0.0 U: 3.3

2014-08-05 06:52:07
temperature

0.0

2014-08-05 06:52:07
voltage

3.3

2014-08-05 06:52:07



krikan

Du musst Dir die Events anschauen, notify reagiert auf events und nicht auf readings. Darum Eventlog ansehen und zeigen. Mein letztes Pattern dürfte aber der richtige Weg sein.....
Und nimm das if aus dem notify, dass ist doch der/das? Pattern, oder ?

lrosebrock

Hallo krikan,

danke für das massive Schubsen auf den rechten Weg .... mein Brett war ein wenig dicker gestern .... 8)

auf alle Fälle tut
define mv_garten notify BM_Garten:motion:.on {fhem "set Grillschuppen on-for-timer 120"}

nun das, was es soll .....

Problem gelöst, Lösung verstanden - VIELEN DANK !

krikan

Kein Problem, im Gegenzug darfst Du gerne die Funktionsfähigkeit von bisher mit Fhem ungetesteten Enocean-Geräten bestätigen. Und Beispiele für EnOcean-Codeschnipsel hätte ich auch gerne entweder im EnOcean-Bereich oder als Ergänzung im Wiki  ;)

lrosebrock

 .... das wird so gemacht .....
Ich will nur heute abend / morgen früh testen, ob das automatisierte Aktivieren/Deaktivieren des Schalters Bewegung bei Sunset + 30 min / Deaktivieren Sunrise +30 min funktioniert, dann post ich diesen Codeschnipsel ... manuell geht das schon ....

krikan

Prima!  :)


EDIT: Die Einsatzbeispiele von 50watt zur Bewgungserkennung http://www.fhemwiki.de/wiki/EnOcean-FBH65TFB-Funk-Bewegungs-_Helligkeits-_Temperatur-_und_Feuchte-Sensor kennst Du schon?

lrosebrock

Nein,

kannte ich noch nicht - meiner ist ein etwas anderes Modell http://sortiment.opus-schalter.de/documents/561_148--DBH-1-de.pdf.
Aber ein definierter Lux-Schwellenwert als Bedingung ist natürlich charmanter als die Abhänggkeit vom Sonnenstand + x min - man erfasst halt mehr Szenarien.

Danke für den Tip - werde ich umsetzen , testen und bei gewünschter Funktionalität posten.

Gruß

Lars

krikan

Der Sensor ist afaik von mehreren Firmen mit diversen Namen erhältlich; OPUS produziert glaube ich nicht. Im Wiki haben wir diese und seine Namenskollegen speziell aber noch nicht. Von der Funktionalität dürfte aber http://www.fhemwiki.de/wiki/EnOcean-FBH65S-Funk-Bewegungs-_Helligkeitssensor am ähnlichsten sein.
Gruß, Christian

lrosebrock

Hallo Christian - stimmt, OPUS bzw Jäger kauft nur zu - mein Sensor ist wohl von Peha ....
Ja, die Syntax Deines Link-Geräts sollte bei mir passen - ich bau das Beispiel "Aktor schalten in Abhängigkeit von Bewegung und Helligkeit " heute noch in meinen Code ein und teste, ob es funktioniert ..... dann melde ich mich wieder.

Gruß

Lars

EDIT:

aktuell habe ich das nun so gelöst:
### Bewegung einschalten bei Dunkelheit #####
define chk_lux_on notify (BM_Garten:M.*) {if ($EVTPART3 < xxx){fhem "set Bewegungsmelder on"}}
#### Licht Schalten bei Bewegung
define mv_garten notify BM_Garten:motion:.on {if (Value("Bewegungsmelder")eq "on"){fhem "set Grillschuppen on-for-timer 120"}}
##### Bewegung ausschalten bei Helligkeit #####
define chk_lux_off notify (BM_Garten:M.*) {if ($EVTPART3 > yyy){fhem "set Bewegungsmelder off"}}


... die LUX-Werte xxx und yyy definiere ich heute bei Dämmerung individuell, und dann werde ich noch testen, ob der Helligkeitssensor mit ner MagLite manipulierbar ist .... falls ja, kommt noch eine Sonnenstandsabhängige Triggerung mit sunset_abs(1800) o.ä. zum Einsatz .....


krikan

Hallo Lars,

freut mich, dass Du vorwärts kommst, dummerweise ;) hat Dein Sensor ein EEP (subType lightTempOccupSensor.01), das eben leider schon im Wiki beschrieben ist. Hatte gehofft, das etwas neues kommt....

Zu Deinen notify´s :

Zitatdefine mv_garten notify BM_Garten:motion:.on {if (Value("Bewegungsmelder")eq "on"){fhem "set Grillschuppen on-for-timer 120"}}
Die if-Abfrage kannst Du Dir meiner Meinung nach sparen. Dein notify springt nur an, wenn Bewegung (Event: motion:.on) vorliegt.

Zitatdefine chk_lux_on notify (BM_Garten:M.*) {if ($EVTPART3 < xxx){fhem "set Bewegungsmelder on"}}
Wenn Du nur auf Helligkeit testen willst, könntest Du das Pattern auch auf brightness:.* setzen, da Du die Bewegung nicht brauchst. Aber das ist halt Geschmacksfrage.

Viel Spaß beim weiteren Basteln, Christian

lrosebrock

Hallo Christian,

das sehe ich anders ....
Zitat
Zitat

    define mv_garten notify BM_Garten:motion:.on {if (Value("Bewegungsmelder")eq "on"){fhem "set Grillschuppen on-for-timer 120"}}

Die if-Abfrage kannst Du Dir meiner Meinung nach sparen. Dein notify springt nur an, wenn Bewegung (Event: motion:.on) vorliegt.

... das if ist drin, da ich "Bewegungsmelder" manuell daktivieren kann - ist schon doof, wenn man abends im Sommer mit der GöGa im Garten sitzt und bei jeder Bewegung  die Vorfeldbeleuchtung anspringt ... stört ein wenig das Ambiente .... aber Dein Hinweis mit Brightness war gut .... das ist der elegantere Weg als mein eigener ....

Nächstes Projekt ist die Markisensteuerung .... dummerweise mit dem Aktor http://www.opusgreen.net/sites/default/files/downloads/561314-rev01_0701221.pdf  ...über den hab ich nicht wirklich was gefunden .....

Gruß

Lars