Seite 1 von 2
Bewegungsmelder - Helligkeitswert bei Auslösung speichern
Verfasst: 20. Mär 2022 19:46
von SkyWalker2_D
Moin!
Ich stolpere gerade über eine Rule meines Bewegungsmelder. Die Lampe geht bei 'Nacht=On' gedimmt an und bei Bewegung auf hell.
Der Ausgangswert variiert aber. Diesen Ausgangswert speichere ich in eine Variable die dann nach Ablauf des Timers in der Rule wieder an die Lampe gesendet wird.
Z. B. von 5% auf 60%. Bei erneuter Bewegung startet die Rule neu, speichert dann aber den aktuell eingestellten Wert, also 60%.
Wie kann diesen Wert separieren, also hier z. B. die 5%?
Ich bin übrigens immer noch mit Blockly unterwegs weil sich DSL mir noch nicht erschlossen hat.
Muss ich innerhalb der 'then' Rule nochmal einen 'if' Block einbauen?
Leider finde ich nicht über die Suche.
Danke vorab
Grüße
Sky
Re: Bewegungsmelder - Helligkeitswert bei Auslösung speichern
Verfasst: 20. Mär 2022 22:52
von udo1toni
Ich hoffe, ich habe das Problem richtig verstanden: Wenn während der "Hell-Phase" erneut Bewegung erkannt wird, wird der alte "Dunkel-Wert" mit dem aktuellen "Hell-Wert" überschrieben.
Als DSL Rule (zwingend per *.rules Datei, da globale Variablen gebraucht werden) sähe eine solche Rule grundsätzlich ungefähr so aus:
Code: Alles auswählen
var Timer tBewegung = null // Timer für Licht aus
var Integer iLevel = 0 // Speicher für Level
val Integer iTimeout = 35 // Länge Timeout
rule "Licht bei Bewegung"
when
Item Bewegung received update ON // Bewegung erkannt
then
if(tBewegung === null) { // Falls Timer noch nicht läuft
iLevel = (Lampe.state as Number).intValue // speichere Helligkeit
Lampe.sendCommand(60) // Schalte Lampe hell
tBewegung = createTimer(now.plusSeconds(iTimeout),[| // Starte Timer; Nach Ablauf der Zeit
Lampe.sendCommand(iLevel) // Schalte Lampe auf vorherigen Wert
tBewegung = null // und lösche Zeiger auf Timer
])
} else // ansonsten (Timer existiert)
tBewegung.reschedule(now.plusSeconds(iTimeout)) // setze Timerablaufzeitpunkt neu
end
Also nicht weiter aufwändig. Der Haupttrick besteht darin, dass zunächst geprüft wird, ob die Lampe bereits hell geschaltet wurde. Nur, falls das nicht der Fall ist, wird der aktuelle Helligkeitswert überhaupt gespeichert und die Lampe hell geschaltet.
Wie sieht es in Blockly aus? Kannst Du dort einen Timer überhaupt verlängern? Kannst Du feststellen, ob der Timer gerade läuft?
Re: Bewegungsmelder - Helligkeitswert bei Auslösung speichern
Verfasst: 21. Mär 2022 10:51
von SkyWalker2_D
Moin udo1toni!
Vielen Dank. Ja, das war genauso gemeint. Timer verlängern geht bei Blockly. Aber DSL wäre mir für weitere Projekte definitiv lieber. Ich müsste aber, um Deinen Code anzulegen die GUI verlassen und das anderswo eingeben, oder? GUI & Blockly sind ja bisher nur mein Wilderungsgebiet!
Bewegungsmelder - Helligkeitswert bei Auslösung speichern
Verfasst: 21. Mär 2022 14:22
von udo1toni
Genau. Die Rules werden im Dateisystem unterhalb /etc/openhab/rules/ gespeichert. Der Dateiname muss dabei auf .rules enden (Groß/Kleinschreibung ist zu beachten).
Du kannst (wie die Endung auf s auch nahelegt) beliebig viele Rules in einer Datei anlegen, Du kannst auch beliebig viele *.rules Dateien innerhalb dieses Verzeichnisses anlegen (keine Unterordner!)
Nur der User openhab hat Schreibrechte in dem Ordner, evtl. Darf aber auch der User openhabian in dem Ordner schreiben, falls es sich um eine openHABian Installation handelt.
Am bequemsten arbeitet man mit VSCode, dieser Editor bietet buchstäblich zehntausende Plugins für spezielle Erweiterungen. Unter anderem eben auch eines speziell für openHAB. Damit wird VSCode um zwei Listen erweitert, in denen alle Things/Channel und Items gelistet sind. Weiterhin bietet das Plugin Online Code Prüfung (das openHAB System wird zur Prüfung auf Korrektheit verwendet), Code Completion, Snippets, und, und, und…
VSCode kann man für jedes Betriebssystem laden und kostenlos nutzen ob Windows, MacOS oder GNU/Linux. Die Verbindung zum Conf-Ordner kann dann über Samba („Windows Freigabe“) erfolgen.
Gesendet von iPad mit Tapatalk
Re: Bewegungsmelder - Helligkeitswert bei Auslösung speichern
Verfasst: 22. Mär 2022 09:51
von SkyWalker2_D
Danke!
OK, whow. Nächste Baustelle. Samba versuchen zu installieren und dann VSCode anschauen

Es bleibt spannend

Re: Bewegungsmelder - Helligkeitswert bei Auslösung speichern
Verfasst: 22. Mär 2022 10:34
von int5749
SkyWalker2_D hat geschrieben: ↑22. Mär 2022 09:51
OK, whow. Nächste Baustelle. Samba versuchen zu installieren und dann VSCode anschauen

Es bleibt spannend
Moin, wenn Du openHABian nutzt, ist Samba schon installiert

Re: Bewegungsmelder - Helligkeitswert bei Auslösung speichern
Verfasst: 22. Mär 2022 13:02
von SkyWalker2_D
Ich bekomme Samba aber nicht "aktiviert" trotz des durchlesen diverser Anleitungen! Somit ist das noch eine Baustelle bei mir!
Re: Bewegungsmelder - Helligkeitswert bei Auslösung speichern
Verfasst: 22. Mär 2022 14:24
von int5749
SkyWalker2_D hat geschrieben: ↑22. Mär 2022 13:02
Ich bekomme Samba aber nicht "aktiviert" trotz des durchlesen diverser Anleitungen! Somit ist das noch eine Baustelle bei mir!
Hast Du denn openHABian installiert?? Denn dann ist Samba schon aktiv und kann mit dem entsprechenden User genutzt werden.
Evtl. müssten noch andere User berechtigt werden, sofern man andere nutzen möchte.
Re: Bewegungsmelder - Helligkeitswert bei Auslösung speichern
Verfasst: 22. Mär 2022 15:21
von SkyWalker2_D
Ja, openhabian ist installiert und Samba ist auch aktiv laut Abruf "sudo service smbd status".
Aber unter Windows sehe ich den Pi leider nicht!
Re: Bewegungsmelder - Helligkeitswert bei Auslösung speichern
Verfasst: 22. Mär 2022 18:30
von udo1toni
Sehen kannst Du den auch nicht, das geht hier schon seit XP nicht mehr richtig. Du musst einfach mal in den (Datei-)Explorer gehen und dort in der Adresszeile \\ip.des.openhab.servers\ eingeben. Falls Du im Browser erfolgreich
http://openhabian:8080/ nutzen kannst, kannst Du auch \\openhabian\ versuchen. Es sollte dann eine Passwortabfrage geöffnet werden.
Evtl. ist die Dateifreigabe auch grundsätzlich deaktiviert, dann sollte allerdings bei der Eingabe oben im Explorer Fenster eine gelbe Nachricht aufpoppen.