Weiter zum Inhalt

JavaScript

2.5k Themen 49.9k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

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

    15
    0 Stimmen
    15 Beiträge
    665 Aufrufe
    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 Stimmen
    7 Beiträge
    398 Aufrufe
    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 Stimmen
    18 Beiträge
    3k Aufrufe
    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 Stimmen
    24 Beiträge
    14k Aufrufe
    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 Stimmen
    23 Beiträge
    3k Aufrufe
    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 Stimmen
    143 Beiträge
    33k Aufrufe
    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 Stimmen
    14 Beiträge
    1k Aufrufe
    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 Stimmen
    5 Beiträge
    797 Aufrufe
    paul53P
    @arteck sagte: das kannst du auch so schreiben Richtig.
  • Script per Script erzeugen

    7
    0 Stimmen
    7 Beiträge
    479 Aufrufe
    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 Stimmen
    3 Beiträge
    986 Aufrufe
    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 Stimmen
    7 Beiträge
    448 Aufrufe
    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 Stimmen
    2 Beiträge
    153 Aufrufe
    ?
    @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 Stimmen
    2 Beiträge
    276 Aufrufe
    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 Stimmen
    27 Beiträge
    3k Aufrufe
    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 Stimmen
    6 Beiträge
    799 Aufrufe
    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 Stimmen
    6 Beiträge
    803 Aufrufe
    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 Stimmen
    1 Beiträge
    177 Aufrufe
    Niemand hat geantwortet
  • getIdByName gibt nach Update Dubletten zurück

    8
    0 Stimmen
    8 Beiträge
    785 Aufrufe
    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 Stimmen
    9 Beiträge
    898 Aufrufe
    T
    @australien Wenn was fehlt kannst du auf Github mir was hinterlassen, ich sehe es mir dann an.
  • schedule zu unterschiedlichen Zeiten

    6
    0 Stimmen
    6 Beiträge
    688 Aufrufe
    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.

374

Online

33.1k

Benutzende

83.7k

Themen

1.3m

Beiträge