Skip to content

JavaScript

2.5k Topics 49.4k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Plötzlich ReferenceError: request is not defined

    79
    1
    0 Votes
    79 Posts
    14k Views
    haus-automatisierungH
    @bitwicht sagte in Plötzlich ReferenceError: request is not defined: Den Schedule habe ich zum Test gesetzt da ich mir auf die Schnelle nicht zu helfen wusste :-) Wenn Du gar keinen Trigger drumherum baust, wird die gesamte Logik ja bei jedem Script-Start einmalig ausgeführt. Dann musst Du gar nicht warten.
  • Fehlerbehandlung httpGet/httPost

    37
    0 Votes
    37 Posts
    5k Views
    P
    Oben steht, dass der Server öfter mal offline ist. Da ist ping meine erste Idee. Ob der Server auf Pings antwortet, weiß ich nicht. Reagiert der Server nicht auf ping, dann evtl. als Ersatz einen httpcheck nehmen. httpcheck nutze ich auf der Synology, bevor die auf den ioBroker zugreift. # ===== HTTP-Check statt Ping ===== curl -s --connect-timeout 3 "$BASE/system.adapter.admin.0.alive" > /dev/null || exit 1 Ist allerdings ein Bash-Skript. Das muss für die Zwecke angepasst werden.
  • Script: Google Shared Locations Cookie Fixer

    31
    6 Votes
    31 Posts
    1k Views
    GarfonsoG
    So, falls jemand testen mag: https://forum.iobroker.net/topic/83726/test-adapter-google-sharedlocations2 Es ist echt magisch. g Gerne in dem anderen Topic weiter diskutieren, falls es da Bedarf gibt.
  • Skript PING

    17
    1
    3 Votes
    17 Posts
    2k Views
    MartinPM
    StartPing() gibt es mehrmals ... https://www.geeksforgeeks.org/javascript/function-overloading-in-javascript/ Ich weiß aber nicht ob Schedules jeweils einen eigenen Scope haben ... Würde das aber auch nicht mit eigenen Schedules für jede Sorte Tierchen durchexerzieren... Edit: Nehme meine Vermutung zurück.... Test: schedule('*/2 * * * * *', async function Test() { console.info('Test1'); }); schedule('*/2 * * * * *', async function Test() { console.info('Test2'); }); Log - Ausgabe: ... javascript.0 18:40:44.001 info Test1 javascript.0 18:40:44.002 info Test2 javascript.0 18:40:46.001 info Test2 javascript.0 18:40:46.002 info Test1 javascript.0 18:40:48.002 info Test1 javascript.0 18:40:48.003 info Test2 ...
  • Skript für Mondphase, Mondauf- und Untergang

    69
    4
    3 Votes
    69 Posts
    5k Views
    jvfleJ
    @BananaJoe Das war das fehlende Puzzlestück. Jetzt funktioniert es und ich bin wieder ein μ schlauer. Vielen Dank für deine Hilfe und dem schönen Widget. BG
  • [TypeSkript] Zendure SolarFlow Steuerung: KI

    4
    0 Votes
    4 Posts
    188 Views
    S
    habe es mal auf mehrere Geräte erweitert.. die "Single" Regelung läuft bei mir, aber wie gut es mit mehreren läuft kann ich leider nicht testen
  • On ID Grundlage

    Moved
    23
    0 Votes
    23 Posts
    343 Views
    P
    @paul53 dafür ist das ack da. const DP ="0_userdata.0.Logik.TestZustand"; createState(DP, 0, false, { // Datenpunkt wird angelegt name: 'TestZustand', desc: 'Logik.TestZustand', type: 'boolean', def: 'false', role: 'value' }); /*So macht man es, wenn die Flanke wechselt (true - false - true*/ on({id:DP,val:false,change: 'ne'}, function(dp){ console.log("fallende Flanke"); }); /*So macht man es, wenn die Flanke NICHT wechselt (false - false - false)*/ on({id:DP,val:false,change: 'any'}, function(dp){ if(!dp.state.ack){ console.log("fallende Flanke"); setState(DP, false , true); //ack setzen. } });
  • ioBroker – Klipper – Spoolman Filament Monitoring

    1
    2
    1 Votes
    1 Posts
    89 Views
    No one has replied
  • Skript zur Auswertung der Batterien unter 25% bei Zigbee.

    3
    0 Votes
    3 Posts
    137 Views
    D
    Alter wenn ich das gewusst hätte. Aber das schreiben der Skripte ist ja mittlerweile relativ einfach. Fleißarbeit "digital machen lassen" und feinarbeit manuell. Hätte ich mir echt sparen können. Denn ich habe nach Batteriestatus und Zigbee gesucht und auf die schnelle nichts passendes gefunden, daher ein bisschen Code gemacht.
  • [gelöst] Warnung bei Scriptausführung

    8
    1
    0 Votes
    8 Posts
    160 Views
    HomoranH
    @DGR sagte in [gelöst] Warnung bei Scriptausführung: Der Sensor liefert trotzdem normal Daten. bis auf die 10 Sekunden, die er disconnected war
  • Modulare scripte in javascript Adaper benutzen

    22
    3
    0 Votes
    22 Posts
    566 Views
    Thomas BraunT
    @Rudi-Restless sagte in Modulare scripte in javascript Adaper benutzen: bookworm ist erst mitte 2026 fällig so weit ich weiss. Stimmt. Aber man sollte es auch nicht ganz am Ende des Supportzeitraums machen. Jetzt wäre ein guter Zeitpunkt, die ersten 3 Pointreleases für Debian 13 Trixie sind da und damit sind die ersten Kinken raus.
  • S7 Adapter LOGO Datenpunkte zusammenführen button + state

    22
    0 Votes
    22 Posts
    777 Views
    Elektroniker86E
    @paul53 sagte in S7 Adapter LOGO Datenpunkte zusammenführen button + state: createState(idVis, logotime2str(getState(idLogo).val), {type: 'string', name: Name, role: 'text', read: true, write: true}); Vielen Dank! funktioniert super!
  • Liste aller aktiven Trigger

    Moved
    3
    0 Votes
    3 Posts
    181 Views
    L
    @paul53 Vielen Dank für deine Unterstützung! Damit sollte ich mein Vorhaben realisieren können. Bisher habe ich in jeden Trigger Code eingebaut, der beim Auslösen des Triggers eine Nachricht ins Log schrieb. Damit bekomme ich natürlich nur die Trigger eingesammelt, die auch 'feuern'. Da mittlerweile meine Skripte einen Umfang erreicht haben, dass ich zunehmend den Überblick zu verlieren drohe, ist dein Tipp eine große Hilfe. Verwirrung! Das Ergebnis subs ist offenbar ein Object aus Arrays und nicht wie erwartet ein Array aus Objekten. Aber mit .. const liste = Object.values(getSubscriptions()) .. erhalte ich das von mir gewünschte Array.
  • [solved] Objekte im Array dynamisch vom Skript aktualisieren

    5
    2
    0 Votes
    5 Posts
    134 Views
    W
    @asgothian Habe es im ersten Schritt so gelöst, dass ich das Array neu einlesen lasse und statisch Werte erstmal im Skript lasse. Dafür habe ich ein Array erstellt für die key-Worte, welche in der gleichen Reihenfolge sein müssen: const room=['DG','SZ','AZ','Zimmer','Kueche','Essen','WZli','WZre']; const rollos= [ { posDP:'alias.0.DG_Zimmer.Fenster.RolloPositionSoll', wait1_ms:60*1000, wait2_ms:60*1000 }, { posDP:'alias.0.OG_SZ.Fenster.RolloPositionSoll', wait1_ms:40*1000, wait2_ms:40*1000 }, ... Mit der Funktion function readArray(key,room,storage){ const robj =storage[key]; robj.enabled1=getState(`0_userdata.0.Rollo.AutoTiming1_`+room).val; robj.enabled2=getState(`0_userdata.0.Rollo.AutoTiming2_`+room).val; robj.position1=getState(`0_userdata.0.Rollo.PositionHoch_`+room).val; robj.position2=getState(`0_userdata.0.Rollo.PositionRunter_`+room).val; return robj; } erweitere ich dynamisch das Array mit aktuellen Werten. Mit den SetTimer Funktionen function setTimer1(){ var h=getState(idTime1_h).val; var min=getState(idTime1_min).val; clearSchedule(timer1); log('neuer Timer1 gesetzt'); timer1 = schedule(min + ' ' + h + ' * * *', function() { if (getState(idAutoModeEnabled).val) { Object.keys(room).forEach (id => { const rollo = readArray(id,room[id],rollos); var timeout1=null; timeout1=setTimeout(function() { if(rollo.enabled1) { // für jedes Rollo bestimmbar setState(rollo.posDP,rollo.position1); //log('Rollo '+ rollo.posDP + ' auf '+rollo.position1 + ' bei Zeit ' + idTime1+' gefahren.'); } clearTimeout(timeout1); timeout1=null; },rollo.wait1_ms); }); } }); } und dem Listener auf alles was im Ordner "Rollo" ist: $('state[id=0_userdata*Rollo*]').on(function(obj){ //log('sth changed'); setTimer1(); setTimer2(); }); werden die Timer bei jeder Änderung neu erstellt. Noch nicht ganz schön sauber, aber es klappt. Erster Funktionstest steht aus. Die Grundfrage aber, ob ein Array mit DP als Objekte dynamisch angepasst werden kann, ist gelöst.
  • Skript um DPs aufzuräumen

    9
    0 Votes
    9 Posts
    332 Views
    P
    ChatGPT und Gemini sind Assistenten. Die nehmen dir viel Tipparbeit ab. Die Logik muss trotzdem noch extern gefüttert werden. Wobei Gemini in jedem Fall besser für Android ist. Schon, weil es, da es den Code im Android Studio direkt selbst ändern kann. Aber es macht auch viel Mist. Da muss man dann so genau wie möglich beschreiben, was da nicht wie erwartet funktioniert. Die Vorschläge sind auch manchmal überflüssig: [image: 1767427280277-9ae64997-81a1-4e97-9d5c-029b54c8d95a-image.png]
  • #Stauerkennung #DieAutobahn

    54
    4 Votes
    54 Posts
    3k Views
    H
    @Rushmed Der Teil zwischen /* und */ ist Auskommentiert. Was bedeutet, dass nicht ausgeführt wird! Es ist quasi nur die Erklärung: /* ========================= Zeitfenster Konfiguration ========================= Format: "HH:MM" (24h) - morningStart..morningStartWindowEnd: Startfenster morgens (zufälliger Start) - morningStop: feste Stoppzeit morgens - afternoonStart..afternoonStartWindowEnd: Startfenster nachmittags (zufälliger Start) - afternoonStop: feste Stoppzeit nachmittags */ Direkt darunter solltest du etwas eintragen! Zwei Startfenster in denen der 15 Minuten Zyklus random startet. Sowie die jeweiligen Endzeiten. Ich brauche nach 16:00 ihr keine Meldungen bis 5:00 Uhr. Weil ich dann Zuhause bin. Zwischen 7:30 und 13:00 Uhr benötige ich keine Meldungen weil ich auf der Arbeit bin. const morningStart = "04:58"; // frühester Startzeitpunkt morgens (Startfenster beginnt) const morningStartWindowEnd = "05:02"; // spätester Startzeitpunkt morgens (Startfenster endet) const morningStop = "07:30"; // feste Stoppzeit morgens const afternoonStart = "12:58"; // frühester Startzeitpunkt nachmittags (Startfenster beginnt) const afternoonStartWindowEnd = "13:02"; // spätester Startzeitpunkt nachmittags (Startfenster endet) const afternoonStop = "16:00"; // feste Stoppzeit nachmittags
  • Nutzung des evcc Optimizer

    1
    1
    0 Votes
    1 Posts
    294 Views
    No one has replied
  • Fully Browser per Script starten

    3
    0 Votes
    3 Posts
    94 Views
    M
    @MCU sagte in Fully Browser per Script starten: @michihorn fullybrowser-Adapter installiert? Fully Plus vorhanden? Ist der DP restartApp vorhanden? Alternativ tasker zum Starten der App de.ozerov.fully Hallo der DP ist vorhanden. Das funktioniert nur wenn die APP läuft.
  • Verbrauchsberechnung für Sonoff Geräte (Nous, Tasmota)

    7
    0 Votes
    7 Posts
    226 Views
    O
    @crunchip , vielen Dank für Deine Anmerkungen. Es stand aber nie in Frage, dass es auch andere (und sicher auch bessere) Lösungen gibt. Mein Anliegen war es, eine Lösung für Tasmota Geräte, die bei mir sehr gut funktioniert auch anderen, die sowas noch suchen, zur Verfügung zu stellen. Niemand ist ja gezwungen, meinen Vorschlag anzunehmen. Wie Du aufgezeigt hast, gibt es ja Alternativen. In diesem Sinne: Allen einen guten Rutsch und ein erfolgreiches und glückliches neues Jahr 2026. Gruß
  • You are assigning a string...which expects a String

    3
    0 Votes
    3 Posts
    92 Views
    D
    Ja, in diesem Moment auch gemerkt. Die Datenpunkte hatten einen Grossbuchstaben. Warum gibt es dann aber keinen Fehler beim Anlegen der Datenpunkte? Sowas wie "invalid Type Definition" oder was in der Art? Gruss Ralf

637

Online

32.9k

Users

83.0k

Topics

1.3m

Posts