Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Themen 48.8k Beiträge

NEWS

  • Mit js an internen MQTT broker publishen

    javascript
    3
    0 Stimmen
    3 Beiträge
    599 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
    326 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
    886 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
    420 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
    238 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
    319 Aufrufe
    R
    @paul53 Super, danke hat funktioniert. Gruss Ritschi
  • Ein- Ausschalten per Script

    4
    0 Stimmen
    4 Beiträge
    282 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
    893 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
    505 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
    583 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
    937 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
    428 Aufrufe
    R
    @UncleSam Vielen Dank, ich glaube dass mir das weiterhilft.
  • Script Tester - prüfe alle subscription-dp in allen scripten

    javascript monitoring
    23
    3
    0 Stimmen
    23 Beiträge
    1k Aufrufe
    liv-in-skyL
    @wendy2702 zeile 7: mein script hat einen fehlerfehler zeile 9 und 10 überprüfen - sind laufende scripte und habe evtl den eben erklärten fehler andere zeilen: scripte haben evtl diesen fehler, sind aber nicht aktiv und daher nicht so wichtig zu überprüfen wäre nur: zeile 9 und 10 ist in dem script von zeile 9 und 10 alles ok - kann dir das script im moment nicht helfen
  • Synchrone Datenübertragung RS232 - Hilfe...

    3
    0 Stimmen
    3 Beiträge
    316 Aufrufe
    S
    @UncleSam Erstmal danke - Da ich mich hier als absoluter Programmier-Anfänger outen muss: Hast Du einen Beispielcode oder kannst Du mir anhand meines Scriptes erklären was ich da wo ändern muss? Danke schon mal...
  • Online JPG local Speichern

    7
    0 Stimmen
    7 Beiträge
    573 Aufrufe
    UncleSamU
    @Staubi0815 sagte in Online JPG local Speichern: Wie hast du den HAproxy laufen als Docker? Ja, ich verwende HAproxy immer in Docker. Allerdings habe ich nicht denselben Anwendungsfall wie du. Hier eine Beispiel-Config, die deine URLs weiterleiten sollte: global user root group root defaults log global mode http balance roundrobin timeout connect 5000 timeout client 50000 timeout server 50000 frontend http bind *:8123 acl is_image_url path_beg /images/ use_backend amazon-images if is_image_url default_backend amazon-images backend amazon-images mode http server amazon-images m.media-amazon.com:443 ssl verify none Die Zeile use_backend amazon-images if is_image_url ist in deinem Fall überflüssig, aber so hast du die Möglichkeit, weitere Backends hinzuzufügen, mit denen du auf andere Server weiterleitest. Der Server hört auf Port 8123 (musst du je nachdem noch freigeben in der Container Station) und dann kannst du theoretisch mit der folgenden URL darauf zugreifen: http://<dein-nas>:8123/images/I/71mM8KostdL.UL600.jpg Leider macht der Proxy zusammen mit CloudFront ein Problem. Aber ich denke, das kannst du sicher lösen.
  • Verständnisproblem Parameter bei on/subscribe

    3
    0 Stimmen
    3 Beiträge
    253 Aufrufe
    C
    @AlCalzone Super, vielen Dank für die schnell Erklärung :-)
  • Werte von States ändern, ohne Aktion zu triggern

    javascript
    3
    0 Stimmen
    3 Beiträge
    366 Aufrufe
    GaspodeG
    @UncleSam Herzlichen Dank. Manche Dinge können so einfach sein, wenn man weiß wie es geht. Funktioniert einwandfrei. :)
  • Dateiliste aus FTP Folder und Subfolder auslesen

    13
    0 Stimmen
    13 Beiträge
    2k Aufrufe
    E
    Hallo @gcaruso Ich möchte das auch so ähnlich machen wie du. Ich habe auch in ein FTP Verzeichnis meine .mp4 Dateien von der Kamera gespeichert. Leider bin ich nicht so fit in der Programmierung. Das meiste habe ich bisher über Blockly geregelt. :) Könntest du mal mal bitte dein Skript ganz zeigen? Ist das alles? var Client = require('ftp'); var fs = require('fs'); var c = new Client(); c.on('ready', function() { c.list(function(err, list) { if (err) throw err; console.log(list); c.end(); }); }); // connect to localhost:21 c.connect({ host: "192.168.***.***", user: "*************", password: "**************" }); z.B: Wo wird dieser Befehl eingetragen? javascript.1 2020-08-09 10:10:28.895 info (29206) script.js.FTP_Auslesen: [{'type':'d','name':'video','sticky':false,'rights':{'user':'rwx','group':'rwx','other':'rwx'},'acl':false,'owner':'*********','group':'**********','size':4096,'date'
  • json aus Tankerkönig Adapter parsen

    18
    0 Stimmen
    18 Beiträge
    2k Aufrufe
    S
    @liv-in-sky bei mir füttert es das "MaterialDesign Table"... das klappt super...

394

Online

32.6k

Benutzer

82.1k

Themen

1.3m

Beiträge