Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Themen 48.9k Beiträge

NEWS

  • Differenz zwischen zwei Tagen / Werten

    15
    0 Stimmen
    15 Beiträge
    523 Aufrufe
    paul53P
    @hagst sagte: ich habe einen Datenpunkt: 0_userdata.0.aktueller-zaehlerstand Anmerkung: Hättest Du die ID strukturiert, z.B. "0_userdata.0.lichtschranke.zaehlerstand_aktuell", wäre ich nicht auf die Idee gekommen, die Differenz zu gestern "Verbrauch" zu nennen.
  • Hilfe bei der Script erstellung

    98
    0 Stimmen
    98 Beiträge
    10k Aufrufe
    T
    @oliverio Vielen dank für die Hinweise. Werde es in Zukunft beachten. Das true bei setState ist bei mir an dritter stelle weil es sonst nicht funktioniert. Oder könntest du mir ein Beispiel schicken wie es anders sein müsste? Ich benötige den wert von "response.data.data.trackingId" als bestätigten Eintrag im Datenpunkt. setState("0_userdata.0.eMessage.eMessage_Data.eMessage_TrackingID", response.data.data.trackingId, true);
  • [gelöst] Hilfe bei der Verwendung von JSON

    8
    2
    0 Stimmen
    8 Beiträge
    521 Aufrufe
    K
    Eine Frage habe ich dann doch noch: Aktuell läuft das Skript ja alle 10 Sekunden. Wie bekomme ich es hin, dass es zusätzlich zum schedule auch ausgeführt wird, wenn es gestartet wird und wenn der DP zur Sortierung sich ändert? EDIT: Habe es schon selber hinbekommen. Das ganze Skript in eine Funktion, die dann aufgerufen wird
  • [gelöst]Objektdaten von einer Instanz in die andere kopieren

    javascript
    7
    0 Stimmen
    7 Beiträge
    455 Aufrufe
    coyoteC
    @paul53 hatte ich nicht gesehen. Danke Dir
  • Javaskript Datenpunkt mit Zeit für schedule() umformen

    18
    0 Stimmen
    18 Beiträge
    1k Aufrufe
    paul53P
    @guybrushthreepwood-0 sagte: mit dem "dp" gemeint ist. Hier wird einfach der Wert aus idStartzeit übergeben? dp enthält das komplette Datenpunkt-Objekt von "0_userdata.0.gardenaVentilbox.automatik.Startzeit". dp.state.val enthält den Wert, also die Startzeit.
  • Objektbaum ex-/importieren als javascript-function?

    javascript
    1
    1
    0 Stimmen
    1 Beiträge
    237 Aufrufe
    Niemand hat geantwortet
  • setState schreibt Wert nicht

    5
    0 Stimmen
    5 Beiträge
    324 Aufrufe
    S
    @paul53 said in setState schreibt Wert nicht: javascript.0.Temperaturen.InnenMittelwert Vielen Dank, so ist es. var target = 'javascript.0.Temperaturen.InnenMittelwert'; // list all remperatures Insides here var inside_t =[ "ble.0.58:2d:34:3b:66:e3.temperature", // Wohnzimmer "ble.0.58:2d:34:3b:72:9f.temperature", // Schlafzimmer "ble.0.58:2d:34:3b:75:5c.temperature" // Küche ] on({id: inside_t, change: "any"}, function (obj) { var sum = 0 inside_t.forEach(function(item, index, array) { sum = sum + getState(item).val }); var result = sum / (inside_t.length) result = Math.round(result*100)/100 if ( !existsState(target)) { createState(target, result,{name: "Durchschnittstemperatur.", type: 'number', role: 'value'}, function () {}); } else { setState(target, result, true); } });
  • Unerklärlicher Typkonflikt

    13
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    BananaJoeB
    @thisoft das man persönlich den Überblick behält - gerade wenn es denn irgendwann mehrere duzend / hunderte von Variablen sind. Programmiersprachen ist auch ein Oberbegriff. Und solange dabei PHP, Pearl und Python in einem Atemzug mit C++, JavaScript und SQL genannt werden schäme ich mich für nichts :-) Wenn der Compiler nicht kann hindert einen nichts daran zumindest selbst den Überblick zu behalten. Meine Programme oder Skripte bestehen meist aus 10% der eigentlichen Aufgabe, 50% der Prüfung aller Eventualitäten und Fehlerfälle (Verlasse dich auf nichts! Sorge immer für einen definierten Zustand!) und die restlichen 40% sind Kommentare. Und der Chef will einfach nicht verstehen warum man etwas noch mal neu coden will weil es "sch....e aussieht"
  • [gelöst] Check DP schon vorhanden

    7
    0 Stimmen
    7 Beiträge
    240 Aufrufe
    K
    @wszene so sieht es aktuell mit der Einrichtung von DPs aus (achtung, noch ungetestet) let objekte = [ //3D-Drucker // Job {"pfad": "0_userdata.0.3d_drucker.Job", "name": "Jobname", "type": "string", "value": "", "unit": ""}, {"pfad": "0_userdata.0.3d_drucker.Job", "name": "Jobname_VIS", "type": "string", "value": "", "unit": ""}, // Farben {"pfad": "0_userdata.0.3d_drucker.LED-Steeurung", "name": "Anschalten", "type": "boolean", "value": "false", "unit": ""}, {"pfad": "0_userdata.0.3d_drucker.LED-Steeurung", "name": "Farbe_Gelb", "type": "boolean", "value": "false", "unit": ""}, {"pfad": "0_userdata.0.3d_drucker.LED-Steeurung", "name": "Farbe_Gruen", "type": "boolean", "value": "false", "unit": ""}, {"pfad": "0_userdata.0.3d_drucker.LED-Steeurung", "name": "Farbe_Weiss", "type": "boolean", "value": "false", "unit": ""}, ]; //Jeden DP erstellen, wenn noch nicht vorhanden objekte.forEach(objekt => { //Pfad zusammenbauen var id = 'objekt.pfad' + '.' + 'objekt.name'; //DP erstellen, wenn noch nicht vorhanden if(!existsState('id')){createState('id', objekt.value, {type: objekt.type ,name: objekt.name, unit: objekt.unit});} else{console.log('Datenpunkt ' + 'id' + 'ist schon vorhanden');} });
  • JS - Fehler.... Was ist hier Falsch?

    3
    2
    0 Stimmen
    3 Beiträge
    242 Aufrufe
    F
    @paul53 Danke Paul, werde ich dann berücksichtigen.
  • [gelöst]: Javascript Adapter kein Syntax highlighting mehr

    2
    0 Stimmen
    2 Beiträge
    257 Aufrufe
    D
    @johgre ich habe schon ein issue bei github aufgemacht https://github.com/ioBroker/ioBroker.javascript/issues/1074
  • Telegram Menü wieder löschen/entfernen

    3
    0 Stimmen
    3 Beiträge
    447 Aufrufe
    FredFF
    @bananajoe Probiere mal aus hide_keyboard: true Edit: ist wohl Blödsinn, da ersetzt durch remove_keyboard
  • Zigbee device specific configuration

    10
    0 Stimmen
    10 Beiträge
    3k Aufrufe
    C
    @asgothian vielen Dank für die ausführliche und sehr gut verständliche Erklärung. Ich schätze es sehr, dass Du Dir die Zeit nimmst, Newbies wie mir solche Hintergründe zu erläutern. :+1: :pray: Ich habe also entsprechend mal mein https://www.zigbee2mqtt.io/devices/SJCGQ11LM.html auf die Ausschlussliste gesetzt, und siehe da, nun passen die Datenpunkte auch zu den exposes :) Aber die Werte sind nun teilweise seltsam, bzw. sogar garnicht nicht vorhanden :-( über 3000V ist wohl eher unwahrscheinlich :D power outage count und der battery low indicator sollten doch schon was anzeigen, oder? [image: 1657807745688-e48f5f2f-2785-4ad4-91e5-2e17f9b7c069-grafik.png] Woran kann das liegen, bzw wie kann man das korrigieren? nicht ausgeschlossen sah das noch so aus: [image: 1657807707789-a3e17447-e7f5-4ef5-90b8-0279236662fb-grafik.png] und wenn ich mir das herdsman converter file zu dem device so ansehe, scheint das eher wenig Einfluss auf die Inhalte zu nehmen: [image: 1657807890825-bfe85c2d-7069-46e3-b179-4c0eef6eafa0-grafik.png]
  • 2 Fragen zu schedule

    2
    0 Stimmen
    2 Beiträge
    165 Aufrufe
    mickymM
    @wolfgangfb Wenn Du alle Stunden haben willst, musst Du die kleineren Einheiten auf feste Werte setzen. Wenn also alle Stunden gewünscht ist, dann bleibt der * bei Stunde, bei Minute trägst Du aber 0 (falls es Sekunde gibt ebenfalls ein Wert ein) wenn Du zu jeder vollen Stunde, oder halt eine andere Zahl - also zum Beispiel 5 - um dann 10:05 und 11:05 zu erhalten usw.
  • Influx Datensatz in Funktion lesen

    4
    0 Stimmen
    4 Beiträge
    181 Aufrufe
    haus-automatisierungH
    @wolfgangfb sagte in Influx Datensatz in Funktion lesen: Heißt das, dass Methode 1 auf jeden Fall auch abgearbeitet wird, aber manchmal eben zum Zeitpunkt der Ausgabe noch nicht fertig ist? Dann fällt mir noch auf, dass "await"rot unterkringelt ist (Fehler), das ganze aber funktioniert. Warum wird await markiert? Als Hinweis bekomme ich: Naja logisch, auf die erste Ausführung wartest Du ja auch nicht (mit await). Ich kann hier jetzt keine JavaScript-Grundlagen erklären. Stichworte für Google für dich sind Promise, then/catch resolve/reject, await/async, try/catch. Ich habe Dir zwei verschiedene Varianten aufgezeigt. Einmal mit then und einmal mit await. Es kommt auf den Context an, in welchem Du dich bewegst. await kannst Du nur in asynchronen Funktionen verwenden. Methode1 wird asynchron ausgeführt. Ob alles danach schneller oder langsamer ist, ist reiner Zufall. Daher wäre für dich wahrscheinlich await besser (falls eine async function drumrum ist). var Methode2 = []; for (var i = 0; i < DP.length; i++) { try { Methode2.push(await readInflux(DP[i], 5)); } catch (err) { console.log(err); } } Da das bei dir aber nicht der Fall sein wird (steht da ja -> await nicht auf top level), kannst Du auch eine anonyme Funktion definieren, welche sofort ausgeführt wird: (async () => { var Methode2 = []; for (var i = 0; i < DP.length; i++) { try { Methode2.push(await readInflux(DP[i], 5)); } catch (err) { console.log(err); } } })(); Da man das meiste aber eh innerhalb von Triggern machen wird, kann man die Callbacks einfach asynchron definieren. z.B. schedule('0 0 * * *', async () => { var Methode2 = []; for (var i = 0; i < DP.length; i++) { try { Methode2.push(await readInflux(DP[i], 5)); } catch (err) { console.log(err); } } });
  • Syncrone exec Funktion?

    3
    0 Stimmen
    3 Beiträge
    307 Aufrufe
    haus-automatisierungH
    @tomtaz sagte in Syncrone exec Funktion?: Gibt es eine möglichkeit auf das ende des exec zu warten um dann das nächste zu starten? Klar, mit Promises: let pingArray = [ "localhost", "google.de", "debian.org" ]; async function ping(hostnamme) { return new Promise((resolve) => { console.log(`Test-Ping to ${hostnamme} startet...`); exec(`ping -c 10 ${hostnamme}`, (error, stdout, stderr) => { resolve(stdout); }); }); } (async () => { for (let host of pingArray) { await ping(host); console.log(`Ping ${host} done....`); } })();
  • Textformatierung aus exec

    3
    1
    0 Stimmen
    3 Beiträge
    227 Aufrufe
    fischi87F
    @mickym sorry für meine späte Antwort aber du hast recht, hab den adapter genommen, danke dir!!!
  • [Vorlage] Bewässerung mit Gardena 6-Fach Verteiler

    javascript
    1
    0 Stimmen
    1 Beiträge
    251 Aufrufe
    Niemand hat geantwortet
  • Wert wird nicht weitergegeben

    5
    0 Stimmen
    5 Beiträge
    318 Aufrufe
    V
    Okay, welches Skript auch immer jetzt funktioniert, es geht nach einer Weile :) Werd das noch genau herausfinden... Danke!
  • async, await mit selector oder schleife????

    19
    0 Stimmen
    19 Beiträge
    2k Aufrufe
    AlCalzoneA
    @ple sagte in async, await mit selector oder schleife????: geht man davon aus, dass es garantiert beschrieben werden kann. Nein, musst du selbst abfangen. Kann ich meine function Main irgendwie abbrechen, wenn ein error bei irgendein await auftritt? z.B, das die Metadaten nicht geschrieben werden können, weil der SQL nicht erreichbar ist? Dann sollte der Rest auch nicht mehr laufen. Ja, try-catch um jedes setStateAsync und im catch die Funktion mit return verlassen. (Wäre die Variante wo du am meisten Kontrolle hast). Ansonsten kannst du auch den ganzen Schreibprozess in ein try-catch packen. Dann wird automatisch ins catch gesprungen, sobald ein Versuch fehlschlägt.

718

Online

32.6k

Benutzer

82.2k

Themen

1.3m

Beiträge