Skip to content

JavaScript

2.5k Topics 49.2k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • [Gelöst] Was tut die Funktion jsonataExpression

    13
    0 Votes
    13 Posts
    389 Views
    R
    @mickym sagte "Intervall":"2023-10-13T22:00:00.000Z" ist auch korrekt - da in allen Datenbanken die UTC gespeichert wird. Sprich diese Zeit entspricht 0:00 Ihr am 14.10.2023 - da UTC ja 2 Std. nachhängt. Die Konvertierung liegt ggf. daran, dass daraus die lokale Zeit gemacht wurde. Ach so! Jetzt verstehe ich das auch, ja macht durchaus Sinn und so gesehen ist es dann tatsächlich der 14.10.2023. Wieder etwas wichtiges dazugelernt, vielen Dank!
  • Gotify "const axios" unable to verify the first certificate

    3
    0 Votes
    3 Posts
    815 Views
    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 Votes
    2 Posts
    175 Views
    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 Votes
    69 Posts
    3k Views
    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 Votes
    15 Posts
    448 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
    315 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
    2k 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
    13k 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
    2k 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
    26k 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
    875 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
    697 Views
    paul53P
    @arteck sagte: das kannst du auch so schreiben Richtig.
  • Script per Script erzeugen

    7
    0 Votes
    7 Posts
    346 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
    923 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
    349 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
    118 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
    228 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
    2k 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
    667 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
    657 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 };

626

Online

32.8k

Users

82.7k

Topics

1.3m

Posts