Weiter zum Inhalt

Skripten / Logik

16.6k Themen 214.8k Beiträge

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Themen
    49k Beiträge
    maxclaudiM
    update 19.05.26 16:50h BatteryTypen
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    D
    Vielen Dank, ich habe es mit euerer Hilfe und Copilot geschafft :-)
  • Hilfe für Skripterstellung mit Node-RED

    957 13k
    957 Themen
    13k Beiträge
    M
    @geschild Du kannst in der Instanz den RAM erhöhen. Standard ist 128MB. Könnte etwas knapp sein. [image: 1778866701209-4987c65c-722e-46f5-8638-4db4554a203d-image-resized.jpeg]
  • Dieses Thema wurde gelöscht!

    0
    0 Stimmen
    0 Beiträge
    30 Aufrufe
    Niemand hat geantwortet
  • [gelöst] Werte einzeln aus JSON extrahieren für Anfänger

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    B
    @paul53 Vielen Dank jetzt sind die Werte da. Das mit "0_userdata.0" mache ich noch. Ich wollte nicht so viel verändern.
  • Virtuelle Sensor Smartthings

    3
    0 Stimmen
    3 Beiträge
    259 Aufrufe
    Vadim KumpanV
    @mickym Danke!!!
  • OpenKNX Multi Attribut Datenpunkt 20xx lesen/schreiben

    12
    2
    0 Stimmen
    12 Beiträge
    864 Aufrufe
    H
    @paul53 said in OpenKNX Multi Attribut Datenpunkt 20xx lesen/schreiben: Den Block "steuere" benötigt man nur einmal ganz am Ende. Auch zwei Blöcke "Setze Attribut" kann man sich dort sparen, wo das entsprechende Attribut nicht geändert wird. Wurde vereinfacht und etwas gelernt... Danke
  • [Vorlage] Script und VIS: Druckerpatronen Zustand

    Verschoben
    176
    2
    0 Stimmen
    176 Beiträge
    102k Aufrufe
    NegaleinN
    @negalein sagte in [Vorlage] Script und VIS: Druckerpatronen Zustand: schaun wir mal, ob ein Error bzgl. Timeout kommt. läuft jetzt bei meinem Deskjet pro 9010 Serie seit Tagen stabil. Keine Ausfälle trotz WLAN.
  • Sonos Musik Steuern mit Taste kurz und Taste lang

    5
    1
    0 Stimmen
    5 Beiträge
    466 Aufrufe
    AsgothianA
    @ft-knorr Du hast die entscheidende Frage nicht beantwortet. Wie sehen die Datenpunkte aus und wie verhalten sie sich. Die Einstellungen auf dem Sonos sind nicht wirklich relevant. A.
  • Eigenen JSON output für SimpleAPI erzeugen

    17
    0 Stimmen
    17 Beiträge
    1k Aufrufe
    E
    @homoran Super. Durch eure Tipps bin ich zur Lösung gekommen. Ich konnte in meinem Service auch das Format konfigurieren und mein getestetes boolean wird gar nicht erst unterstützt. Dieses konnte ich aber durch den Tipp mit dem umwandeln in Text lösen. Wieder was gelernt. Ich danke euch.
  • PVForecast Wert extrahieren

    6
    1
    0 Stimmen
    6 Beiträge
    579 Aufrufe
    paul53P
    @icebear sagte: Man müsste also auch den Tag prüfen. ... was im gezeigten Skript erfolgt.
  • Prüfe letzte Änderung von Wert

    13
    1
    0 Stimmen
    13 Beiträge
    949 Aufrufe
    paul53P
    @romestylez sagte: Was genau macht aber das "nicht" ? Es prüft, ob der Timeout nicht läuft, also abgelaufen ist, da Blockly die Timer-Variable bei Ablauf automatisch auf null setzt.
  • Growatt per rs 485 auslesen

    4
    0 Stimmen
    4 Beiträge
    465 Aufrufe
    C
    @karl-heinz1 Ich habe EVCC laufen, 2 Fronius WR einen Growatt MIC1500 tx WR - die Daten hole ich mir allerdings über einen Shelly PM mini. EVCC ist wirklich leicht zu installieren und läuft sogar auf einem Pi 2W Zero. Welche Komponenten hast Du denn genau?
  • Letzter Tick aus CRON?

    5
    2
    0 Stimmen
    5 Beiträge
    429 Aufrufe
    A
    @stefan-falt wäre es nicht sinnvoller, den letzten lauf immer zu protokollieren? dann hast du zwar mit jeder ausführung eine aktualisierung, aber das wäre dann auch die "wahrheit", falls das script mal abbricht (server startet durch, iobroker stürzt ab, ...). nebeneffekt wäre, dass dann automatisch um 3:59 die aktulaisierung mit drin steht und du das nicht zusätzlich abfangen musst.
  • Kryptokurse von CoinMarketCap abfragen

    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    OliverIOO
    @shellyrulestheworld ist hier evtl nicht so wichtig, aber toFixed rundet nicht kaufmännisch (1.104).toFixed(2) = 1.10 (1.105).toFixed(2) = 1.10 (1.106).toFixed(2) = 1.11 besser ist (Math.round(1.104*100)/100).toFixed(2) = 1.10 (Math.round(1.105*100)/100).toFixed(2) = 1.11 (Math.round(1.106*100)/100).toFixed(2) = 1.11 toFixed ist nur als Formatierungsfunktion zu gebrauchen um 0 aufzufüllen damit man auf die Anzahl nachkommastellen kommt Als allgemeine Funktion kann man sowas nehmen, diese Funktion bildet auch andere Zahlsysteme ab, aber alles was anders wie 10 ist, muss man noch weitere Schritte vornehmen. also einfach nur console.log(toFixedNumber(1.105,2)); function toFixedNumber(num, digits, base){ const pow = Math.pow(base ?? 10, digits); return Math.round(num*pow) / pow; }```
  • Object Max Wert lässt setValue Wert nicht zu

    37
    0 Stimmen
    37 Beiträge
    4k Aufrufe
    U
    @tomtomsen sagte in Object Max Wert lässt setValue Wert nicht zu: Funktioniert natürlich einwandfrei Verstehe ich nicht! Was funktioniert einwandfrei? Ausserdem könntest Du ... nachdem Du das Thema aufgebracht hast und auch das Problem hast... ein debug log vom Adapter zur Verfügung stellen. Die Leute hier wollen Dir (und anderen) nur helfen. Mit Deinem sparbetrieb an Informationen beim Wolf Support angefragt wird das gleich im Papierkorb landen @mcm1957 sagte in Object Max Wert lässt setValue Wert nicht zu: OK - wenn der Adapter kein offizielles Api benutzt mag es kontraproduktiv zu sein ioBroker zu erwähnen. Aber wenn es auch am offiziellen Portal (das so wie ich vermute der Adapter ausliest) nicht stimmt dann könnte Wolf helfen. Der Adapter wird schon die "offizielle" API nutzen. Ich habe trotz intensiver Suche noch keine Beschreibung einer API gefunden. Wen da jemand mehr hat?
  • openHASP

    1
    0 Stimmen
    1 Beiträge
    205 Aufrufe
    Niemand hat geantwortet
  • Zeitabhängige Benachrichtigung über Push Over

    6
    0 Stimmen
    6 Beiträge
    328 Aufrufe
    B
    @paul53 Top läüft !! Danke dir ! @Homoran Ja du hast recht, das währe ein Skript gewesen das ich zum Anlass zur Übung nehmen hätte können. Ich war mal schon viel weiter drin, Skripten ist aber scheinbar nicht wie Farad fahren, das verlernt Mann schon :-) Danke euch für eure tolle Arbeit hier, ich ge´b mir mehr mühe. Grüße Balu
  • Plausibilität/Aktualität von Messwerten erkennen?

    monitoring
    4
    0 Stimmen
    4 Beiträge
    465 Aufrufe
    S
    @tugsi Solche Probleme habe ich glücklicherweise nicht und ja das kannst du dann mit dem Zeitstempel abfragen.
  • Frage zu Funktion onLog

    3
    0 Stimmen
    3 Beiträge
    352 Aufrufe
    P
    @mcu Echt jetzt? Was da rauskommt, steht doch in der verlinkten Doku: "To receive all logs the * could be used. In this case, the log output in handler will be disabled completely." Wenn man auf alle Logeinträge triggert ('*') und dann einen Fehler ins Log schreibt, produziert man eine Endlosschleife. Um dies zu verhindern, wird das Schreiben ins Log deaktiviert. Also console.error wird nicht ausgeführt. Oder?
  • Script funktioniert nur bedingt

    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    CodierknechtC
    @manolo sagte in Script funktioniert nur bedingt: Thema kann geschlossen werden. Das kannst nur Du, indem Du den Eingangspost bearbeitest und ein "[gelöst] - " vor den Titel setzt.
  • Daten mit Blockly aus InfluxDB abrufen

    35
    1
    0 Stimmen
    35 Beiträge
    4k Aufrufe
    K
    @kdtcat ``` var parm1, parm2, result, BatteryLevel, PowerConsumptionTotal, PowerProductionTotal, EnergyProductionTotalDay, EnergyConsumptionTotalDay, EnergyExternalTotalOutDay, EnergyBatteryChargeDay, EnergyStorageTotalOutDay, StromverbrauchAnteilSolarTag, STromverbrauchAlleTag; // Beschreibe diese Funktion … async function iq(parm1, parm2) { // Beschreibe diese Funktion var ergebnis, fparm, fparm2; fparm = 'from(bucket: "solar") |> range(start: -1m) |> filter(fn: (r) => r["_field"] == ' + parm1 + ') |> aggregateWindow(every: 2m, fn: mean)'; fparm2 = '0_userdata.0.Enpal.' + parm2; sendTo('influxdb.0', 'query', fparm, async (result) => { test0 = (await jsonataExpression(result,'*[0]._value ')); setStateDelayed(fparm2, test0, true, parseInt(((0) || '').toString(), 10), false); }); return ergebnis; } schedule("*/2 * * * *", async () => { result = await iq('"Energy.Battery.Charge.Level"', 'BatteryLevel'); await wait(3000); BatteryLevel = Math.round(getState('0_userdata.0.Enpal.BatteryLevel').val * 100) / 100; setStateDelayed('0_userdata.0.Enpal.BatteryLevel', { val: BatteryLevel, ack: false }, parseInt(((0) || '').toString(), 10), false); result = await iq('"Power.Consumption.Total"', 'PowerConsumptionTotal'); await wait(3000); PowerConsumptionTotal = getState('0_userdata.0.Enpal.PowerConsumptionTotal').val; result = await iq('"Power.Production.Total"', 'PowerProductionTotal'); await wait(3000); PowerProductionTotal = getState('0_userdata.0.Enpal.PowerProductionTotal').val; result = await iq('"Energy.Production.Total.Day"', 'EnergyProductionTotalDay'); await wait(3000); EnergyProductionTotalDay = getState('0_userdata.0.Enpal.EnergyProductionTotalDay').val; result = await iq('"Energy.Consumption.Total.Day"', 'EnergyConsumptionTotalDay'); await wait(3000); EnergyConsumptionTotalDay = getState('0_userdata.0.Enpal.EnergyConsumptionTotalDay').val; result = await iq('"Energy.External.Total.Out.Day"', 'EnergyExternalTotalOutDay'); await wait(3000); EnergyExternalTotalOutDay = getState('0_userdata.0.Enpal.EnergyExternalTotalOutDay').val; result = await iq('"Energy.Battery.Charge.Day"', 'EnergyBatteryChargeDay'); await wait(3000); EnergyBatteryChargeDay = getState('0_userdata.0.Enpal.EnergyBatteryChargeDay').val; result = await iq('"Energy.Storage.Total.Out.Day"', 'EnergyStorageTotalOutDay'); await wait(3000); EnergyStorageTotalOutDay = getState('0_userdata.0.Enpal.EnergyStorageTotalOutDay').val; StromverbrauchAnteilSolarTag = EnergyProductionTotalDay - EnergyExternalTotalOutDay; StromverbrauchAnteilSolarTag = StromverbrauchAnteilSolarTag - EnergyBatteryChargeDay; setStateDelayed('0_userdata.0.Enpal.StromverbrauchAnteilSolarTag', { val: StromverbrauchAnteilSolarTag, ack: false }, parseInt(((0) || '').toString(), 10), false); STromverbrauchAlleTag = StromverbrauchAnteilSolarTag + EnergyStorageTotalOutDay + EnergyConsumptionTotalDay; setStateDelayed('0_userdata.0.Enpal.StromverbrauchAlleTag', { val: STromverbrauchAlleTag, ack: false }, parseInt(((0) || '').toString(), 10), false); console.info((['1: ',BatteryLevel,', 2: ',PowerConsumptionTotal,', 3: ',PowerProductionTotal,', 4: ',EnergyProductionTotalDay,', 5: ',EnergyConsumptionTotalDay,', 6: ',EnergyExternalTotalOutDay,', 7: ',EnergyBatteryChargeDay,', 8: ',EnergyStorageTotalOutDay,', 9: ',StromverbrauchAnteilSolarTag,', 10: ',STromverbrauchAlleTag].join(''))); });
  • Funktion zum Seitenabruf per Get funktioniert nicht mehr

    10
    0 Stimmen
    10 Beiträge
    919 Aufrufe
    jolicJ
    @haus-automatisierung said in Funktion zum Seitenabruf per Get funktioniert nicht mehr: @jolic Dann schau gerne mal in die Doku und verwende die asynchronen Funktionen httpGetAsynx und httpPostAsync. Dann haste auch ein Promise. Danke dir, das ist gut zu wissen! Da der interne httpGet-Befehl in ioBroker nativ verfügbar ist, werde ich mir diesen bei meinem nächsten Projekt genauer anschauen.

378

Online

32.9k

Benutzer

83.0k

Themen

1.3m

Beiträge