Weiter zum Inhalt

JavaScript

2.5k Themen 49.7k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • [gelöst] Funktionsunterschied

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    137 Aufrufe
    Ben1983B
    @paul53 OK, danke
  • Datenpunkt erstellen und im Anschluss sofort nutzen

    12
    1
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    BananaJoeB
    @grrfield sagte in Datenpunkt erstellen und im Anschluss sofort nutzen: if(!existsState("javascript.0.Testumgebung.Test2")) runScript(); Da das Neustarten nur beim ersten Anlegen der Datenpunkte passiert, stört es nicht weiter. Cool, Skripte können sich selbst neu starten. Wieder was gelernt.
  • gelöst: exec geht nicht?

    6
    0 Stimmen
    6 Beiträge
    200 Aufrufe
    Thomas BraunT
    @derrapf Klar, da hat der User ja auch die Rechte.
  • Script Ladesteuerung PV Wallbox

    3
    0 Stimmen
    3 Beiträge
    388 Aufrufe
    N
    @glasfaser Habe das nun geändert. War das der einzige Fehler? Bei Goingelectric (da ist das angepasste her) habe ich nach was einfachem geschaut aber nix gefunden. Das genannte scheint ja noch komplizierter zu sein. schedule("*/30 * * * * *", function () { if (getState("modbus.0.coils.400_Ladefreigabe").val == false) { setState("modbus.0.coils.400_Ladefreigabe"/*Ladefreigabe*/, true); setStateDelayed("modbus.0.coils.400_Ladefreigabe"/*Ladefreigabe*/, true, 3000, false); } // Aktuellen Ladestrom in Variable schreiben Ladestrom_verfuegbar = 0; Ladestrom_verfuegbar = getState("modbus.1.inputRegisters.52_Ladestrom").val; Aktueller_Ladestrom = getState("modbus.0.inputRegisters.100_Strom").val; // Den neuen LS kennen wir noch nicht -> 0 Neuer_Ladestrom = 0; if (Ladestrom_verfuegbar <= 1610) { if (Ladestrom_verfuegbar >= 1000 && Ladestrom_verfuegbar <= 1610) { // 6A ist Minimum, und da wir immer ein bisschen übrig haben wollen, gehen wir bis unter die Grenze von 7A hoch (1610W) Neuer_Ladestrom = 6; } else if (false) { } } else if (Ladestrom_verfuegbar >= 1611 && Ladestrom_verfuegbar <= 1840) { Neuer_Ladestrom = 7; } else if (Ladestrom_verfuegbar >= 1841 && Ladestrom_verfuegbar <= 2070) { Neuer_Ladestrom = 8; } else if (Ladestrom_verfuegbar >= 2071 && Ladestrom_verfuegbar <= 2300) { Neuer_Ladestrom = 9; } else if (Ladestrom_verfuegbar >= 2301 && Ladestrom_verfuegbar <= 2530) { Neuer_Ladestrom = 10; } else if (Ladestrom_verfuegbar >= 2531 && Ladestrom_verfuegbar <= 2760) { Neuer_Ladestrom = 11; } else if (Ladestrom_verfuegbar >= 2761 && Ladestrom_verfuegbar <= 2990) { Neuer_Ladestrom = 12; } else if (Ladestrom_verfuegbar >= 2991 && Ladestrom_verfuegbar <= 3220) { Neuer_Ladestrom = 13; } else if (Ladestrom_verfuegbar >= 3221 && Ladestrom_verfuegbar <= 3450) { Neuer_Ladestrom = 14; } else if (Ladestrom_verfuegbar >= 3451 && Ladestrom_verfuegbar <= 3680) { Neuer_Ladestrom = 15; } else if (Ladestrom_verfuegbar >= 3681 && Ladestrom_verfuegbar <= 3910) { Neuer_Ladestrom = 16; } else if (Ladestrom_verfuegbar >= 3911 && Ladestrom_verfuegbar <= 4140) { Neuer_Ladestrom = 17; } else if (Ladestrom_verfuegbar >= 4141 && Ladestrom_verfuegbar <= 4370) { Neuer_Ladestrom = 18; } else if (Ladestrom_verfuegbar >= 4371 && Ladestrom_verfuegbar <= 4600) { Neuer_Ladestrom = 19; } else if (Ladestrom_verfuegbar >= 4601) { Neuer_Ladestrom = 20; } // Jetzt wissen wir den neuen Ladestrom! Alt=neu? if (Aktueller_Ladestrom != Neuer_Ladestrom) { // Oh, was Neues! Gleich an PV_Ladestrom geben! console.log((['Ladestrom verändert, wird von ',Aktueller_Ladestrom,' verändert auf ',Neuer_Ladestrom].join(''))); setState("modbus.0.holdingRegisters.300_Ladestromstaerke", Neuer_Ladestrom); } else { // Nix Neues, nix zu tun console.log((['Ladestrom gleichgeblieben, bleibt bei ',Aktueller_Ladestrom,' (neu wäre ',Neuer_Ladestrom,' gewesen)'].join(''))); } } else { // Minimalerzeugung nicht erreicht, also wird nicht nach PV-Überschuss geladen! if (getState("modbus.0.coils.400_Ladefreigabe").val == true) { setState("modbus.0.coils.400_Ladefreigabe"/*Ladefreigabe*/, false); setStateDelayed("modbus.0.coils.400_Ladefreigabe"/*Ladefreigabe*/, false, 3000, false); } } } else { // Wir sind nicht im AUTO Modus des Ladereglers, nix zu tun } } else { // Wechselrichter schläft, nix zu tun. } });
  • Array funktioniert nicht [gelöst]

    3
    0 Stimmen
    3 Beiträge
    305 Aufrufe
    lws.najaL
    @paul53 Ich habe es nun gelöst dennoch danke für die Antwort. Hier die Lösung für die es benötigen. 'javascript.0.variables.Zeit_v_2'/*Zeit v 2*/ var Zeit_v_2 = 0; var max = 4; var zeit = [ 300000, 60000, 60000, 60000, 120000]; var interval = setInterval(counter, zeit[Zeit_v_2]); function counter() { if(Zeit_v_2 <= max) Zeit_v_2++; else Zeit_v_2 = 0; setState('javascript.0.variables.Zeit_v_2', Zeit_v_2, false); clearInterval(interval); interval = setInterval(counter, zeit[Zeit_v_2]); }
  • Scheduler: Übersicht

    4
    0 Stimmen
    4 Beiträge
    217 Aufrufe
    D
    Habs hinbekommen. Geht ja ganz einfach: schedule.pattern liefert die Uhrzeit. Gruss Ralf
  • Zeitpunkt eines Datenpunktes überwachen / Batteriekontrolle

    3
    0 Stimmen
    3 Beiträge
    271 Aufrufe
    S
    Moin, vielen Dank! Ich habe das in der Form mal ins Script eingebaut, ein Test mit einer Minute anstatt 24 Stunden hat prima geklappt. Werde das mal weiter beobachten, ob das so für mich funktioniert. Sonst melde ich mich hier nochmal.
  • JSON Datei lokal speichern

    Ungelöst
    5
    0 Stimmen
    5 Beiträge
    3k Aufrufe
    U
    @oliverio Ja, das scheint zu klappen. Und war unkomplizierter, als ich es mir vorgestellt habe. Vielen Dank!
  • [gelöst] Überwachen und schalten

    24
    0 Stimmen
    24 Beiträge
    2k Aufrufe
    O
    @paul53 said in Überwachen und schalten: Paul, vielen Dank für eine so tolle Hilfe
  • HTML Tabelle für alle Schedules in den Scripten

    template
    52
    2
    1 Stimmen
    52 Beiträge
    5k Aufrufe
    Agria4800A
    @liv-in-sky: hat nun geklappt, funktioniert
  • Skript löschen wegen ungültiger ID nicht möglich

    3
    0 Stimmen
    3 Beiträge
    474 Aufrufe
    F
    @falke69 Danke für Deine Antwort und ich habe ganz vergessen zu antworten. Leider hat alles nicht funktioniert und ich habe ein älteres Backup wieder eingespielt und entsprechend angepasst. Gruß Christian
  • (gelöst) Cannot redeclare block-scoped variable

    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    ice987I
    @alcalzone Vielen Dank für deine Rückmeldung. Evtl. könnte dies ja in zukünftigen Versionen behoben werden.
  • [Problem] HmIP-SPI per ioBroker deaktivieren

    6
    0 Stimmen
    6 Beiträge
    602 Aufrufe
    paul53P
    @aiko sagte: Die Probleme tauchen nicht mehr auf. Dann ändere bitte in der Überschrift des ersten Beitrags [Problem] in [gelöst].
  • Script für Solvis Max + SolvisRemote

    Verschoben javascript template
    6
    0 Stimmen
    6 Beiträge
    3k Aufrufe
    tvtotalT
    @peak3d [image: 1617633496064-69d25932-a053-4e25-bed8-66b997739707-grafik.png] Habe Dein script importiert, leider zeigt das script registered 0 subscriptions and 0 schedules an nach dem starten Was muss ich hier noch einstellen ? [image: 1617633769327-bca0b1af-75a6-41ab-abee-f6357a3cadd4-grafik.png] Datenpunkte wurden angelegt
  • simple-ssh wird nicht ausgefühert

    3
    0 Stimmen
    3 Beiträge
    345 Aufrufe
    T
    @mcu Ja Updates habe ich gemacht. Am Zielgerät nichts geändert.
  • Hilfe bei Script -Fehler no existing Object

    javascript heating climate
    3
    0 Stimmen
    3 Beiträge
    250 Aufrufe
    ChaotC
    @mcu Danke für die Antwort. Das Script liegt tatsächlich in der Instanz 1 die ich zum Testen nutze. Aber deine Idee mit dem Neustart der Instanz hat was gebracht. Scheinbar hat sich da irgendwas aufgehängt.
  • Warnemeldungen in der LOG

    3
    0 Stimmen
    3 Beiträge
    384 Aufrufe
    heinhanH
    @paul53 Klappt alles nicht. Es scheint am Adapter zu liegen, hier die LOG dazu: weatherunderground.0 2021-04-02 10:43:45.936 error (8878) No forecast data found in response weatherunderground.0 2021-04-02 10:43:43.246 error (8878) Wunderground reported an error: --/Error: options.uri is a required argument Habe das mal an GitHup weitergeleitet. Schöne Ostertage.
  • Schedule mit Bedingung

    3
    0 Stimmen
    3 Beiträge
    279 Aufrufe
    O
    @paul53 besten Dank ok, ich dachte/ hatte gehofft man kann, den Minutentakt wo die Bedingung (ist es Tag) geprüft wird, vermeiden und nur am Tage jede Minute die Funktion ausführen. Nachtrag: Ich hab gerade gesehen das ein Scripte selbst unter Objekte scriptEnable mit true false ein bzw. ausgeschaltet werden können. Würde es da nicht Sinn machen zum Event goldenHourEnd das Script auf True zu setzen und wenn sunsetStart erreicht ist wieder auf False? Dann triggert der nicht sinnlos jede minute durch die Nacht um festzustellen das er nicht die Funktion doch nicht aufrufen muss.
  • gelöst-suche hilfe bei tabelle mit scroll im tbody

    javascript
    25
    0 Stimmen
    25 Beiträge
    2k Aufrufe
    liv-in-skyL
    @oliverio wollt mich eh noch bedanken - konnte einiges umsetzen - auch nth-child konnte ich gut gebrauchen https://github.com/liv-in-sky/sonoff-iobroker-script
  • [Neu] Diverse async-Funktionen im JavaScript-Adapter

    javascript
    39
    3
    6 Stimmen
    39 Beiträge
    10k Aufrufe
    P
    @fastfoot sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter: @pittini sagte in [Neu] Diverse async-Funktionen im JavaScript-Adapter: Hm, ok, danke, ich ging davon aus das @Mic schon weis was er schreibt. wusste er :-) Seine state values fangen im Beispiel bei 1 an oder anders ausgedrückt: Wenn du deinen Wert prüfen willst, nimm if (stateObject && stateObject.val == Awtrix[x]) { Du hattest recht. Hab ich das zum testen grad so gemacht, das klappt auch: if (stateObject && typeof stateObject.val != "undefined") { Danke.

571

Online

33.0k

Benutzer

83.3k

Themen

1.3m

Beiträge