Weiter zum Inhalt

JavaScript

2.5k Themen 49.2k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • mqtt parsen

    5
    1
    0 Stimmen
    5 Beiträge
    433 Aufrufe
    Thomas BraunT
    @quarkmax Hab das Skript übernommen, funktioniert. @mickym @ticaki Danke für eure Vorschläge!
  • [gelöst] Alarm Skript mit Timer

    5
    0 Stimmen
    5 Beiträge
    479 Aufrufe
    X
    @ticaki said in Alarm Skript mit Timer: @xdelta Ja, du hast auf any reagiert und das ist jede Änderung des Datenpunktes, auch wenn es nur der Zeitstempel ist. Ahh! Ich dachte mir schon so etwas in der Art, weil auf irgendetwas musste ja reagiert worden sein - wusste aber nicht, dass auch der TS dazu gehört usw.! Daher die "Magie" des Scripts ;) Wieder was gelernt - danke! Auch für die Hausaufgaben - werde ich mich mit befassen! vG Kai
  • Zugriff auf Object mit Sonderzeichen (-)

    10
    0 Stimmen
    10 Beiträge
    687 Aufrufe
    bahnuhrB
    @blockmove wie im chat besprochen anbei mal das Script: // Temperatur der Heizungsrohre var Id, Temp, z; on({id: "mqtt.2.Wemos_Heizung_Rohre.SENSOR", change: "ne"}, function(obj){ obj = JSON.parse(obj.state.val); for (z = 1; z <= 8; z++) { Id = obj["DS18B20-"+z].Id; Temp = obj["DS18B20-"+z].Temperature; Temp_schreiben(Id,Temp); } var sdatum = formatDate(obj.Time,"DD.MM.YYYY"); var szeit = formatDate(obj.Time,"SS:mm"); //log ("Temperatur Heizungsrohre aktualisiert am " + sdatum + " um " + szeit + " Uhr"); setState("javascript.0.Geräte.Heizung.Rohre.Aenderung",(sdatum + " um " + szeit + " Uhr")); }); function Temp_schreiben(Id,Temp) { if (Id == "0117B37A48FF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Kaltwasser", Temp); if (Id == "0117B38548FF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Vorlauf", Temp); if (Id == "0117B38B14FF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Umwaelz", Temp); if (Id == "0417A2D62CFF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Ruecklauf", Temp); if (Id == "0517C0E88FFF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Waermetauscher", Temp); if (Id == "0517C0EA1CFF") setState("javascript.0.Geräte.Heizung.Rohre.Temp_Warmwasser", Temp); if (Id == "0517C0EAF2FF") setState("javascript.0.Geräte.Heizung.Rohre.Fussbodenheizung_Ruecklauf", Temp); if (Id == "0517C0EB6FFF") setState("javascript.0.Geräte.Heizung.Rohre.Fussbodenheizung_Vorlauf", Temp); }
  • Script wird zweimal ausgeführt?

    22
    0 Stimmen
    22 Beiträge
    2k Aufrufe
    T
    @ahnungsbefreit Ich hatte das Problem bisher auch ausschließlich mit Skripten die async und await benutzen. Wobei ich jetzt 2 mal in letzter Zeit 100% Auslastung des Javascript Adapters hatte, weil er sich verschluckt hat. Bei eben diesem Skript. Aber auch nur wenn ich beim starten des Skripts die Arbeitsfunktion aufrufe, und gleichzeitig mit extendObject/setObject teste... 2 mal ist aber nicht genug um es an irgendwas fest zu machen.
  • setinteval Zeiten

    27
    0 Stimmen
    27 Beiträge
    2k Aufrufe
    L
    @ticaki Die Scripte von mir sind Null Komma null nichts. Wenn da nicht ein riesiger IOBroker Overheed dranhängt.... Die 2 Energie- Shellys frage ich auch mit 5 Sekunden ab.
  • Konfigurationsseite wie im Adapter

    1
    0 Stimmen
    1 Beiträge
    104 Aufrufe
    Niemand hat geantwortet
  • [Vorlage] Simple Anrufer-Ansage via Alexa/tr-064

    javascript communication
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    B
    Hat auch 3 Jahre später noch gut funktioniert! :) Vielen Dank
  • Rolladensteuerung über Telegram

    49
    0 Stimmen
    49 Beiträge
    5k Aufrufe
    S
    @bahnuhr Achso ja schade. Das kann ich wiederum gar nicht :D
  • Blockly funktioniert nicht mehr wie es soll - Hilfe

    13
    1
    0 Stimmen
    13 Beiträge
    372 Aufrufe
    arteckA
    @kusselin sagte in Blockly funktioniert nicht mehr wie es soll - Hilfe: Warten….? jep
  • [gelöst] HTTPS Request mit node-fetch

    3
    0 Stimmen
    3 Beiträge
    257 Aufrufe
    P
    @mickym Danke für deine Hilfe Funktioniert const { default: fetch }=require("node-fetch"); const options = { method: 'GET', headers: { accept: 'application/vnd.gridx.v2020.11.09+json', authorization: 'tokenXXXXXXXXX' } }; fetch('https://api.gridx.de/clusters/XXXXXXX/appliances/XXXXXXXXXXX/constraints?order_by=priority&limit=1', options) .then(response => response.json()) .then(response => setState('0_userdata.0.GridX_Daten.jsonDaten',JSON.stringify(response),true)) .catch(err => console.error(err));
  • Roborock Adapter tester gesucht

    Gesperrt
    766
    7 Stimmen
    766 Beiträge
    262k Aufrufe
    copystringC
    Der Adapter wurde gestern Abend in die offizelle Beta-Repository aufgenommen. Daher schließe ich diesen Topic. Danke an alle fürs fleißige Testen! Ab sofort geht es hier weiter https://forum.iobroker.net/topic/67186/neuer-adapter-für-roborock-staubsauger
  • JavaScript Adapter startet ständig neu

    javascript monitoring
    24
    3
    0 Stimmen
    24 Beiträge
    2k Aufrufe
    T
    @mike2712 war mehr ein Joke, weil es sich nicht wirklich lohn wegen 3%
  • Test SQL-Abfrage

    20
    0 Stimmen
    20 Beiträge
    453 Aufrufe
    haus-automatisierungH
    @roga sagte in Test SQL-Abfrage: und ich fange langsam an, zu verzweifeln. Irgendwo habe ich einen ganz dicken Knoten der nicht aufgehen möchte .... Der Code in der Callback-Funktion wird später ausgeführt. das läuft asynchron ab! das ist ja der Sinn von Promises. Du musst den Code also umbauen. Nur INNERHALB der Funktion kannst Du das Ergebnis wirklich sicher verwenden. Bitte nochmal mit asynchronem Code beschäftigen. Das restliche Programm läuft weiter, während deine SQL-Abfrage auf ein Ergebnis wartet. Das ist ja der Sinn des Ganzen. Du sagst quasi nur "hier liebe Funktion, mach mal. Und gib mir mit einem Aufruf in dieser Funktion bescheid, wenn Du fertig bist". @ticaki hat das ja gut veranschaulicht.
  • ERR_REQUIRE_ESM digest-fetch Fehler

    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    H
    Bei mir haben die Tipps oben leider nicht geholfen bzw. hatte ich diese falsch verstanden... So sah es bei mir zu Beginn aus: cd /opt/iobroker/ npm ls digest-fetch iobroker.inst |-iobroker.javascript |-digest-fetch@3.x.x Die Version 3 ist nur noch in ESM möglich, dazu müsste man die Skripte anpassen. Wir löschen jetzt die V3: cd /opt/iobroker/node_modules/iobroker.javascript/ npm uninstall digest fetch Im javascript adapter löschen wir das digest-fetch raus und schreiben digest-fetch@v2 rein: [image: 1690418465942-40aa0321-5481-4857-b6b4-6cb6a39977ae-image.png] Adapter neu starten und in der Konsole die Version prüfen: npm ls digest-fetch iobroker.inst |-iobroker.javascript |-digest-fetch@2.0.3 ggf. muss man das auch mit node-fetch machen.
  • Air-Q JSON - unbekannte Objekte

    4
    0 Stimmen
    4 Beiträge
    554 Aufrufe
    air-QA
    @Omnedon Hallo, entschuldige die etwas sehr späte Antwort. Die cnt-Werte geben die Gesamtanzahl der Feinstaubpartikel größer als 0,3 µm, 0,5 µm, 1 µm, 2,5 µm, 5 µm und 10 µm in einem Volumen von 100 ml bzw. 0,0001 m³ an und TypPS gibt die durchschnittliche Größe des Feiunstaubs an. dCO2dt und dHdt geben die Änderungsrate der CO2-Konzentration bzw. der Luftfeuchtigkeit in ppb/s bzw. mg/m3/s an.
  • Frage zu type: 'folder' und createState() + setObject()

    7
    0 Stimmen
    7 Beiträge
    815 Aufrufe
    T
    @paul53 ergänzt // id muß ein gültiger String sein und mit 0_userdata.0, alias.0 oder mqtt anfangen, alles weitere is optional async function createFolderAsync(id, name='', desc='') { return Promise.resolve(await _createObject(id, 'folder', name, desc)) } async function createChannelAsync(id, name='', desc='') { return Promise.resolve(await _createObject(id, 'channel', name, desc)) } async function createDeviceAsync(id, name='', desc='') { return Promise.resolve(await _createObject(id, 'device', name, desc)) } async function _createObject(id, typ, name='', desc='') { try { if(existsObject(id)) log('Objekt: ' + id + ' existiert bereits!', 'warn'); else { const obj = { type: typ, common: { name: name, desc: desc }, native: {} } if (!id || typeof id !== 'string') { throw new Error('Fehler in _createObject Parameter 1 ist kein string') } if (!(id.startsWith('alias.0') || id.startsWith('0_userdata.0') || id.startsWith('mqtt'))) { throw new Error('Fehler in _createObject Parameter 1: ' + id.split('.').slice(0,2).join('.') + ' nicht erlaubt') } await setObjectAsync(id, obj); } return Promise.resolve(true); } catch (error) { log(error + '!', 'error') } return Promise.resolve(false); }
  • Raspi GPIO wird gesetzt, wie Ursache herausfinden?

    Verschoben
    65
    0 Stimmen
    65 Beiträge
    7k Aufrufe
    L
    @paul53 Hatte eigenartigerweise nicht genügt. Auch kompletter Neustart des Raspi nicht. Erst mit der Umbenennerei ging es.
  • Dieses Thema wurde gelöscht!

    0
    0 Stimmen
    0 Beiträge
    2 Aufrufe
    Niemand hat geantwortet
  • [gelöst] Skriptfehler nach iobroker Update

    18
    0 Stimmen
    18 Beiträge
    1k Aufrufe
    M
    @arteck ja du hast absolut recht...ich habe den Namen kopiert und nicht die ID...der Name der ID ist dann km200:XXX, die ID ist dann richtigerweise ems-esp.0.XXX...
  • [erledigt]Frage zu TypeError: Converting circular

    1
    0 Stimmen
    1 Beiträge
    172 Aufrufe
    Niemand hat geantwortet

590

Online

32.7k

Benutzer

82.6k

Themen

1.3m

Beiträge