Weiter zum Inhalt

JavaScript

2.5k Themen 49.1k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • States in Redis (States) DB die es in IOBroker nicht gibt.

    6
    0 Stimmen
    6 Beiträge
    567 Aufrufe
    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 Stimmen
    10 Beiträge
    304 Aufrufe
    liv-in-skyL
    @haus-automatisierung danke für das fixen :)
  • synchronize/locking scripts

    11
    0 Stimmen
    11 Beiträge
    862 Aufrufe
    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 Stimmen
    4 Beiträge
    349 Aufrufe
    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 Stimmen
    2 Beiträge
    215 Aufrufe
    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 Stimmen
    3 Beiträge
    347 Aufrufe
    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 Stimmen
    2 Beiträge
    183 Aufrufe
    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 Stimmen
    7 Beiträge
    500 Aufrufe
    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 Stimmen
    13 Beiträge
    1k Aufrufe
    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 Stimmen
    3 Beiträge
    292 Aufrufe
    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 Stimmen
    2 Beiträge
    527 Aufrufe
    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 Stimmen
    5 Beiträge
    366 Aufrufe
    W
    @paul53 Danke!
  • [Vorlage] Hoymiles Wechselrichter Begrenzung mit openDTU

    12
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    Ralla66R
    @schmakus Genau, begrenzen auf den aktuellen Verbrauch, Rest in den Speicher. :-)
  • Fehler beim Auslesen der Array-länge

    9
    1
    0 Stimmen
    9 Beiträge
    577 Aufrufe
    OliverIOO
    @ticaki kein Problem, kann beim footen schon mal dingen
  • Formel als inputstring

    7
    0 Stimmen
    7 Beiträge
    207 Aufrufe
    Ben1983B
    Je mehr ich darüber nachdenke um so mehr komme ich von dem Gedanken der wirklich frei vorgebbaren Formel ab. Vielleicht ist das später wirklich nur nochmal als Adon zu sehen, aber in erster Linie erst einmal fest auswählbar mehr Formel in der Konfig besser.
  • Homematic HM-RPC - Fenster öffnen zählt doppelt

    Verschoben
    15
    0 Stimmen
    15 Beiträge
    957 Aufrufe
    B
    @ticaki sagte in Homematic HM-RPC - Fenster öffnen zählt doppelt: @bongo ich weiß nicht ob das hier funktionieren könnte. Da aber bei doppelt laufenden Skripts die Variablen geteilt werden sollte es eigentlich gehen. // am Anfang var myScripts; if (!myScripts) myScripts = 0; myScripts++ // irgendwo im Code if (myScripts > 1) log(myScripts); war ein Tippfehler drin :) Danke, ich habs eingebaut und werde es beobachten.
  • Json-String in Objekte schreiben

    23
    0 Stimmen
    23 Beiträge
    4k Aufrufe
    C
    @paul53 ok, habe festgestellt, dass das Json nicht wirklich aktualisiert wird. Muss ich mal schauen woran das liegt.
  • Konzept: JSON State Mapper für ioBroker Javascript Engine

    9
    1
    1 Stimmen
    9 Beiträge
    916 Aufrufe
    B
    @haus-automatisierung said in Konzept: JSON State Mapper für ioBroker Javascript Engine: @blockmove sagte in Konzept: JSON State Mapper für ioBroker Javascript Engine: Aber nicht alle sind gut gepflegt. Konkret? Würde gern aushelfen und die Adapter besser machen Ich kann dir aktuell keinen Adapter nennen. Als letztes hat mich aber der WLED-Adapter "geärgert", da da die Anpassung an die neue WLED-Version sehr lange gedauert hat und in der Zwischenzeit das Log mit Warnmeldungen geflutet wurde. Ist aber mittlerweile wohl gefixt. Mir ist klar, dass fast alles rund um ioBroker Community-Projekte sind und deshalb ist das auch absolut keine Kritik! Also bitte keine Diskussion um Adapterentwicklung. Ich persönlich versuche nun, wenn MQTT verwendet wird, auf Adapter zu verzichten und direkt mit MQTT zu arbeiten. Daher finde ich diesen universellen Ansatz @stev-io sehr interessant. Aber das passt eben zu meiner Art mit ioBroker Dinge umzusetzen, Andere können das anders sehen. Für mich persönlich ist ioBroker eine Art universelles IoT-Tool, quasi eine Steigerung der Möglichkeiten von Node RED. Mag vielleicht daran liegen, dass ich aus der industriellen i4.0-Ecke komme und nicht unbedingt der "normale" Smarthome-Bastler bin.
  • JS-Adapter startet ständig neu: heap out of memory

    55
    0 Stimmen
    55 Beiträge
    7k Aufrufe
    arteckA
    @smhrambo sagte in JS-Adapter startet ständig neu: heap out of memory: Stattdessen habe ich das Gefühl die heilige Kuh beleidigt zu haben, aber so ist das manchmal. ne ich will nur dass du verstehst das 3k an objekten kein problem verursachen kann.. bei 300k würde ich nochmal nachfragen... aber komm ist ggut.. mir egal.. ich bin raus hier....
  • Gelöst: Problem mit Zeitsteuerung ( Cron Job )

    8
    0 Stimmen
    8 Beiträge
    730 Aufrufe
    H
    @homoran Ich vermute, es lag an der Namensgebung des Scriptes. Waren 2 Worte ohne Underscore. Danke Dir und alle anderen.

562

Online

32.7k

Benutzer

82.6k

Themen

1.3m

Beiträge