Skip to content

Skripten / Logik

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

16.5k Topics 213.2k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    P
    Oben steht, dass der Server öfter mal offline ist. Da ist ping meine erste Idee. Ob der Server auf Pings antwortet, weiß ich nicht. Reagiert der Server nicht auf ping, dann evtl. als Ersatz einen httpcheck nehmen. httpcheck nutze ich auf der Synology, bevor die auf den ioBroker zugreift. # ===== HTTP-Check statt Ping ===== curl -s --connect-timeout 3 "$BASE/system.adapter.admin.0.alive" > /dev/null || exit 1 Ist allerdings ein Bash-Skript. Das muss für die Zwecke angepasst werden.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    S
    @TT-Tom Vielen Dank für den Tip.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • Ansage für Waschmaschiene

    Moved Solved javascript blockly
    10
    0 Votes
    10 Posts
    2k Views
    S
    @paul53: Ein kurzes Script mit Ausgabe auf den Sayit-Adapter: var idSayIt = "sayit.0.tts.text"; // Wert 5 und ID anpassen ! on({id: "hm-rpc.0.NEQ1234567.2.POWER", valLt: 5, oldValGe: 5}, function() { setState(idSayIt, "Waschmaschine ist fertig"); }); ```` ` paul53, könntest du bitte auch mal ein Scriptbeispiel für die Ausgabe einer mp3-Datei posten ?
  • Ping - Gerät online in Stunden

    Moved
    8
    0 Votes
    8 Posts
    1k Views
    S
    Man könnte doch auch ein Script schreiben in dem die Zeit gespeichert wird wann der erste Ping statt gefunden hat, somit hätte man die Startzeit und dann könnte man an den nachfolgenden Ping's ausrechnen wie lang der PCs schon an ist! Oder man führt ein Script als autostart beim anmelden aus! In dem zB die Startzeit per simple API in ioBroker gesetzt wird und so lange der PC an ist kann man mit den Ping's ausrechnen wie lang der PCs schon an ist! Oder besser wäre wenn das Autostart Script in regelmäßigen abständen ein Heartbeat absenden würde! Gruß Adrian Gesendet von iPhone mit Tapatalk Pro
  • Verarbeitung von CaCrosse Sensoren TX29DTH

    Moved
    15
    1
    0 Votes
    15 Posts
    2k Views
    S
    @DerUwe: @simpixo: Wenn das der Adapter vom KleinenDrachen ist, der speichert die Sensordaten unter seiner ID ab, richtig? Also sowas wie Lacrosse_65_xxxx Das wollte ich ja nicht! Wenn ich die Batterien wechsel, will ich nicht immer das Projekt umbauen. Deshalb kann ich jetzt über die VIS den Räumen die neue Addresse mitteilen. ` Ja Beim Batteriewechsel muss ich auch die ID in meinen Script ändern, aber nur an einer Stelle! Da historisiere ich auch die ganzen Daten! Das LaCrosse Objekt interessiert mich in der Hinsicht ja nicht! Also ist es fast genauso wie bei dir! Ich weise sozusagen die ID einem Raum zu [emoji1360] Gruß Adrian Gesendet von iPhone mit Tapatalk Pro
  • Script Umsetzung für das "Badewannen"-Prinzip

    Moved
    12
    0 Votes
    12 Posts
    3k Views
    etvE
    Servus Pix, danke für die Tipps. Ja es ist wie du schreibst erst sinnvoll bei mehreren Meldern - das ist bei uns im Carport der Fall…jo...Mal weiter durchdenken das Ganze. Jetzt ist es eh viiiiiieeeeelen zu kalt um die Lampen zu montieren :D Liebe Grüße tom
  • Fehlerhafte Javascript Kommentare mit //

    Moved
    4
    0 Votes
    4 Posts
    1k Views
    J
    Ok. In der Anlage noch der ausführliche Fehlerstack im JS. Wer hat den JS Code im Adapter geschrieben, insbesondere den Code in der tab.js->saveScript()? Und: Weiss jemand wo der ausgeführte Code der tab.js im Dateisystem liegt? Die tab.js im node-Modulcode scheint es nicht zu sein. Würde dann nochmal tiefer reingehen und bei mir nach der Ursache suchen. Danke u Gruß Jan 1789_fehler.png
  • DWD -> per Telegram, Sound auf Tablet, View Tablet wechseln, etc.

    Moved
    1
    0 Votes
    1 Posts
    652 Views
    No one has replied
  • Adapter mit Script ein/ausschalten

    Moved
    14
    0 Votes
    14 Posts
    5k Views
    Jey CeeJ
    Und die kontrolanzeige läuft außerhalb von iobroker und/oder nicht in javascript? Sonst würde ich direkt die Anzeige als trigger nutzen. Gesendet von meinem m8 mit Tapatalk
  • Blockly Timer Interval

    Moved
    9
    1
    0 Votes
    9 Posts
    4k Views
    M
    Hallo, es hat tatsächlich an dieser Variable gelegt, in ioBroker wird dadurch auch leider das Blockly Script immer 2 x aufgerufen. erst steht "im Haus" dann nach einiger Zeit "True", das scheint die Probleme gemacht zu haben. Meine Anwesenheit war auch nicht die Originale, ich hatte sie auch umbenannt wegen HM Scripte ausführen bei CCU Neustart. Es ist also eine reine "BOOL" Variable und keine Werteliste oder ähnliches, in Homematic funktioniert das alles wunderbar. Im HM rega Adapter sieht das aber wie folgt aus, wollte auch nichts ändern, da ich die Befürchtung habe das bei Neu Synchronisation das wieder überschrieben wird. [image: 670_variable.jpg] Ich hoffe das es jetzt gelöst ist, habe einfach auf "TRUE" oder Text "im Haus" abgefragt. Schwierige Geburt, vielen Dank für die Hilfe hier im Forum. Lg Mike
  • Telegram: Reihenfolge der empfangenen Nachrichten stimmt nicht

    Moved
    4
    0 Votes
    4 Posts
    614 Views
    bahnuhrB
    Also, ich bekomms nicht hin. Könnte ihr doch nochmal mein Script im Beitrag 1 vorher anschauen. mfg Dieter
  • Blockly…. ich versteh es nicht :-(

    Moved
    13
    1
    0 Votes
    13 Posts
    1k Views
    wendy2702W
    Guten Morgen zusammen, habe mich heute mal weiter mit Blockly beschäftigt. Habe mir das für die Ansage jetzt erstmal so gebastelt: Blockly: ! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml"> ! <block type="comment" id="0#2N9{f1qzS.?aQjyF^t" x="62" y="6"><field name="COMMENT">Ansage Wetter Warnung</field> ! <next><block type="on" id="{(/0/XswO#kI,[z2]L"><field name="OID">dwd.0.warning.description</field> ! <field name="CONDITION">ne</field> ! <statement name="STATEMENT"><block type="comment" id="lQLZ-.DmLp46gH#A(:"><field name="COMMENT">Ansage in Zeitraum</field> ! <next><block type="debug" id="yqjq:JM+5|2Rr9_~1S!n"><field name="Severity">log</field> ! <value name="TEXT"><shadow type="text" id="rPI@5!j.egewYu#x7o5Q"><field name="TEXT">Änderung Wetterwarnung</field></shadow></value> ! <next><block type="controls_if" id="@K{38@g4[,lRQVs1eSY*"><value name="IF0"><block type="time_compare_ex" id="Q0%APiD4]sG/K=O/XBc"><mutation end_time="true" actual_time="true"></mutation> ! <field name="USE_ACTUAL_TIME">TRUE</field> ! <field name="OPTION">between</field> ! <value name="START_TIME"><shadow type="text" id="hD]^-0=mMS5T{5B|u~s^"><field name="TEXT">09:00</field></shadow></value> ! <value name="END_TIME"><shadow type="text" id="2,#Yrkh|9-j[8)|7S)3K"><field name="TEXT">23:00</field></shadow></value></block></value> ! <statement name="DO0"><block type="debug" id=":y3?1.vBaGiqvENrj8p"><field name="Severity">log</field> ! <value name="TEXT"><shadow type="text" id="f^)TeKU?Q!3_.Ej[6ivs"><field name="TEXT">IPAD AN</field></shadow></value> ! <next><block type="control" id="{WnshUZH-i@6Lg38CD3}"><mutation delay_input="false"></mutation> ! <field name="OID">hm-rpc.0.MEQ0201401.1.STATE</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="m6G%H?[!JtBqzsl7!Hu9"><field name="BOOL">TRUE</field></block></value> ! <next><block type="comment" id="~O]]/P%WI{x;TV.hfLc"><field name="COMMENT">Ansage mit Verzögerung</field> ! <next><block type="timeouts_settimeout" id="~T[e.?@YO)jp;c(|;!?"><field name="NAME">timeout</field> ! <field name="DELAY">2000</field> ! <statement name="STATEMENT"><block type="sayit" id="J)T;J+yr},36p,wbCt3Y"><field name="INSTANCE">.1</field> ! <field name="LANGUAGE">de</field> ! <field name="LOG">debug</field> ! <value name="VOLUME"><block type="variables_get" id="lhbkT^B0:wfs~!^pa)q"><field name="VAR">100</field></block></value> ! <value name="MESSAGE"><shadow type="text" id="o{T4nu,J5miCy=WGyjm?"><field name="TEXT">Test</field></shadow> ! <block type="text_join" id=";u-JOA:L:Mbn-10BCYB"><mutation items="6"></mutation> ! <value name="ADD0"><block type="get_value" id="}Q!.?u,~ekR_U+eKmj2"><field name="ATTR">val</field> ! <field name="OID">dwd.0.warning.headline</field></block></value> ! <value name="ADD1"><block type="text" id="ZS/3]BbZR:Q)imJ0IwP-"><field name="TEXT">Von</field></block></value> ! <value name="ADD2"><block type="get_value" id="dlgKvcKmC}I9PM)T.Ycd"><field name="ATTR">val</field> ! <field name="OID">dwd.0.warning.begin</field></block></value> ! <value name="ADD3"><block type="text" id="T-%]nCUX:Qq(SnHAyO@2"><field name="TEXT">bis</field></block></value> ! <value name="ADD4"><block type="get_value" id="-.;_F()4hAP29[:x,sSE"><field name="ATTR">val</field> ! <field name="OID">dwd.0.warning.end</field></block></value> ! <value name="ADD5"><block type="get_value" id="w;c:G:2=V+}+8iP4(6x"><field name="ATTR">val</field> ! <field name="OID">dwd.0.warning.description</field></block></value></block></value></block></statement> ! <next><block type="debug" id="zp7aG:e4YZ4v)o1(oP"><field name="Severity">log</field> ! <value name="TEXT"><shadow type="text" id=";GIT][`[Hnfi#{((;)Vu"><field name="TEXT">IPAD aus nach 30 Sekunden</field></shadow></value> ! <next><block type="control" id="n=zNe6R.0_(QoGKI+DNu"><mutation delay_input="true"></mutation> ! <field name="OID">hm-rpc.0.MEQ0201401.1.STATE</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">30000</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="J:+ZU*3h^KFb-6g,LMk+"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></statement></block></next></block></xml> Javascript Code: ! var my_100, timeout; ! // Ansage Wetter Warnung ! on({id: "dwd.0.warning.description"/Warning description/, change: "ne"}, function (obj) { ! var value = obj.state.val; ! var oldValue = obj.oldState.val; ! // Ansage in Zeitraum ! console.log('Änderung Wetterwarnung'); ! if (compareTime('09:00', '23:00', "between", null)) { ! console.log('IPAD AN'); ! setState("hm-rpc.0.MEQ0201401.1.STATE"/HM-Dis-TD-T MEQ0201401:1.STATE/, true); ! // Ansage mit Verzögerung ! timeout = setTimeout(function () { ! setState("sayit.1.tts.text", "de;my_100;" + ([getState("dwd.0.warning.headline").val,'Von',getState("dwd.0.warning.begin").val,'bis',getState("dwd.0.warning.end").val,getState("dwd.0.warning.description").val].join(''))); ! console.debug("sayIt[de][Volume - my_100]: " + ([getState("dwd.0.warning.headline").val,'Von',getState("dwd.0.warning.begin").val,'bis',getState("dwd.0.warning.end").val,getState("dwd.0.warning.description").val].join(''))); ! }, 2000); ! console.log('IPAD aus nach 30 Sekunden'); ! setStateDelayed("hm-rpc.0.MEQ0201401.1.STATE"/HM-Dis-TD-T MEQ0201401:1.STATE/, false, 30000, false); ! } ! }); Allerdings bekomme ich keine Ansage sondern diesen Fehler im Log: sayit.1 2017-01-07 10:24:27.784 error Cannot get file: received file is too short sayit.1 2017-01-07 10:24:27.698 info saying: Amtliche WARNUNG vor LEICHTEM SCHNEEFALLVon07.01.2017 06:00bis07.01.2017 14:00 Sayit ist so befüllt: de;my_100;Amtliche WARNUNG vor LEICHTEM SCHNEEFALLVon07.01.2017 06:00bis07.01.2017 14:00 Sayit nutzt IVONA und wenn ich den Text ohne "de;" und ohne "my_" absende funktioniert es. Ist das jetzt ein Fehler von dem Blockly Modul oder von SayIt? EDIT: Das "my_" habe ich wegbekommen. Da hatte ich etwas falsches ausgewählt. Allerdings kommt immer noch das "de;" mit und sobald ich das absende funktioniert es nicht.
  • Wie kann ich mit Blockly Variablen Ansagen lassen?

    Moved
    7
    0 Votes
    7 Posts
    3k Views
    DutchmanD
    @Sven2013: Allerdings geht eins bei mir nicht. Ich kann kein Json Objekt mitschicken. Also Einträge aus ICal lassen sich so nicht verschicken. Weißt du ob ich diese irgenwie in "lesbares wandeln" kann? ` Kein dir ein beispiel geben wie ich einen MQTT JSON query auslese und die werte in variablen und log schreibe. Input MQTT: { "Battery" : 255, "RSSI" : 7, "dtype" : "Lighting 2", "id" : "14879AA", "idx" : 2, "name" : "Deurbel_Voor", "nvalue" : 1, "stype" : "AC", "svalue1" : "OFF", "switchType" : "Doorbell", "unit" : 1} Hieraus hohle ich mir die werte | val | name | und schreibe sie in variabelen + log: //Read value at update on MQTT trigger on({id: RegExp("javascript.0.domoticz."), change: "any"}, function (obj) { var name = obj.name; var value = (getState(id).val); log (value); log (name); // log("request: " + 'http://192.168.1.134:8084/json.htm?type=command¶m=switchlight&idx=7&switchcmd=On'); }); Resultat: 20:38:41.433 [info] javascript.0 script.js.common.Domoticz_Switch: 1 20:38:41.433 [info] javascript.0 script.js.common.Domoticz_Switch: Domoticz Deurbel_Voor Vielleicht hilft das ? :)
  • Übersetzung true/false

    Moved
    8
    0 Votes
    8 Posts
    1k Views
    0
    durch Zufall gefunden : http://forum.iobroker.net/viewtopic.php … it=chat_ID sendTo('telegram.0', { text: 'Testnachricht empfangen.', chatId: '227174xxx', }); gruß
  • Delay zwischen 2 Befehlen

    Moved
    15
    0 Votes
    15 Posts
    11k Views
    bahnuhrB
    Ausgangslage, was wollte ich: das Script soll mir Bilder meiner Cams senden per Telegram. das Bild soll erst versendet werden wenn es ordnungsgemäß gespeichert ist. (Deshalb zeitverzögert; wenn dies nicht notwendig dann auch gut) das gespeicherte Bild soll nach Versand wieder gelöscht werden (hab ich bisher noch nicht hinbekommen) ich wollte die Nachrichten per Telegram in der richtigen Reihenfolge. Also erst cam 62, dann 63, …. (Deshalb for .. To; dies klappt bisher nicht -> die Nachrichten kommen willkürlich, erst Bild 67, dann 62, dann 64, etc.) So, ich glaub das wars. Fazit: Wie bekomme ich das hin, mit Datei wieder löschen Reihenfolge der Nachrichten Mit freundlichen Grüßen Dieter
  • [gelöst] Loeschen von setStateDelayed Ausschaltplanung moeglich ?

    Moved
    15
    0 Votes
    15 Posts
    4k Views
    paul53P
    Timer sind Objekte: var el1_timer=null; Timer sollten vor Wiederverwendung gelöscht werden: ... log("Bewegung"); // aber nur wenn Ecklicht auch an war/angehen soll if (getState("hm-rega.0.3416"/*kueche_Ecklicht_war_an*/).val) { log("Ecklicht war an => Licht wird aktualisiert"); meindingsbums.zone(4).on(); //hier schalte ich was ein -geht if(el1_timer) clearTimeout(el1_timer); //Beende späteren Timer, damit die nicht doppelt laufen. el1_timer = setTimeout(function () {setState("javascript.0.EcklichtTimer",199);},200); //setze Timer auf 199, 200ms verzögert } }); // Wenn der EcklichTimer gesetzt wurde, dann starte mit dem Runterzählen var mySubscription = on({id:"javascript.0.EcklichtTimer"/*EcklichtTimer*/, change: 'any' }, function (dp) { log("Trigger:EcklichtTimer triggerte: " + dp.state.val); if (dp.state.val > 2){ log("Subtrahiere 2: " + dp.state.val + "-> " + dp.state.val-2)); if(el1_timer) clearTimeout(el1_timer); el1_timer = setTimeout(function () {setState("javascript.0.EcklichtTimer", dp.state.val-2));}, 2000); } else { // Der Timer ist abgelaufen. Schalte Licht aus... meindingsbums.zone(4).off(); //und aus damit log("AUs!") } });
  • Anfängerproblem Blockly

    Moved
    2
    0 Votes
    2 Posts
    984 Views
    lobomauL
    @Blackeye: Hallo zusammen, ich möchte über ein Script folgendes erreichen: Wenn über ein Fritzbox ein Anruf ankommt möchte ich wenn ich Amazon oder Fernseh schaue die Sendung pausieren. Die Adapter sind alle installiert und laufen… wenigsten etwas :D Ich habe jetzt das Problem mit einer UND Verknüpfung Also wenn ein Anruf ankommt und ich aktuell TV schaue dann TV Pause Wenn ein Anruf ankommt und ich Amazon anschaue soll Amazon pausiert werden. Danke für eine kleine Hilfe.... Lars ` Ich glaube so könnte es funktionieren: 1146_unbenannt.jpg
  • Regex für selector

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    bentschikB
    Das funktioniert nicht, weil dann auch sowas, wie /EG/FLR_EG/Door/Open gefunden wird. Ich würde damit den Suchraum auch unnötig einschränken. Das liegt in der Natur des Unterschieds zwischen einfachen Wildcards und Regular Expressions. Ich versuche, mein Anliegen mal etwas genauer zu beschreiben: Meine "Systemvariablen" sind folgendermassen aufgebaut: /EG = Erggeschoss /OG = Obergeschoss /EG/Door/Open = irgendeine Tür im Ergeschoss offen /EG/AZB = Arbeitszimmer Ben im Erdgeschoss /EG/BAD = Bad im Erdgeschoss /Door/Open = irgendeine Tür im Haus offen So geht es quasi Spar-MQTT-mässig immer weiter herunter bis zum Datenpunkt eines Sensors. Wenn ich jetzt die Tür bei mir im Arbeitszimmer schliesse, checkt meine Programmierung, ob es irgendwo im Erdgeschoss noch eine weitere offene Tür gibt, ansonsten wird /EG/Door/Open auf false gesetzt. Das triggert ggf. wieder /Door/Open, das checkt, ob in irgendeinen Geschoss eine Tür offen ist. D.h. ich benötige einen Check auf: /UG/Door/Open /EG/Door/Open /OG/Door/Open /DG/Door/Open Erschwerend kommt hinzu, dass ich als alter Informatiker die subscribe bzw. on handler über eine Funktion verallgemeinert habe, d.h. der Funktion ist es völlig egal, ob ich auf (UG|EG|OG|DG)/Door/Open matche, oder auf /EG/(AZB|BAD)/Door/Open. Die Funktion bekommt die übegeordnete SV, wie z.B. /Door/Open, übergeben, sowie die zu beobachtenden untergeordeneten Variablablen, wie (UG|EG|OG|DG)/Door/Open. Mit den Wildcards matche ich bei .each, wie beschrieben, zu viel. Regular Expressions für Selektoren wären in der Situation die Rettung. Beste Grüsse, Bentschik
  • [gelöst]: Nur in bestimmten Zeitbereichen on({id …}

    Moved
    9
    0 Votes
    9 Posts
    2k Views
    wendy2702W
    @Nordlicht: Hallo, ich bin auf der Suche nach dem TimeRange Skript… kann es hier im Forum nicht (mehr) finden Leider führen beide Links von hier - sowohl für Zeitbereich wie auch Datumsbereich - versehentlich zum identischen Skript. http://www.iobroker.net/docu/?page_id=3591&lang=de Vielen Dank. Gruß Thomas ` Time Range Script: ! // isTimeInRange ! function currentDate() { ! var d = new Date(); ! return new Date(d.getFullYear(), d.getMonth(), d.getDate()); ! } ! function addTime(strTime) { ! var time = strTime.split(':'); ! var d = currentDate(); ! d.setHours(time[0]); ! d.setMinutes(time[1]); ! d.setSeconds(time[2]); ! return d; ! } ! function isTimeInRange(strLower, strUpper) { ! var now = new Date(); ! var lower = addTime(strLower); ! var upper = addTime(strUpper); ! var inRange = false; ! if (upper > lower) { ! // opens and closes in same day ! inRange = (now >= lower && now <= upper) ? true : false; ! } else { ! // closes in the following day ! inRange = (now >= upper && now <= lower) ? false : true; ! } ! return inRange; ! } ! // isTimeInRange ENDE ! createState('Sayit.Trigger', false, { ! name: 'Sayit-Ansage bei Bewegung steuern', ! type: 'boolean' ! }); ! createState('Sayit.Zeitsteuerung', false, { ! name: 'Sayit-Ansage nur innerhalb Zeitfenster schalten', ! type: 'boolean' ! }); ! var idBewegung = "hm-rpc.0.MEQ1849741.3.MOTION", ! idTrigger = 'Sayit.Trigger'; ! on({id: idBewegung, val: true}, function (obj) { ! if ( isTimeInRange('06:00:00', '06:45:00') || isTimeInRange('07:00:00', '07:45:00') || isTimeInRange('8:30:00', '9:15:00')) setState(idTrigger, true); // Trigger auslösen ! }); ! // Zurücksetzen vom Trigger ! schedule("46 6 * * *", function () { ! setState(idTrigger, false); ! }); ! schedule("46 7 * * *", function () { ! setState(idTrigger, false); ! }); ! schedule("16 9 * * *", function () { ! setState(idTrigger, false); ! });
  • History Logging per Script ein und ausschalten

    Moved
    4
    0 Votes
    4 Posts
    828 Views
    L
    Hallo Günther, ja, das sieht so aus als könnte das für mich richtig sein. Ich werde testen. @Dutchman Im Prinzip hast du recht, ich will nur Vermeiden Daten zu loggen, die ich im besten Fall nie brauche.
  • Homematic Taster abfragen (PRESS_SHORT) funkt. nicht

    Moved
    3
    0 Votes
    3 Posts
    2k Views
    P
    Funktioniert so. Danke für den Hinweis.
  • Variable setzen wenn bestimmte Bedingungen erfüllt sind

    Moved
    7
    0 Votes
    7 Posts
    1k Views
    A
    Hallo, Ich hatte ein ähnliches Problem. Mehrere Homematic Schalt-Aktoren (Weihnachstbeleuchtung) sollten geschaltet werden wenn der Bewegungsmelder "draußen" oder der Bewegungsmelder "Flur-unten" eine Bewegung erkannt hat. Nach ein er bestimmten Zeit sollten "Lichter" wieder "allein" ausgehen. Muß ja nicht die ganze Ncht brennen :lol: Zusätzlich sollte noch die Helligkeit des Bewegungsmelder "draußen" überprüft werden (ob es dunkel genug ist die "Licher" einzuschalten). Ich hab das über eine Funktion gelöst, die von beiden "on" Ereignis Funktionen ausgeführt wird. Hier ist der Script: function Kerze () { var Helligkeit = getState("hm-rpc.0.NEQ0121243.1.BRIGHTNESS"/Aussen Bewegung-1-S.BRIGHTNESS/).val; log ("Helligkeit: " + Helligkeit); if (Helligkeit < 130) { setState("hm-rpc.0.KEQ0171811.1.STATE"/Licht Wand.STATE/,true); //Steckdose Schuppen ein setState("hm-rpc.0.KEQ0171542.1.STATE"/Licht Fenster.STATE/,true); //Steckdose Carport ein setState("hm-rpc.0.KEQ0171848.1.STATE"/Schalter-2.STATE/,true); //Steckdose Terasse ein setState("hm-rpc.0.KEQ0172215.1.STATE"/Schalter-1.STATE/,true); //Steckdose Küche ein setState("hm-rpc.0.LEQ0944756.1.STATE"/Kerze-1S.STATE/,true); //Kerze-1 ein setState("hm-rpc.0.NEQ0603872.1.STATE"/Kerze-2S.STATE/,true); //Kerze-2 ein setState("hm-rpc.0.NEQ0603833.1.STATE"/Kerze-3S.STATE/,true); //Kerze-4 ein setStateDelayed("hm-rpc.0.KEQ0171811.1.STATE"/Licht Wand.STATE/,false,10006020); //Steckdose Schuppen aus, nach 20 min setStateDelayed("hm-rpc.0.KEQ0171542.1.STATE"/Licht Fenster.STATE/,false,10006020); //Steckdose Carport aus, nach 20 min setStateDelayed("hm-rpc.0.KEQ0171848.1.STATE"/Schalter-2.STATE/,false,10006020); //Steckdose Terasse aus, nach 20 min setStateDelayed("hm-rpc.0.KEQ0172215.1.STATE"/Schalter-1.STATE/,false,10006020); //Steckdose Küche aus, nach 20 min setStateDelayed("hm-rpc.0.LEQ0944756.1.STATE"/Kerze-1S.STATE/,false,10006010); //Kerze-1 aus, nach 10 min setStateDelayed("hm-rpc.0.NEQ0603872.1.STATE"/Kerze-2S.STATE/,false,10006010); //Kerze-2 aus, nach 10 min setStateDelayed("hm-rpc.0.NEQ0603833.1.STATE"/Kerze-3S.STATE/,false,10006010); //Kerze-4 aus, nach 10 min } } // auslösen wenn Bewegung in Flur-unten on ({id: "hm-rpc.0.JEQ0264853.1.MOTION"/Flur unten Bewegungsmelder.MOTION/, val: true}, function () { Kerze (); }); // auslösen wenn Bewegung vor dem Haus on ({id: "hm-rpc.0.NEQ0121243.1.MOTION"/Aussen Bewegung-1-S.MOTION/, val: true}, function () { Kerze (); });

627

Online

32.6k

Users

82.2k

Topics

1.3m

Posts