Skip to content

JavaScript

2.5k Topics 49.7k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Javaskript Datenpunkt mit Zeit für schedule() umformen

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

    5
    0 Votes
    5 Posts
    465 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
    298 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
    314 Views
    F
    @paul53 Danke Paul, werde ich dann berücksichtigen.
  • [gelöst]: Javascript Adapter kein Syntax highlighting mehr

    2
    0 Votes
    2 Posts
    312 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
    531 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. 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
    193 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
    224 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
    366 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
    297 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
    291 Views
    No one has replied
  • Wert wird nicht weitergegeben

    5
    0 Votes
    5 Posts
    405 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.
  • Datenpunkt neu erstellen und gleich beschrieben

    8
    0 Votes
    8 Posts
    1k Views
    W
    @paul53 Dann muss ich aber an jeder Stelle im Skript "setState" durch "if (existState()... else createstate(...)" ersetzen.
  • MariaDB 10 Werte manuell eintragen

    3
    0 Votes
    3 Posts
    366 Views
    F
    @oliverio Vielen Dank, funktioniert nun ...
  • InfluxDB mit Tages PV Vorhersage füllen

    16
    1
    0 Votes
    16 Posts
    4k Views
    moppel2810M
    Hallo Leute, ich versuche seit Tagen die Werte aus dem pv.forecast Adapter in grafana darzustellen und schaffe es nicht. Wie bekomm ich die Werte aus dem Adapter in grafana? Gibt es da ein Schritt für Schritt Anleitung?
  • Datenpunktlisten zusammenfassen

    4
    0 Votes
    4 Posts
    209 Views
    paul53P
    @wolfgangfb sagte: Ist Sensors quasi ein Array von Objekten während ids "nur" ein Array von Objektnamen ist? Sensors ist ein Objekt mit den Attributen 0, 1, ... , die IDs enthalten und dann am Ende length. ids ist ein Array von Datenpunkt-IDs und kann die IDs von Sensors und Switches enthalten.

245

Online

33.0k

Users

83.4k

Topics

1.3m

Posts