Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Themen 48.3k Beiträge

NEWS

  • scriptedEnabled - Problem bei Abfrage

    javascript
    51
    1
    0 Stimmen
    51 Beiträge
    4k Aufrufe
    AlCalzoneA
    @liv-in-sky sagte in scriptedEnabled - Problem bei Abfrage: json.length>25 && err==null Wenn err nicht null ist, dann ist json nicht unbedingt definiert. Die Reihenfolge müsste anders herum sein. else {resolve("keine Adress-Auflösung möglich")} Das was du da vor hast (Fehler übergeben), geht besser mit reject. Prinzipiell: function doSomething() { return new Promise((resolve, reject) => { // ... irgendwas tun, bei Fehler: reject("Etwas ist schief gelaufen"); }); } async function stuff() { try { await doSomething(); } catch (e) { // Hier landest du, wenn oben `reject` aufgerufen wird } }
  • [gelöst] .on / .each warum unterschiedliches obj als Antwort

    javascript
    13
    0 Stimmen
    13 Beiträge
    713 Aufrufe
    paul53P
    @hanss sagte: Ich habe jetzt die Funktion OGset(id) so abgeändert, dass ich die ID übergeben kann. Das ist die bessere Lösung, wobei mein Vorschlag auch funktionieren muss.
  • zwei gleiche skripte, nur eines funktioniert....

    2
    0 Stimmen
    2 Beiträge
    321 Aufrufe
    R
    @Ritschi ich habe es raus gefunden. Ich hatte bei "modbus.2.holdingRegisters.48196_power_total" nach dem total einen leerschlag drin...... :disappointed:
  • Timeout mit Objekt verbinden

    javascript
    1
    0 Stimmen
    1 Beiträge
    224 Aufrufe
    Niemand hat geantwortet
  • JSON Verarbeitung in States

    3
    0 Stimmen
    3 Beiträge
    253 Aufrufe
    Z
    @fastfoot vielen dank genau das habe ich gebraucht! perfekt! LG
  • Telegramm Menü an lezte chat id senden

    2
    0 Stimmen
    2 Beiträge
    169 Aufrufe
    dslraserD
    @Christopher-Hinck Ist zwar kein JS, sondern Blockly, aber vielleicht kannst Du Dir da etwas abschauen. Das macht genau was Du möchtest. Jeder Nutzer kann sogar sein eigenes Menü haben. https://forum.iobroker.net/post/251463
  • Aktoren in Abhängigkeit per Tastendruck schalten

    2
    0 Stimmen
    2 Beiträge
    204 Aufrufe
    paul53P
    @funcarv3r sagte: Was nicht funktioniert ist das ausschalten if(Bedingung1) Ein else if(Bedingung1 && Bedingung2) Aus kann nicht funktionieren, denn else bedeutet: Nicht Bedingung1 Versuche es mal so: if (WBPrivat) { setState("hm-rpc.1.MEQ1710797.2.STATE", false); } else if (!WBFirma) { setState("hm-rpc.1.MEQ1710797.2.STATE", true); }
  • Mit js an internen MQTT broker publishen

    javascript
    3
    0 Stimmen
    3 Beiträge
    581 Aufrufe
    T
    Danke für die Antwort, ich hatte schon vermutet, dass es derzeit keinen einfachen Weg als Einzeiler gibt. Hätte halt gerne einfach nur den Wert gepublished. Ich werde versuchen mir einen Workaround zu basteln.
  • Paradigma Modula NT über Iobroker steuern

    1
    0 Stimmen
    1 Beiträge
    313 Aufrufe
    Niemand hat geantwortet
  • Homematic Plug mit Script schalten

    20
    0 Stimmen
    20 Beiträge
    1k Aufrufe
    G
    @Homoran hab es mittlerweile angepasst, aber Danke :+1: Einer ist immer der Schuldige :blush: aber zum Glück gibt es euch ja:+1:
  • Javascript RegExp ???

    10
    0 Stimmen
    10 Beiträge
    788 Aufrufe
    F
    @Homoran sagte in Javascript RegExp ???: da habe ich das regex her du hattest auch kein Anführungszeichen in deinem Post :-)
  • (gelöst) mehrere DP toggeln

    javascript
    6
    0 Stimmen
    6 Beiträge
    404 Aufrufe
    paul53P
    @ice987 sagte: Wenn nein dann "setState vom jeweiligen Element auf "false" sonst "true". Richtig: Wenn nein dann "setState vom jeweiligen Element auf "false", der auslösende Datenpunkt bleibt "true" (wird nicht verändert). Ansonsten alles richtig interpretiert.
  • Array "undefined" und obj.deviceID "null" bei Trigger

    4
    0 Stimmen
    4 Beiträge
    220 Aufrufe
    PhlixxP
    @paul53 Darauf muss man mal kommen. Dann kann das Array zur Laufzeit ja weg ;-) Danke Dir, Paul! Gruß Phlixx Falls jemand auf der Suche vorbei schaut, einfach das Array mit den DeviceIDs der eigenen Geräte füllen. Rest sollte dank @paul53 jetzt so gehen ... var thermostate = new Array('maxcul.0.JMD300xxxx','maxcul.0.MEQ145xxxx','maxcul.0.MEQ145xxxx','maxcul.0.JMD301xxxx'); //Array mit den DeviceIDs der eigenen Geräte füllen for (var i = 0;i <thermostate.length;i++) { createState(thermostate[i]+'.countdown', 0); // falls noch nicht existent createState(thermostate[i]+'.afterCount', false); on(thermostate[i]+'.mode', function (obj) { //je DeviceID einen Listener registrieren // geht nur mit obj.channelId, nicht obj.deviceId if (obj.newState.val === 3) { setState(obj.channelId+'.countdown', 300); count(obj.channelId); } }); } function count(thermostat) { // mit diesem Sekundentimer (setTimeOut(...,1000) bin ich nicht glücklich, im Frontent sieht es unruhig aus, da die Updates nicht sekündlich kommen... ggs. als Minuten darstellen... setTimeout(function () { var timer = getState(thermostat+'.countdown').val; if (timer > 1) { setState(thermostat+'.countdown', timer - 1); count(thermostat); } else { setState(thermostat+'.countdown', 0); setState(thermostat+'.afterCount', true); } }, 1000); }
  • Variable :100 teilen

    3
    0 Stimmen
    3 Beiträge
    285 Aufrufe
    R
    @paul53 Super, danke hat funktioniert. Gruss Ritschi
  • Ein- Ausschalten per Script

    4
    0 Stimmen
    4 Beiträge
    263 Aufrufe
    Andre LiebgottA
    @paul53 DANKESCHÖN, du hast mir sehr geholfen. Vielen Dank!
  • Alexa Stimmerkennung

    Verschoben javascript blockly security multimedia communication
    11
    0 Stimmen
    11 Beiträge
    888 Aufrufe
    D
    @zzippo danke, schau ich mir mal an. Ja so eine Anleitung wäre super.
  • (gelöst) HTML DOM scrollTop Property

    javascript
    8
    0 Stimmen
    8 Beiträge
    475 Aufrufe
    OliverIOO
    @ice987 sagte in HTML DOM scrollTop Property: im basic HMTL-Widget brauche ich in kein vollständiges "HTML-Gerüst", d.h. ich kann "<!DOCTYPE html><html><head></head></html>" weglassen ja genau, du hast ja bereits ein html/head/body-konstrukt, das dir bereits vis bereitstellt. vis fügt dir das widget in die vorhandene seite an entsprechender stelle ein. ich habe nochmal ein paar änderungen vorgenommen, da das td-test-element in einer tabelle so keine klicks empfangen kann. daher ein separater button, der eine funktion aufruft, wo zum einen der dp gesetzt wird und zum anderen dir direkt anzeigt ob es funktioniert. bei mir hat es soweit funktioniert. Spoiler [{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html":"<!-- myDIV definiert einen Bereich mit angegebener Höhe/Breite; overflow-y auto zeigt den Scrollbalken an, wenn Inhalt grösser als Bereich, overflow-y hidden verbietet die Anzeige eines Scrollbalken -->\n<style>\n#myDIV {\n height: 597px;\n width: 375px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n</style>\n\n<!-- definition einer Variablen mit dem Namen counter, welche den (initial) Wert 0 zugewiesen wird\n myFunction(): Funktion wird definiert\n counter+=1: (oder: counter = counter + 1) In der Variable \"counter\" werden die Anzahl der Aufrufe von myFunction() gezählt: dem bereits bestehenden Wert wird Zähler 1 addiert\n var elmnt: document.getElementById(\"myDIV\"): der Variable mit Namen \"elmt\" wird die Referenz zu \"myDIV\" zugewiesen\n var y = elmnt.scrollTop: der Variable mit dem Namen \"y\" zählt die Pixel vom oberen Elementrand\n document.getElementById (\"demo\").innerHTML: dem oben definierten Abschnitt <p></p> mit id=demo wird gefüllt mit dem Text \"Vertically: \" dem Pixelwert aus Variable \"y\" dem Text \"px; counter= \" und dem Wert der Aufrufe von Variable \"counter\"\n -->\n <script>\n var counter = 0;\n \n function myFunction() {\n counter+=1;\n var elmnt = document.getElementById(\"myDIV\");\n var y = elmnt.scrollTop;\n document.getElementById (\"demo\").innerHTML = \"Vertically: \" + y + \"px; counter= \"+counter;\n }\n</script>\n\n\n\n<!-- myFunction1(): Funktion wird definiert\n var elmnt: document.getElementById(\"myDIV\"): der Variable mit Namen \"elmt\" wird die Referenz zu \"myDIV\" zugewiesen\n elmnt.scrollTop = 200: der vorhin definierten Variable elmnt, welche auf das div mit id=\"myDIV\" verweist wird der Befehl erteilt, vom oberen Elementrand 200px nach unten zu scrollen\n-->\n<script>\nfunction myFunction1() {\n var elmnt = document.getElementById(\"myDIV\");\n elmnt.scrollTop = 200;\n}\n</script>\n\n<script>\nfunction myFunction2() {\n var elmnt1 = document.getElementById(\"myDIV\");\n var y1 = elmnt1.scrollTop;\n return y1; \n}\nfunction myFunction3() {\nservConn.setState('0_userdata.0.liste.scrollPos', myFunction2())\n document.getElementById (\"demo\").innerHTML = \"Click\";\n}\n</script>\n\n<!-- definition eines Paragraphen mit dem Namen \"demo\" -->\n<p id=\"demo\">.</p>\n<button onclick=\"myFunction3()\">scrollpos</button><br>\n<!-- button onclick: löst die Funktion myFunction1() beim Draufklicken aus -->\n<button onclick=\"myFunction1()\">Scroll contents of div</button><br>\n<!-- defintion des Abschnittes mit dem Namen \"myDiv\", beim jeweiligen scrollen dieses Bereiches wird immer die Funktion \"myFunction()\" ausgelöst -->\n<div id=\"myDIV\" onscroll=\"myFunction()\">\n <table>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n <tr>\n <td>\n blabla\n <br><br><br><br>\n </td>\n </tr>\n</table>\n</div>"},"style":{"left":"0px","top":"44px","width":"375px","height":"597px","overflow-x":"hidden","overflow-y":"hidden"},"widgetSet":"basic"}]
  • Schedule per Tastendruck starten und stoppen

    6
    0 Stimmen
    6 Beiträge
    543 Aufrufe
    F
    @paul53 Super, danke dir, funktioniert. Ich hab die Befehle noch etwas erweitert, er setzt mir beim Starten jetzt auch noch eine nVariable auf true, beim Beenden auf False, so kann ich alles besser überwachen ...
  • [Vorlage] Alias-Erstellung: enum-alias-devices

    2
    3
    0 Stimmen
    2 Beiträge
    917 Aufrufe
    KodijackK
    @cpio Erstmal danke fürs Teilen, sehr nett! Mir fehlte irgendwie eine Funktion das Ganze etwas zu vereinfachen/automatisieren. Leider will das Script nicht so recht bei mir obwohl ich meine deiner Anleitung brav gefolgt zu sein. [image: 1603144377590-665ce41e-ca2e-43d1-950b-4d65566c2357-image.png] Enum "aliasdevices" ist vorhanden, testweise einen Raum mit 3 Lichtern/Schaltern hinzugefügt.
  • OnChange weiter einschränken (Ursprung)

    3
    0 Stimmen
    3 Beiträge
    379 Aufrufe
    R
    @UncleSam Vielen Dank, ich glaube dass mir das weiterhilft.

777

Online

32.4k

Benutzer

81.4k

Themen

1.3m

Beiträge