Weiter zum Inhalt

JavaScript

2.5k Themen 49.2k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Schalter switch über CCU 3 steuern bzw. an / aus schalten

    11
    1
    0 Stimmen
    11 Beiträge
    302 Aufrufe
    paul53P
    @sk-koeln sagte: Es wird immer wieder auto von Off auf on gesetzt. Mit der Quelle "system.adapter.javascript.0" oder einer anderen Quelle?
  • Variablenverhalten in Funktionen

    javascript
    3
    0 Stimmen
    3 Beiträge
    303 Aufrufe
    PlasmachefP
    @oliverio Danke für deine Antwort auf meine Anfrage! Ich bin zu 95% in Blockly unterwegs und das deklariert sehr früh die Variablen, was wahrscheinlich auch zu dem Problem führt. Werde mich einlesen in den beigefügten Link und auch mal versuchen mit reinem Skript zu arbeiten um die Deklaration besser beeinflussen zu können. Jetzt habe ich einen roten Faden :-) Du hast mir sehr geholfen ... Danke dir!
  • [Vorlage] Flexibles Timerskript + Vis

    javascript template
    500
    1
    7 Stimmen
    500 Beiträge
    126k Aufrufe
    D
    Ich werde doch auf mehrfachen Wunsch meine Änderungen am Timer-Script hochladen. Es ist für mich (maß)geschneidert und auch von mir nur in den Funktionen getestet, die mich interessieren. Ich kann deshalb keine Verantwortung dafür übernehmen, wenn was nicht mehr funktioniert. Angepasst wurde: Einfügen eines Sortier-DP als String, sortiert wird nach dem Eintrag des Feldes, danach nach Zeit Mit Klick auf eine Zeile in der Tabelle wird automatisch der Timer zum Editieren ausgewählt. Ich bekam bei Neuzuordnung des TimerTarget zu einem DP den Eintrag in die Target-Liste erst nach einem Restart des Skripts, das habe ich auch angepasst. Sollte es bei anderen immer schon funktioniert haben, dann habe ich wohl ein Problem gelöst, das ich mir selbst geschaffen habe. In meinem Fall sieht die Timer-Liste jetzt so aus: [image: 1679827530265-cf3f68de-a911-47a1-94c8-0f3d720f6d2d-grafik.png] Allerdings sind zwei Anpassungen notwendig: Einfügen von Code in die View unter Skripte: function selectTimer(idTimer) { var sel = document.getElementById("w00024_multiselect"); sel.value = idTimer; $(sel).change(); } Aber der Code muss an die View angepasst werden: Selektieren des Timer-Select-Elementes im Editierbereich. Dann sieht man die ID des Elementes. Der Name muss in den Code übernommen werden. [image: 1679827915385-89eaae80-5419-4862-9024-beda34bdbd33-grafik.png] Timerskript.zip Widgets.zip Zu den Widgets: Irgendwie bekomme ich die Größe des Zeit-Elemente nicht so schön hin, wie ich es bei anderen hier gesehen habe. Also prüft bitte vorher (und sichert alles), bevor eine Übernahme was zerstört. Das war es dann eigentlich. PS: Ich möchte hier auch auf eine Frage hinweisen, die gestellt habe, weil ich diese "SubView" nicht so in mein System bringe wie ich es mir wünsche. Vielleicht kann mir einer von Euch dabei helfen. https://forum.iobroker.net/topic/63977/viewbackground-in-widged8?_=1679157863135
  • Script funktioniert manchmal nur nach Script Neustart

    4
    0 Stimmen
    4 Beiträge
    364 Aufrufe
    C
    @bahnuhr Wie gesagt "ne" hab ich auch schon drin gehabt, funktioniert auch. Die "1002" ist eine Zahl, sozusagen der Status für einmal kurz drücken - der springt dann wieder zurück auf "0". Es stimmt was du sagst....die Variable "sender" hat am Anfang "0", ich wollte hier nur eine Ausgabe machen ob er hier im Programm durchkommt bzw ob Sender "0" hat abfragen. Das unten mit dem sender == 6 ist natürlich quatsch, sollte heissen sender > 6. @GombersIOB Das mit der Klammer probiere ich mal..... Komisch ist nur das der Code einwandfrei funktioniert und spätestens nach einem Tag passiert hier gar nix mehr. Script Pause und wieder Play und dann läuft er wieder ohne zu murren für einen weiteren Tag. Hab den Codeteil mit dem "on id" vom Bad mal in der Küche reingenommen....wenns im anderen Raum funktioniert muss es hier ja auch gehen.
  • Mehrere Variablen übergeben (Stapelverarbeitung)

    javascript
    8
    0 Stimmen
    8 Beiträge
    690 Aufrufe
    paul53P
    @blackforst sagte: Ch0 sind die Werte des Wechselrichters Also "ch1" bis "ch4"? Ohne das kleine "i" in der Ziel-ID wäre es sehr einfach mit einem $-Selektor und replace(): const idsSrc = $('mqtt.0.inverter.HM1500.ch*'); idsSrc.on(function(dp) { if(!dp.id.includes('.ch0.')) { let idDst = dp.id.replace('mqtt.0.inverter.HM1500.ch', 'beckhoff.0.plc.GVL_iobroker.stPhotovoltaik.stPhotoZelle'); setState(idDst, dp.state.val); } }); Mit dem kleinen "i" erstelle zwei Arrays mit je 24 Datenpunkt-IDs in gleicher Reihenfolge. EDIT: Oder verwende für jedes Panel einen eigenen Trigger: $('mqtt.0.inverter.HM1500.ch1.*').on(function(dp) { let idDst = dp.id.replace('mqtt.0.inverter.HM1500.ch1.', 'beckhoff.0.plc.GVL_iobroker.stPhotovoltaik.stPhotoZelle1.i'); setState(idDst, dp.state.val); }); $('mqtt.0.inverter.HM1500.ch2.*').on(function(dp) { let idDst = dp.id.replace('mqtt.0.inverter.HM1500.ch2.', 'beckhoff.0.plc.GVL_iobroker.stPhotovoltaik.stPhotoZelle2.i'); setState(idDst, dp.state.val); }); $('mqtt.0.inverter.HM1500.ch3.*').on(function(dp) { let idDst = dp.id.replace('mqtt.0.inverter.HM1500.ch3.', 'beckhoff.0.plc.GVL_iobroker.stPhotovoltaik.stPhotoZelle3.i'); setState(idDst, dp.state.val); }); $('mqtt.0.inverter.HM1500.ch4.*').on(function(dp) { let idDst = dp.id.replace('mqtt.0.inverter.HM1500.ch4.', 'beckhoff.0.plc.GVL_iobroker.stPhotovoltaik.stPhotoZelle4.i'); setState(idDst, dp.state.val); });
  • Script trigger alle 5 minuten nach wechsel Bewegungsmelder

    3
    3
    0 Stimmen
    3 Beiträge
    160 Aufrufe
    wendy2702W
    @emil70 danke für deine Antwort. Jetzt wird es spannend, letzte Nacht hat es irgendwann aufgehört und jetzt scheint es wieder wie vorher zu funktionieren.
  • Python3 Skript in Iobroker einbinden

    30
    0 Stimmen
    30 Beiträge
    4k Aufrufe
    rrov1R
    @fibs Das Python-Skript passt nicht. Zum einen fehlen an verschiedenen Stellen die Einrückungen, wobei ich vermute mal das liegt ein der Einbettung des Codes hier im Forum, zum anderen sind wieder die input()-Funktionsaufrufe drinnen, welche dazu führen, dass das Skript stehen bleibt und auf Eingabe wartet. Ich habe dir noch mal eine Version mit Parametern hier beigelegt: Main.py . Was mir noch aufgefallen ist, du hast jetzt einen vierten Wert den du per input() Abfragst, den habe ich gleich mit als jetzt 4 Parameter eingebaut. Damit brauchst du jetzt auch einen vierten Datenpunkt in ioBroker + einen vierten Parameter im Javascript. Nicht vergessen, sonst geht das nicht.
  • Flexibler Schedule für Rolladensteuerung über Jarvis steuern

    10
    1
    0 Stimmen
    10 Beiträge
    790 Aufrufe
    M
    @paul53 Danke dir für deine Unterstütztung! Ich werde jetzt deinen Vorschlag so weiterverwenden. :)
  • Was will mir diese Meldung sagen ?

    3
    3
    0 Stimmen
    3 Beiträge
    279 Aufrufe
    paul53P
    @griessbx sagte: Bekomme aber eine Warnmeldung Im Tab "Protokolle" erhält man weitere Informationen zu den Warnungen. Vermutung: Datenpunkt-Typ passt nicht?
  • $-Selector und Objekte vom Typ: host/instance

    javascript
    1
    0 Stimmen
    1 Beiträge
    152 Aufrufe
    Niemand hat geantwortet
  • Skript läuft doppelt - wie Zombie abschalten

    10
    0 Stimmen
    10 Beiträge
    281 Aufrufe
    W
    @bahnuhr Bei mir läut nur eine JS Instanz.
  • [gelöst]Neg. Ergebniss aus Berechnung auf 0 setzen

    3
    0 Stimmen
    3 Beiträge
    327 Aufrufe
    paul53P
    @peter666666 sagte: ein neg. Ergebniss aus einer Berechnung auf 0 setzen lassen und nur pos. Ergebnisse in den DB schreiben? Einen Alias für Bezug erstellen mit Read-Konvertierung: val > 0 ? val : 0 Falls der Ursprungs-Datenpunkt bei Bezug negative Werte liefert: val < 0 ? -val : 0
  • Warten auf das Ergebnis der Funktion aus influxdb

    3
    0 Stimmen
    3 Beiträge
    262 Aufrufe
    C
    @arteck Vielen Dank für deine Antwort. Das hatte ich bereits probiert und bekomme immer beim await diese Fehlermeldung: 'await' expressions are only allowed within async functions and at the top levels of modules.(1308) index0.js(62, 16): Did you mean to mark this function as 'async'? Hatte das dann versucht einzupacken in: async function main() { } Hat allerdings alles nichts gebracht... irgendeine Fehlermeldung kommt immer...
  • Abstract base class

    Ungelöst
    1
    0 Stimmen
    1 Beiträge
    208 Aufrufe
    Niemand hat geantwortet
  • Skalierbares Skript zur Steuerung einer Fussbodenheizung

    1
    1 Stimmen
    1 Beiträge
    178 Aufrufe
    Niemand hat geantwortet
  • [gelöst] getState Fehler ausblenden

    javascript
    3
    0 Stimmen
    3 Beiträge
    118 Aufrufe
    K
    @paul53 oh man, natürlich. Es kann manchmal so einfach sein. Vielen Dank
  • Programmsuchdatei in Java

    Ungelöst
    5
    0 Stimmen
    5 Beiträge
    561 Aufrufe
    CodierknechtC
    @oliverio sagte in Programmsuchdatei in Java: Warum Java? Die dunkle Seite der Macht Nicht zu verwechseln mit JavaScript.
  • Funktion deklarierte Datei JavaScript

    2
    0 Stimmen
    2 Beiträge
    254 Aufrufe
    paul53P
    @jacusi Mit require() lädt man Module, die als solche deklariert sind. 'use strict'; module.exports = function (a, b) { return a + b; }; Aufruf: const add = require('./13-add'); // Pfad muss passen! log(add(3,5)); Damit eigene Module mit gesichert werden, habe ich sie unter "iobroker-data.modules" gespeichert. const add = require('../../../iobroker-data/modules/13-add'); log(add(3,5));
  • Hue zählen wenn vom Strom getrennt

    1
    0 Stimmen
    1 Beiträge
    169 Aufrufe
    Niemand hat geantwortet
  • E3DC

    2
    2
    0 Stimmen
    2 Beiträge
    183 Aufrufe
    Niemand hat geantwortet

611

Online

32.8k

Benutzer

82.7k

Themen

1.3m

Beiträge