Weiter zum Inhalt

JavaScript

2.5k Themen 49.1k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Gotify "const axios" unable to verify the first certificate

    3
    0 Stimmen
    3 Beiträge
    815 Aufrufe
    T
    @benjamincz import https from 'https' // oder const https = require('https') import axios from 'axios' const httpsAgent = new https.Agent({ rejectUnauthorized: false, }) axios.defaults.httpsAgent = httpsAgent //hier rest vom Script So in der Art. https muß wohl im Javascript-Adapter in die npm module, kannst aber mal ohne versuchen, wenn dann ein Fehler kommt mit Modul nicht gefunden, muß er rein.
  • hm-rpc doppelt ausgeführt via iot adapter [log]

    2
    0 Stimmen
    2 Beiträge
    175 Aufrufe
    paul53P
    @mariva sagte: unterschiedliche aktionen machen. also ob via taster, alexa oder bewegungsmelder sich das licht angeschaltet hat. Triggere auf Wertänderung und prüfe die Quelle der Änderung: on('hm-rpc.2.xxx.2.LEVEL', function (obj) { log(obj.state.from); });
  • Update auf Bookworm (Container) curl Befehl noch aktuell?

    69
    0 Stimmen
    69 Beiträge
    3k Aufrufe
    F
    @glasfaser sagte in Update auf Bookworm (Container) curl Befehl noch aktuell?: teste doch mit meiner Vorlage meinen Beitrag nicht gelesen? Bei ftp://user:passwort@.......... können die Sonderzeichen nicht escaped werden, speziell ein Ausrufezeichen. Einfach mal mit meinem Testpasswort testen und du siehst was ich meine
  • [Gelöst] Scheduler-Trigger löst mehrere Male aus

    15
    0 Stimmen
    15 Beiträge
    448 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
    315 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
    2k 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
    13k 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
    2k 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
    26k 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
    872 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
    696 Aufrufe
    paul53P
    @arteck sagte: das kannst du auch so schreiben Richtig.
  • Script per Script erzeugen

    7
    0 Stimmen
    7 Beiträge
    346 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
    923 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
    349 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
    118 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
    228 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
    2k 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
    667 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
    653 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
    155 Aufrufe
    Niemand hat geantwortet

437

Online

32.7k

Benutzer

82.6k

Themen

1.3m

Beiträge