Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Topics 48.9k Posts

NEWS

  • Skript zum PiHole Version 6 an- und ausschalten

    Moved
    5
    1 Votes
    5 Posts
    497 Views
    OliverIOO
    Zum Test steht nun der neue pi-hole2 Adapter zur Verfügung https://forum.iobroker.net/topic/81472/neuer-adapter-pi-hole2-für-pihole-v6?_=1750927226913
  • [gelöst] 1 + 2 = 12?

    9
    2
    0 Votes
    9 Posts
    507 Views
    haus-automatisierungH
    @iob69 sagte in [gelöst] 1 + 2 = 12?: Edit: Das Control JQui Input liefert mir offenbar den String. Das hab ich nicht beachtet, dass der ja wohl auch für Buchstaben-Eingabe funktioniert. Allerdings kann man dort angeben "als string" was nicht der Fall war. Und man kann sogar stellen hinter dem Komma angeben. Er liefert trotzdem einen String... Dann ist das wohl ein Bug (oder so dokumentiert). Ansonsten könntest Du auch einen Alias nutzen um immer einen numerischen Wert zu parsen. Das Ziel von dem Input dann auf String umstellen, damit es keine Warnung im Log gibt
  • Frage zu URL() im Javascript adapter

    3
    2
    0 Votes
    3 Posts
    260 Views
    C
    @liv-in-sky vielen Dank! :pray:
  • Script den Objektstamm durchsuchen

    Moved
    6
    0 Votes
    6 Posts
    467 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
    445 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
    192 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
    223 Views
    amg_666A
    @paul53 Danke, funktioniert.
  • Übersetzungen aus dem Netz ziehen

    14
    0 Votes
    14 Posts
    729 Views
    Ben1983B
    @mcm1957 OK, wüsste nicht wo das sein sollte :dog: 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
    580 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
    218 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
    6k 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
    429 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
    414 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
    806 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
    362 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
    4k 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." :face_palm:
  • regex von "www.esyoil.com"

    28
    1
    0 Votes
    28 Posts
    2k 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
    496 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
    2k 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); } });

793

Online

32.6k

Users

82.2k

Topics

1.3m

Posts