Skip to content

JavaScript

2.5k Topics 49.6k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Script den Objektstamm durchsuchen

    Moved
    6
    0 Votes
    6 Posts
    597 Views
    paul53P
    @longbow sagte: wie müsste es aussehen? const ids = $('shelly.0.*.Power').toArray(); const zielDatenpunkt = '0_userdata.0.Shelly.GesamtPower'; // Funktion: Summe berechnen function berechneSumme() { let summe = 0; ids.forEach((id) => { summe += parseFloat(getState(id).val) || 0; }); setState(zielDatenpunkt, summe, true); } on(ids, berechneSumme); berechneSumme(); // Scriptstart
  • Timeout in JS einbinden

    24
    0 Votes
    24 Posts
    2k Views
    ubeckerU
    @oliverio said in Timeout in JS einbinden: allerdings ist das auch nicht die priorität, ist ja eh nur für debugging genau. @oliverio said in Timeout in JS einbinden: Den Ende timestamp in einem datenpunkt merken und dann regelmäßig prüfen, ob er erreicht wird. Bzw. der datenpunkt existiert nur falls der Adapter neu gestartet wird, damit man wieder neu aufsetzen kann. Dann schreibt man nicht so oft in der Datenbank herum hier eigentlich unkritisch. Dann bleibt die Heizung weitere 5 Std. an. ich lass es erst mal beim normalen Teimout und werde das beobachten. danke an alle
  • ELV-SH-GVI per Java ansteuern / Problem

    8
    0 Votes
    8 Posts
    612 Views
    G
    @homoran Habe das Problem, aus einem anderen Forum erfahren. Die Steuerung hat den ON_TIME Befehl nicht erhalten, sondern nur den STATE Befehl. Ich vermute auf Grund der hohen dbM Werte ist ein Befehl "liegen" geblieben. Werde jetzt alles auf COMBINED_PARAMETER umstellen, da hier die ON_TIME und die STATE in einem Befehl geschickt werden. Dann dürfte dies theoretisch nicht mehr passieren. Danke für die Hilfe
  • npm @supabase/supabase-js klappt irgendwie nicht.

    2
    0 Votes
    2 Posts
    262 Views
    P
    Ok, also als Javascript scheint es zu klappen, nur Typescript will nicht. Naja, dann mach ich in Javascript weiter. Daten kommen schon mal rein.
  • (Erledigt) Datenpunkt setzen: Datentyp klappt nicht

    blockly javascript
    3
    2
    0 Votes
    3 Posts
    284 Views
    amg_666A
    @paul53 Danke, funktioniert.
  • Übersetzungen aus dem Netz ziehen

    14
    0 Votes
    14 Posts
    1k Views
    Ben1983B
    @mcm1957 OK, wüsste nicht wo das sein sollte Aber habe mir jetzt einfach von chatGPT ne übersetzung statisch geben lassen und switch case je nach state
  • [gelöst] desc aus Datenpunk auslesen

    11
    0 Votes
    11 Posts
    739 Views
    haus-automatisierungH
    @iob69 sagte in [gelöst] desc aus Datenpunk auslesen: Weiss jemand noch, ob man beim Erstellen eines Status diesen gleich in die history aufnehmen kann (programmatisch) und wenn ja, wie man die Parameter (wie geloggt wird) mitgeben kann? Am einfachsten per sendTo an die History-Instanz: https://github.com/ioBroker/ioBroker.history/blob/master/docs/de/README.md#verlaufsprotokollierung-über-javascript Ich würde nicht direkt die custom Optionen auf dem Objekt setzen (ggf. bekommt das die Instanz dann gar nicht mit und würde das Objekt erst nach einem Neustart der Instanz berücksichtigen).
  • Auslesen von Wert eines Objektes

    4
    0 Votes
    4 Posts
    323 Views
    snakepitnetworkS
    Ich danke Euch schon mal für die Aufklärung, ich probiere es gleich mal aus und gebe Rückmeldung!
  • Skript zur Visualisierung von Sendungen (Parcel-Adapter)

    55
    6
    2 Votes
    55 Posts
    8k Views
    Ro75R
    @matze55 alles was du wissen musst und was gebraucht wird, findest du im ersten Post. Ro75.
  • sento to photo

    5
    0 Votes
    5 Posts
    528 Views
    M
    @kellerkind-86 Sehr einfach ist auch die Variante über den Reolink Adapter /*****Bewegung Teich **************************************************** * Mai 2025 * Adapter: Reolink * geä: *************************************************************************/ const idtuer ="hm-rpc.0.LEQ1176852.1.STATE" const idmotion = "reolink.0.sensor.motion" on({ id: idmotion, change: "any" }, function (obj) { if ((obj.state.val == true) && getState(idtuer).val == false) { log("Motion Teich") sendTo("reolink.0", { action: "snap" }, function (result) { const buffer = Buffer.from(result.base64, "base64"); sendTo('telegram.0', { text: buffer, type: "photo", caption: 'Teich' }); }); } });
  • channelName von einem State holen

    6
    0 Votes
    6 Posts
    517 Views
    mcm1957M
    @ben1983 nur falls es nicht klar ist Ein state muss sich nicht unterhalb eines devices oder channels befinden.
  • Passwort Schutz javascript

    security
    10
    1 Votes
    10 Posts
    1k Views
    mcm1957M
    @peterfido Ja - das kann aber durchaus der Betreuer sein. Es muss nicht der "user" sein. Sollte auch mit fernwartung gehen. Aber das ist m.E. ein anderes Thema. Derzeit ist mir jedenfalls keine Möglichkeit bekannt das Ändern von Scripts / Blocklies zu sperren außer den Zugang zum System (via admin Passwort) zu sperren. Ich galub das beantwortet die urspüngliche Frage.
  • Smartfox Pro XML keine Daten

    Moved
    6
    0 Votes
    6 Posts
    481 Views
    OliverIOO
    @peterfido ja genau. ich hätte noch dazu schreiben sollen das ich hiermit die TLDs meine. @oliverio sagte in Smartfox Pro XML keine Daten: In Lan haben die meisten Geräte lan oder local Leider erst seit kurzem mit internal standardisiert, aber keine Pflicht https://www.heise.de/news/Ueberfaellig-ICANN-legt-sich-auf-Namen-fuer-interne-Domain-fest-9612253.html
  • Erste Schritte beim Scripten - Einsteigerfrage

    43
    0 Votes
    43 Posts
    5k Views
    D
    @doppellhelix Nach langer Sucherei habe ich es gefunden. Ich hatte im Adapter pv.forecast nicht den Haken gesetzt bei: "Werte in W statt kW."
  • regex von "www.esyoil.com"

    28
    1
    0 Votes
    28 Posts
    3k Views
    OliverIOO
    @haus-automatisierung Hab ich mir gedacht. Wie gesagt, es verhindert Adapter Updates. Sobald der Adapter maintainer es eingebaut hat ist es dann nicht mehr empfohlen sondern für Nutzer Pflicht um weitere Updates zu erhalten
  • Datentyp eines Boolean Datenpunktes ist String?

    7
    0 Votes
    7 Posts
    621 Views
    I
    @paul53 Ja, aber wie ich geschrieben hab, ordnet der wahr/falsch eben 1/0 zu und nicht true/false. Bin gerade am überlegen, ob ich auf vis2 oder webui wechsle. Die Controls in vis fühlen sich ziemlich gebastelt an und sind nicht standardisiert. (jqui-widgets haben alle andere Grössen und Stile, mal kann man jQuery style rausnehmen, mal nicht usw). Aber ich weiss nicht wie aufwendig es ist, meine rund 30 Seiten auf ein anderes gui umzustellen....
  • Skript läuft seit heute nicht mehr

    21
    0 Votes
    21 Posts
    3k Views
    M
    // Datenpunkte anlegen (Kann unter Umständen auskommentiert werden, wenn die Datenpunkte manuell angelegt wurden.) createState( trigger_auto, false, {name: 'Datenpunkt zur autmatischen Auslösung'}); createState( trigger_manu, false, {name: 'Datenpunkt zur manuellen Auslösung'}); createState( trigger_more_img, false, {name: 'Datenpunkt zur Abfrage weiterer Bilder'}); createState( disable, false, {name: 'Aktivierung/Deaktivierung des Versands per telegram'}); // Variablendeklaration und Initialisierung bei Scriptstart var stateTrigger_auto = getState(trigger_auto).val; var stateTrigger_manu = getState(trigger_manu).val; var stateTrigger_more_img = getState(trigger_more_img).val; var stateDisable = getState(disable).val; var request = require('request'); var fs = require('fs'); var timer; // Funktionen // ------------------------------------------- // Funktion Bilder versenden function sendImage (pfad) { setTimeout(function() { sendTo('telegram.4', { text: pfad, // reply_markup: { // keyboard: [ // ['Mehr Bilder', 'Danke'] // ], // resize_keyboard: true, // one_time_keyboard: true // } }); log('Webcam Bild per telegram verschickt.'); }, 2000); } // Funktion Bilder speichern function saveImage() { //get({url: cam_img, encoding: 'binary'}, function (err, response, body) { httpGet(cam_img, { responseType: 'arraybuffer' }, async (err, response) => { writeFile(img_path + 'cam1_1.jpg', body, 'binary', function(err) { if (err) { log('Fehler beim Speichern von Bild 1: ' + err, 'warn'); } else { log('Bild 1 gespeichert.'); sendImage(img_path + 'cam1_1.jpg'); } }); }); if (timer) { clearTimeout(timer); timer = null; } timer = setTimeout(function () { //get({url: cam_img, encoding: 'binary'}, function (err, response, body) { httpGet(cam_img, { responseType: 'arraybuffer' }, async (err, response) => { writeFile(img_path + 'cam1_2.jpg', body, 'binary', function(err) { if (err) { log('Fehler beim Speichern von Bild 2: ' + err, 'warn'); } else { log('Bild 2 gespeichert.'); } }); }); }, interval); timer = setTimeout(function () { // get({url: cam_img, encoding: 'binary'}, function (err, response, body) { httpGet(cam_img, { responseType: 'arraybuffer' }, async (err, response) => { writeFile(img_path + 'cam1_3.jpg', body, 'binary', function(err) { if (err) { log('Fehler beim Speichern von Bild 3: ' + err, 'warn'); } else { log('Bild 3 gespeichert.'); } }); }); }, 2 * interval); } // Trigger für die verschiedenen Aktionen // ------------------------------------------- // trigger_auto on(trigger_auto, function(dp) { stateTrigger_auto = dp.newState.val; stateDisable = getState(disable).val; if (stateTrigger_auto === true && stateDisable === false) { saveImage(); // setState(trigger_auto, false); // Option zum Zurücksetzen des Triggers. Standardmäßig auskommentiert, da sich der Bewegungsmelder automatisch zurück setzt. Bei Bedarf "//" am Zeilenafang entfernen. } }); // trigger_more_img on(trigger_more_img, function(dp) { stateTrigger_more_img = dp.newState.val; if (stateTrigger_more_img === true) { sendImage(img_path + 'cam1_2.jpg'); sendImage(img_path + 'cam1_3.jpg'); setState(trigger_more_img, false); } }); // trigger_manu on(trigger_manu, function(dp) { stateTrigger_manu = dp.newState.val; if (stateTrigger_manu === true) { saveImage(); setState(trigger_manu, false); } });
  • Alternative für createState (da deprecated)

    9
    0 Votes
    9 Posts
    852 Views
    mcm1957M
    @paul53 said in Alternative für createState (da deprecated): Das sollte wegen Abwärtskompatibilität unterbleiben! Major Releases können und werden immer wieder mal Breaking Changes enthalten. Das ist hier aber nicht wirklich das Thema. Der TE sollte nur mal seine Java Script Version 7 (!) aktualisieten. Dass diese mit js-controller 8 ggF inkompatibel werden könnte (betone könnte, derzeit ist mir das nicht bekannt) ist nicht auszuschliessen.
  • [gelöst/verschwunden] Warnung bei setState eines Alias

    javascript
    9
    0 Votes
    9 Posts
    871 Views
    SchmakusS
    Leute, was soll ich sagen….. Problem hat sich in Luft aufgelöst. Keine Ahnung. War von heute auf morgen verschwunden. 🤷‍♂️🤷‍♂️
  • Dateien kopieren mit Fehlerauswertung stdout,stderr,error

    7
    1
    0 Votes
    7 Posts
    605 Views
    OliverIOO
    @martinsu Oh Mann. Lese meinen ersten Post nochmal gaaaaanz genau durch. Ganz speziell den Part wo ich das Wort sudo erwähnte. Auch lese die Beschreibung von rsync mal genau durch, Du scheinst die Funktionsweise noch nicht ganz verstanden haben. Woher soll dieser Befehl den nun wissen von wo nach wohin er da was kopieren soll? Auch würde ich ihn nicht mit ssh ausführen. Rsync kann selbst ssh und wendet das beim kopieren auch an, wenn du die richtigen Parameter angibst. Alle Befehle des JavaScript Adapters werden mit dem Benutzer iobroker auf dem lokalen Rechner ausgeführt. Ausprobieren kannst du die shellbefehle wenn du auf der Konsole sudo -u iobroker bash Ausführst. Dann bist du mit der Berechtigung iobroker unterwegs und du kannst rsync oder ssh ausprobieren.

575

Online

33.0k

Users

83.3k

Topics

1.3m

Posts