Weiter zum Inhalt

JavaScript

2.5k Themen 49.7k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • (gelöst)state von DP umbenennen

    5
    0 Stimmen
    5 Beiträge
    410 Aufrufe
    Chris76eC
    @paul53 Danke
  • asynch funktion

    29
    0 Stimmen
    29 Beiträge
    1k Aufrufe
    CodierknechtC
    @haus-automatisierung Da war ich tatsächlich schon. Hatte aber nach sowas wie "formatTime()" gesucht und bin dann bei "formatTimeDiff()" gelandet. Ein bisschen hochscrollen hätte das Problem gelöst. Manchmal ist es soooooo einfach
  • JS Script optimieren

    8
    0 Stimmen
    8 Beiträge
    700 Aufrufe
    ubeckerU
    @paul53 kurze Info, es funktioniert wie es soll. Von meinem langen code sind nur noch ein paar Zeilen übrig geblieben. Ein DP wurde nicht aktualisiert, lange gesucht warum. War ein Schreibfehler im Namen des Datenpunktes. "alias.0.z-wave.1_brightness", "alias.0.mqtt.1_brigthness" Danke für die hilfe
  • [gelöst] Zwischenresultate aus Datenpunkten loggen

    3
    0 Stimmen
    3 Beiträge
    144 Aufrufe
    D
    @codierknecht Super. Vielen Dank! Ich versuch das mal umzusetzen. Hat prima geklappt!
  • Android TV in Kombination mit KNX schalten

    3
    0 Stimmen
    3 Beiträge
    160 Aufrufe
    F
    Danke für die schnelle Antwort. Kann ich mir das dann so vorstellen das der Trigger dann wirklich nur ausgelöst wird, wenn sich der Status der Steckdose ändert? Es kann aber dennoch passieren, wenn ich einschalte, dass er gleich wieder ausschaltet, weil der Status von der Box noch nicht geändert ist? Dann müsste man doch eigentlich noch ein bisschen nach dem Einschalten warten, bis man das "Freigabe-Flag" (flag_switch_tv) setzt um den entgegenzuwirken oder?
  • gelöst Awtrix Display Spielstand per JS Post senden

    blockly javascript
    3
    1
    0 Stimmen
    3 Beiträge
    372 Aufrufe
    Ralla66R
    @paul53 sagte in Awtrix Display Spielstand per JS Post senden: body: JSON.stringify({text: Spielstand}) Danke, damit läuft es. Top Als Info noch, wer es in Tasmota Scripting benötigt gehts hiermit: =>WebQuery http://meine IP/api/notify POST {"text":"%var%"}
  • [GELÖST] Skript gibt [objekt Objekt] aus

    javascript
    51
    0 Stimmen
    51 Beiträge
    6k Aufrufe
    fischi87F
    @paul53 [image: 1708980784102-bildschirmfoto-2024-02-26-um-21.52.28.png]
  • Lidl Zigbee Zwischenstecker per sendTo zurücksetzen

    2
    0 Stimmen
    2 Beiträge
    379 Aufrufe
    P
    @wowbaggger Was meldet denn der Zigbee zurück? Ein Beispiel mit Callback gibt es hier
  • setState findet manuell erzeugtes Objekt nicht

    javascript
    19
    2
    0 Stimmen
    19 Beiträge
    2k Aufrufe
    S
    @shai0hulud Vorschlag funktioniert, konnte "idSetPrefix" aus der Funktion so natürlich entfernen, brauche jetzt nur noch 2 Optionen für die Funktion und hab mir von ChatGPT mit den Datumsformaten helfen lassen, da bei der restlichen Funktion ein anderes Datumsformat genutzt wurde und damit die Differenz in Tagen extrem groß wurde (knapp 20000 Tage statt nur 400 z.B.). Danke nochmal! Dass mit dem Schedule statt Timeout schaue ich mir auch noch an.
  • [gelöst] Script findet Datenpunkt nicht

    2
    2
    0 Stimmen
    2 Beiträge
    125 Aufrufe
    paul53P
    @delphinis Du versuchst, zwei nicht deklarierte Variablen zu addieren. Richtig: log(add(getState('0_userdata.0.MeinOrdner.Zahl_5').val, getState('0_userdata.0.MeinOrdner.Zahl_8').val)); EDIT: Funktionen des Javascript-Adapters.
  • Script in vis HTML Widget einbinden

    javascript
    6
    0 Stimmen
    6 Beiträge
    770 Aufrufe
    D
    @glasfaser said in Script in vis HTML Widget einbinden: a:modbus.0.inputRegisters.31255_Netzspannung_Phase Kurze Frage: Es ist wohl so, dass wenn ich einen Wert hier der Variablen a zuordne, dass dieser gleich in einen String gewandelt wird. Meist will man diese Werte weiterverrechnen und muss sie dann eben mit parseX() wieder in eine Zahl wandeln. Parsen ist aber eine teure funktion. Kann man die Werte nicht gleich als Zahl weiterverarbeiten, oder kommen die schon mit dem Parameter als Datenpunkt (modbus.0.inputRegisters.31253_Netzspannung_Phase_L1) rein?
  • HTMLTabelle UnifiClients-newAdapter

    javascript
    93
    3
    4 Stimmen
    93 Beiträge
    16k Aufrufe
    D
    @liv-in-sky Danke das wars
  • Auflistung von Zuständen einer bestimmten Funktion

    15
    0 Stimmen
    15 Beiträge
    504 Aufrufe
    Ben1983B
    @martinp ok. Kann ich verstehen… wobei ich nur an 1-2 dropdowns gedacht hätte… aber ok.
  • persist timer

    javascript
    4
    0 Stimmen
    4 Beiträge
    502 Aufrufe
    M
    Ich habe mir jetzt folgendes gebastelt. Damit übersteht das verzögerte Schalten auch nach Neutstart von ioBroker function clearStateDelayed_persist(id) { clearStateDelayed(id) setState(id+"_timer",JSON.stringify([])) } function setStateDelayed_persist(id,val,delay,clearRunning) { setStateDelayed(id,val,delay,clearRunning) var timer = getStateDelayed(id) var persist = [] for (var i = 0;i < timer.length;i++) { var timestamp = new Date(new Date().getTime() + timer[i].delay) var date = timestamp.toISOString() persist.push({"date":date,"val":val,"clearRunning":clearRunning}) } setState(id+"_timer",JSON.stringify(persist)) } function restore_setStateDelayed(id) { clearStateDelayed(id) var timer = JSON.parse(get(id + "_timer")) for (var i = 0;i < timer.length;i++) { var persist = timer[i] var delay = new Date(persist.date).getTime() - new Date().getTime() if (delay > 0) setStateDelayed(id,persist.val,delay,persist.clearRunning) } } /* Damit das Bespiel läuft muss der Datenpunkt 1. '0_userdata.0.Test.test_boolean' und 2. '0_userdata.0.Test.test_boolean_timer' vorhanden sein. */ var id = '0_userdata.0.Test.test_boolean' setStateDelayed_persist(id,false,2000) setStateDelayed_persist(id,false,3000,false) //clearStateDelayed_persist(id) setTimeout(function(){restore_setStateDelayed(id)},1000) on({ id: id, change: "any"}, function (obj) { log("getriggert") })
  • [gelöst] Alexa und doNotDisturb

    Verschoben javascript
    9
    0 Stimmen
    9 Beiträge
    836 Aufrufe
    H
    funktioniert...dankeschön!
  • wLED-Abfrage

    13
    1
    0 Stimmen
    13 Beiträge
    2k Aufrufe
    paul53P
    @haus-automatisierung sagte: Der Selector-Code ist ja etwas... undurchsichtig. Laut der Log-Ausgabe funktioniert der $Selector auch bei @baluderbär. @baluderbär Was ergibt im Log? var cacheSelectorwled = $('state[id=*.on](functions=Licht)[role=switch.light]'); cacheSelectorwled.each(function(id, i) { log(id); }); Es müssten 14 IDs untereinander erscheinen.
  • JS Problem Weather Script Air Quality :-(

    9
    0 Stimmen
    9 Beiträge
    686 Aufrufe
    M
    @olli_m So es wie aussieht hat es in dem Bereich ein Datenübertragungsproblem gegeben. Ich vermute, dass die Daten bald wieder gemeldet werden, ansonsten musst du eine andere Station in der Nähe suchen. [image: 1708199115445-581a64e6-e54c-430e-80b6-7da035399654-image.png]
  • Parser: TV-Sender Fußball Keine Daten mehr ....

    javascript
    1
    2
    0 Stimmen
    1 Beiträge
    217 Aufrufe
    Niemand hat geantwortet
  • [gelöst]: Wie kann man Tibber Durchschnittspreise errechnen?

    2
    1
    0 Stimmen
    2 Beiträge
    301 Aufrufe
    P
    Mein Sohn hat es gelöst: let start = 21 // values 0-23 let timePeriod = 4 // values 1-5 const allPrices = { 0: 0.1, 1: 0.26, 2: 0.32, 3: 0.38, 4: 0.31, 5: 0.122, 6: 0.25, 7: 0.35, 8: 0.177, 9: 0.366, 10: 0.14, 11: 0.288, 12: 0.1, 13: 0.344, 14: 0.1, 15: 0.322, 16: 0.1, 17: 0.377, 18: 0.1, 19: 0.266, 20: 0.1, 21: 0.37, 22: 0.13, 23: 0.25, } const averagePrice = startCalc(start, timePeriod) console.log(averagePrice) function startCalc(start, timePeriod) { const prices = Object.values(allPrices) const earlyTimePeriod = -24 + (start + timePeriod) const lateTimePeriod = 24 - (start) let hourPrices if(earlyTimePeriod <= 0) { // for hours 0-19 hourPrices = calcPrices(prices, 'default', timePeriod, start) } else { // for hours 20-23 let earlyHourPrices = calcPrices(prices, 'early', earlyTimePeriod) let lateHourPrices = calcPrices(prices, 'late', lateTimePeriod) hourPrices = earlyHourPrices + lateHourPrices } return calcAveragePrice(hourPrices, timePeriod) } function calcPrices(pricesArr, checkHours, timePeriod, start) { const prices = checkHours === 'late' ? pricesArr.reverse() : pricesArr const key = start || 0 let sum if(timePeriod === 1) { sum = prices[key] } else if (timePeriod === 2) { sum = prices[key] + prices[key + 1] } else if (timePeriod === 3) { sum = prices[key] + prices[key + 1] + prices[key + 2] } else if (timePeriod === 4) { sum = prices[key] + prices[key + 1] + prices[key + 2] + prices[key + 3] } else if (timePeriod === 5) { sum = prices[key] + prices[key + 1] + prices[key + 2] + prices[key + 3] + prices[key + 4] } return sum } function calcAveragePrice(hourPrices, timePeriod) { const averagePrice = hourPrices / timePeriod return averagePrice } natürlich sollte man oben die Tibber Preise aus den Objekten auslesen und dort einfügen. Die Zahlen sind reine Fantasiezahlen zum Testen
  • Frage zum Unifi-Script

    8
    0 Stimmen
    8 Beiträge
    445 Aufrufe
    A
    @negalein sagte in Frage zum Unifi-Script: Kannst du das noch genauer erklären? Zum kürzen bin ich nicht fit genug in JavaScript :) kannst ja aber im skript in den Einstellungen die Funktionen abschalten die du nicht benötigst. Zu den Vouchers: Habe Standard Vouchers definiert im Skript: const standardVouchers = {"zwei Tage" : {dauer: 2880, anzahl: 1, multiuse: 1, upload: 0, download:0, mb_begrenzung: 0, notiz:"Laufzeit: 2 Tage"}, "vier Tage" : {dauer: 5760, anzahl: 1, multiuse: 1, upload: 0, download:0, mb_begrenzung: 0, notiz:"Laufzeit: 4 Tage"}, "acht Tage" : {dauer: 10500, anzahl: 1, multiuse: 1, upload: 0, download:0, mb_begrenzung: 0, notiz:"Laufzeit: 8 Tage"}, "ein Jahr" : {dauer: 525600, anzahl: 1, multiuse: 1, upload: 0, download:0, mb_begrenzung: 0, notiz:"Laufzeit: 1 Jahr"}} Dann habe ich mir 4 States erstellt welche meine Telegramm instanz ansteuert -WlanCode2d ;4d; 8d; 1Jahr. Darauf reagiere ich mit dem Folgenden Skript: [image: 1707878269587-1.jpg] [image: 1707878307600-2.jpg] Hier das ganze Skript: 1.txt

221

Online

33.0k

Benutzer

83.4k

Themen

1.3m

Beiträge