DOIF Schalten in Abhängigkeit von Aktivität

Begonnen von NeuFehm, 08 Dezember 2016, 21:18:11

Vorheriges Thema - Nächstes Thema

NeuFehm

Hey Leute,
ich weiß gar nicht, ob DOIF der richtige Ansatz ist aber:

Ich möchte gern eine 2. Dummy-Lampe einschalten, wenn sich der Status der ersten Dummylampe ändert,
und ausschalten wenn sich der Status der 1. Dummylampe seit 20 Sekunden nicht mehr ändert.

Hier mein DOIF:
define Aktivitaetsmelder DOIF ([MyDummy1:state:sec] > 20) (set myDummy2 off) DOELSE (set myDummy2 on)
attr Bewegungsmelder do always


Aber nix passiert :(
Stimmt das DOIF?
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul

igami

Bitte einen passenderen Titel wählen, da weiß doch niemand worum es geht.

Zum Verständnis:
sobald MyDummy1 schaltet wird Dummy2 eingeschaltet
bleibt MyDummy1 dann 20 s so wie er ist wird Dummy2 wieder ausgeschaltet?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

NeuFehm

#2
Titel geändert ;)
Danke für den Hinweis....

Ja. Richtig erfasst.

Noch mehr Hintergrund-Info: Ich habe einen Eigenbau Bewegungsmelder. Dieser schreibt, wenn er Bewegung erkennt alle 10 Sekunden, dass noch Bewegungen vorhanden sind als Status. Das klappt schon über ECMD :)

Sobald der Status geschrieben wird, sollte beispielsweise eine Lampe (hier dummy) angehen und wenn aber vom Bewegungsmelder kein Status mehr geschrieben wird, also der Status älter als xy Sekunden ist nach dieser Zeit dann auch wieder ausgehen...

Wahrscheinlich hätte ich es besser so formulieren sollen:
sobald myBewegungsmelder einen Stauts schreibt, wird myLampe1 angeschaltet,
ändert sich der Zeitstempel des Statuses vom myBewegungsmelder länger als 20s nicht, dann wird myLampe1 ausgeschaltet.
Zu Bedenken ist, dass der myBewegungsmelder immer nur einen Status schreibt, also kein "an" "aus" sondern wenn dann immer nur "an"
Daher das muss nicht der Status selbst, sondern das Datum das Status berücksichtigt werden.

Ich hoffe, jetzt kann es jeder verstehen.
Danke für die Hilfe.
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul

igami

warum nutzt du nicht einfach on-for-timer? Wird von dummys mit setExtesions unterstützt.

Wenn ich nachher zu hause bin kann ich mal ein bespiel dazu liefern.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

NeuFehm

#4
Meine selbstgebauten Lampen unterstützen nur direkte Befehle. Ich muss also für ein "set lamp on" eine classdef erzeugen, die diesen Befehl verarbeitet.
Das ist bereits geschehen, ich kann also mit "set myLampe1 on" das entsprechende Relais schalten... also on und off ist kein Problem.
Alle sonstigen Funktionen wie "on-for-timer" kann ich nicht realisieren.... glaube ich ;)

DAs mit dem Dummy, dachte ich ist einfacher zu verstehen, als wenn ich mit meinen selbstgebauten unstandardisierten Lampen komme...
Aber im Prinzip will ich schon eine physisch vorhandene Lampe schalten und wollte dann den dummy mit meiner Lampe (Relais) ersetzen.
Die kann aber wie schon geschrieben nur an/aus...

Aber ich probiere auch gern was aus, habe noch zu wenig Kenntnisse ;)
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul

igami


defmod Bewegungsmelder dummy
attr Bewegungsmelder setList on off
attr Bewegungsmelder useSetExtensions 1

den Bewegungsmelder dummy kannst du dann mittels on-for-timer 20 s einschalten und auf die events on und off mit notify oder DOIF reagieren
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

NeuFehm

#6
Hast mich abgehängt ;)

Hier nun mal die konkreten Daten...
sobald mein sogenanntes T-Modul eine Bewegung erfasst, sendet es ein "pir01\r\n"
die fhem.cfg:

define myMModul ECMD serial /dev/ttyUSB0@9600
attr myMModul classdefs MModul=/opt/fhem/MModul.classdef
attr myMModul logTraffic 5
attr myMModul partial 2
attr myMModul split \r\n
attr myMModul verbose 5

define PIR1 ECMDDevice MModul ( \000 0 1
attr PIR1 IODev myMModul
attr PIR1 room Buero

meine classdef:
params M_Adresse M_Relais T_PIR1 T_PIR2
reading PIR_READING1 match "pir%T_PIR1%T_PIR2\r\n"
reading PIR_READING1 postproc {}


Die Bewegung wird in den Status des PIR1 geschrieben:
pir1   HASH(0x1a55c88) 2016-12-08 20:14:09

Ich habe eine funktionierende Lampe: 40Relais1, die ich mit "set 40Relais1 on" oder "set 40Relais1 off" schalten kann.
Das Datum des pir1-Status soll 40Relais1 steuern....
Wie muss ich Deine Befehle anpassen?

Ich hatte vermutet:
define Aktivitaetsmelder DOIF ([pir1:state:sec] > 20) (set 40Relais1 off) DOELSE (set 40Relais1 on)
attr Aktivitaetsmelder do always


aber das funktioniert nicht

Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul