Skip to content

JavaScript

2.5k Topics 49.7k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • (gelöst)state von DP umbenennen

    5
    0 Votes
    5 Posts
    410 Views
    Chris76eC
    @paul53 Danke
  • asynch funktion

    29
    0 Votes
    29 Posts
    1k Views
    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 Votes
    8 Posts
    700 Views
    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 Votes
    3 Posts
    144 Views
    D
    @codierknecht Super. Vielen Dank! Ich versuch das mal umzusetzen. Hat prima geklappt!
  • Android TV in Kombination mit KNX schalten

    3
    0 Votes
    3 Posts
    160 Views
    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 Votes
    3 Posts
    372 Views
    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 Votes
    51 Posts
    6k Views
    fischi87F
    @paul53 [image: 1708980784102-bildschirmfoto-2024-02-26-um-21.52.28.png]
  • Lidl Zigbee Zwischenstecker per sendTo zurücksetzen

    2
    0 Votes
    2 Posts
    379 Views
    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 Votes
    19 Posts
    2k Views
    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 Votes
    2 Posts
    125 Views
    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 Votes
    6 Posts
    770 Views
    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 Votes
    93 Posts
    16k Views
    D
    @liv-in-sky Danke das wars
  • Auflistung von Zuständen einer bestimmten Funktion

    15
    0 Votes
    15 Posts
    504 Views
    Ben1983B
    @martinp ok. Kann ich verstehen… wobei ich nur an 1-2 dropdowns gedacht hätte… aber ok.
  • persist timer

    javascript
    4
    0 Votes
    4 Posts
    502 Views
    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

    Moved javascript
    9
    0 Votes
    9 Posts
    836 Views
    H
    funktioniert...dankeschön!
  • wLED-Abfrage

    13
    1
    0 Votes
    13 Posts
    2k Views
    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 Votes
    9 Posts
    686 Views
    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 Votes
    1 Posts
    217 Views
    No one has replied
  • [gelöst]: Wie kann man Tibber Durchschnittspreise errechnen?

    2
    1
    0 Votes
    2 Posts
    301 Views
    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 Votes
    8 Posts
    445 Views
    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

224

Online

33.0k

Users

83.4k

Topics

1.3m

Posts