Skip to content

Skripten / Logik

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

16.6k Topics 213.6k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    D
    Danke habe ich gemacht. ( 1punkt) Die Objekt-ID "aktuell erzeugte Energie" wäre bei mir: Objekt-ID: 0_userdata.0.Charge_Control.Allgemein.IstPvErtragLM0_kWh plus Objekt-ID: 0_userdata.0.Charge_Control.Allgemein.IstPvErtragLM1_kWh (zusatz WR) wie kann ich das bewerkstelligen?
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    ste_gleiS
    So mal einen Selbstversuch gestartet. Blockly: [image: 1771869508062-97ddc240-3b91-439e-b10a-d06123161cc2-image.png] ergibt: [image: 1771869637274-523f8aeb-953d-498e-b051-6cd9826ac568-image.png] Also hat deine Logik vielleicht einen Fehler
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • Blockly Intervall alle *X* Min ausführen

    Moved
    2
    1
    0 Votes
    2 Posts
    620 Views
    E
    Hat nicht vll jemand ne Idee wie ich das Lösen könnte? Gerne auch mit einem anderen Ansatz.
  • Stromzähler mit Volkszähler

    Moved
    19
    0 Votes
    19 Posts
    5k Views
    D
    Moin, da ich damals bei einer Google-Suche zu "ioBroker mit Volkszähler verbinden" als erstes hier gelandet bin, lasse ich mal mein Skript hier, in der Hoffnung, dass es noch jemand anderem helfen kann: https://gist.github.com/digitmind-net/d … 87b2181c04 Der Vorteil gegenüber dem "smartmeter"-Adapter ist, dass es bei schon bestehender Installation vom Volkszähler einfacher einzurichten ist und durch die hohe Kompatiblität des Volkszählers mehr Geräte unterstützt. Das ist aber nur ein Nischenfall für diejenigen, die sowieso schon einen eingerichteten Volkszähler besitzen. Lg Thomas
  • [gelöst] Temperaturwarnung schrittweise triggern (Telegram)

    Moved
    2
    0 Votes
    2 Posts
    463 Views
    T
    Ich habs jetzt doch via States gelöst, in die ich quasi einen dynamischen Hürdenwert reinschreibe. Initiert werden diese mit der grundsätzlichen Warntemperatur und dann laufend aktualisiert. Diese Hürdentemperatur nutze ich dann nur für Telegram, sayit hat eine eigene Temperatur. Die grundsätzliche Warntemperatur bleibt immer konstant für die VIS Darstellung. Falls es interessiert, hier das Skript. Es erlaubt (nach meinem Dafürhalten) relativ schlank die Überwachung aller Raumtemperaturen und dazugehöriger Fenster: ! ```` /* ! - Skript prüft die IST Temperatur und schickt Warnmeldung, sofern die eingestellte Warntemperaturen unterschritten werden. Zugleich wird die Anzahl der offenen Fenster im Raum geprüft und mitgeteilt. Für VIS gilt die eingestellte Warntemperatur, damit auf der Visualisierung immer alle Räume mit unterschrittener Temperatur angezeigt werden. Für Telegram gilt zunächst die eingstellte Warntemperatur. Nach versenden einer Warnung wird diese raumindividuell um 0.5 Gradschritte abgesenkt, damit nicht alle x-Sekunden die gleiche Meldung kommt sondern immer erst beim nächsten Schritt Sayit hat eigene Warntemperatur. Via 0/1 trigger wird geprüft, ob Sayit schon ausgelöst wurde. Wenn ja, kann die nächste Warnung erst nach 3 Minuten erfolgen. Zudem wird bei Sayit drauf geachtet, ob überhaupt noch Fenster im entsprechenden Raum offen sind. Wenn nein, dann kommt keine Warnung. ! Status v0.8, tempestas 10.3.2018 ! */ ! var debug = false; ! // *********************************************************************** // STATES ANLEGEN FÜR TELEGRAM UND SAYIT, WARNUNG SOWIE TEXTARRAY // *********************************************************************** ! var pfad = 'Raumklima.TempControl.'; var pfadRaum = 'Raumklima.TempControl.Raeume.'; ! createState(pfad+'Telegram', true, { read: true, write: true, name: "Temperatur Warnungen per Telegram senden?", type: "boolean", def: false }); ! createState(pfad+'Sayit', false, { read: true, write: true, name: "Temperatur Warnungen per Sayit ansagen?", type: "boolean", def: false }); ! createState(pfad+'Warnung', false, true, { read: true, write: true, name: "Temperatur Warnung ausgelöst?", type: "boolean", def: false }); ! createState(pfad+'WarnTemp',18.5, true, { name: 'Warntemperatur', type: 'number', min: '12', max: '30', desc: 'Warntemperatur' }); ! createState(pfad+'WarnSayit',16, true, { name: 'Warntemperatur', type: 'number', min: '12', max: '30', desc: 'Warntemperatur' }); ! createState(pfad+'Text', "", true); ! var tts = "sayit.1.tts.text"; var ttsVol = "sayit.1.tts.volume"; ! var idWarnTemp = pfad+'WarnTemp'; var idWarnSayit = pfad+'WarnSayit'; var idTelegram = pfad+'Telegram'; var idSayit = pfad+'Sayit'; var idWarnung =pfad+'Warnung'; var idText = pfad+'Text'; ! var raum; ! // *********************************************************************** // Cache-Selector Temperatur // *********************************************************************** ! var cacheSelector = $('channelstate.id=*.ACTUAL_TEMPERATURE'); ! // *********************************************************************** // Functions // *********************************************************************** ! // Check-Function ! function temperatureCheck(obj) { var textKalt = []; var warn = getState(idWarnTemp).val; var warnSayit = getState(idWarnSayit).val; var telegram = getState(idTelegram).val; if (obj) if(debug) log('Auslösender Aktor: ' + obj.common.name + ': ' + obj.newState.val); // Info im Log, welcher Zustand sich geändert hat ! cacheSelector.each(function (id, i) { // Schleife über alle gefundenen Objekte var ist = getState(id).val; raum = getObject(id, 'rooms').enumNames[0]; var telegramTemp = Math.min(getState(pfadRaum +raum).val, warn); // Werden initial mit der Warntemperatur eingespielt. Falls zwischenzeitlich Warntemperatur geändert und kleiner als aktuelle telegramTemperatur, nimm diese if (debug) log ("telegramTemp im "+raum + " beträgt "+telegramTemp +". Die IST Temperatur beträgt "+ist); ! // Abschnitt zum Zählen der offenen Fenster im jeweiligen Raum ! var cacheSelectorFenster = $('channelstate.id=*.STATE(rooms=' + raum + ')'); var fenster = 0; var fensterMax = 0; cacheSelectorFenster.each(function (id, i) { ++fensterMax; var status = getState(id).val; if (status == 1 || status === true) ++fenster; }); // Ende Fenster ! if (ist < warn) { // IST-Temperatur ist kleiner als Warntemperatur ! var pushinfo = raum + " : "+ ist + "°C"; textKalt.push(pushinfo); // Rauminfo mit Ist Temperatur zum Array hinzufügen ! // Telegram Benachrichtigung ! if (ist < telegramTemp) { // IST-Temperatur ist kleiner als Vergleichstemperatur für Telegram und es sind Fenster offen setState(pfadRaum +raum, Math.max(12, telegramTemp -0.5)); // telegramTemperatur für diesen Raum für den nächsten Abgleich um 0.5 verringern, damit nicht alle paar Sekunden ausgelöst wird. Ab 12 Grad bleibt es konstant, damit ständig erinnert wird if(debug) log("Telegram-Hürde im "+raum +" wurde auf "+(telegramTemp - 0.5) +" reduziert" ); var nachricht = "Temperatur im " +raum + " beträgt nur noch "+ist +" °C.\n" +fenster +" von "+fensterMax+" Fenstern offen."; if(telegram) sendTo('telegram.0', nachricht ); } else { setState(pfadRaum +raum, warn); // falls Temperatur wieder über Warn ansteigt, dann auf warn setzen } // SayIT Ausgabe via Sonos var sayittext = "Achtung! Temperatur im "+raum +" nur noch bei "+ist +"°C. Bitte Fenster schließen"; ! if(ist <= warnSayit && sayit && compareTime('10:00', '22:00', 'between') && getState(pfadRaum +raum +'.Sayit').val != 1 && fenster > 0) { setState(ttsVol, 15); setState(tts, sayittext ); setState(pfadRaum +raum +'.Sayit', 1); // sayit trigger wird auf 1 gesetzt, damit nicht ständig ausgelöst wird setStateDelayed(pfadRaum +raum +'.Sayit', 0, 3 * 60 * 1000 ); // nach 3 Minuten wird der Trigger wieder zurückgesetzt } } }); // VIS Warnmeldungen schreiben if(debug) log("idText erhält als info: "+textKalt); setState(idText, textKalt.join(' ') ); textKalt.length>0 ? setState(idWarnung, true) : setState(idWarnung, false); } ! // *********************************************************************** // Trigger Änderung IST Temperatur --> Skript wird ausgelöst // *********************************************************************** ! cacheSelector.on(function(obj) { // bei Zustandänderung der IST Temperaturen temperatureCheck(obj); }); ! // Bei Start ! setTimeout(initiate(), 2000); setTimeout(temperatureCheck, 5000); ! // States für alte Temperaturen und Sayit Varialbe anlegen ! function initiate(){ cacheSelector.each(function (id, i) { raum = getObject(id, 'rooms').enumNames[0]; createState(pfadRaum +raum, getState(idWarnTemp).val, true); if(debug) log("State " +pfadRaum +raum +" angelegt"); }); cacheSelector.each(function (id, i) { raum = getObject(id, 'rooms').enumNames[0]; createState(pfadRaum +raum +'.Sayit', 0, true); if(debug) log("State " +pfadRaum +raum +".Sayit angelegt"); }); } ! ````
  • Warum funktioniert alxa-local in node-red nicht mit dem iobroker Adapter?

    Moved
    6
    0 Votes
    6 Posts
    1k Views
    B
    Hallo Werde ich Probieren, hab aber hauptsächlich mit Sonoff Probleme und auch schon Probleme gehabt bevor ich über haupt TV gemacht hab. Wie heiß es so schön Probieren geht über Studieren! :lol:
  • [gelöst] Blockly Script Steuern von Temperatur

    Moved
    2
    1
    0 Votes
    2 Posts
    515 Views
    P
    Hallo, hatte das Skript versehentlich unter global abgelegt. cu paul
  • $-Selector / Raum dynamisch?

    Moved
    3
    0 Votes
    3 Posts
    900 Views
    T
    Ahh danke. man man man, da hätte ich auch selbst drauf kommen können. Vielen Dank!
  • Objekte unter mqtt zählen

    Moved
    1
    0 Votes
    1 Posts
    258 Views
    No one has replied
  • Tägliches Backup auf USB-Stick

    Moved
    2
    0 Votes
    2 Posts
    1k Views
    T
    SuFu mal benutzt? http://forum.iobroker.net/viewtopic.php … uerbar+vis
  • Zirkulationssteuerung

    Moved
    4
    1
    0 Votes
    4 Posts
    929 Views
    N
    @paul53 Das war die Lösung Danke an alle die hier gelesen haben und geantwortet. das war es manchmal denkt man einfach viel zu kompliziert und kommt auf die einfachen iden nicht. 2344_zirkulation_geht.jpg
  • Frage zur Logik

    Moved
    2
    2
    0 Votes
    2 Posts
    394 Views
    FragMikeF
    So….einfach mal dumm rumgetestet. So klappts für mich erst einmal. Habe aktuell über IFTTT die Befehle "schalte" und "fahre" aktiviert. Im Skript kann ich dann pro Schalter/Gerät 2 Alternativen angeben, als auch für das aktivieren. Sage ich was anderes als die Aktivierungswörter ist es automatisch "ausschalten", wobei ich das noch mit den korrekten Begriffen ergänzen werde. Mir gibt es aktuell eine ausreichende Flexibilität, um alles notwendige über Google Assistant zu steuern. 5842_ifttt.png
  • Anbindung Russound CAA66 per rs232 seielle Schnittstelle

    Moved
    5
    0 Votes
    5 Posts
    670 Views
    M
    @Thisoft: @Micha240373: Hi vielen Dank für die Antwort. Ich möchte eigentlich senden. KNX zu rs232 Russound. Das Problem ist, das ich null Ahnung von Node-red habe. Gibt es auch alternativen? Gruss Michael ` Ja - JavaScript! ;) Weiß zwar nicht, ob das das ist was du hören wolltest, aber der letzte Link oben von pafra führt zu einem ganz brauchbaren Beispiel… ` Ok Danke. werd mal sehen was ich machen kann!
  • Bei Abwesenheit Türen schließen Blockly

    Moved
    6
    1
    0 Votes
    6 Posts
    753 Views
    C
    Danke läuft alles perfekt :)
  • Harmony Hub Aktivitat über yahka per Skript steuern

    Moved
    3
    0 Votes
    3 Posts
    1k Views
    S
    Versuche seit 3 Tagen den TV über Siri zumindest ein/aus zu schalten. Dank des Forums, habe ich eine brauchbare Lösung gefunden. Dafür vielen Dank an die Community hier. Nun kann ich die Harmony Aktion "Fernsehen" starten und wenn ich ausschalte, spielt es keine Rolle welche Aktion gerade ausgeführt wird "FireTV ect.". Er schalte immer aus. Habe das so gelöst: 2 Szenen erstellt Fernsehen anschalten / Fernsehen ausschalten [image: 6272_yahka4.jpg] Einen State erstellt "true/false" und in Yahka als Switch unter ON eingetragen Und dieses Script (von User jans_ios) angepasst ! ```` on({id: 'javascript.0.scriptEnabled.STECKDOSE.TV', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("javascript.0.scriptEnabled.STECKDOSE.TV").val === true) { setState("scene.Fernsehen_an"/szene.Fernsehen.an.starten/, true); sendTo("telegram.0", "send", { text: 'Fernsehen eingeschaltet' }); } else { setState("scene.Fernseher_aus"/szene.Fernsehen.aus.starten/, true); sendTo("telegram", "send", { text: 'Fernsehen ausgeschaltet' }); } }); Gruß Marco
  • [Gelöst] [Blockly] Rollladen mit Lux wert fahren

    Moved
    48
    1
    0 Votes
    48 Posts
    5k Views
    cvidalC
    So habe ich es jetzt mit Blockly, dazu habe ich einen Datenpunkt mit Javaskripte erstellt in dem ich <15lux runter und >100lux hoch schreibe. Versucht hatte ich mit dem "zustand erzeugen" Block diesen Datenpunkt zu erstellen aber das hat nicht funktioniert, leider weiß ich nicht warum. Hier das Javaskripte für den Datenpunkt: createState('javascript.0.MyStates.Jalousie_Status', '', { name: 'Jalousie hoch oder runter', type: 'string', unit: '' }); //setState("javascript.0.MyStates.Jalousie_Status"/*Jalousie hoch oder runter*/; Nun das Blockly-skript: [image: 2113_unbenannt.png] Der Export: ! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml"> ! <block type="on_ext" id="Qy)NGDj;^0l|=n9pQtz" x="-12901" y="-5946"><mutation items="1"></mutation> ! <field name="CONDITION">ne</field> ! <value name="OID0"><shadow type="field_oid" id="XX]zW,XnCfMsR@1e-]QT"><field name="oid">hm-rpc.0.OEQ0228737.1.LUX</field></shadow></value> ! <statement name="STATEMENT"><block type="controls_if" id="1#;l+h3bMm5r;~v2Hg{"><mutation elseif="1"></mutation> ! <value name="IF0"><block type="logic_compare" id="ExR4=(g#kz(mefuPR9;L"><field name="OP">LT</field> ! <value name="A"><block type="get_value" id="0j7|SjOb[fPk9:g)!Z_e"><field name="ATTR">val</field> ! <field name="OID">hm-rpc.0.OEQ0228737.1.LUX</field></block></value> ! <value name="B"><block type="math_number" id="oXDnpKJS07R](Ht6K^-_"><field name="NUM">15</field></block></value></block></value> ! <statement name="DO0"><block type="control" id="!TI0r^RJo[r*cP:VD:*w"><mutation delay_input="false"></mutation> ! <field name="OID">javascript.0.MyStates.Jalousie_Status</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="text" id="DQ%s6Gaz:%Y@H]puiF-K"><field name="TEXT">runter</field></block></value></block></statement> ! <value name="IF1"><block type="logic_compare" id="ACZ^rJN{kif/%*B5l@3Y"><field name="OP">GT</field> ! <value name="A"><block type="get_value" id="|+woi|3zU;Fd?Bb])At"><field name="ATTR">val</field> ! <field name="OID">hm-rpc.0.OEQ0228737.1.LUX</field></block></value> ! <value name="B"><block type="math_number" id="w/IFv8m%O?Nh}IbxPNsN"><field name="NUM">100</field></block></value></block></value> ! <statement name="DO1"><block type="control" id="DQX::X|fHEb={i14K^p"><mutation delay_input="false"></mutation> ! <field name="OID">javascript.0.MyStates.Jalousie_Status</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="text" id="1-SmOP87*+!tlvrc*_tF"><field name="TEXT">hoch</field></block></value></block></statement></block></statement> ! <next><block type="on_ext" id="8O%AMJW8E#{uXTF_w86}"><mutation items="1"></mutation> ! <field name="CONDITION">ne</field> ! <value name="OID0"><shadow type="field_oid" id="HWM,#FD.z0b{|@COyKjg"><field name="oid">javascript.0.MyStates.Jalousie_Status</field></shadow></value> ! <statement name="STATEMENT"><block type="controls_if" id="=0bv?,bnXv41KN{-;Zm8"><value name="IF0"><block type="logic_compare" id="K;n*.?Sa|T?T*a8(KHr"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="yw;jyN-6p|o@rH+2Jm^"><field name="ATTR">val</field> ! <field name="OID">javascript.0.MyStates.Jalousie_Status</field></block></value> ! <value name="B"><block type="text" id="7Y2D8]C0wP4Q9[U_I)mE"><field name="TEXT">runter</field></block></value></block></value> ! <statement name="DO0"><block type="control" id="jui!FF];6UHJ8a:+OXwm"><mutation delay_input="false"></mutation> ! <field name="OID">knx.0.Beschattung_OG.Fahren.Eltern</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="ewmyF|}A-q}%iOJe2Zbs"><field name="BOOL">TRUE</field></block></value> ! <next><block type="control" id="m+3u?zl2!x}zK~Q;TWQk"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_OG.Fahren.Kind_1</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">5000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="i8l6B%h![Mgnug(1QSS"><field name="BOOL">TRUE</field></block></value> ! <next><block type="control" id="2_d_cg~-S?L3|BS!P5"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_OG.Fahren.Kind_2</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">10000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="2F]owzO1Jc?_s%d!PG.I"><field name="BOOL">TRUE</field></block></value> ! <next><block type="control" id="mK,Hv~:d-vf_!L]d.wdd"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_OG.Fahren.Bad</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">15000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="L|ael2~.S/iz94i0BicW"><field name="BOOL">TRUE</field></block></value> ! <next><block type="control" id="ia=Pck@Q@z7c.I)Y]ZpM"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_OG.Fahren.Ankleide</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">20000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="hdTAG2t6%|yi!x?-MG#?"><field name="BOOL">TRUE</field></block></value> ! <next><block type="control" id="Zb:79y,H1*xA@NFZFj"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_EG.Fahren.Gäste_WC</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">25000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="?!@Ot6?.BGT#;jMS.|or"><field name="BOOL">TRUE</field></block></value> ! <next><block type="control" id="_5z0qL:LtZ}M{5DK(FfJ"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_EG.Fahren.Küche_2</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">30000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id=":0M(r#I6;iFzmB-XM#~;"><field name="BOOL">TRUE</field></block></value> ! <next><block type="control" id="I1A+4S5je]R[?ie0a*8G"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_EG.Fahren.Esszimmer</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">40000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="U@QVbC~xGj;zQ8/5^h]"><field name="BOOL">TRUE</field></block></value> ! <next><block type="control" id="1#u-5PpIlksaJi#.5(c"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_EG.Fahren.Wohnzimmer_1</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">45000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="2OM[W!=QgW|];%)TDc|P"><field name="BOOL">TRUE</field></block></value> ! <next><block type="controls_if" id="qSkhJm!w{pKeYe!t+XVP"><mutation else="1"></mutation> ! <value name="IF0"><block type="logic_compare" id="3fJ5nPi8+9@,OvjI!K]m"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="?ALnR0yk}Jo@r1J-;{l"><field name="ATTR">val</field> ! <field name="OID">hm-rpc.0.NEQ1157343.1.STATE</field></block></value> ! <value name="B"><block type="logic_boolean" id="[hz3Be3t~.D{bZAbJ.@"><field name="BOOL">FALSE</field></block></value></block></value> ! <statement name="DO0"><block type="control" id=",TS1])j/1%=}1x*:dlw"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_EG.Fahren.HWR</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">55000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="E!S?z%fT9UR{@6ONBNBO"><field name="BOOL">TRUE</field></block></value></block></statement> ! <statement name="ELSE"><block type="control" id="1aBFrX/ce}pd6Ggb6NSN"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_EG.Position_Anfahren.HWR</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">55000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="math_number" id="LiH]U*=v[L7gI5DGq6g~"><field name="NUM">50</field></block></value></block></statement> ! <next><block type="controls_if" id=")EkSA1:qL6(Jlx,hN9(3"><mutation else="1"></mutation> ! <value name="IF0"><block type="logic_compare" id="++Z[W?qc][#(zkyR=1A_"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="F*ZtU|U-OS%K8n7xnpeQ"><field name="ATTR">val</field> ! <field name="OID">hm-rpc.0.OEQ0226002.1.STATE</field></block></value> ! <value name="B"><block type="logic_boolean" id="7z#-|=mEf~%ig;s^zZF9"><field name="BOOL">FALSE</field></block></value></block></value> ! <statement name="DO0"><block type="control" id="G%K3qBRXJ5|Wz7L8DO!Q"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_EG.Fahren.Wohnzimmer_2</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">50000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="e|.fcmrvNL;[FM8jjN{0"><field name="BOOL">TRUE</field></block></value></block></statement> ! <statement name="ELSE"><block type="control" id="Z[^k%KwS{F]6#VpDKFLS"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_EG.Position_Anfahren.Wohnzimmer_2</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">50000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="math_number" id="|I[/ln,BpZciU*[|YNjV"><field name="NUM">50</field></block></value></block></statement> ! <next><block type="controls_if" id="Fi~vZ;V;FgcKhcCh#KDN"><mutation else="1"></mutation> ! <value name="IF0"><block type="logic_compare" id="/2dxC=ZE@;*I=F9_2C58"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id=";++-VZ;WQ;x2.({x/3I."><field name="ATTR">val</field> ! <field name="OID">hm-rpc.0.OEQ0420807.1.STATE</field></block></value> ! <value name="B"><block type="logic_boolean" id="R%~P4*^9u2e|FCM@QES."><field name="BOOL">FALSE</field></block></value></block></value> ! <statement name="DO0"><block type="control" id="=xU2S{VmQ[#tFQ!;C9-"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_EG.Fahren.Küche_1</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">35000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="oHDzGa)khN?GZU7-5R/"><field name="BOOL">TRUE</field></block></value></block></statement> ! <statement name="ELSE"><block type="control" id="1{qV!z=XH@4.4wKj5M"><mutation delay_input="true"></mutation> ! <field name="OID">knx.0.Beschattung_EG.Position_Anfahren.Küche_1</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">35000</field> ! <field name="UNIT">ms</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="math_number" id="zI)T0c~zV1L%SpgTZ93?"><field name="NUM">50</field></block></value></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></statement></block></next></block></xml> Der Code: ! on({id: 'hm-rpc.0.OEQ0228737.1.LUX', change: "ne"}, function (obj) { ! var value = obj.state.val; ! var oldValue = obj.oldState.val; ! if (getState("hm-rpc.0.OEQ0228737.1.LUX").val < 15) { ! setState("javascript.0.MyStates.Jalousie_Status"/Jalousie hoch oder runter/, 'runter'); ! } else if (getState("hm-rpc.0.OEQ0228737.1.LUX").val > 100) { ! setState("javascript.0.MyStates.Jalousie_Status"/Jalousie hoch oder runter/, 'hoch'); ! } ! }); ! on({id: 'javascript.0.MyStates.Jalousie_Status', change: "ne"}, function (obj) { ! var value = obj.state.val; ! var oldValue = obj.oldState.val; ! if (getState("javascript.0.MyStates.Jalousie_Status").val == 'runter') { ! setState("knx.0.Beschattung_OG.Fahren.Eltern"/Eltern/, true); ! setStateDelayed("knx.0.Beschattung_OG.Fahren.Kind_1"/Kind 1/, true, 5000, false); ! setStateDelayed("knx.0.Beschattung_OG.Fahren.Kind_2"/Kind 2/, true, 10000, false); ! setStateDelayed("knx.0.Beschattung_OG.Fahren.Bad"/Bad/, true, 15000, false); ! setStateDelayed("knx.0.Beschattung_OG.Fahren.Ankleide"/Ankleide/, true, 20000, false); ! setStateDelayed("knx.0.Beschattung_EG.Fahren.Gäste_WC"/Gäste WC/, true, 25000, false); ! setStateDelayed("knx.0.Beschattung_EG.Fahren.Küche_2"/Küche 2/, true, 30000, false); ! setStateDelayed("knx.0.Beschattung_EG.Fahren.Esszimmer"/Esszimmer/, true, 40000, false); ! setStateDelayed("knx.0.Beschattung_EG.Fahren.Wohnzimmer_1"/Wohnzimmer 1/, true, 45000, false); ! if (getState("hm-rpc.0.NEQ1157343.1.STATE").val == false) { ! setStateDelayed("knx.0.Beschattung_EG.Fahren.HWR"/HWR/, true, 55000, false); ! } else { ! setStateDelayed("knx.0.Beschattung_EG.Position_Anfahren.HWR"/HWR/, 50, 55000, false); ! } ! if (getState("hm-rpc.0.OEQ0226002.1.STATE").val == false) { ! setStateDelayed("knx.0.Beschattung_EG.Fahren.Wohnzimmer_2"/Wohnzimmer 2/, true, 50000, false); ! } else { ! setStateDelayed("knx.0.Beschattung_EG.Position_Anfahren.Wohnzimmer_2"/Wohnzimmer 2/, 50, 50000, false); ! } ! if (getState("hm-rpc.0.OEQ0420807.1.STATE").val == false) { ! setStateDelayed("knx.0.Beschattung_EG.Fahren.Küche_1"/Küche 1/, true, 35000, false); ! } else { ! setStateDelayed("knx.0.Beschattung_EG.Position_Anfahren.Küche_1"/Küche 1/, 50, 35000, false); ! } ! } ! }); Gruß Christian
  • Auslesen von Daten einer Webseite

    Moved
    12
    0 Votes
    12 Posts
    4k Views
    HomoranH
    Danke für das Feedback. Dann markiere den Thread bitte noch als gelöst. Gruß Rainer
  • Blocky Anfänger

    Moved
    24
    0 Votes
    24 Posts
    2k Views
    Ralla66R
    Welche App auf welchem Gerät ? Etwa so ? Harmony App Handy -> Harmony Hub -> Philipps Hue und du schaltest etwa so iobroker->Harmony Hub -> Philipps Hue richtig ?
  • 0 Votes
    3 Posts
    2k Views
    M
    Cool danke schön. Hat einwandfrei funktioniert. Hier meine Lösung, falls es jemandem hilft: ! var var_Int_Volume, var_Volume; ! var_Int_Volume = 3; ! on({id: 'fakeroku.0.ioBroker.keys.Right', change: "ne"}, function (obj) { ! var value = obj.state.val; ! var oldValue = obj.oldState.val; ! var_Volume = getState("alexa.0.echo-devices.Commands.volume").val; ! var_Volume = var_Volume + var_Int_Volume; ! setState("alexa.0.echo-devices.Commands.volume", var_Volume); ! }); ! on({id: 'fakeroku.0.ioBroker.keys.Left', change: "ne"}, function (obj) { ! var value = obj.state.val; ! var oldValue = obj.oldState.val; ! var_Volume = getState("alexa.0.echo-devices.Commands.volume").val; ! var_Volume = var_Volume - var_Int_Volume; ! setState("alexa.0.echo-devices.Commands.volume", var_Volume); ! });
  • 0 Votes
    4 Posts
    411 Views
    T
    Danke, ich setze mal auf gelöst. Habe den entscheidenden Teil gerade gefunden und bewundere nun die Eleganz der Programmierung.
  • Aktion bei Öffnen der Tür

    Moved
    23
    1
    0 Votes
    23 Posts
    2k Views
    G
    Hi zusammen, nachdem das Skript bisher ohne Probleme funktioniert ergeben sich im Daily Doing doch noch ein paar Anforderungen. Wenn Helligkeit unter 90 liegt usw geht ja Licht an bei Öffnen der Tür und bleibt dann für 3 Minuten in der Küche und im Garten für 7 (+4) an. Wenn ich jetzt jedoch den Müll raus bringe, dauert 30Sek zB. und gehe dann wieder rein. Dann sind die Lampen ja durch vorheriges Raus gehen bereits an. Entsprechend bleiben die an und der Timeout greift nicht. Gibt es dazu noch etwas um zB zu sagen wenn die Tür innerhalb 1 Min. 2 Mal geöffnet wurde dann schalte Lichter nach Timer aus? Gruß Stefan 3449_2018-03-06_08_53_03-iobroker.admin.png
  • Status Abfrage

    Moved
    4
    0 Votes
    4 Posts
    1k Views
    I
    Hey Danke die Idee mit dem SonOFF POW ist klasse ! Danke

737

Online

32.7k

Users

82.4k

Topics

1.3m

Posts