NEWS
Bewegungsmelder mit Dauer-An /Dauer-Aus Funktion
-
Hallo Zusammen,
ich bin jetzt seit n paar Tagen daran, zu versuchen, ein Bewegungsmelder mit ner Dauer-An/Dauer-Aus Funktion zu Scripten.
Leider bin ich absolut unwissend was Java-Script anbelangt (Bin SPS-Progammierer und kann auch C# als Hochsprache). Es mangelt also nicht an der Logik. Aber dennoch nutz ich Blockly
Das Ganze soll so aufgebaut werden:
Ein Sonoff-Tasmota Touch schält eine konventionelle Lampe. Dies soll also mein Aktor sein. Gleichzeitig soll der Touch die Dauerlicht-Funktion an/abschalten.
Ein Tradifri-Bewegungsmelder im Raum soll den Aktor auch ansteuern. Dieser Hat die Eigenschaft @Stock, dass er bei einer detektierten Bewegung sowieso 2 Minuten schält.
Der Raum ist Ankleide+Büro. Bedeutet 2 Minuten zum Ankleiden reichen, bzw. bei Bewegung, was man ja so macht beim Anziehen, reagiert der Bewegungsmelder sowieso. Im "Büro-Betrieb" möchte ich über den Touch das Dauerlicht einschalten, da hier die Bewegungen nicht ausreichen, um den Melder anzusprechen.Die Kirsche auf der Sahne wäre, wenn ich das Dauer-An/Dauer-Aus noch mit der Alexa triggern könnte. Wobei das (denke ich) weniger das Problem ist. Genial wäre natürlich, wenn ich über die Alexa/Touch die Zeit des Bewegungsmelders noch abwürgen könnte, da das Ankleidezimmer ans Schlafzimmer angrenzt. Hier ist dann klar, dass ich das 2-Minuten Dauer-High des Melders Ignoriere.
Ich sag es mal in SPS-Logik:
Bewegungsmelder-Betrieb mit Internem Timer des Ikea-Bewegungsmelders. Parallel Dazu ein Dauerbetrieb über Eingang Tasmota/Alexa.
Wenn die Lampe per Bewegungsmelder ausgelöst wurde, setz ich mir nen Schmier-Merker, damit ich, wenn dieser Aktiv ist, und ich dann händisch Ausschalte, die NEUE Bewegung erst detektiert wird, über die fallende Flanke (Zustandsübergang 1-0) erfolgt hat. Im SPS bereich wäre das ganze Kein Problemm. aber Blockly/Java-Script raubt mit hier noch den letzen nerv.Ich denke, dass es über Java-Script absolut kein Problem ist, (wäre es in C# auch nicht) wenn man die Sprache könnte
Kann mir hier jemand helfen.
Habe als Ansatz ehrlich gesagt nicht viel. Aktuell nur eine Falls Statusänderung, dann mache Licht an, über Bewegungsmelder, und das gleiche Per Alexa und "virtuellem" Gerät, um ne Routine anzuwerfen, Wobei es das denke ich nicht braucht, weil ich ja theoretisch direkt den Tasmoata anwerfen kann.
Vielen Dank schonmal im Vorraus
Daniel
====== EDIT: In SubCategory verschoben==========
-
Hallo freak1051,
ich habe das so gelöst, das ich einen virtuellen Schalter angelegt habe, der bei Manueller Betätigung oder über Alexa Schalters auch geschaltet wird.
Im Script für den Bewegungsmelder wird dieser Schalter abgefragt, wenn dieser ON ist, wird nicht über das Script abgeschaltet.
Ist dieser OFF wird das licht vom Script abgeschaltet. -
@freak1051 sagte:
soll der Touch die Dauerlicht-Funktion an/abschalten.
Wenn der Touch ein Taster ist, der togglen soll, sollte es so funktionieren:
-
Hier mein Blokly dazu:
Ich habe da noch weitere Funktionen drin, wie Schaltung wenn es dunkel wird und auch eine Dimmung ab 23 uhr.
Aber du kannst die Funktionen ja Rausnehmen. -
@paul53 sagte:
Wenn der Touch ein Taster ist
Wenn der Touch jedoch den Aktor enthält, der direkt von der Taste umgeschaltet wird, sollte es so funktionieren:
Export:
-
Habe jetzt es Soweit schon mal gemacht:
Occupancy ist der Ausgang meines Bewegungsmelders. Dieser bleibt wie gesagt ca. 100 Sekunden auf High, sobald er eine Bewegung bekommen hat.
Office Tasmota POWER ist der Taster/Aktor. Folglich: Wenn Bewegung dann schalte ein. Soweit verstanden.
Hier Setze ich wahrscheinlich nun auch den Office Tasmota Power ein, falls ich manuell darauf klicke, dass er Das licht einschält. Soweit auch verstanden.
Zum Verständnis:
Bei ID Auswählen habe ich ja gesagt ich mach den Office Tasmota POWER rein, und Wert (unteres Kästchen) übernimmt dann den Wert, den ich in eben dieser Object ID auslese ?
-
@freak1051 sagte:
SPS-Progammierer und kann auch C#
Mit C-Kenntnissen sollte die Einarbeitung in Javascript nicht schwer fallen.
Gegenüber der zyklischen Programm-Abarbeitung in einer SPS funktioniert Javascript Ereignis gesteuert, woran man sich erst einmal gewöhnen muss. Die Javascript-Doku zu ioBroker kennst Du ? -
@freak1051 sagte:
Hier Setze ich wahrscheinlich nun auch den Office Tasmota Power ein
Ja. Darauf deutet auch der Variablenbezeichner hin.
-
Ich liebe zyklische Abarbeitung
Nee ich habe ich der Technikerschule vieles mit Arduino, C# usw gemacht. Mir fehlt hier eigentlich nur ein "while(true) {} "
Mit ist schon klar, dass ich hier Objektorientiert arbeite, ich tu mich nur Mega schwer mit dem Blocky. Allerdings finde ich die Syntax von JavaScript auch sehr Gewöhungsbedürftig. If -Else gibt es hier nicht, zumindest nicht in der Form oder ?
-
@freak1051 sagte in ewegungsmelder mit Dauer-An /Dauer-Aus Funktion:
If -Else gibt es hier nicht, zumindest nicht in der Form oder ?
Doch, gibt es.
-
Soweit bin ich jetzt:
nur jetzt noch Logische Fragen:
Warum muss ich (direkt unter dem Kommentar) die Variable Licht schon mal auf den Wert des Schalters setzen, wenn ich danach, getriggert durch die Zustandsänderung, wieder Licht auf die den Zustand des Sonoff-Touch setze?. Ist das nicht doppelt gemoppelt?
Weiter in der Logik:
Wenn der BWM nicht ist, dann setzte Dauerlicht. Ich muss allerdings am BWM vorbei um den Taster zu schalten. Folglich ist der BWM nie aus wenn ich an den Taster laufe
Denke hier wird mein Problem liegen:
Der BWM wird immer High sein, wenn ich an den Taster laufe um Dauerlicht einzuschalten. Also komm ich Hier doch in eine Selbsthaltung rein ?!
Zudem Funktioniert mein Dauer-Aus doch auch nicht. Weil wenn ich den Schalter Aus-tapse und der bewegungsmelder Detektiert, geht er doch wieder an, oder?`
Ich denke, ich werde hier doch abwarten müssen und ein zusätzlichen Sonoff Switch bestellen. Dann kann ich den Wandschalter (Touch) tatsächlich NUR als Sensor/Eingang nutzen und diesen Per Touch oder Alexa steuern. Und dessen Status dann nehmen um höher Priorisiert zu sagen, wenn BWM ein Und Dauer an, dann bleib an.
Mit der Dauer-Aus habe ich dann och ein Kleines Problem, könnte ja aber ein zusätzliches Virtuelles Gerät mittels Alexa anlegen, welches die Höchste prio hat.
-
@freak1051 sagte in ewegungsmelder mit Dauer-An /Dauer-Aus Funktion:
Warum muss ich (direkt unter dem Kommentar) die Variable Licht schon mal auf den Wert des Schalters setzen
Es ist in diesem Fall nicht nötig, da die Variable Licht nur innerhalb der Trigger-Calback-Funktion ausgewertet wird. Würde sie noch woanders ausgewertet, müsste sie so beim Skriptstart gesetzt werden.
@freak1051 sagte in ewegungsmelder mit Dauer-An /Dauer-Aus Funktion:
Folglich ist der BWM nie aus wenn ich an den Taster laufe
Dann ist eine Auswertung der Quelle ohne einen Taster-Datenpunkt nicht möglich.
@freak1051 sagte in ewegungsmelder mit Dauer-An /Dauer-Aus Funktion:
Funktioniert mein Dauer-Aus doch auch nicht.
Das wäre ein dritter Zustand: Dauer-Aus/Dauer-Ein/Auto(BWM). Unter welchen Umständen soll dieser erreicht werden ?
-
Hier mal eine Übersicht:
Am Roten Kreis ist bisher ein BWM eingebaut, welcher anstatt des Konventionellen Lichtschalters fungiert. Diesen Kann ich auch auf Dauer AN oder Dauer AUS setzen.
Zu 90 % ist er aber im BWM Auto Betrieb. Allerdings erkennt dieser, aufgrund der niedrigen Position erst recht spät. Also muss man im Dunkeln recht weit in den Raum reinlaufen, bis das Licht angeht.
Um dies zu ändern war der Plan an diese Stelle einen Sonoff Touch zu setzen, welcher das Licht schällt, und den neuen BWM überhalb des PC´s zu setzten. Somit läuft man um den Raumtrenner und der BWM macht seine Arbeit wie gewohnt, nur zuverlässiger.
Die Dauer AN Funktion wird gebraucht um am PC/Schreibtisch zu arbeiten. Früher wurde angemacht, aber meist (weil es ja sonst immer von alleine ausgeht) Vergessen zum ausmachen. (Nervig wenn man eigentlich ins Bett gegangen ist
)
Die Dauer Aus Funktion soll auch schaltbar sein, wird genutzt wenn einer der 2 Bewohner (meist die Frau) schon im Bett ist und der andere ( meistens ich) noch am PC sitzt un zockt. Damit nicht bei jeder zweiten Bewegung das Licht eingeht und der schlafende gestört wird.
Soll die Funktion sein.
So wie ich das aktuell sehe brauche ich eigentlich 2 Losgelöste Schalter (Touch) und einen Switch, welchen ich direkt vor die Lampe setze.
Somit könnte ich Dauer ein/dauer aus schalten und die Touch als abfragen verwenden, OHNE das sie Direkt eine Last schalten. Wenn keiner der Taster aktiv ist ist die BWM-Auto Funktion scharf.
Die Taster kann ich einfach über ne Alexa Steuern.
Nun ist nur die Frage die ich mir stellen muss: Wenn ich eh schon bestelle, kaufe ich Zusätzlich einen 2-kanaligen Sonoff Touch, um Dauer An/Dauer aus zu realisieren, oder nehme ich den einkanaligen, welchen ich aktuell habe, und mach mit ihm die Steuerung Dauer An/BWM -Auto und wenn ich Dauer Aus möchte gehts nur über die Alexa. Denke um einen zusätzlichen Schalter (Sonoff Switch oder Pow oder sowas ) komme ich nicht herum
-
@freak1051 sagte:
Die Dauer AN Funktion wird gebraucht um am PC/Schreibtisch zu arbeiten.
Dauer AN sollte mit dem Skript oben trotz ansprechendem BWM funktionieren, wenn man per Touch aus- und gleich wieder einschaltet.
Für Dauer AUS benötigt man einen weiteren Datenpunkt. -
Hallo,
ich dachte mir, bevor ich einen weiteren Thread aufmache, hänge ich mich mal mit hier an, denn die Funktion, die ich realisieren will, ist sehr ähnlich:
- BWM (Xiaomi RTCGQ01LM) schaltet das Licht ein und geht nach einiger Zeit wieder automatisch aus
- Parallel soll per Taster (Xiaomi WXKG01LM) das Licht ein- und ausgeschaltet werden können, mit einem Toggle.
- Ist das Licht per BWM eingeschaltet, soll es auch per Taster ausschaltbar sein.
Geschaltet wird ein Tradfri LED-Treiber 10W (IKEA ICPSHC24-10EU-IL-1) mit einer Ledberg-LED-Leiste.
Mein kleines Problem liegt lt. log "nur" darin, dass nach einem regulären Timeout ein Schalten per Taster einen clearTimeout-Fehler bringt:
Hat jemand eine Idee, wie ich den vermeiden kann?
btw:
a) stelle ich bei der Occupancy auf "wurde geändert", schaltet das Licht nach 60s wieder ein (occupancy steht nach Bewegung 60s auf true)
b) da ich unterschiedliche Helligkeiten nach unterschiedlichen Zeiten erreichen will (BWM <> Taster), wird beim BMW beispielhaft dir Helligkeit angesteuert, beim Taster der Einfachheit halber aktuell nur der State direkt
c) Verbesserungspotential an dem gesamten Blockly ist willkommen, meine Javascript-Kenntnisse sind, könnt ihr euch denken, miserabel