Skip to content

JavaScript

2.5k Topics 49.2k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • [gelöst] Script setzt keine states

    4
    0 Votes
    4 Posts
    129 Views
    jmeister79J
    @gaspode danke @Ro75 Danke Ich bin sooo dumm. Hatte mich über die Roten einträge geärgert... 1000 Dank
  • Gelöst: Trigger mit mehreren Auslösern

    5
    0 Votes
    5 Posts
    406 Views
    S
    @paul53 Vielen Dank, du hast Recht, so ist es wirklich besser. Bei nur einem Code hatte es gut geklappt. Ich hatte dann noch ein paar andere RFCodes mit anderen Aktionen in das Script aufgenommen und nur mit der "dp.state.val == " Variante klappt das wirklich sauber.
  • Comparetime mit GMT Zeiten

    3
    0 Votes
    3 Posts
    131 Views
    W
    @liv-in-sky Danke für den Tipp mit dem umrechnen in GMT, ich bin aber ehrlich gesagt ein Freund von Programmcode, bei dem ich auch nach einem halben Jahr noch auf den ersten Blick sehe, was da eigentlich passiert. Ich habe das jetzt wie folgt gelöst (könnte man natürlich auch als Einzeiler screiben): var Now = new Date(); console.log("GMT " + formatDate(GMT(Now), "YYYY.MM.DD_hh:mm")); console.log("MEZ " + formatDate(Now, "YYYY.MM.DD_hh:mm")); var CompareMEZ = compareTime("12:00", "14:00", "between") var CompareGMT = CompareTimeGMT("12:00", "14:00", "between"); console.log("CompareGMT " + CompareGMT + " CompareMEZ " + CompareMEZ); function GMT(Time){ var TimeNumber = Number(Time); var TimeOffset = Time.getTimezoneOffset(); // Minuten, negativ: -60 Winter, -120 Sommer return new Date(TimeNumber + TimeOffset * 60 * 1000); } function CompareTimeGMT(startTime, endTime, operation){ var NowGMT = GMT(new Date()); return(compareTime(startTime, endTime, operation, NowGMT)); } Das Ergebnis ist: 14:47:27.957 info javascript.0 (1498) script.js.Programmieren.Zeiten.gmt: GMT 2023.04.07_12:47 14:47:27.957 info javascript.0 (1498) script.js.Programmieren.Zeiten.gmt: MEZ 2023.04.07_14:47 14:47:27.958 info javascript.0 (1498) script.js.Programmieren.Zeiten.gmt: CompareGMT true CompareMEZ false
  • Trigger zum einschalten -nur 1x

    11
    0 Votes
    11 Posts
    761 Views
    O
    @codierknecht Versuch ich, alles zum gleichen Thema an einen Platz, z.B. alles was beim sonnenuntergang passieren soll. einiges davon soll aber vorher schon durch Mensch oder andere Einflüsse ausgeschaltet werden können. und die Scripte sollen ja auch nicht zu riesig werden und lesbar bleiben. Werd mir mal überlegen doch einige zusammenzulegen. Alternativ mach ich shift -10 Minuten schedule({astro: "solarNoon", shift: -10}, async function () {
  • nspanel script: state im alias bleibt 0

    10
    0 Votes
    10 Posts
    701 Views
    M
    @tt-tom hier nochmal das Ergebnis vom log: javascript.0 2023-04-03 21:30:03.740 info script.js.NSPanel.Muell_JS: Bio = true javascript.0 2023-04-03 21:30:03.740 info script.js.NSPanel.Muell_JS: Event2 = %Bioabfallbehaelter % javascript.0 2023-04-03 21:30:03.739 info script.js.NSPanel.Muell_JS: Wert = true javascript.0 2023-04-03 21:30:03.739 info script.js.NSPanel.Muell_JS: Event2 = %Wertstoffbehaelter % javascript.0 2023-04-03 21:30:03.738 info script.js.NSPanel.Muell_JS: Rest = true javascript.0 2023-04-03 21:30:03.738 info script.js.NSPanel.Muell_JS: Event2 = %Restabfallbehaelter % javascript.0 2023-04-03 21:30:03.737 info script.js.NSPanel.Muell_JS: Papier = true javascript.0 2023-04-03 21:30:03.735 info script.js.NSPanel.Muell_JS: Event2 = %Papierbehaelter %
  • [gelöst] Wer hat Inhalt eines Datenpunkt geändert

    9
    0 Votes
    9 Posts
    552 Views
    O
    @ostseeskipper Ich hab das jetzt so gelöst, das jedes Event(Script) das diesen Datenpunkt ändert auch einen zweiten Datenpunkt beschreibt und drin steht wer geändert hat.
  • Emails auswerten, Adapter stürzt ab

    5
    0 Votes
    5 Posts
    417 Views
    M
    @djmarc75 aaah, ich hatte das als Frage verstanden 😅 Das schaue ich mir mal an!
  • Schalter switch über CCU 3 steuern bzw. an / aus schalten

    11
    1
    0 Votes
    11 Posts
    302 Views
    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 Votes
    3 Posts
    304 Views
    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 Votes
    500 Posts
    126k Views
    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 Votes
    4 Posts
    364 Views
    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 Votes
    8 Posts
    691 Views
    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 Votes
    3 Posts
    160 Views
    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 Votes
    30 Posts
    4k Views
    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 Votes
    10 Posts
    793 Views
    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 Votes
    3 Posts
    279 Views
    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 Votes
    1 Posts
    153 Views
    No one has replied
  • Skript läuft doppelt - wie Zombie abschalten

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

    3
    0 Votes
    3 Posts
    327 Views
    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 Votes
    3 Posts
    262 Views
    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...

248

Online

32.8k

Users

82.8k

Topics

1.3m

Posts