NEWS
[gelöst] Bräuchte etwas Hilfe bei Alarmanlagen-Script
-
Hi Leute, wollte jetzt mal eine kleine Alarmanlage mit Blockly zusammenklickern. Dazu habe ich HM Türsensoren und ein Xioomi Gateway und einen Xiaomi Switch (Schalter). Nun sollte es so sein, ich klick einmal auf dem Switch, Alarmanlage scharf und eine die Alarm-Variable wird auf wahr gesetzt. Nun soll ein Script immer aktiv sein, was die Variable abruft und wenn es wahr ist die Tür wird geöffnet, dann soll ein Alarm losgehen. Da happert es bei mir etwas. Ich weiss nicht wo ich die Variable setzem soll. Hab es mit einem globalen Script prbiert aber es klappt nicht. Vielleicht könnt ihr mir einen Tipp geben?
7763_2018-07-05_09_07_59-javascript_-_iobroker.png
7763_2018-07-05_09_08_09-javascript_-_iobroker.png -
also ich habe eigene datenpunkte angelegt mit true und false. jetzt prüfst du auf den auslöser wenn die alarmanlage los gehen soll. als erstes musst du jetzt im script abfragen ob die datenpunkte (ob du nicht zuhause bist, usw.) alle auf true sind, wenn ja, dann alarm ein. (mit dem falls, dann, sonst block)
ob das so elegant ist weiss ich nicht.
ps. hab mal gehört eigene datenpunkt sollte man unter dem javascribt ordner anlege, ansonsten könnten sie durch den jeweiligen adapter gelöscht werden.
Gesendet von meinem ONEPLUS A5000 mit Tapatalk
-
Ich weiss nicht wo ich die Variable setzem soll. Hab es mit einem globalen Script prbiert `
Globale Skripte sind nur für häufig benötigte Funktionen geeignet ! Sie werden in jedes andere (nicht globale) Skript kopiert.Wenn die Kommunikation zwischen Setzen / Rücksetzen und der Auswertung über eine Skriptvariable erfolgen soll, muss beides im gleichen Skript erfolgen !
Bitte für "Alarm scharf" nicht den Variablenbezeichner value verwenden, denn das ist ein in Blockly vordefinierter Variablenbezeichner.
-
Danke euch beiden, aber ehrlich gesagt ich weiss jetzt nicth wo ich ansetzen soll. Soll ich Variablen im Scriptordner anlegen oder die Variablen in einem ganz normalen Script am Anfang definieren? WIe und wo kann ich eigenen Datenpunkte setzen? Ich erarbeite mir grad den Blockly, JS direkt schreiben, soweit bin ich noch nicht :oops: VIelleicht könntet ihr mir ein kleines Beispiel geben, wie man es erstmal einfach machen kann, dann würde ich mir den Code mal direrkt anschauen und anpassen. DANKE
So geht das auch nicht oder? Hier in dem Fall mach er es nur, wenn die Tür offen ist und ich klicke. Ich weiß nicht wie ich die Abfrage so baue, das ich klicke und dann wird ständig überprüft ob etwas offen ist. So überprüft er nur in dem Moment des KLicks.
7763_2018-07-05_09_54_37-javascript_-_iobroker.png -
Trigger nicht ineinander verschachteln ! Prinzip:
-
also ich kan (leider) auch kein javascribt programmieren.
Einen Datenpunkt anlegen:
unter objekte den adapter (javascribt) markieren -> oben in der leiste auf das + -> eigenschaften festlegen. (ich musste bisher noch nie was ändern ausser datenpunkt auswählen statt gerät oder sonstwas.
an deiner stelle würde ich einen datenpunkt machen : alarmanlage scharf.
jetzt wählst du als trigger z.B. einen bewegungsmelder mit "wurde aktualisiert" und prüfst als erstes ob alarmanlage scharf auf true steht.
wenn du die alarmanlage per klick auslösen möchtest (versteh ich zwar nich warum, aber smarthome ist prsonalisiert) dann kannst du noch einen datenpunkt erstellen und diesen als trigger auswählen.
ps. man kann aich einen datenpunkt mit "taste" machen, weiss ich aber nicht wie. habe ich nur bisher in anderen adaptern gesehen.
Gesendet von meinem ONEPLUS A5000 mit Tapatalk
-
solltest du einen ordner erstellen wollen geht das folgendermassen. beim namen tippst du ein: ordnername.datenpunktname.
dies kannst du aber nur im ordener eines adapers (sprich javascribt)
Gesendet von meinem ONEPLUS A5000 mit Tapatalk
-
Danke Jungs, es geht schonmal
Wie könnte es jetzt eine Zeitverzögerung einbauen? Nehmen wir an, ich komme heim, hab vergessem die Alarmanlage auszuschalten,dann soll ja nicht gleich beim öffnen der Haustür die Alarmanlage losgehen. Ich hätte da gern sagen z.B 15 Sekunden Zeit, in der Zeit erhalte ich aber eine kurze Warnmesage per Pushover oder einen kurzen Warnton am Gateway.
-
ann soll ja nicht gleich beim öffnen der Haustür die Alarmanlage losgehen. Ich hätte da gern sagen z.B 15 Sekunden Zeit, in der Zeit erhalte ich aber eine kurze Warnmesage `
Dafür git es "Ausführen timeout" und "stop timeout".
-
hab ich noch nie gestestes, aber theotetisch mit drm timeout-block. davor und danach das objekt testen os zutrifft.
wie hast du es jetzt gelösst? ev. screenschot falls mal jemand das selbe problem hat
Gesendet von meinem ONEPLUS A5000 mit Tapatalk
-
Hab gedacht, das bekomme ich so hin, aber klappt nicht, der Alarm geht trotzdem gleich los.
7763_2018-07-05_11_46_51-javascript_-_iobroker.png -
das was unter dem timeoutblock ist wird sofort ausgefüht. nur dass was inerhalb des blocks ist, ist cerzögert. deinen texten nach zuurteilen könnte das dass problem sein. ich sehe halt nicht ganz wo der alarm ausgelöst wird.
was sich deine nachbaren denken müssen, bei dem ständigen alarm testen hahahahaha
Gesendet von meinem ONEPLUS A5000 mit Tapatalk
-
Hab gedacht, das bekomme ich so hin, aber klappt nicht, der Alarm geht trotzdem gleich los. `
Ich dachte, ich hätte gezeigt, wie es einfach funktioniert :? -
@paul53: Die Posts haben sich überschnitten :oops: Ein riesen Dankeschön!!!!!! So klappt es super
-
So einen Sache habe ich noch, dann ist alles schick. Jetzt will ich nach dem Alarm scharfstellen gerne noch einen Hinweis bekommen, falls noch Fenster oder Türen grad offen sind. Das hab ich grad mit einer Tür und eine Pushnachricht probiert, das klappt. Nun will ich aber nicht für jedes Fenster oder Tür was noch offen ist eine Pushmeldung bekommen. Kann man irgendwie die Info abgreifen und zusammen in einer Nachricht verschicken?
7763_2018-07-05_12_05_29-javascript_-_iobroker.png -
soweit binn ich bei mir noch nicht. aber ich würde für jedes Fenster/Tür eine Variable erstellen, wenn diese zutrifft, mit allen einen text erstellen (wenn ich mich richtig entsinne giebtt es den baustein "konvertiere zu text) und diesen als output senden. aber von hier an bin ich wahrscheinlich raus. das ist neu für mich hahahahahaha xD
Gesendet von meinem ONEPLUS A5000 mit Tapatalk
-
Hehe aber vielen Dank für deinen Tipp, ich muss mich da auch erst reinfummeln, aber Stück für Stück, danke Eurer Hilfe lern ich immer mehr :mrgreen:
Hab noch nen kleine Sache, ich würde gern, wenn Alarm ausversehen droht auszulösen wie gesagt eine Pushmeldung, das klappt und auf der Sirene 3x kurz ein aufheulen so als kurzes Warnsignal, das die Alarmanlage gleich loslegt. Dacht ich mach das mit einer Wiederholung, aber er macht es nur einmal und nicht 3x wie hier im Script ,was ist das daran falsch?
7763_2018-07-05_12_21_44-javascript_-_iobroker.png -
schau mal im log sieht für mich nach nem error aus. vermutlich muss auch hier ein timeout hin. sonst startet er in 0.01sec 3mal. aber ein aufhäulen dauert ja, sagen wir 1sec. ev. musst du die sirene auch kurz stoppen. dies muss ich aufjedenfall bei meinen lampen wenn sie blinken sollen. xD
Gesendet von meinem ONEPLUS A5000 mit Tapatalk
-
auf der Sirene 3x kurz ein aufheulen so als kurzes Warnsignal, das die Alarmanlage gleich loslegt. `
Dafür dient das Intervall zusammen mit einer Zählvariablen.
-
Jetzt will ich nach dem Alarm scharfstellen gerne noch einen Hinweis bekommen, falls noch Fenster oder Türen grad offen sind. Nun will ich aber nicht für jedes Fenster oder Tür was noch offen ist eine Pushmeldung bekommen. Kann man irgendwie die Info abgreifen und zusammen in einer Nachricht verschicken? `
In einem separaten Skript solltest Du einen Datenpunkt "mind_1_Fenster_Tuer_offen" (oder so ähnlich) setzen, der im Alarmskript ausgewertet wird.Dafür gibt es mehrere Skripte im Forum. Willst Du es mit Blockly machen, geht es mit 2 Listen (Arrays) - eine mit allen IDs und eine mit allen Werten der Fenster und Türen. Im Blockly kann es dann etwa so aussehen (Beispiel mit 3 Datenpunkten).