Skip to content

JavaScript

2.5k Topics 49.9k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • [Gelöst] Scheduler-Trigger löst mehrere Male aus

    15
    0 Votes
    15 Posts
    665 Views
    liv-in-skyL
    @arteck ne - von mir nicht - ist schon sehr lange so - kann bei meinem programmierstil öfter auftreten :-( ziemlich häufig kommt es vor, wenn man bei promises einen fehler macht - dann bleibt sehr oft ein teil eines scriptes aktiv und läuft doppelt "kann dich bei fehlersuche um den verstand bringen"
  • Raum eines States herausfinden

    7
    0 Votes
    7 Posts
    398 Views
    T
    @ben1983 sagte in Raum eines States herausfinden: @ticaki sagte in Raum eines States herausfinden: @paul53 Ah so greift man wohl direkt auf den Namen zu? Ich mache das meinst so: var rooms = getObject(obj.replace('.available', ''), 'rooms').enumIds; if (rooms === undefined) return; if (rooms.indexOf('enum.rooms.Haus.second_floor.schlafzimmer') != -1... Wobei ich aber keine Ahnung habe wieso da das obj.replace() drin ist. Was sollte denn ".abailable" sein? gab es das früher mal? Weiß ich nicht mehr, hab den Code vor hm 4 Jahren??? eingebaut/kopiert/keine Ahnung und seit dem kopiere ich ihn nur dahin wo ich ihn brauche.
  • [Vorlage] UniFi WLAN Anwesenheitskontrolle

    javascript template
    18
    1 Votes
    18 Posts
    3k Views
    A
    @TobStar @CruziX Ich will hier nocheinmal die Frage stellen. Ich es möglich die OnlineZeit (last_seen) bzw Abwesend_seit (last_seen - uptime) noch als Datenpunkt hinzuzufügen?
  • Deye Solar Sun600 Auslese-JavaScript

    24
    5 Votes
    24 Posts
    14k Views
    O
    @ACHIM-BAECKER , auch ich nutze Dein Script gerne und erfolgreich, um von der Cloud unabhängig zu sein. Leider gibt es da noch den kleinen Schönheitsfehler, dass in dem Moment, wenn sich abends der Inverter mangels Energie abschaltet, die zuletzt gemeldete Leistung weiterhin ansteht. Der Inverter setzt die Leistung nicht als "Letzte Amtshandlung" vor dem schlafen gehen auf "0". Letztlich macht das den Kohl nicht fett, mich stört es aber, wenn nachts eine Leistung von 2 W - 5W angezeigt wird. Daher habe ich mir erlaubt, Dein Script wie folgt zu modifizieren: schedule('*/5 5-22 * * *', GetData); // zwischen 5-22Uhr alle 5min ausführen // Anfang Original // function GetData(){ // zyklisches abholen der Daten, falls Solaranlage online ist // var SolarIsOnline = getState(SolarOnlineVar).val; // if (SolarIsOnline) { // getWebsite(); // } //} // Ende Original // Anfang Erweiterung, um "0" auszugeben, wenn der Inverter nicht erreichbar ist function GetData(){ // zyklisches abholen der Daten, falls Solaranlage online ist var SolarIsOnline = getState(SolarOnlineVar).val; if (SolarIsOnline) { getWebsite(); } else { setState("0_userdata.0.Solar.webdata_now_p", 0); } Die "setState" Anweisung setzt die Leistung auf "0", wenn der Inverter nicht erreichbar ist. Es gibt sicher elegantere Lösungen um das zu realisieren, aber für mich funktioniert es. Gruß
  • Auf einmal viele Fehler in den Skripten

    23
    0 Votes
    23 Posts
    3k Views
    OliverIOO
    @pk68 said in Auf einmal viele Fehler in den Skripten: Zusätzliche NPM-Module: color-convert ok, da ist auch kein Problem. Da gibt es keine dependencies. Also dann kommen die Meldungen alle aus dem iobroker heraus und können ignoriert werden. Sind ja glaube ich auch alles nur warnungen
  • [Vorlage] Automatischer View-Wechsel u. Slideshow

    143
    17 Votes
    143 Posts
    33k Views
    S
    Ich habe ein Skript in Blockly was nicht richtig laufen will. Wenn ich es so lasse wie auf dem Screenshot dann funktioniert es zumindest das auf dem Wandtablet das Display angeht und auch das View eingestellt wird. Wenn ich allerdings statt "FFFFFFF" die Instanz-ID vom Tablet eintrage dann wechslet auf dem Wand-Tablet das View gar nicht mehr. Zweites Problem ist wenn innerhalb kurzer Zeit wieder eine Bewegung erkannt wird speichert er unter "last_screen" nicht die Seite die man vor der Bewegung händisch bedient hat am Tablet sondern zeigt wieder die Cam_View_Bewegung. Jemand eine Idee wie ich die Probleme lösen kann? Wäre für jeden Vorschlag dankbar :) [image: 1696846069196-cams-bewegung.png]
  • Openliga DP Adapter Frage

    14
    0 Votes
    14 Posts
    1k Views
    OliverIOO
    @matze55 ja das passiert immer wieder mal. down oder überlastet daher immer mit fehlermeldung, sonst ist raten angesagt
  • Array nach Preisen sortiert mit Startzeit aus Tibberconnect

    5
    1 Votes
    5 Posts
    797 Views
    paul53P
    @arteck sagte: das kannst du auch so schreiben Richtig.
  • Script per Script erzeugen

    7
    0 Votes
    7 Posts
    479 Views
    T
    @wolfgangfb sagte in Script per Script erzeugen: @bananajoe Supert, danke, habs probiert, funktioniert. Bei mir wurden geänderte Skripte gelegentlich doppelt gestartet, daher Skript erst stoppen, Sekunde warten, dann ändern, Sekunde warten, dann starten.
  • einfacher Matrix Chat Client

    3
    1 Votes
    3 Posts
    986 Views
    D
    Hallo, da ich diesen Artikel merhmals bei Google gefunden habe, wollte ich an dieser Stelle fragen. Gibt es einen ausgereiften MatrixChat Adapter? Weil dann würde ich auf Telegram verzichten und mir Nachrichten vom SmartHome selber darüber senden. Ich frage hier, weil dann vermutlich viele andere das ebenfalls über Google finden werden und noch besser weiterwissen. PS: Naja, wer Matrix im Adapter Fenster reingibt, findet sofort: =D [image: 1696535049656-bildschirmfoto-2023-10-05-um-21.43.23.png]
  • Funktion bei Trigger und zeitgesteuert ausführen

    7
    0 Votes
    7 Posts
    448 Views
    haus-automatisierungH
    Ich würde aber die Reihenfolge der Parameter ändern und die Callback-Funktion nach hinten packen. So ist es ja bei on und schedule z.B. auch. Dann kann man das schöner formatieren. z.B. function FunctionSubscrAndPeriodic(id2Subscribe, minutesVar, callback, changeVar = 'any') { on ({ id: id2Subscribe, change: changeVar }, callback); schedule(`*/${minutesVar} * * * *`, callback); } function Addition(a, b) { setState('0_userdata.0.example_state', a + b); } FunctionSubscrAndPeriodic('0_userdata.0.kPreCtrl', 1, () => { Addition(1, 2); });
  • Shelly EM reset_total aus script

    2
    0 Votes
    2 Posts
    153 Views
    ?
    @klausi-0 Ich bin es selber nochmal. Bin ja immer noch am suchen. Kann es sein, das zusätzlich zum Shelly Adapter auch noch ein Mqtt Client und/oder Broker benötigt wird? Javascript meldet ja immer ein fehlendes mqtt Modul. Ist leider alles absolutes Neuland für mich.
  • tablejson - require() of ES Module ... not supported

    2
    0 Votes
    2 Posts
    276 Views
    Jey CeeJ
    @fvp du kannst probieren require auf import zu ändern, aber ich glaube auch der Javascript Adapter Unterstützt das noch nicht. Wenn dem so ist musst du eine alte Version verwenden.
  • POST Request an Pushcut

    27
    0 Votes
    27 Posts
    3k Views
    Martin SchlenderM
    @ticaki aaaalso - so einfach scheint es nicht zu klappen. Ich hab schon die beiden überflüssigen "," entfernt (innerhalb von headers nach dem Content-Type und nach bode: strBody. Aber es funktioniert trotzdem noch nicht und der Fehler ist nicht gerade sprechend: const axios = require('axios'); const strBody = '{"token":"xxxxxx","user":"yyyyyy","title":"' + strTitle + '","text":"' + strText + '" ,"subtext":"' + strSubtext + '"}'; log('body: ' + strBody); let strErg; try { const result = await axios( { timeout: 5000, method: 'POST', headers: { 'Content-Type': 'application/json' }, url: 'https://api.pushover.net/1/glances.json', body: strBody } ); log('body:' + result.data); setState('0_userdata.0.PostRequest',body,true); } catch(error) { log(JSON.stringify(error.toJSON())); } return ''; Hier der Fehler: { "message": "Request failed with status code 400", "name": "AxiosError", "stack": "AxiosError: Request failed with status code 400\n at settle (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/settle.js:19:12)\n at IncomingMessage.handleStreamEnd (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/adapters/http.js:570:11)\n at IncomingMessage.emit (node:events:526:35)\n at IncomingMessage.emit (node:domain:489:12)\n at endReadableNT (node:internal/streams/readable:1359:12)\n at processTicksAndRejections (node:internal/process/task_queues:82:21)", "config": { "transitional": { "silentJSONParsing": true, "forcedJSONParsing": true, "clarifyTimeoutError": false }, "adapter": [ "xhr", "http" ], "transformRequest": [ null ], "transformResponse": [ null ], "timeout": 5000, "xsrfCookieName": "XSRF-TOKEN", "xsrfHeaderName": "X-XSRF-TOKEN", "maxContentLength": -1, "maxBodyLength": -1, "env": {}, "headers": { "Accept": "application/json, text/plain, */*", "Content-Type": "application/json", "User-Agent": "axios/1.4.0", "Accept-Encoding": "gzip, compress, deflate, br" }, "method": "post", "url": "https://api.pushover.net/1/glances.json", "body": "{\"token\":\"xxxx\",\"user\":\"yyyy\",\"title\":\"12.9 °C\",\"text\":\"12.9\" ,\"subtext\":\"17:25\"}" }, "code": "ERR_BAD_REQUEST", "status": 400 }
  • String (ASCII Zeichen) an USB-Gerät senden

    6
    0 Votes
    6 Posts
    799 Views
    A
    @mickym exec('echo "#ZL 1,1 Test" > /dev/ttyACM0'); SUPER !!! PERFEKT !!! Funktioniert tadellos..., nochmal DANKE dafür. Nur zum Verständnis, muss ich zwingend über "exec('echo "IRGENDWAS" > /dev/ttyACM0')" arbeiten? Geht da nichts über 'usb' ? Schönen Gruß ATARI (Peter)
  • Bits to Word / Word to Bits

    6
    0 Votes
    6 Posts
    803 Views
    paul53P
    @kev-0 sagte: Anregungen und Verbesserungen gerne gewünscht. Die vielen Konstanten benötigt man nicht. Ich verwende 3 globale Funktionen für Bitoperationen: function checkBit(val, bit) { return !!(val >> bit & 1); } function setBit(val, bit) { return val | (1 << bit); } function resetBit(val, bit) { return val & ~(1 << bit); } Das Objekt für die Zuordnung von Bit-Position zu Datenpunkt-IDs könnte so aussehen: const bits = { '0_userdata.0.Test.MyBool': 0, '0_userdata.0.Test.MyBool2': 2 };
  • Alexa Einkaufsliste löschen

    1
    0 Votes
    1 Posts
    177 Views
    No one has replied
  • getIdByName gibt nach Update Dubletten zurück

    8
    0 Votes
    8 Posts
    785 Views
    paul53P
    @watakan sagte: kann man dem näher auf den Grund gehen? Mit "top" und dann mit "Shift m" (großes M) nach RAM-Verbrauch sortieren. Tritt der Effekt nach Neustart der Javascript-Instanz weiterhin auf? Falls ja, auch nach ioBroker Neustart?
  • Abfallkalender Farbe ändern

    9
    0 Votes
    9 Posts
    898 Views
    T
    @australien Wenn was fehlt kannst du auf Github mir was hinterlassen, ich sehe es mir dann an.
  • schedule zu unterschiedlichen Zeiten

    6
    0 Votes
    6 Posts
    688 Views
    Thomas BraunT
    @fenriswolf sagte in schedule zu unterschiedlichen Zeiten: nun würde ich das eine Script gerne jede Stunde um halb laufen lassen und das andere Script zu jeder vollen Stunde. Zu den Zeiten tummeln sich auch noch andere auf den Servern. Nimm für sowas 'krumme' Uhrzeiten her.

440

Online

33.1k

Users

83.7k

Topics

1.3m

Posts