Skip to content

JavaScript

2.5k Topics 49.7k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • HTML Tabelle für ical Adapter (mehrere Instanzen)

    javascript
    245
    6
    6 Votes
    245 Posts
    52k Views
    da_WoodyD
    @aragon sagte in HTML Tabelle für ical Adapter (mehrere Instanzen): @da_Woody Damit kann man nur die Müllabfuhr Termine anzeigen lassen, oder? Einbindung in iqontrol als Tabelle möglich? Ich möchte mir Müllabfuhr, Geburtstage, Feiertage und individuelle Termine von fünf Personen in einer Tabelle anzeigen lassen, die man nach unten Scrollen kann. axo, du willst all in one. ich hab 4 ical instanzen um es eben getrennt anzuzeigen. [image: 1704172426461-cc049e7d-9c93-439f-828d-b0463fcc72f1-grafik.png] eben müll, geburtstage (du hast da Gubürtstag drinnen stehn), und eben die 2 persönlichen. wobei die 2 persönlichen sich automatisch nach state in der höhe anpassen. scrollbalken vermeide ich, so gut es geht. außerdem wollte ich meine eigenen hintergründe verwenden.
  • Datenpunkt für JSON

    22
    0 Votes
    22 Posts
    3k Views
    K
    @oliverio ;-)
  • [gelöst] Skript stoppt bei Zustandsänderung mit Fehler

    25
    0 Votes
    25 Posts
    2k Views
    A
    @paul53 Vielen Dank für die Erläuterungen!!! Einen guten Rutsch nach 2024 für alle ioBrok(l)er.
  • [gelöst] setState String erzeugt Fehlermeldung

    3
    2
    0 Votes
    3 Posts
    369 Views
    P
    @ofri2607 Top.Gelöst. So einfach.
  • creation of states throws warning every second time

    Moved
    6
    1
    0 Votes
    6 Posts
    659 Views
    HomoranH
    @flachdachdecker sagte in creation of states throws warning every second time: weil ich dachte ich errecihe damit mehr potentielle Helfer 1:1000 anders herum
  • (Erledigt) http post request für CodeProject.AI calls

    23
    0 Votes
    23 Posts
    3k Views
    U
    @marc-berg ich habe alle URs in dem von dir geposteten Link entnommen: https://www.codeproject.com/AI/docs/api/api_reference.html#license-plate-reader Im AI Server Log kann man noch ein wenig schauen was passiert wenn man die Erkennungen über die Webseite macht. Sonst habe ich keine Idee.
  • Funktionsrückgabewert = Skript und nicht Ergebniss

    11
    1
    0 Votes
    11 Posts
    1k Views
    E
    @ticaki Das war´s!! Vielen Dank für die Hilfe!! So habe ich heute wirklich was gelernt!!
  • (gelöst) NPM-Modul "node-fetch" in der Javascript-Instanz

    39
    0 Votes
    39 Posts
    6k Views
    U
    @dukkha habe das gleiche Problem mit node-fetch. Hast Du mir ein Code-Besipiel wie Du dann axios verwendest? Möchte einen post http request durchführen und ein Image übergeben.
  • States in Redis (States) DB die es in IOBroker nicht gibt.

    6
    0 Votes
    6 Posts
    694 Views
    paul53P
    @ticaki sagte: mit existsState()eine andere Zahl raus als bei einer Prüfung mit await existsStateAsync() existsState() holt in der synchronen Version die Zustände aus dem Puffer der JS-Instanz, existsStateAsync() erhält - wie die asynchrone Version von existsState() - die Zustände vom js-controller.
  • Datenpunkt dayTime änderung

    10
    0 Votes
    10 Posts
    400 Views
    liv-in-skyL
    @haus-automatisierung danke für das fixen :)
  • synchronize/locking scripts

    11
    0 Votes
    11 Posts
    1k Views
    B
    @coalado Ich denk du hast durch den Thread hier schon einige Stichworte erhalten. Wichtig ist halt primär, dass man sich über das Systemverhalten bewusst ist. Einen eigenen Adapter brauchst du nicht. Einfach nur beim Programmieren darauf achten.
  • createState unter 0_userdata geht nicht

    4
    0 Votes
    4 Posts
    428 Views
    paul53P
    @sabinet sagte: für Testscripts in der Instanz javascript.1 sinnvoll. "0_userdata.0" wurde gerade deshalb geschaffen, um die Abhängigkeit von der Javascript-Instanz zu vermeiden. Was hindert dich daran, Test-Datenpunkte unter "javascript.1" zu erstellen?
  • Log Einträge in unterschiedlichen Farben

    javascript
    2
    0 Votes
    2 Posts
    259 Views
    liv-in-skyL
    @johgre würde mal alle adapter instanzen auf warning (log) umstellen (außer javascript) - dass spart schon mal viel unnütze meldungen im log es gibt den eventlist adapter https://github.com/ioBroker/ioBroker.eventlist , um sich bestimmte events zu loggen oder ein script https://forum.iobroker.net/post/13971 - ist schon älter, weiß nicht, ob das noch funktioniert es gibt noch den logparser adapter https://github.com/Mic-M/ioBroker.logparser vom node system her, denke ist es nicht möglich - würde auch wenig sinn machen, daher muss man auf andere lösungen setzen
  • Script um über Telegram bot Kamerabilder abzurufen

    javascript
    3
    0 Votes
    3 Posts
    412 Views
    F
    @arteck Doch bekomme ich: 'Anonymous snapshot' ist aktiviert. http://192.168.20.91/**snap.jpeg** Wenn 'snap.jpeg' an die IP Adresse angehängt wird, bekomme ich das Bild. ohne, also so: http://192.168.20.91 werden die Login Daten verlangt und ich komme auf das web interface der Kamera
  • Adapter_widget Fehler

    2
    1
    0 Votes
    2 Posts
    228 Views
    arteckA
    @dg19222 erstens passe den Titel an.. adapter_widget heisst dein script ..damit kann keiner was anfangen... und wenn du schon scripte kopierst dann solltest du wissen was diese auch tun.. oder zumindest da nachfragen wo du es her hast sonst kann das zur 'mein iobroker läuft nicht mehr' oder 'mein iobroker ist plötzlich soooo lahm' und für das was du vorhast gibts einen Adapter device-watcher ansonsten löschen brauchst nicht export function log(arg0: string) { throw new Error("Function not implemented."); }
  • Problem mit Adapter_Infos

    7
    0 Votes
    7 Posts
    639 Views
    D
    @paul53 Danke für den tip Jetzt ist der fehler weg Die ordner werden Erstellt allerdings liefert das Skript nur den Namen der Adapter aber leider keine zahlenwerte hier giebt er nur {"ack":false} aus [image: 1703259225568-screenshot-2023-12-22-163247.png] Hast du da noch ne idee?
  • Skript zum Downsamplen einer Influx 2.x DB

    13
    0 Votes
    13 Posts
    1k Views
    M
    @marc-berg Ja, so geht's. Werde mal die wichtigsten Daten mit dieser Methode "auffüllen". Wird ne Heidenarbeit. Danke!
  • Javascript Adapter Ram Belegung steigt mit der Zeit

    3
    0 Votes
    3 Posts
    357 Views
    K
    @ticaki , danke für den Anstoß....Das wäre auf jeden Fall mal ein gangbarer Weg, ohne dass ich ein Script stoppen müsste :-) Probier ich mal aus...
  • Ordentlich Logging GPS-Daten influxDB Grafana Geomap Routen

    2
    0 Votes
    2 Posts
    584 Views
    P
    Habe es jetzt gelöst bekommen. Mit folgendem Skript erhält man ein einziges Measurement was latitude und longitude mit exakt gleichen Zeitstempel enthält. Zusätzlich können latitude und longitude zeitversetzt eintrudeln - welcher Wert zuerst kommt ist dabei egal. In diesem Beispiel hier bis zu 10 Sekunden Versatz. Es wird also obwohl latitude und longitude in unterschiedlichen Datenpunkten liegen und bei Änderung beider Werte das Skript 2x triggert (bei Änderung von latitude und noch mal bei Änderung von longitude) immer nur einmal und nur die Kombination aus beiden neuen Werten in die influxDB geschrieben. Funktioniert jetzt einwandfrei. Hiermit ist es möglich Koordinaten sauber in der influxDB abzulegen um beispielsweise mit Grafana Routen daraus zu basteln. // v0.2 const axios = require('axios').default; const influxDbInstance = 'influxdb.0'; const token = 'TOKEN'; const measurement = 'GPS-Test'; const loggingTemplate = { '0_userdata.0.test-number2': 'lati', '0_userdata.0.test-number3': 'longi', }; const loggingObj = {}; async function start() { const influxDbInstanceConfig = await getObjectAsync(`system.adapter.${influxDbInstance}`); const protocol = influxDbInstanceConfig.native.protocol; const host = influxDbInstanceConfig.native.host; const port = influxDbInstanceConfig.native.port; const org = influxDbInstanceConfig.native.organization; const bucket = influxDbInstanceConfig.native.dbname; console.log(`Starting "${measurement}" logging to ${protocol}://${host}:${port} into bucket "${bucket}" by org ${org}`); // Init loggingObj with current values for (let [objId, key] of Object.entries(loggingTemplate)) { const state = await getStateAsync(objId); if (state && !isNaN(state.val)) { loggingObj[key] = state.val; } else { loggingObj[key] = 0; } } // Variable für Timeout sodass bei Wiederholung der vorherige Timeout abgebrochen werden kann let timeoutHandler; // Trigger-Bedingung (bei Änderung eines der DP (loggingTemplate)) on({ id: Object.keys(loggingTemplate), change: 'ne' }, async (obj) => { // Update value in loggingObj const key = loggingTemplate[obj.id]; loggingObj[key] = obj.state.val; // Lösche vorherigen Timeout, falls vorhanden if (timeoutHandler) { clearTimeout(timeoutHandler); } // Setze neuen Timeout timeoutHandler = setTimeout(async () => { // Save Data const data = `${measurement} ${Object.keys(loggingObj) .filter(key => !isNaN(loggingObj[key])) .map((key) => `${key}=${loggingObj[key]}`) .join(',')}`; if (data) { // console.log(`Saving "${data}" to InfluxDB @ ${protocol}://${host}:${port}/`); axios.post(`${protocol}://${host}:${port}/api/v2/write?bucket=${bucket}&org=${org}`, data, { headers: { 'Content-Type': 'text/plain', 'Authorization': `Token ${token}` } }).catch(err => { console.error(err); }); } }, 10000); // 10.000 Millisekunden = 10 Sekunden }); } start(); Uns so hier sieht das ganze dann in Grafana mit dem Widget Geomap aus: [image: 1702992205536-2023-12-19-14_21_41-window.png] from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r._measurement == "GPS-Test" and r._field == "lati" or r._field == "longi" ) |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value") |> drop(columns: ["_start", "_stop", "_measurement"])
  • Mehrere Datenpunkte per on überwachen lassen

    5
    0 Votes
    5 Posts
    459 Views
    W
    @paul53 Danke!

289

Online

33.0k

Users

83.4k

Topics

1.3m

Posts