Skip to content

Skripten / Logik

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

16.5k Themen 213.3k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    A
    @psrelax Ich bin gerade dabei diese Werte am Anfang vom Script zu bündeln, um diese dann schneller anpassen zu können. Wenn du deinen Wert vorab anpassen willst, dann ab ca. Zeile 600 diesen Code suchen: // Batterie SOC erst bei -2% oder + 1% oder 0% aktualisieren um Schwankungen der Batterie auszugleichen if (battSOC_Proz > m_Batt_SOC_Proz || m_Batt_SOC_Proz - battSOC_Proz >= HystereseBattSoc || battSOC_Proz == 0) { m_Batt_SOC_Proz = battSOC_Proz; } Bei mir steht dort bereits die neue Variable "HystereseBattSoc" bei dir sollte dort 2 stehen. Diese auf 4 erhöhen.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    I
    @peterfido Danke! Das wäre eine weitere Alternative, wenn ich mit dem TadoAdapter am Ende scheitere. Dann würde ich den Weg gehen wollen, das ganze via Matter zu lösen. Hab oben ja schonmal kurz erwähnt, dass ich schon einen Sonoff MG25 Thread Dongle hier liegen habe. Den habe ich allerdings noch nicht geflasht und im PI eingerichtet. Wenn es nur der Batteriestatus ist der fehlt, damit könnte ich leben. Den könnte ich mir ja dann immernoch aus dem TadoAdapter nehmen, wenn ich das möchte
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • [gelöst] Script um Befehl auf Synology ausführen

    Verschoben
    15
    0 Stimmen
    15 Beiträge
    9k Aufrufe
    lobomauL
    @Kuddel: @lobomau: Habt den Synology Adapter schon probiert? Der hat die Befehle für Ausschalten und Neustarten. ` Welcher? Ich hatte einen getestet aber der kann nur per SNMP auslesen ` Probier mal aus. Kannst deine Erfahrungen hier unten schildern ;-) http://forum.iobroker.net/viewtopic.php … gy#p112046
  • [gelöst] Blocky für Bewegungsmelder (getrennter Senor / Aktor)

    Verschoben
    17
    1
    0 Stimmen
    17 Beiträge
    3k Aufrufe
    DutchmanD
    Nice! –----------------------- Send from mobile device Das schöne ios hat Auto Korrektur zum k**** Wer Schreibfehler findet darf sie behalten oder auf eBay verkaufen, mindest Umsatz 10% für die community
  • Script Licht vergessen / Bewegungsmelder

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    880 Aufrufe
    BuZZyB
    Hast du es mal mit dem Script versucht das ich gepostet habe? Habe nicht viel verändert außer if boolean abfragen mit === auszustatten, die timer Variable als global deklariert und ein paar fehlende ; hinzugefügt. Gruß
  • IoBroker JavaScript Temperaturwert lesen und schreiben

    Verschoben
    15
    0 Stimmen
    15 Beiträge
    5k Aufrufe
    paul53P
    @shgbass: kann mir jetzt nochmal wer erklären was da ganau passiert und was welche funktion macht? ` Die https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md zu den Funktionen findest Du auf Github.
  • Auf mehrere Ereignisse subscriben, aber Block nicht mehrmals zeitgleich ausführen

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    561 Aufrufe
    C
    Ich habe jetzt eine andere Ursache gefunden, es funktioniert doch mit der ursprünglichen Methode Hilfsvariable. ! ```` var Threshold_Bar_Esstisch, is_running, Threshold_Bar_Wohnwand, Threshold_Vitrine_Esstisch, Threshold_Vitrine_Wohnwand, timeout1, Esstisch, Wohnwand, timeout2; ! Threshold_Bar_Esstisch = 40; Threshold_Bar_Wohnwand = 40; Threshold_Vitrine_Esstisch = 40; Threshold_Vitrine_Wohnwand = 80; ! is_running = false; on({id: new RegExp('hue\.0\.Hue_Bridge\.Esstisch\.level' + "|" + 'hue\.0\.Hue_Bridge\.Wohnwand\.level'), change: "any"}, function (obj) { if (is_running != true) { is_running = true; timeout1 = setTimeout(function () { Esstisch = getState("hue.0.Hue_Bridge.Esstisch.level").val; Wohnwand = getState("hue.0.Hue_Bridge.Wohnwand.level").val; if (Esstisch >= Threshold_Bar_Esstisch || Wohnwand >= Threshold_Bar_Wohnwand) { setState("hue.1.HA-Bridge.Bar.on"/HA-Bridge.Bar.on/, true); } else { setState("hue.1.HA-Bridge.Bar.on"/HA-Bridge.Bar.on/, false); } timeout2 = setTimeout(function () { if (Esstisch >= Threshold_Vitrine_Esstisch || Wohnwand >= Threshold_Vitrine_Wohnwand) { setState("hue.1.HA-Bridge.Vitrine.on"/HA-Bridge.Vitrine.on/, true); } else { setState("hue.1.HA-Bridge.Vitrine.on"/HA-Bridge.Vitrine.on/, false); } is_running = false; }, 500); }, 500); } }); Das Problem war, dass bei gleichzeitigem Schalten von Esstisch und Wohnwand nicht sofort die Werte von "hue.0.Hue_Bridge.Esstisch.level" und "hue.0.Hue_Bridge.Wohnwand.level" gesetzt sind wenn die Subscription zuschlägt, da der Adapter diese seriell abfragt. Daher habe ich "timeout1" von 500 ms hinzugefügt. Im Zusammenspiel mit "is_running", welches sofort auf "true" gesetzt wird, wird der Block jetzt nur noch exklusiv aber mit korrekten Werten ausgeführt.
  • [gelöst] JSON nach kleinstem Wert parsen

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    673 Aufrufe
    paul53P
    @tempestas: Wann ich "stringify" nutzen muss und wann nicht, werde ich wohl nie verstehen ` Ist doch nicht so schwierig: Ein Objekt (Array) in einen JSON-String wandeln mit JSON.stringify(obj); umgekehrt einen JSON-String in ein Objekt (Array) wandeln mit JSON.parse(json).
  • Klingel über Homematic / iobroker

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    2k Aufrufe
    G
    Warum eigentlich so kompliziert. Ich habe das in einem Javascript gelöst. Wenn die Taste gedrückt wird lese ich von dem Gong den Status .STATE aus. Ist er true, dann spielt noch das MP3 und ein erneuter Tastendruck wird ignoriert. createState('wohnung.klingel.gedrueckt', false); createState('wohnung.klingel.aktiviert', true); /*Klingel*/ subscribe({id: whgKlingelSwitchShort, val:true}, function (obj) { klingelGedrueckt(); }); subscribe({id: whgKlingelSwitchLong, val:true}, function (obj) { klingelGedrueckt(); }); function klingelGedrueckt() { var klingel=getState('javascript.0.wohnung.klingel.aktiviert').val; //Prüfen ob Klingel aktiviert oder nicht var klingelState=getState(whgKlingel).val; //whgKlingel = Gong.STATE if ((klingel===true) && (klingelState===false)){ setState(whgKlingelSettings,"1,1,108000,0"); setState(whgKlingel,true); sendTo("pushover", "Klingel gedrückt!"); } }
  • Cloudmatic push Notification per Skript

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    570 Aufrufe
    Niemand hat geantwortet
  • [gelöst] Probleme mit sql logging (früher:Button Zustand bei Neustart einlesen)

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    apollon77A
    Ok, dann bleibt dir nur das fixen des Datentyps der ID direkt in der DB und potz. löschen falscher Daten und am besten immer an Datentypen halten :-))
  • Schalter sperren

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    394 Aufrufe
    Niemand hat geantwortet
  • Email mit mehreren Bildern

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    500 Aufrufe
    JensenJ
    Hallo, ja, so geht's. Danke und Gruß Jens
  • Noch eine SetIntervall anfängerfrage

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    388 Aufrufe
    BuZZyB
    Man spricht bei function(){….} von einer "anonymen Funktion". http://lucybain.com/blog/2014/js-anonym ... functions/ ;) Gruß
  • Mit javascript Länge eines mp3 auslesen?

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    539 Aufrufe
    BuZZyB
    Moin, Im Javascript Adapter das Zusatzmodul "mp3-duration" eintragen.. Beispiel für Anwendung steht hier: https://www.npmjs.com/package/mp3-duration Gruß
  • [Frage] enum.functions Zeitstempel Abfrage möglich?

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    394 Aufrufe
    BuZZyB
    Moin, nicht direkt.. Aber so wird es gehen: function ausloeser(gruppe) { var zeit = null; var sensor = null; $('channel(functions=' + gruppe + ')[state.id=*.STATE]').each(function(id) { if (getState(id).lc > zeit) { sensor = getObject(id).common.name; zeit = getState(id).lc; } }); if (zeit !== null) { return sensor.substr(0, sensor.indexOf(':')); } else { return 'Es wurde kein Zeitstempel in der Gruppe ' + gruppe + ' gefunden.'; } } Wenn du diese Funktion in dein Telegram Script einfügst, kannst du mit```` ausloeser('Fensterkontakte') Hier ein ganzes Script welches dir den letzten Auslöser aus der enum.functions 'Fensterkontakte' beim starten von dem Script schickt. function ausloeser(gruppe) { var zeit = null; var sensor = null; $('channel(functions=' + gruppe + ')[state.id=*.STATE]').each(function(id) { if (getState(id).lc > zeit) { sensor = getObject(id).common.name; zeit = getState(id).lc; } }); if (zeit !== null) { return sensor.substr(0, sensor.indexOf(':')); } else { return 'Es wurde kein Zeitstempel in der Gruppe ' + gruppe + ' gefunden.'; } } sendTo('telegram', 'Der Sensor ' + ausloeser('Fensterkontakte') + ' hat als letzter ausgelöst.'); Gruß
  • [gelöst] $-Selector liefert keine Werte

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    2k Aufrufe
    T
    Heureka!!!! Habe es rausgefunden. Es lag wirklich an der Gross-/Kleinschreibung. Bei mir ist der Name des Enums in Camel-Case geschrieben. Ich Nase habe bei den Test aber dummerweise nur vorne das geändert und nicht im ganzen Namen. Und in meinen Tests habe ich dann wohl immer irgendwelche Kombinationen getestet die irgendeinen Haken drin hatten. Vielen Dank für eure schnelle Hilfe
  • PC herunterfahren wird via iobroker nicht ausgeführt, über die shell aber ja

    Verschoben
    5
    1
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    I
    Leider geht es damit auch nicht. Weder mit dem vorangestellten Pfad noch mit zusätzlichem sudo oder auch nur mit sudo und net ohne Pfad. Egal welche Variante ich wähle, es passiert nichts. Das exec selbst funktioniert aber. Ich habe mal probehalber 'free -m' eingetragen, da bekomme ich eine Antwort im Callback. Gibt es irgendeine Möglichkeit, eine Ausgabe von dem Befehl zu erzwingen? Ich wäre ja schon froh über eine Fehlermeldung, aber ich bekomme keinerlei Rückmeldung von dem Befehl. Weder positiv noch negativ. exec('/usr/bin/net rpc shutdown -s -f -I IP –U xxx%yyy',function(error, data) { if (error) { log(error,"error"); } else { log(data); } }); Was mir noch eingefallen ist: Kann es sein, dass ich für den Aufruf über iobroker noch irgendwas benötige? Ich habe bisher nur das samba-common-bin mit allen Abhängigkeiten installiert.
  • Frage nach Skripten für DashButton

    Verschoben
    1
    1
    0 Stimmen
    1 Beiträge
    373 Aufrufe
    Niemand hat geantwortet
  • Ergebnis von Level keine Ganzzahl

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    583 Aufrufe
    M
    Meine Lösung ist jetzt hier. http://www.forum.iobroker.org/forum/vie … eb48f4566a Allerdings gibt es noch ein kleines Begrenzungsproblem.
  • Licht Timer nur zu bestimmten Uhrzeiten

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    A
    So zum Beispiel…. Du musst noch in dem Trigger bei "default" und bei steuere "Object ID" deinen Treppenhaus Aktor eintragen. [image: 1586_2018-01-08_06_43_12-iobroker.admin.jpg] ! ```` <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="pd#X~DUqP5=FD5q7=mho" x="-587" y="288"><mutation items="1"></mutation> <field name="CONDITION">true</field> <value name="OID0"><shadow type="field_oid" id="Q*0:O*N9DTgc5edAg`Z:"><field name="oid">default</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="}p_?eWzl4i-Av8aa=Rsy"><value name="IF0"><block type="time_compare_ex" id="-sNo?ZWU3,LuYof}]Hb,"><mutation end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">not between</field> <value name="START_TIME"><shadow type="text" id="V2f|.I]-GRH2q#N/Sjpf"><field name="TEXT">6:30</field></shadow></value> <value name="END_TIME"><shadow type="text" id="k!?0J;]`^JI/zt!TQ*4R"><field name="TEXT">21:00</field></shadow></value></block></value> <statement name="DO0"><block type="control" id="p1*hK@,d|cBia^f;%dw2"><mutation delay_input="true"></mutation> <field name="OID">Object ID</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"><block type="logic_boolean" id="@m:S=8azC0rI{5JtT4:3"><field name="BOOL">FALSE</field></block></value></block></statement></block></statement></block></xml>
  • Nach Update Scripte gelöscht??!!

    Verschoben
    4
    3
    0 Stimmen
    4 Beiträge
    499 Aufrufe
    L
    Hallo Bluefox, da ich nicht viel Scripte hatte habe ich diese nochmal neu geschrieben und anschließend IOBroker neu gestartet. Und plötzlich hatte ich das Problem das bei mir die Objekte nicht mehr sichtbar waren. Zum Glück bin ich dann nach gefühlt 20h :D auf diesen Thread gestoßen: http://forum.iobroker.net/viewtopic.php?f=22&t=9869 Inzwischen läuft jetzt gerade wieder alles wie es soll, allerdings kann ich die "variable1" nicht löschen. Hast du eine Idee woran das liegt? Und in dem Thread hat noch jemand geschrieben dass er die "objects.json.bak" gelöscht hat, soll ich das auch noch machen?! Vielen Dank! 4707_script.png

769

Online

32.6k

Benutzer

82.2k

Themen

1.3m

Beiträge