Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Topics 48.9k Posts

NEWS

  • Differenz zwischen zwei Tagen / Werten

    15
    0 Votes
    15 Posts
    523 Views
    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 Votes
    98 Posts
    9k Views
    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 Votes
    8 Posts
    521 Views
    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 Votes
    7 Posts
    454 Views
    coyoteC
    @paul53 hatte ich nicht gesehen. Danke Dir
  • Javaskript Datenpunkt mit Zeit für schedule() umformen

    18
    0 Votes
    18 Posts
    1k Views
    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 Votes
    1 Posts
    237 Views
    No one has replied
  • setState schreibt Wert nicht

    5
    0 Votes
    5 Posts
    322 Views
    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 Votes
    13 Posts
    1k Views
    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 Votes
    7 Posts
    240 Views
    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 Votes
    3 Posts
    239 Views
    F
    @paul53 Danke Paul, werde ich dann berücksichtigen.
  • [gelöst]: Javascript Adapter kein Syntax highlighting mehr

    2
    0 Votes
    2 Posts
    257 Views
    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 Votes
    3 Posts
    446 Views
    FredFF
    @bananajoe Probiere mal aus hide_keyboard: true Edit: ist wohl Blödsinn, da ersetzt durch remove_keyboard
  • Zigbee device specific configuration

    10
    0 Votes
    10 Posts
    3k Views
    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 Votes
    2 Posts
    165 Views
    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 Votes
    4 Posts
    181 Views
    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 Votes
    3 Posts
    307 Views
    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 Votes
    3 Posts
    227 Views
    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 Votes
    1 Posts
    250 Views
    No one has replied
  • Wert wird nicht weitergegeben

    5
    0 Votes
    5 Posts
    318 Views
    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 Votes
    19 Posts
    2k Views
    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.

765

Online

32.6k

Users

82.2k

Topics

1.3m

Posts