Skip to content

JavaScript

2.5k Topics 49.2k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Überwachung von Datenpunkte

    javascript
    3
    0 Votes
    3 Posts
    282 Views
    L
    @crunchip Die Infos die ich vom Sensor brauche, z.B: Bei einer Schaltbaren Steckdose Zustand Switch wenn vorhanden Verbrauch, Automatische Ausschaltzeit usw. Von einem Thermostat ungefähr 5 Werte usw. Im Moment versuche ich Aufzählungen und einem Json-Dp zu verbinden, also aus der Aufzählung den Namen des Sensoren, im Json suchen und alle vorgesehenen Werte auslesen. Ich glaube, das z.B. Punkt 2 doch die meisten Ressourcen verbraucht, da das Script doch dauernd auf der Lauer liegt. Aber ich habe ja keine große Ahnung von der Geschichte. MfG Wastl
  • (Gelöst) JSON und Javascript

    javascript
    4
    0 Votes
    4 Posts
    439 Views
    T
    @langer nur der vollständigkeithalber: let test = {"a":1, "b":2} if (test["a"] !== undefined) {} if (test.b !== undefined) {}
  • [gelöst]- Warum funktioniert meine IF-Abfrage nicht?

    3
    2
    0 Votes
    3 Posts
    209 Views
    mickymM
    @pingo Weil = 0 eine Zuweisung und kein Vergleichsoperator ist. Ändere in: if (WiGaTuer === 0)
  • mqtt parsen

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

    5
    0 Votes
    5 Posts
    479 Views
    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 Votes
    10 Posts
    700 Views
    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 Votes
    22 Posts
    2k Views
    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 Votes
    27 Posts
    2k Views
    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 Votes
    1 Posts
    104 Views
    No one has replied
  • [Vorlage] Simple Anrufer-Ansage via Alexa/tr-064

    javascript communication
    4
    0 Votes
    4 Posts
    1k Views
    B
    Hat auch 3 Jahre später noch gut funktioniert! :) Vielen Dank
  • Rolladensteuerung über Telegram

    49
    0 Votes
    49 Posts
    5k Views
    S
    @bahnuhr Achso ja schade. Das kann ich wiederum gar nicht :D
  • Blockly funktioniert nicht mehr wie es soll - Hilfe

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

    3
    0 Votes
    3 Posts
    257 Views
    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

    Locked
    766
    7 Votes
    766 Posts
    263k Views
    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 Votes
    24 Posts
    2k Views
    T
    @mike2712 war mehr ein Joke, weil es sich nicht wirklich lohn wegen 3%
  • Test SQL-Abfrage

    20
    0 Votes
    20 Posts
    454 Views
    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 Votes
    8 Posts
    1k Views
    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 Votes
    4 Posts
    556 Views
    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 Votes
    7 Posts
    819 Views
    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?

    Moved
    65
    0 Votes
    65 Posts
    7k Views
    L
    @paul53 Hatte eigenartigerweise nicht genügt. Auch kompletter Neustart des Raspi nicht. Erst mit der Umbenennerei ging es.

228

Online

32.8k

Users

82.7k

Topics

1.3m

Posts