Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Topics 49.0k Posts

NEWS

  • Array erstellen mit Prüfung für Json Tabelle

    10
    0 Votes
    10 Posts
    1k Views
    T
    @ple sagte in Array erstellen mit Prüfung für Json Tabelle: mit .findIndex kannst du eine Funktion aufrufen, in der du prüfen kannst ob das übergebene Object(oder was auch immer) deiner Suche entspricht. Ich suche hier den Eintrag in dem from und msg == den übergebenen Werten ist und geben über return true zurück, wenn dem so ist. messageArray.findIndex(function(a) { return (a.from == f && a.msg == msg) }) Ich hab nen Display der 3 Zeilen anzeigen kann und dieses Script verwaltet das. var messageArray = [{},{},{}]; messageArray[0] = {"from":"","msg":"-1"}; messageArray[1] = {"from":"","msg":"-1"}; messageArray[2] = {"from":"","msg":"-1"}; onMessage("DisplayMessage", function(data,result){ var msgfrom = data[2]; var mode = data[1]; var msg = data[0].toString(); if (msg.length == 0 && mode !=0) return; var done = false; switch (mode) { case 0: done = deleteAllMsg(msgfrom); break; case 1: done = sendMsg(msgfrom,msg); break; case 2: done = deleteMsg(msgfrom,msg); break; } if (done) { var check=true; while(check) { check=false; var first=-1; for (var i=0; i<3;i++){ if (messageArray[i].msg != '-1' && first != -1) { messageArray[first] = messageArray[i]; log(messageArray[i].msg+' swap int:'+ i +' '+first); check = true; break; } if (messageArray[i].msg=='-1') { first = i; } } } for (var i=0; i<messageArray.length;i++){ if (typeof messageArray[i].msg == 'number') { setState('mqtt.1.display.show.Nachricht.msg'+(i+1), '-1'); } else { setState('mqtt.1.display.show.Nachricht.msg'+(i+1), messageArray[i].msg); } } } }); function sendMsg(f, msg) { if (messageArray.findIndex(function(a){ return (a.from == f && a.msg == msg)}) != -1) return; // keine doppelten Einträge var a = 2; while (a--) { messageArray[a] = messageArray[a-1]; } messageArray[0]={"from":f,"msg":msg}; return true; } function deleteAllMsg(f) { for (var a=0;a<3;a++){ if (messageArray[a].from == f) messageArray[a]={"from":"","msg":"-1"}; } return true; } function deleteMsg(f,msg) { for (var a=0;a<3;a++){ if (messageArray[a].msg==msg && messageArray[a].from == f ) { messageArray[a]={"from":"","msg":"-1"}; return true; } } return false; }
  • Javascript Multiplikator kW in W

    3
    0 Votes
    3 Posts
    296 Views
    T
    @ticaki Jupp, das ist es. Vielen Lieben Dank für die Wahnsinnig schnelle Antwort :-)
  • Google Einkaufsliste anzeigen

    4
    0 Votes
    4 Posts
    493 Views
    Stephan SchleichS
    @OSSILAMPE Das war nur als Tipp, ich hab es selber nicht getestet - sorry.
  • Aufzählungen säubern

    16
    0 Votes
    16 Posts
    1k Views
    paul53P
    @sigi234 sagte: @CruziX sagte in Aufzählungen säubern: Also Objekte, die nirgendswo mehr verwendet werden? Jupp Wie soll man so etwas automatisch feststellen ? Ein Automatismus kann sehr leicht unerwünschte Auswirkungen (fehlende Objekte) haben. @CruziX sagte in Aufzählungen säubern: Doppelte Objekte kann es ja eig. nicht geben, weil die ID eindeutig ist, oder? So ist es.
  • socket io - state lesen und setzen

    javascript
    36
    0 Votes
    36 Posts
    6k Views
    MicM
    Danke für die Infos hier. Hier ein Anwendungsbeispiel: https://forum.iobroker.net/topic/30552/tipp-in-vis-in-html-widget-getstate-nutzen-zur-anzeige
  • [gelöst]: Bei Scrip-Start alle Sensoren abfragen

    6
    0 Votes
    6 Posts
    278 Views
    paul53P
    @hanss sagte: vor 40 Jahren mit Z80 Assembler Dito, vor ca. 35 Jahren.
  • [gelöst] Raum/Funktion werden nicht gefunden

    javascript
    6
    1
    0 Votes
    6 Posts
    285 Views
    dslraserD
    @hanss sagte in Raum/Funktion werden nicht gefunden: aber erst nachdem ich JS neu gestartet habe. manchmal reicht auch das nicht. Admin und JS Adapter neu starten (nicht stoppen !) hilft bei mir dann eigentlich immer.
  • Java Script scripte nach Neustart NICHT ausführen

    4
    2
    0 Votes
    4 Posts
    647 Views
    T
    Bis zu dem Tag wo etwas schief läuft und der Adapter alle paar Sekunden neugestartet wird. :) Aber das merkst du dann ja recht schnell. Du könntest auch etwas mehr an Skripten posten, so das man die Funktionsweise erkennt und vielleicht einen Vorschlag hat.
  • [gelöst]Mit Verzögerung Wert schreiben

    javascript
    11
    1
    0 Votes
    11 Posts
    423 Views
    M
    @paul53 danke - verflucht nochmal...
  • For-Schleife mit 1s Verzögerung

    19
    0 Votes
    19 Posts
    2k Views
    GarfonsoG
    @wye said in For-Schleife mit 1s Verzögerung: Z.B. hier das... einfach ausgedrückt, wenn interval1 true ist wird interval1 per ClearInterval() auf was genau gecleart? False? Lass dich nicht so sehr vom "clear" beindrucken. clearInterval bricht das Interval ab, also die Funktion innerhalb von setInterval wird danach nicht mehr aufgerufen. Damit clearInterval weiß, welches von ggf. mehreren Intervallen es abbrechen soll, gibst du ihm in interval1 die ID des Intervals mit. Im Grunde kannst du dir auch sparen interval1 selber auf null/false zu setzen. Dann rufst du nur am Anfang immer clearInterval für ein Interval auf, das es nicht mehr gibt (was aber m.E. keine Probleme erzeugt). So wie @ticaki geschrieben hat ist es am saubersten.
  • [Vorlage] Script zum Aufräumen in Aufzählungen

    javascript
    4
    1 Votes
    4 Posts
    672 Views
    sigi234S
    @paul53 sagte in [Vorlage] Script zum Aufräumen in Aufzählungen: Genügt das Log nicht ? Wenn ich das Log lösche kann ich es nicht mehr nachvollziehen. Ist aber nicht so Wichtig.
  • GPS Daten aus Haupteinstellungen lesen / schreiben

    7
    0 Votes
    7 Posts
    772 Views
    G
    Erstmal vielen Dank für die Vorschläge ! Ist es dann auch möglich, in dieses Objekt zu schreiben und ändert das dann die Haupteinstellungen bezüglich der GPS-Daten des Standortes ??
  • TCP-Server für Netzwerk I/O Modul

    9
    0 Votes
    9 Posts
    742 Views
    OliverIOO
    Zum Thema Server oder client Wenn du auf Anfragen von aussen wartest ohne das du etwas initiierst, dann ist es ein Server. Deswegen schreibst du server.listen(6000) das heißt dein Server wartet auf Anfragen auf Port 6000. Wenn du selbst die Kommunikation immer initiierst, dann bist du ein client und der andere Server (der wartet ja auf Anfragen von dir) Aufräumen In IOBroker sagt dir das die Adapterschnittstelle (Funktion unload) ob der adapter beendet wird, den rest musst du tun, da iobroker ja nicht weiß was dein adapter alles machtn Wenn du ein node skript standalone laufen hast und mit ctrl C stoppst, dann schau hier https://stackoverflow.com/questions/20165605/detecting-ctrlc-in-node-js Zu deiner neuesten Erkenntnis zu deinem konkreten Protokoll kann ich dir nicht helfen, da ich das Gerät nicht kenne. Wenn du kein ordentliches datasheet hast, dann darfst du rumprobieren beachte bei aliexpress wird automatisch übersetzt. sei dir sicher dass nicht auch ein teil der befehle unter umständen übersetzt wurden, was natürlich falsch ist, da der chip das nicht versteht. wenn du die sprache auf englisch umstellst, dann sehen die befehle besser aus dann musst du das senden. Das AT kommt mir bekannt vor, so musste man früher Modems ansteuern um ins Internet zu kommen AT+OCCH1=?
  • update CSS variable

    9
    0 Votes
    9 Posts
    866 Views
    I
    @OliverIO ah ... jetzt hab ich noch mal reingeschaut. Da stehts eh wie es geht: 2.1.Farben variabel verwenden 3.In den betroffenden Widgets in der CSS Eigenschaft "mdui-{javascript.0.mybackground}-bg" eintragen Die var kann ich mir ersparen. Danke für den Anstoß.
  • getState - warning log / JS Dokumentation

    Moved
    17
    0 Votes
    17 Posts
    2k Views
    T
    @AlCalzone Danke
  • (gelöst) Verständnisfrage

    4
    1
    0 Votes
    4 Posts
    449 Views
    M
    Hi, war das Wochenende nicht zu Hause. Die Datenpunkte habe ich per script angelegt. Spoiler createState('steckdosen.steckdose_1', 0, { type: 'number' }); createState('steckdosen.steckdose_2', 0, { type: 'number' }); createState('steckdosen.steckdose_3', 0, { type: 'number' }); createState('steckdosen.steckdose_4', 0, { type: 'number' }); createState('steckdosen.steckdose_5', 0, { type: 'number' }); Geändert hab ich die auch schon, Zahl oder Logikwert. Sind jedenfalls immer identisch. Bisher keine Änderung. Jetzt sämtliche steckdosen-DP in den Objekten gelöscht und per script, wie oben, neu angelegt. Alle DP zeigen jetzt 0/1! Warum das vorher anders war, wird mir aber dennoch ein Rätsel bleiben. Das Passwort wird noch geändert. Stammt noch vom setup und ist einfacher einzugeben. Danke
  • Reaktion von shedule abhängig von einer Variablen machen

    javascript
    2
    0 Votes
    2 Posts
    248 Views
    T
    var VariableInDerInMillisekundenDerIntervallAngegebenIst = 10000; //10 Sekunden var myPowerInterval = null; if (myPowerInterval) clearInterval(myPowerInterval); myPowerInterval = setInterval(function(){ do this; },VariableInDerInMillisekundenDerIntervallAngegebenIst);
  • Hilfe bei Javascript

    7
    0 Votes
    7 Posts
    725 Views
    C
    Hi gerne Helfe ich dir bei meinem Script. Die Bezeichnung Namen ist etwas ungünstig, habe das Script aktualisiert: Ich erkläre mal die Config für: var pfad_javascript ='javascript.0.watchdog.' var default_zeit = 240; var ueberwachung = ['mqtt.0.zigbee2mqtt.Fenster_1;Fenster_1;7000']; mqtt.0.zigbee2mqtt.Fenster_1 = State von dem du ungefähr weisst in welchen Intervall er aktualisiert wird. (Hier ein Zigbee Xiaomi Fenster Sensor, 7000s ist ein Erfahrungswert von mir) Fenster_1 = Der Datenpunkt javascript.0.watchdog.Fenster_1 wird automatisch angelegt durch das Script. True wenn der Datenpunkt jünger als 7000s aktualisiert ist, False wenn älter. In meiner Vis steuere ich mit dem Datenpunkt ein Hinweis. 7000 = Sekunden, die seit der letzten Aktualisierung des States vergangen sein dürfen. Trägst du 0 ein wird die default Zeit verwendet Licht Gartenhaus würde ich auf Licht_Gartenhaus ändern :) Gruß Martin
  • [Gelöst] Sortierung Json-String aus SQL-Datenbank

    8
    2
    0 Votes
    8 Posts
    394 Views
    S
    @ticaki Danke für deine Unterstützung. So wie es aussieht funktioniert es mit function sortArray(a,b) { return b.ts > a.ts; } Ich musste a und b vertauschen.
  • Script für Heizungssteuerung (ohne Vis)

    javascript heating scenes template
    3
    0 Votes
    3 Posts
    457 Views
    P
    Dafür gibts den Adapter HeatingControl. Das Heizungsskript wird nicht mehr aktualisiert/gepflegt. Hier der Thread zum Adapter: https://forum.iobroker.net/topic/22579/test-adapter-heatingcontrol-v0-3-x Und dazu gibts sogar ein fertiges Vis hier: https://github.com/Pittini/iobroker-heatingcontrol-vis Und das sähe dann z.B. so aus: [image: 1581150595801-preview.png]

559

Online

32.7k

Users

82.5k

Topics

1.3m

Posts