Weiter zum Inhalt

Skripten / Logik

16.6k Themen 214.5k Beiträge

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Themen
    49k Beiträge
    P
    @Schimi sagte: habe mal ne neue version erstellt, weil ich auch wieder ins Limit gelaufen bin... > Danke fürs fixen. Vom ersten Eindruck passt das so. Ich bin vor 2 Tagen auch ans Limit gelaufen, obwohl der Monatszähler bestimmt unter 50 war. Den Zähler zu reseten hat nichts gebracht. Ging dann nur mit einem neuen API-Key.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    HomoranH
    @Berlon sagte: wieso gibt es bei true und false kleiner und größer? Zusätzlich zu der Info von @paul53 Binär ist false=0 und true=1. EDIT: @asgothian war schneller und genauer
  • Hilfe für Skripterstellung mit Node-RED

    956 13k
    956 Themen
    13k Beiträge
    S
    Hallo Zusammen, ich bin gerade am überlegen, wie ich folgende Aufgabe umsetzen könnte: Ein true an einer (Trigger)Node lässt einen Zähler laufen und setzt einen eigenen Ausgang auf true. Ein false der Trigger Node stoppt den Zähler setzt diesen aber nicht auf false. Ein true lässt den Zähler einfach weiterlaufen... Nach Ablauf der Zeit im Zähler wird der Ausgang des Zählers auf false gesetzt. Mehr soll nicht passieren. Ein separater Eingang am Zähler setzt diesen auf 0 zurück. Was ich damit anfangen möchte: Die Laufzeit der Poolpumpe wird auf eine Mindestlaufzeit von bspw. 4h überwacht -kann aber manuell bedient bei Bedarf länger laufen. Ein Trigger um 00:01Uhr setzt die Laufzeit zurück. Die Zählernode gilt hier als "Anforderung Pumpe wegen Mindestlaufzeit unterschritten". Ich habe noch keine brauchbaren Ideen, wie ich dass sauber und mit wenig Aufwand umsetzen könnte... Vielen Dank und VG Torsten
  • [gelöst] in SayIt Wetter und Geburtstagsscript -> Müllkalender mit einbinden

    Verschoben javascript
    230
    1
    0 Stimmen
    230 Beiträge
    80k Aufrufe
    lobomauL
    @tempestas Hi, ich nutze dein Script schon seit einige Jahren. Erstmal Danke dafür! Nun habe ich seit einigen Tagen eine Fehlermeldung. Vielleicht hat sich etwas am JavaScript-Adapter geändert? Am Script selbst habe ich nichts geändert. Kannst du etwas mit dem Fehler anfangen? Fehler: 2023-11-19 18:00:00.096 - error: javascript.0 (3058) Error in callback: ReferenceError: i_search is not defined 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at nthIndex (script.js.common.Telegram.Morgige_Termine:19:18) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at Warnung (script.js.common.Telegram.Morgige_Termine:42:5) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at Object. (script.js.common.Telegram.Morgige_Termine:82:4) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1617:34) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:171:15) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at listOnTimeout (node:internal/timers:569:17) 2023-11-19 18:00:00.097 - error: javascript.0 (3058) at processTimers (node:internal/timers:512:7) Script: Spoiler // Skript schaut täglich um 18h, ob im Kalender das Wort "Morgen" vorkommt. Wenn ja, wird ein Telegram geschickt mit dem betreffenden Termin bzw Terminen // tempestas 13.2.2018 // Skripteinstellungen var debug = false; // Suchfunktion für Termin-Cutoff function nthIndex(str, pat, n){ var L= str.length, i= -1; while(n-- && i++<L){ i= str.indexOf(pat, i); if (i < 0) break; } i_search =i; } //Funktion function Warnung() { var inhalt = getState("ical.0.data.html").val.toString(); // hier deine Müll-Kalender Instanz eingeben var count = inhalt.split("Morgen").length -1; // wie häufig wird "Morgen" gefunden? var posStart = inhalt.indexOf( 'Morgen', 0); // sucht das erste mal "Morgen" if(debug) log("posStart "+posStart); if(posStart != -1){ // falls "Morgen" gefunden wurde gehts hier weiter var stringShort = inhalt.substring(posStart, inhalt.length); // Abschneiden von allem, was links vom ersten "Morgen" Treffer steht if(debug) log("Gekürzt :" +stringShort); nthIndex(stringShort, '</span></span><br/>', count); // hier wird nun geschaut, wo es rechts abgeschnitten werden muss stringCut = stringShort.slice(0,i_search); // hier wird alles rechts abgeschnitten und so der finale String extrahiert if(debug) log("Fast Final: "+stringCut); // aufbereiten für telegram, entfernen von HTML Tags stringCut = stringCut.replace('</br>',"\n"); // Zeilenumbruch html durch telegram umbruch ersetzen // remove all inside SCRIPT and STYLE tags stringCut=stringCut.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, ""); stringCut=stringCut.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, ""); // remove BR tags. stringCut=stringCut.replace(/<br>/gi, ""); stringCut=stringCut.replace(/<br\s\/>/gi, ""); stringCut=stringCut.replace(/<br\/>/gi, ""); // remove all else stringCut=stringCut.replace(/<(?:.|\s)*?>/g, ""); // get rid of html-encoded characters: stringCut=stringCut.replace(/&nbsp;/gi," "); stringCut=stringCut.replace(/&amp;/gi,"&"); stringCut=stringCut.replace(/&quot;/gi,'"'); stringCut=stringCut.replace(/&lt;/gi,'<'); stringCut=stringCut.replace(/&gt;/gi,'>'); sendTo('telegram.0', stringCut); } } // Trigger Schedule schedule('0 18 * * *', function(){ // Täglich um 18h Warnung(); }); // Bei Start Warnung(); JavaScript: 7.1.4. Node.js: v18.17.1 NPM: 9.6.7 JS-controller: 5.0.16
  • BWM steuert Hue-Level nicht

    1
    1
    0 Stimmen
    1 Beiträge
    190 Aufrufe
    Niemand hat geantwortet
  • Hilfe: Senec Speicher - Tibber / einfache Steuerung

    1
    1
    0 Stimmen
    1 Beiträge
    636 Aufrufe
    Niemand hat geantwortet
  • Betriebststunden Verdichter Heizung Tagesstunden berechnen

    2
    0 Stimmen
    2 Beiträge
    248 Aufrufe
    paul53P
    @hoizi1994 sagte: brauche hier einen selbst erstellten Datenpunkt im User oder? Sogar 2 Datenpunkte: "Laufzeit gestern" und "Tagesstand Betriebsstunden". Alternative: Sourceanalytix-Adapter.
  • ein Gute Nacht Script

    15
    0 Stimmen
    15 Beiträge
    822 Aufrufe
    M
    Danke das hat geklappt
  • Gesamtleistung berechnen per Blockly Skript

    7
    1
    0 Stimmen
    7 Beiträge
    710 Aufrufe
    m0nn3M
    @paul53 Okay, Dann euch noch einen schönen Abend und vielen Dank !!!
  • Blockly mit Zigbee/Homatic und CCU Duty Cycle Problem

    10
    1
    0 Stimmen
    10 Beiträge
    805 Aufrufe
    O
    @paul53 Danke .. und nochwas dazugelernt ... genau sowas hatte ich gesucht
  • Suche Hilfe für Visualisierung von mehreren ical Kalendern

    3
    0 Stimmen
    3 Beiträge
    260 Aufrufe
    T
    @bahnuhr Danke Dir. Kannst Du mir sagen, warum ich das Skript nicht zweimal auf eine Instanz laufen lassen kann? Ich hatte die Schriftgröße verändert. Einmal in Klein => schreibt in Datenpunkt A (für die Übersicht auf der Startseite) und einmal in groß => schreibt in Datenpunkt B (für nur den Stundenplan in groß) Ist es eventuell möglich, das Skript so anzupassen, dass es die Daten nur aus bestimmten Kalender(n) der Instanz zieht? Dann könnte ich mit 12 Instanzen sparen :-) Oder sollte ich diese Frage eher hier https://forum.iobroker.net/topic/26782/ical-kalender-farben-anpassen/82?_=1700046036161 reinstellen?
  • Datenpunkte abfragen und andere damit steuern

    4
    1
    0 Stimmen
    4 Beiträge
    366 Aufrufe
    paul53P
    @kvn298 sagte: Status_Brunnenpumpe ist ein String. Laut API-Doku ist liefert das Attribut "ison" einen booleschen Wert.
  • Hue Dimmer Switch mit SSL

    4
    1
    0 Stimmen
    4 Beiträge
    405 Aufrufe
    SchmakusS
    @oli_g sagte in Hue Dimmer Switch mit SSL: Hallo, ich hatte bisher meinen Hue Adapter ohne SSL laufen und Polling aktiviert. Habe einen Hue Dimmer Switch und ein einfaches Test (Blockly) Skript: [image: 1699892485692-6dfd61a4-5c66-4dcc-bd01-ba6cb1cd7213-image.png] Ich möchte einfach bei Druck auf eine Taste eine bestimmte Steckdose (um-)schalten. Das hat mit den o.g. Einstellungen auch funktioniert. Das Test Skript gibt pro Druck auf eine der Tasten genau einen Log Eintrag aus, also bspw. bei Druck auf die obere Taste 1: script.js.Laden.Schalter_Steckdosen_Test: [Schalter] Last Updated: 2023-11-13T16:24:27, Status: 1002 Bei nochmaligem Druck auf die Taste 1: script.js.Laden.Schalter_Steckdosen_Test: [Schalter] Last Updated: 2023-11-13T16:26:03, Status: 1002 Drücke ich dann eine andere Taste, kommt auch genau eine Statusänderung an: script.js.Laden.Schalter_Steckdosen_Test: [Schalter] Last Updated: 2023-11-13T16:27:12, Status: 4002 Schalte ich nun beim Adapter SSL ein und schalte Polling aus, dann passieren bei Druck auf eine Taste offensichtlich zwei Statusupdates: script.js.Laden.Schalter_Steckdosen_Test: [Schalter] Last Updated: 2023-11-13T16:32:45.731Z, Status: 4000 script.js.Laden.Schalter_Steckdosen_Test: [Schalter] Last Updated: 2023-11-13T16:32:45.551Z, Status: 1002 Das erste Update bezieht sich irgendwie auf die zuvor gedrückte Taste, das zweite Update auf die aktuell gedrückte Taste. Aktuell funktioniert das Skript nur ohne SSL mit Pooling ... Kann mir jemand dieses Verhalten erklären? Danke und Grüße Hi, vielleicht kann @foxriver76 etwas dazu sagen. Andernfalls ein Issue auf Github erstellen. Aber was ist der Status 4000, bzw. 0 am Ende? Vielleicht doch alter Status?
  • Hilfe bei Strukturierung von Klassen in TypeScript

    29
    0 Stimmen
    29 Beiträge
    2k Aufrufe
    T
    ... ... ...
  • [Gelöst]Blockly Variable anlegen und Datenpunkt anlegen

    13
    2
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    P
    @homoran Werde ich in Zukunft beachten. Habe halt heute gelernt wo man die eigenen Datenpunkte setzen muss.
  • Hilfe bei der Erstellung eines Log Files für die VIS

    blockly javascript template
    7
    2
    0 Stimmen
    7 Beiträge
    620 Aufrufe
    L
    @paul53 sagte in Hilfe bei der Erstellung eines Log Files für die VIS: @ltsalvatore Du hast nicht geschrieben wie die Darstellung in Vis aussehen soll. In einem Log werden die Ereignisse in der Reihenfolge ihres Auftretens protokolliert. Ansatz ohne die zusätzlichen Datenpunkte aus dem ersten Beitrag: const ids = Array.prototype.slice.apply($('*(functions=fenster)')); const idJSON = "0_userdata.0.Fenster.JSON"; var arr = []; if(getState(idJSON).val) arr = JSON.parse(getState(idJSON).val); on(ids, function(dp) { arr.unshift({Name: dp.common.name, Zustand: dp.state.val ? 'offen' : 'geschlossen', seit: formatDate(dp.state.lc, 'DD.MM. hh:mm')}); if(arr.length > 10) arr.pop(); setState(idJSON, JSON.stringify(arr), true); }); Erzeugt wird eine JSON-Table mit dem jüngsten Ereignis zuerst (oben). Danke für dein Feedback. Im VIS soll das Ganze chronologisch von oben nach unten oder von mir aus von unten nach oben dargestellt werden. Wie es bspw. auch beim ical der Fall ist (s.u.). Und in dieser Auflistung der letzten 10 Zustände soll der Wert von zwei Objekten angezeigt werden. In meinem Fall die beiden Objekte window_closed_since_BDZ und window_open_since_BDZ. aber auch nur wenn der Wert nicht gleich 0 ist, weil der Wert gleich 0 mir in der Auflistung nichts bringt. [image: 1699652076347-13cfc232-6a67-4a23-97d2-5e9630948dbf-image.png] Sowas Ähnliches gibt es ja auch bei der mihome app für die Sensoren, aber leider liest der Adapter diese Tabelle nicht aus: [image: 1699652626687-5fe3fac2-aee3-4a37-b027-9b0aea3e4885-image.png]
  • ESP32CAM Bilder mit Intervall auf FTP speichern

    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    MartinPM
    @bärle man kann eine Textdatei verwenden, um ftp zu automatisieren. Siehe https://stackoverflow.com/questions/16158138/how-to-ftp-with-a-batch-file (Zielserver scheint Windows zu sein) Textdatei (abgewandelt) example.txt open 10.155.8.215 user password lcd /D "G:\Subfolder\" cd folder/ binary mput watermeter.jpg disconnect quit Aufruf mit ftp -s:example.txt Dadurch wird example.txt zeilenweise durch FTP abgearbeitet... die Datei "watermeter.jpg" würde natürlich alle 5 Minuten überschrieben, wenn ein neues Foto hereinkommt. Muss man schauen, wenn man das archivieren will ... Jedes Mal eine neue Text Datei mit einem anderen Ziel-Dateinamen erzeugen ist auch nicht gerade toll.
  • Steuerungsbefehle für Heishamon / iQontrol

    1
    1
    0 Stimmen
    1 Beiträge
    173 Aufrufe
    Niemand hat geantwortet
  • Awattar - die billigsten Strom-Stunden nutzen

    82
    1
    0 Stimmen
    82 Beiträge
    15k Aufrufe
    O
    @paul53 Ich bedanke mich bei allen Helfern => das Blockly liefert mir die Daten.
  • Datenpunkte sollen bei Ereignis geändert werden

    6
    3
    0 Stimmen
    6 Beiträge
    547 Aufrufe
    CodierknechtC
    @jones88 sagte in Datenpunkte sollen bei Ereignis geändert werden: Verstehe aktuell nicht wie ich einen Datenpunkt auf einen anderen schauen lassen kann. Du meinst per Java-Script oder wie? Nein. Kein Script. Du hast ja benutzerdefinierte DP in 0_userdata.0 angelegt, in die Du per Script Werte aus anderen DP schreiben willst. Das brauchst Du nicht. Statt der eigenen DP in 0_userdata.0 legst Du welche in alias.0 an und trägst bei denen die Konvertierungsfunktion ein. Die sind also quasi der Ersatz für Deine per Script aktualisierten DP. In der Vis nimmst Du dann die Alias-DP.
  • Hilfe gesucht. Wer kann per Skript E-Mails Parsen oder so?

    7
    0 Stimmen
    7 Beiträge
    746 Aufrufe
    HomoranH
    es g7bt einen ähnlichen Thread mit emails von ISTA
  • Velux KLF200 über KNX ansteuern klappt nicht

    12
    1
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    C
    @mibr85 Hi, das Thema ist bereits schon älter, jedoch wollte ich die fragen, ob du auch Probleme mit der Positionsanzeige hast. Ich habe eine Gira X1 und es funktioniert fast alles tadellos... Wenn die Dachfenster jedoch über den eigenen Regensensor schließen, aktualisiert sich meine Statusanzeige im X1 nicht. Hast du bzw. jemand dazu eine Idee bzw. die Lösung. [image: 1699207166725-a6bac8ee-373a-45bd-a134-a2f70a549148-grafik.png]
  • Erledigt! Common/Global-Scripte mit unterschiedl. Instanzen

    9
    0 Stimmen
    9 Beiträge
    586 Aufrufe
    U
    @bahnuhr Ja war eher ein Fehler dann. Dachte initial, dass es erst einmal 2 Themen waren. Mittlerweilen ist es überlappend. Ich schließe diesen Thread hier. Sorry

600

Online

32.8k

Benutzer

82.8k

Themen

1.3m

Beiträge