EOSWA-W-EO Bewegungsmelder

Begonnen von mediastudio, 13 Juli 2018, 11:12:28

Vorheriges Thema - Nächstes Thema

NoPlan12

Hallo mediastudio,
ich versuche mich gerade an deinem Programmvorschlag für die Bewegungsmelderschaltung. Die würde bei mir mit ein paar ganz kleinen Änderungen richtig super passen. Leider kommt bei mir nach der Eingabe für den "Trigger Bewegunsgmelder..." folgende Fehlermeldung:
Experimental aliasing via reference not enabled at (eval 20348) line 1.
Damit kann ich gerad nix anfangen. Kannst du mir sagen, was ich da jetzt falsch gemacht habe.
Vielleicht noch eins. Ich habe die EOSCA-W-EO . Ich hatte aber gehofft, daß das nicht ausschlaggebend ist.

NoPlan12

Hallo mediastudio,
mist auf den falschen Button gedrückt.
Ich wollte nopch sagen, daß ich natürlich versucht habe den Befehl entsprechend auf meine Gegebenheiten anzupassen.

Gruß Jens

Svenergy

Kleine Randfrage zum Aufbau (deine Fehlermeldung kann ich leider nicht beantworten)

Ist dein Dummy oder der virtuelle Schalter dahinter auch in den Empfänger eingelernt? FHEM reagiert ja hierbei als Sender mit eigener ID und muss dem Empfänger mitgeteilt werden.

Ich habe ein EOSC in einem KiZi und einen EOSW im anderen KiZi als "Licht-aus-Schalter" nach 3Min. Die Konstellation ist bei mir so ähnlich gestaltet wie im Code oben nur leider viel verschachtelter mit Notify auf Dummy mit timer, der wieder einen notify erzeugt der dann den virtuellen Schalter drückt. Funktioniert aber super (nur manchmal spielen die Kinder mit zu wenig Bewegung, dann geht halt das Licht aus :-) )

Grüße Svenergy

NoPlan12

Hallo Svenergy,

ich habe 3 EOSCA-W-EO für 3 Zimmer im "Einsatz". Nachdem es mit den preiswerten BW nicht so erfolgreich war hatte ich die entdeckt und fand die vom Gedanke (wenig Energieverbrauch) sehr interesant. Leider hatte ich das mit den "nur alle 2 Minuten Signal senden" überlesen. Was ich damit wollte war an sich einfach (dachte ich) Bewegung im Raum - Licht an - keine Bewegung mehr - Licht aus. Wobei es sich bei einem Schalter und ein "EspLEDController" handelt und die anderen beiden Schalter ein Sonoff Basic und der andere Schalter ein Shelly ist.
Das Anschalten geht bei allen drei Schaltern über ein ganz normales notify.

defmod LEDFlur notify EnO_01851686:on set LED_Flur on
attr LEDFlur DbLogExclude .*
attr LEDFlur room 1.1 Flur,EnOcean
setstate LEDFlur 2019-02-06 16:26:14
setstate LEDFlur 2019-02-05 19:54:55 state active

Das funktioniert eigentlich sehr zuverlässig. Für das Ausschalten habe ich folgendes verwendet

defmod FlurLedAus notify EnO_01851686 defmod mdOff at +00:02 set LED_Flur off
attr FlurLedAus DbLogExclude .*
attr FlurLedAus room 1.1 Flur,EnOcean
setstate FlurLedAus 2019-02-06 16:33:15
setstate FlurLedAus 2019-02-05 20:08:46 state active

Das war nicht ganz so zuverlässig. Dann habe ich die Lösung von mediastudio gesehen. Das hörte sich so an wie es immer wollte. Also immer an, keine An-AUS Phasen udn dann auch nocheine zeitliche Aktivierung. Deswegen habe ich das einfach versucht bei mir so einzugeben. Ich meine die Lösung vom 2.11.2018 Leider bin ich einmal bei der Zeile "setreading EnO_4BS_0189A176 counter 0" gescheitert. Leider keine Ahnung wie ich das eingeben muß und wo. Und dann kam bei der der Zeilen für "## Trigger Bewegungsmelder "EOSWA-W-EO" mit Timer und Schaltzeiten ##" immer diese Fehlermeldung. Ich muß dazu sagen, ich habe einfach die komplette Befehlskette in die Befehlszeile eingegeben. Also mit entsprechenden Anpassungen.

So, ich weiß nicht ob meine Erklärungen verständlich sind, aber letztendlich suche ich einfach nur eine Lösung. Vielleicht kannst du mir ja weiter helfen.

Gruß Jens



Svenergy

oha da muss ich passen, mit defmod und setstate habe ich auch noch nicht gearbeitet.

Das Thema mit dem 2 Minuten Sendeintervall habe ich auch nicht näher bearbeitet, ich nutze es aber für den Reset solange Bewegung im Raum ist. Erst wenn kein 2 Minuten-Intervall-Signal kommt ist auch keine Bewegung mehr im Raum und Fhem schaltet das Licht mit Verzögerung aus. Damit ist das Licht eben maximal so lange noch an wie die Verzögerung einprogrammiert hat.

Wie gesagt mein Code ist womöglich mega umständlich, aber er ist schrittweise gewachsen und erweitert worden bis es funktioniert hat. Vom Ablauf, wie beschrieben: EOSC-motion:on löst einen notify aus, der notify setzt den Licht_helper Dummy auf on mit on-for-timer Funktion, das überschreibt sich so lange wie die 2-Minuten-Intervalle gesendet werden, fällt der Licht_helper zurück auf off löst dies einen weiteren notify aus, der das Licht über den virtuellen FHEM-Schalter hart ausschaltet. Zusätzlich wird das Licht noch ausgeschaltet, wenn der EOSC ein motion:off sendet (für den Notfall)

ich versuche mal alles zusammenzukopieren was wichtig sein könnte (ich benutze ausschießlich EnOcean Produkte hierbei)

Grundsätzliche Lichtansteuerung - RCM250 und PTM 210, sowie einen virtuellen Schalter aus FHEM heraus (mit einer freien ID des USB300) - beides im RCM eingelernt:
define virtLicht_KiZi EnOcean FF8B6005
attr virtLicht_KiZi IODev USB300
attr virtLicht_KiZi eventMap B0:off BI:on
attr virtLicht_KiZi manufID 00B
attr virtLicht_KiZi subType switch


Der EOSC:
define EOSC_KiZi EnOcean 019F20DE
attr EOSC_KiZi IODev USB300
attr EOSC_KiZi manufID 00B
attr EOSC_KiZi subType occupSensor.01


der Licht_helper Dummy:
define virtLicht_KiZi_helper dummy
attr virtLicht_KiZi_helper setList on off
attr virtLicht_KiZi_helper useSetExtensions 1

(das useSetExtensions 1 habe ich irgendwo im Forum gefunden, war irgendwie nötig für die richtige Dummy-Funktion)

die drei Notify´s:

define Licht_KiZi_off_notify notify EOSC_KiZi:motion:.off set virtLicht_KiZi off
define Licht_KiZi_on_notify notify EOSC_KiZi:motion:.on set virtLicht_KiZi_helper on-for-timer 180
define Licht_KiZi_helper_off_notify notify virtLicht_KiZi_helper:state:.off set virtLicht_KiZi off
attr Licht_KiZi_helper_off_notify addStateEvent 1

(das add StateEvent 1 habe ich ebenfalls irgendwo im Forum gefunden, war irgendwie auch nötig)

Grüße Svenergy

NoPlan12

Hallo Svenergy,

boah, daß ist viel. Das schau ich mir ganz in ruhe an und versuche es mal auf meine Situation zu schreiben. Mal sehen, vllt ist am we Zeit dazu.
Gleich aber noch ein paar Fragen dazu.
Der aufgeführte Code ist komplett für ein BW zum Licht aus und anschalten?
Was meinst du mit dem freien ID des USB300?

Nochmals vielen Dank Dir.

Gruß Jens

krikan

Nur mal als Zwischeneinwurf:
Bei den setExtensions wurde vor Kurzem ein Fehler iZm EnOcean korrigiert. Damit sollte auch https://forum.fhem.de/index.php/topic,89353.msg853006.html#msg853006 wieder funktionieren.

Gruß, Christian

NoPlan12

Hallo Christian,

da schaltet sich bei mir kein Licht an. Aber der Gedanke mit dem Attribut ist gut.

Gruß Jens

Svenergy

Hallo Jens,

der Code ist vorrangig zum Ausschalten vom Licht, weil die Kinder das ja selbstständig anschalten beim Betreten des Raums, aber oft vergessen wieder auszumachen wenn sie raus rennen  ;)

Ich denke aber, es ist nur eine Kleinigkeit im motion:on notify auch ein Licht anzuschalten.

Zum USB300 oder EnOceanPi oder TCM300 als EnOcean-Empfänger an der Zentrale wo FHEM drauf läuft:
FHEM soll ja Licht schalten, also muss die Zentrale funktechnisch wie ein Schalter agieren, also Signale schicken, die ein Schalter auch senden würde.
Dazu nutze ich den USB300 Empfänger als Sender und verknüpfe ihn mit einem device im FHEM. Der USB300 (wo ein TCM300 dahinter steckt) nutzt dafür eigene ID´s aus einem ID-Bereich, der für jeden USB300 einzigartig ist. Die Regeln dazu stehen in der Doku oder im Wiki. Ich habe das schon vor einiger Zeit einmal eingerichtet und nie wieder angefasst (dementsprechend erinnere ich mich leider nicht mehr an die Details). Schlagwörter sollten aber folgende sein: mit FHEM Licht steuern, EnOcean Schalter imitieren ...

Grüße Sven

NoPlan12

Hallo Svenenergy,

vielen Dank noch mal für deine Hilfe. So richtig habe ich es noch nicht hinbekommen. Was ich nicht verstehe, warum das Anschalten mit einem einfachen notify geht und das Ausschalten so viel Arbeit macht. Auch das mit den ID`s habe ich leider nicht ganz verstanden.

Gruß Jens

Svenergy

Hallo Jens,

hab ja gesagt, dass mein Code nicht optimal ist ;-)

Funktioniert denn bei dir das "Anschalten" schon?

Grüße Sven

NoPlan12

Hallo Svenergy,

das Anschalten geht ohne Probleme. Ich schalte ja 3 verschiedene Aktoren auf der Grundlage der BW Meldungen. Aber das geht bei allen mit einem einfachen notify und auch immer zuverlässig. Komisch ist nur, daß bei der Variante wo ein shelly der Schaltaktor ist, auch das Ausschalten und das "Licht anbleiben" relativ gut klappt.

Gruß Jens

Svenergy

#27
puh nagut. ich hab noch mal deinen ersten code angeschaut und habe vielleicht noch mal zwei mögliche Ideen:
1. hast du schon andere timings probiert? die 2 Minuten könnten sich irgendwie mit dem EOSC beißen
2. ich hatte mal ein ähnliches Problem mit den AT´s, die sich nicht erneut beschreiben, so lange der laufende at aktiv ist (ich hatte da auch eine entsprechende Fehlermeldung im log).  -> Edit: habe gerade in der commandRef gelesen was defmod eigentlich macht, also dieser Punkt ist keine Hilfe (aber wie immer: alles gefährliches Halbwissen, das nur in meinem Anwendungsfall funktionieren muss)

Grüße, Sven

NoPlan12

Ja habe auch schon verschiedene timings probiert. Irgendwie war es immer gleich. Mal ging es und mal nicht.
Und wegen dem Halbwissen. Ich melde mich mal wenn ich bei dem Stand bin.  :(

Gruß Jens

mediastudio

Hallo, leider war ich Unterwegs und habe lange nicht in's Forum geschaut. Bei mir funktionieren die Bewegungsmelder so wie ich das mit dem Taktgeber gepostet habe. Wichtig für mich ist, der Raum muss solange ohne Unterbrechung Licht eingeschaltet halten bis ich den Raum verlasse.

Hier nochmal meine cfg mit zusätzlich ,,Lichtzustand hell oder dunkel -sunset sunrise-,,

###########################
# Taktgeber alle 2 Minuten 
###########################
define Counter_BWM dummy
define counter_down DOIF ([+30]) (setreading Counter_BWM state off)
attr counter_down do always

################################################
# Lichtzustand hell oder dunkel sunset sunrise
################################################
define Lichtwert dummy
define at_Sonnenuntergang at *{sunset(-1800,"16:00","22:00")} set Lichtwert dunkel
define at_Sonnenaufgang at *{sunrise(0)} set Lichtwert hell
attr Lichtwert alias Lichtwert
attr Lichtwert group Tageshelligkeit
attr Lichtwert room Wetter
attr Lichtwert room Bewegungsmelder

##############################################
# Anzeige Bewegungsmelder Küche
#############################################
define Actor_Bewegungsmelder_Kueche dummy
attr Actor_Bewegungsmelder_Kueche alias Aktor Küche
attr Actor_Bewegungsmelder_Kueche devStateIcon on:power.on off:power.off
attr Actor_Bewegungsmelder_Kueche eventMap B0:off BI:on
attr Actor_Bewegungsmelder_Kueche group Bewegungsmelder
attr Actor_Bewegungsmelder_Kueche icon Motion-Detector_2.png
attr Actor_Bewegungsmelder_Kueche room Bewegungsmelder

##############################################
# Bewegungsmelder Küche
##############################################
define Bewegungsmelder_Kueche EnOcean 0189A176
attr Bewegungsmelder_Kueche IODev TCM310
attr Bewegungsmelder_Kueche alias Bewegungsmelder Küche
attr Bewegungsmelder_Kueche eep A5-07-01
attr Bewegungsmelder_Kueche eventMap on:on off:off
attr Bewegungsmelder_Kueche group Bewegungsmelder
attr Bewegungsmelder_Kueche icon Motion-Detector_2.png
attr Bewegungsmelder_Kueche manufID 00B
attr Bewegungsmelder_Kueche room Bewegungsmelder
attr Bewegungsmelder_Kueche stateFormat Bewegung: motion, Strom: current µA, Spannung: voltage V
attr Bewegungsmelder_Kueche subType occupSensor.01
setreading Bewegungsmelder_Kueche counter 0


## Trigger Bewegungsmelder "EOSWA-W-EO" wenn "dunkel" bleibt solange eingeschaltet wie Bewegung erkannt wird ##
define zaehler_up_kueche notify Bewegungsmelder_Kueche:motion:.on {\
   my $Wert1=ReadingsVal("Bewegungsmelder_Kueche","counter",0);;\
   $Wert1 = $Wert1+2;; if ( $Wert1 > 2 ) {$Wert1=2};;\
   fhem("setreading Bewegungsmelder_Kueche counter $Wert1");;\
   if (Value("Lichtwert") eq "dunkel") {fhem ("set Deckenstrahler_Actor,Actor_Bewegungsmelder_Kueche on")};;\
\
}

## Taktgeber "counter_down" setzt den Wert1 von "$Wert1" um 1 zurück ##
define zaehler_down_kueche notify Counter_BWM:off {\
   my $Wert1=ReadingsVal("Bewegungsmelder_Kueche","counter",0);;\
   $Wert1 = $Wert1-(1);; if ( $Wert1 <=0 ) {$Wert1=0};;\
   fhem("setreading Bewegungsmelder_Kueche counter $Wert1");;\
   if ( ( $Wert1 <= 0) && (Value("Lichtwert") eq "dunkel"))\
   {fhem("setreading Bewegungsmelder_Kueche counter 0 ;; set Deckenstrahler_Actor,Actor_Bewegungsmelder_Kueche  off")};;\
\
}