Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Topics 48.5k Posts

NEWS

  • Mit js an internen MQTT broker publishen

    javascript
    3
    0 Votes
    3 Posts
    589 Views
    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 Votes
    1 Posts
    319 Views
    No one has replied
  • Homematic Plug mit Script schalten

    20
    0 Votes
    20 Posts
    1k Views
    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 Votes
    10 Posts
    842 Views
    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 Votes
    6 Posts
    406 Views
    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 Votes
    4 Posts
    230 Views
    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 Votes
    3 Posts
    304 Views
    R
    @paul53 Super, danke hat funktioniert. Gruss Ritschi
  • Ein- Ausschalten per Script

    4
    0 Votes
    4 Posts
    270 Views
    Andre LiebgottA
    @paul53 DANKESCHÖN, du hast mir sehr geholfen. Vielen Dank!
  • Alexa Stimmerkennung

    Moved javascript blockly security multimedia communication
    11
    0 Votes
    11 Posts
    891 Views
    D
    @zzippo danke, schau ich mir mal an. Ja so eine Anleitung wäre super.
  • (gelöst) HTML DOM scrollTop Property

    javascript
    8
    0 Votes
    8 Posts
    480 Views
    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 Votes
    6 Posts
    563 Views
    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 Votes
    2 Posts
    932 Views
    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 Votes
    3 Posts
    399 Views
    R
    @UncleSam Vielen Dank, ich glaube dass mir das weiterhilft.
  • 0 Votes
    23 Posts
    1k Views
    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 Votes
    3 Posts
    306 Views
    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 Votes
    7 Posts
    569 Views
    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 Votes
    3 Posts
    241 Views
    C
    @AlCalzone Super, vielen Dank für die schnell Erklärung :-)
  • Werte von States ändern, ohne Aktion zu triggern

    javascript
    3
    0 Votes
    3 Posts
    355 Views
    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 Votes
    13 Posts
    2k Views
    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 Votes
    18 Posts
    2k Views
    S
    @liv-in-sky bei mir füttert es das "MaterialDesign Table"... das klappt super...

761

Online

32.5k

Users

81.7k

Topics

1.3m

Posts