Weiter zum Inhalt

JavaScript

2.5k Themen 49.9k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • openligadb css Aufrischung

    1
    1
    0 Stimmen
    1 Beiträge
    15 Aufrufe
    Niemand hat geantwortet
  • Musikstatus für Alexa und oder Sonos

    javascript multimedia
    1
    1
    0 Stimmen
    1 Beiträge
    31 Aufrufe
    Niemand hat geantwortet
  • [Skript] JONR-Saugroboter lokal steuern (hier: T5 Pro Gen1)

    1
    0 Stimmen
    1 Beiträge
    30 Aufrufe
    Niemand hat geantwortet
  • Zendure zenSDK Lokal API, SmartMode, SolarFlow AC 800 Pro 2

    533
    12 Stimmen
    533 Beiträge
    63k Aufrufe
    paul53P
    @maxclaudi sagte: Samrtphone BT ausschalten. Nur Zendure App öffnen und schauen ob Gerät offline-Status hat In der App werden die Werte des SF angezeigt, aber in der App kann ich nichts steuern. Ausgehende Protokolle werden ja nicht blockiert. EDIT: Die Werte werden in der App nicht aktualisiert.
  • Fotos von ftp laden und in vis anzeigen.

    2
    0 Stimmen
    2 Beiträge
    88 Aufrufe
    OliverIOO
    @stenmic damit der iobroker die dateien kennt muss man sie dort registrieren. es kommt darauf an über welchen weg du das machen möchtest einmal gibt es die shell befehle https://forum.iobroker.net/topic/85025/lokale-webseite-auf-dem-iobroker-wohin-kopieren/4?_=1787249161950 oder du kannst es selbst über den admin tab dateien/files machen oder per skript über den javascript adapter https://forum.iobroker.net/topic/25541/gelöst-wie-writefile-in-js-script-nutzen?_=1787249430099
  • Laden EBikeAkku via Shelly SmartPlug M Gen3 Steckdose

    11
    1
    0 Stimmen
    11 Beiträge
    356 Aufrufe
    G
    @dodi666 Danke, ich sehe jetzt, das geht mit Shelly auch. Etwas komplizierter als bei Meross, aber vermutlich ausreichend. Auf die Idee mit dem Standby-Killer bin ich vorher nicht gekommen. Und die Shelly habe ich mir auch nur gekauft, weil auf "Olafs Pedal&Service"-Seite dieses auf den Schalter ladbare Programm angepriesen wurde. Ich habs probiert, fand aber, wenn dann gehört das Script in den IOBroker, nicht auf die Steckdose. Ich nutze mein Programm aber sowieso etwas anders. Ich fahre wöchentlich eine größere Tour und habe zwei Akkus. Die lade ich, wenn ich zurückkomme nur mäßig voll (70%) um dann schnell nochmal aufzufüllen wenns ungeplant losgeht. Das Laden von 30% aus würde mir zu lange dauern. Von daher ist mein Programm nicht völlig vergeblich!
  • E-Herd pulsen über Hausverbracuh erkennen.

    8
    0 Stimmen
    8 Beiträge
    275 Aufrufe
    MartinPM
    Die Übergangsphasen, wo die PV nur noch einen Bruchteil der Nennleistung liefert sind das Problem. Oder recht kleine Anlagen, wo die Nennleistung kaum größer ist, als die Anschlussleistung des Herdes...
  • [TypeSkript] Wetter.com Forecast/Vorhersage

    78
    4 Stimmen
    78 Beiträge
    8k Aufrufe
    S
    zur info: es gibt nun einen Adapter (läuft auch parallel mit dem Skript ohne sich zu stören (bitte verschiedene API-Keys dann nutzen): https://forum.iobroker.net/topic/85179/test-adapter-iobroker.meteonomiqs-wetter.com
  • Icecast2 server ton abgriff

    1
    0 Stimmen
    1 Beiträge
    64 Aufrufe
    Niemand hat geantwortet
  • Zendure SolarFlow (MQTT) - Nulleinspeisung & EVCC-Optimizer

    72
    1 Stimmen
    72 Beiträge
    10k Aufrufe
    S
    Ich habe hier einen 2400 AC (ohne +).. da gibt es (noch?) keine 2.0.1...
  • Tankerkönig - Extended Skript

    javascript monitoring
    61
    4
    4 Stimmen
    61 Beiträge
    7k Aufrufe
    NashraN
    @Ro75 sagte: Ich sehe Änderungen in den Trends. Seit den gesetzlichen Änderungen fallen diese Trends nun anders aus. Was du machen kannst ist, den Datenpunkt reset_all_trends mal mit true setzen. Ro75. Hat leider nichts gebracht. Daraufhin mal alle DP gelöscht und Script neu gestartet..... Jetzt wird es angezeigt
  • Skript Luftdaten

    15
    10
    4 Stimmen
    15 Beiträge
    2k Aufrufe
    Ro75R
    Es kommt der Fehler 500 - vorrübergehend nicht zu erreichen. Das war vor längerer Zeit schonmal über eeiiinnnige Tage. Mehr kann ich dazu nicht sagen, da ich dieses Script abgelöst habe gegen mein Wetterscript was mit der OWM API arbeitet. Nur bin ich im Moment nicht bereit das ganze System hier zu veröffentlichen, da es 6 Adapter restlos ersetzt und 6500 Zeilen Code beinhaltet. Da ist mir der Support zu gewaltig, auch wenn die Konfig nur 5 Werte sind. Ro75.
  • Steuerung Laden Bosch EBikeAkku via MEROSS Steckdose

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    159 Aufrufe
    G
    Der Adapter in IOBroker für diese Steckdose macht nur alle halbe Stunde einen Update auf den Status. Deshalb habe ich jetzt ein Script für Shelly SmartPlug M Gen3 geschrieben.
  • Wie lege ich den Datenpunkt an?

    24
    0 Stimmen
    24 Beiträge
    1k Aufrufe
    KusselinK
    @Ro75 sagte: ja. Allerdings wirst du auf Dauer keinen Spaß haben, denn da wird ja jeden Tag mindestens ein weiterer Datenpunkt angelegt. Wenn du daraus eine Historie ableiten willst, völlig ungeeignet - wurde aber schon weiter oben angesprochen. Ro75. Hi Ro75, ich habe es jetzt so gelöst: // ═══════════════════════════════════════════════════════════════ // Einspeisung – Tageswert (wird täglich überschrieben) // ═══════════════════════════════════════════════════════════════ // ── Quell-Datenpunkte ────────────────────────────────────────── const DP_HEUTE_KWH = 'javascript.0.Einspeisung.heute_kWh'; const DP_HEUTE_EURO = 'javascript.0.Einspeisung.heute_euro'; // ── Ziel-Datenpunkte (fest, werden täglich überschrieben) ────── const DP_TAG_KWH = '0_userdata.0.Einspeisung.letzter_tag_kWh'; const DP_TAG_EURO = '0_userdata.0.Einspeisung.letzter_tag_euro'; const DP_TAG_DATUM = '0_userdata.0.Einspeisung.letzter_tag_datum'; // ── Jahressummen ─────────────────────────────────────────────── const DP_JAHR_KWH = '0_userdata.0.Einspeisung.jahr_kWh'; const DP_JAHR_EURO = '0_userdata.0.Einspeisung.jahr_euro'; // ── Archiv-Präfix ────────────────────────────────────────────── const DP_ARCHIV = '0_userdata.0.Einspeisung.Archiv.'; // ── Schutz vor Doppeladdierung ───────────────────────────────── const DP_LETZTER_RUN = '0_userdata.0.Einspeisung.letzter_run_datum'; // ═══════════════════════════════════════════════════════════════ // Datenpunkte anlegen // ═══════════════════════════════════════════════════════════════ createState(DP_TAG_KWH, 0, { name: 'Einspeisung letzter Tag', unit: 'kWh', type: 'number', role: 'value.energy', read: true, write: true }); createState(DP_TAG_EURO, 0, { name: 'Einspeisevergütung letzter Tag', unit: '€', type: 'number', role: 'value.money', read: true, write: true }); createState(DP_TAG_DATUM, '', { name: 'Datum letzter gespeicherter Tag', type: 'string', role: 'text', read: true, write: true }); createState(DP_JAHR_KWH, 0, { name: 'Einspeisung Jahr gesamt', unit: 'kWh', type: 'number', role: 'value.energy', read: true, write: true }); createState(DP_JAHR_EURO, 0, { name: 'Einspeisevergütung Jahr gesamt', unit: '€', type: 'number', role: 'value.money', read: true, write: true }); createState(DP_LETZTER_RUN, '', { name: 'Letztes Ausführungsdatum', type: 'string', role: 'text', read: true, write: true }); // ═══════════════════════════════════════════════════════════════ // Hauptfunktion // ═══════════════════════════════════════════════════════════════ function tageswertSpeichern() { const d = new Date(); const datum = `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`; // ── Schutz vor Doppeladdierung ───────────────────────────── const letzterRun = getState(DP_LETZTER_RUN).val; if (letzterRun === datum) { log(`⚠️ Tageswert für ${datum} wurde bereits gespeichert – Abbruch.`, 'warn'); return; } // ── Werte lesen ──────────────────────────────────────────── const tagesKwh = parseFloat(getState(DP_HEUTE_KWH).val) || 0; const tagesEuro = parseFloat(getState(DP_HEUTE_EURO).val) || 0; // ── Fehlerbehandlung: ungültige Werte ────────────────────── if (tagesKwh < 0 || tagesEuro < 0) { log(`❌ Ungültige Werte: ${tagesKwh} kWh / ${tagesEuro} € – Abbruch.`, 'error'); return; } if (tagesKwh === 0 && tagesEuro === 0) { log(`⚠️ Beide Werte sind 0 – kein Einspeisungstag oder Sensor-Fehler.`, 'warn'); } // ── Letzten Run-Datum speichern ──────────────────────────── setState(DP_LETZTER_RUN, datum, true); // ── Tagesdatenpunkte überschreiben ───────────────────────── setState(DP_TAG_KWH, tagesKwh, true); setState(DP_TAG_EURO, tagesEuro, true); setState(DP_TAG_DATUM, datum, true); // ── Jahressummen aufaddieren ─────────────────────────────── const neueKwh = Math.round(((parseFloat(getState(DP_JAHR_KWH).val) || 0) + tagesKwh) * 100) / 100; const neueEuro = Math.round(((parseFloat(getState(DP_JAHR_EURO).val) || 0) + tagesEuro) * 100) / 100; setState(DP_JAHR_KWH, neueKwh, true); setState(DP_JAHR_EURO, neueEuro, true); log(`✅ ${datum}: ${tagesKwh} kWh / ${tagesEuro} € gespeichert`, 'info'); log(`📊 Jahressumme: ${neueKwh} kWh / ${neueEuro} €`, 'info'); // ── Silvester: Jahresabschluss ins Archiv schreiben ──────── if (d.getMonth() === 11 && d.getDate() === 31) { jahresabschlussArchivieren(d.getFullYear(), neueKwh, neueEuro); } } // ═══════════════════════════════════════════════════════════════ // Jahresabschluss archivieren // ═══════════════════════════════════════════════════════════════ function jahresabschlussArchivieren(jahr, gesamtKwh, gesamtEuro) { const dpArchivKwh = DP_ARCHIV + jahr + '_kWh'; const dpArchivEuro = DP_ARCHIV + jahr + '_euro'; createState(dpArchivKwh, gesamtKwh, { name: 'Einspeisung Jahr ' + jahr, unit: 'kWh', type: 'number', role: 'value.energy', read: true, write: false }, () => { setState(dpArchivKwh, gesamtKwh, true); }); createState(dpArchivEuro, gesamtEuro, { name: 'Einspeisevergütung Jahr ' + jahr, unit: '€', type: 'number', role: 'value.money', read: true, write: false }, () => { setState(dpArchivEuro, gesamtEuro, true); }); log(`🗄️ Jahresabschluss ${jahr} archiviert: ${gesamtKwh} kWh / ${gesamtEuro} €`, 'info'); // ── Jahressummen zurücksetzen für neues Jahr ─────────────── setTimeout(() => { setState(DP_JAHR_KWH, 0, true); setState(DP_JAHR_EURO, 0, true); log('🔄 Jahressummen für neues Jahr zurückgesetzt.', 'info'); }, 3000); } // ═══════════════════════════════════════════════════════════════ // Täglich um 23:55 Uhr ausführen // ═══════════════════════════════════════════════════════════════ schedule('55 23 * * *', () => { tageswertSpeichern(); }); log('📋 Script "Einspeisung Jahressumme" gestartet – läuft täglich um 23:55 Uhr.', 'info');
  • Javascript Adapter: kein Logging unter dem Script mehr

    21
    0 Stimmen
    21 Beiträge
    425 Aufrufe
    fuzzy1955F
    @ofri2607 sagte: auch nicht? Ja danke, jetzt läuft es. Ich hatte den Logstatus auf "warn" statt "log" gestellt.
  • ioBroker Prozess- & Gesundheitsmonitor + Grafana + HTML

    javascript monitoring
    93
    5
    5 Stimmen
    93 Beiträge
    8k Aufrufe
    R
    ok danke denn ch bekam immer schon bei 40 % Ram Kritisch
  • Fenster offen Script

    15
    0 Stimmen
    15 Beiträge
    2k Aufrufe
    H
    Danke ! Genauso funktioniert es. Da wäre ich jetzt nicht drauf gekommen. Danke auch für die Schleife, habe 18 Fenster in der Überwachung und so reicht ein Blick aufs Tablet am Eingang um zu sehen, ob noch irgendwas offen ist.
  • Zeitsteuerung von Pittini

    1
    0 Stimmen
    1 Beiträge
    87 Aufrufe
    Niemand hat geantwortet
  • Omlet Hühnerstall webhook API

    42
    0 Stimmen
    42 Beiträge
    4k Aufrufe
    J
    Hallo, anbei das nun fertige Skript im ersten Post.
  • RAM Auslastung durch Javascript

    9
    0 Stimmen
    9 Beiträge
    451 Aufrufe
    Thomas BraunT
    @Mika-0 sagte: Debian GNU/Linux 12 (bookworm) Dringend auf 13 'Trixie' bringen. Verwende einen anderen username, NICHT iobroker. Der hat eigentlich schon die Rolle als Systemuser. Updates einspielen, sowohl die Pending systemupdates: 24 wie auch die ioBroker-Adapter. Diese Fehlerkategorie scheinst du in sehr vielen Skripten zu haben: 2026-07-14 10:15:30.119 - warn: javascript.0 (1895439) You are assigning a string to the state "0_userdata.0.Tasmota.OG_WZ.BewegungA" which expects a boolean. Please fix your code to use a boolean or change the state type to string. This warning might become an error in future versions. Beim Thema RAM fällt mir nichts ungewöhnliches auf. Sind für mich plausible Werte. 737MB verfügbar ist bei 4GB total vollkommen in Ordnung.

176

Online

33.0k

Benutzende

83.7k

Themen

1.3m

Beiträge