Skip to content

Skripten / Logik

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

16.5k Topics 213.2k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    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.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    Z
    kann mir keiner helfen mit meinem Blockly?
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • Scriptsammlung Vol. 2

    Pinned Locked
    3
    3 Votes
    3 Posts
    4k Views
    NegaleinN
    :exclamation:Achtung: Diese Scripts sind teils auch ungetestet bzw. nur vom Ersteller getestet worden. :exclamation: Blockly diverse Scripte Schimpfwortgenerator (BananaJoe, Nikolai Radke) Ein Schimpfwortgenerator ioBroker-Forum-Thread: Schimpfwortgenerator Witze aus API (mading) Ein Witzegenerator ioBroker-Forum-Thread: Witzegenerator Bilder mittels LLM ChatGPT Vision ananalysieren (David G.) Bilder mit ChatGPT ananalysieren ioBroker-Forum-Thread: Bilder mittels LLM ChatGPT Vision ananalysieren Visualisierung Agentdvr-Aufnahmen in der Visualisierung darstellen (David G.) Agentdvr-Aufnahmen anzeigen ioBroker-Forum-Thread: Agentdvr-Aufnahmen in der Visualisierung darstellen Trash HTML Widget VIS2 (skvarel) Trash HTML Widget VIS2 ioBroker-Forum-Thread: Trash HTML Widget VIS2 GitHub GitHub
  • Scriptsammlung Vol. 2 -- Diskussion

    Pinned
    67
    1 Votes
    67 Posts
    12k Views
    NegaleinN
    @Schimi sagte in Scriptsammlung Vol. 2 -- Diskussion: Wetter.com Forecast/Vorhersage erledigt :)
  • Biowetter aus WetterOnline (wie Pollenflug)

    Moved javascript
    61
    1
    0 Votes
    61 Posts
    9k Views
    SBorgS
    Brauchst gar nicht zu testen, viele Seiten bringen einen "404-Fehler", sind also nicht erreichbar. Offenbar funktioniert die interne Umleitung bei denen nicht immer. Neue Version, getestet mit zwei Städten: /* Biowetter Parser von gesundheit.de https://forum.iobroker.net/topic/4441/biowetter-aus-wetteronline-wie-pollenflug/61 05.05.2016 erstellt von steinwedel für homoran 06.05.2016 Anpassung durch pix (Vorhersage mehrere Tage) Änderung in Biowetterparser 12.01.2017 Biowetter 14.01.2017 vom Pollenflug Skript separiert 10.06.2019 neue Quellseite www.gesundheit.de (Anpassung von pix) 21.12.2021 (SBorg) Anpassungen an neuen HTML-Auftritt, Fehlerbeseitigung, request => axios, ack=true 11.07.2022 (SBorg) Anpassungen an neuen HTML-Auftritt 11.06.2024 (SBorg) Anpassung an JS 6.x und Umstellung von "axios" => "httpGet" 28.01.2026 (SBorg) Umstellung auf URL-IDs, Änderung der URL, Timeout erhöht */ const pfad = "0_userdata.0.Wetter.Biowetter."; const logging = false; // Städte können natürlich auch gelöscht werden. Die benötigte URL gibt es hier: https://www.gesundheit.de/biowetter-id213002/ const stadt = [ // Hessen { "URL_" : "frankfurt-am-main-id213038/", "name" : "Frankfurt am Main" }, // Baden-Württemberg { "URL_" : "mannheim-id215733/", "name" : "Mannheim" } ]; // ab hier nix mehr ändern const biowetter_url = "https://www.gesundheit.de/biowetter/"; const biodatenpunkte = ["heute", "morgen", "Kombi"]; //const axios = require('axios'); function bioDpAnlegen() { // alle Städte durchgehen stadt.forEach(function(city) { let bio_pfad = pfad + city.name.toLowerCase(); setTimeout(function() { for (var bdp = 0; bdp < biodatenpunkte.length; bdp++) { createState(bio_pfad + "." + biodatenpunkte[bdp], { def: "", name: "Biowetter " + city.name + " " + biodatenpunkte[bdp], desc: "Biowetter Vorhersage (gesundheit.de) für " + biodatenpunkte[bdp] + " in " + city.name, type: "string" }); } }, 1000); }); } function readBiowetter() { stadt.forEach(function(s) { setTimeout(function() { if (logging) log("Es wird abgefragt: " + s.URL_ + " für " + s.name); readURL(s.URL_, s.name); }, 10000); }); } function readURL(stadt_URL_, stadt_name) { try { const options = { method: 'get', url: biowetter_url + stadt_URL_, // korrekten Link erstellen headers: { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1" } }; //axios(options).then(function (response) { httpGet(options.url, (err, response) => { if (response.statusCode == 200) { // kein Fehler, Inhalt in body /* betroffener HTML Code <h2>Heute</h2> <p>Die aktuelle Wetterlage belastet Herz und Kreislauf stärker als sonst üblich. Aufgrund der warmen Luftmasse ist die Durchblutung vermindert. Viele Menschen fühlen sich weiterhin müde und abgespannt. Trotzdem fällt der erholsame Tiefschlaf schwer. Menschen, die verstärkt mit Kopfschmerzen und Migräneattacken auf Wetterreize reagieren, sollten ihre Schmerzmittel nicht vergessen. Anstrengungen am Mittag und Nachmittag sollten vermieden werden.</p> <h2>Morgen</h2> <p>Mit der Witterung sind häufig Leistungs- und Konzentrationsdefizite verbunden. Auch das Reaktionsvermögen lässt nach, sodass die Unfallgefahr zunimmt. Wetterfühlige Menschen klagen vor allem über Kopfweh und eine erhöhte Müdigkeit.</p> <div class=" */ // Code für HEUTE extrahieren let wetter_heute; let heute_start = "<h3>Heute</h3>"; let heute_ende = "<h3>Morgen</h3>"; // dazwischen ist Text für heute let pos_heute_start = response.data.indexOf(heute_start); let pos_heute_ende = response.data.indexOf(heute_ende); log("Start: " + pos_heute_start + " Ende: " + pos_heute_ende, "debug"); if (pos_heute_start != -1 && pos_heute_ende != -1) { // wenn gesuchte Strings überhaupt existieren let heute_bereich = response.data.substring(pos_heute_start + heute_start.length, response.data.length); // Ab aber ohne ersten Treffer bis Ende heute_bereich = heute_bereich.substring(0, heute_bereich.indexOf(heute_ende)); // Suchwort am Ende abschneiden wetter_heute = strip_tags(heute_bereich).trim(); // fertige Ausgabe if (logging) log("Biowetter in " + stadt_name + " (heute): " + wetter_heute); setState(pfad + stadt_name.toLowerCase() + ".heute", wetter_heute, true); } else log("gesuchter Quellcode (www.gesundheit.de) nicht gefunden | Stichwort 'heute'", "error"); // Code für MORGEN extrahieren let wetter_morgen; let morgen_start = "<h3>Morgen</h3>"; let morgen_ende = "<div class="; // dazwischen ist Text für morgen let pos_morgen_start = response.data.indexOf(morgen_start); let pos_morgen_ende = response.data.indexOf(morgen_ende); log("Start: " + pos_morgen_start + " Ende: " + pos_morgen_ende, "debug"); if (pos_morgen_start != -1 && pos_morgen_ende != -1) { // wenn gesuchte Strings überhaupt existieren let morgen_bereich = response.data.substring(pos_morgen_start + morgen_start.length, response.data.length); // Ab aber ohne ersten Treffer bis Ende morgen_bereich = morgen_bereich.substring(0, morgen_bereich.indexOf(morgen_ende)); // Suchwort am Ende abschneiden wetter_morgen = strip_tags(morgen_bereich).trim(); // fertige Ausgabe if (logging) log("Biowetter in " + stadt_name + " (morgen): " + wetter_morgen); setState(pfad + stadt_name.toLowerCase() + ".morgen", wetter_morgen, true); } else log("gesuchter Quellcode (www.gesundheit.de) nicht gefunden | Stichwort 'morgen'", "error"); // Code für Kombidatenpunkt mit HTML if (!wetter_morgen || !wetter_heute) log("Fehler: keine Biowetterdaten extrahiert", "error"); else { let kombi = "<div class =\"Biowetter\">" + "<h4>Biowetter (gesundheit.de) für " + stadt_name + "</h4>" + "<h2>Heute</h2>" + "<p>" + wetter_heute + "</p>" + "<h2>Morgen</h2>" + "<p>" + wetter_morgen + "</p></div>"; setState(pfad + stadt_name.toLowerCase() + "." + biodatenpunkte[2], kombi, true); } } else { log("StatusCode = " + response.statusCode); } }); } catch (e) { log("Fehler (try) leseWebseite (gesundheit.de): " + e, "error"); } log("Biowetter eingelesen", "info"); } function strip_tags(data) { var rueckgabe = data.replace(/(&nbsp;|<([^>]+)>)/ig, " "); return (rueckgabe); } String.prototype.replaceAll = function(find, replace) { var str = this; return str.replace(new RegExp(find.replace(/([.*+?^=!:${}()|[]\/])/g, "\\$1"), "g"), replace); }; function main() { bioDpAnlegen(); setTimeout(readBiowetter, 3000); } main(); schedule("6 6 * * *", main);
  • [HowTo] Script Sticky Notes (PostIt) für VIS und Telegram

    151
    7
    7 Votes
    151 Posts
    25k Views
    D3ltoroxpD
    @liv-in-sky Das hat super funktioniert mit deinem Code, vielen Dank. Neustart des Adapters hat leider nichts gebracht, das alte Script ist deaktiviert.
  • [gelöst] Funktion on({id: …. - Value Übergabe....?

    Moved
    6
    0 Votes
    6 Posts
    1k Views
    L
    verschoben auf später...
  • Schalter Skript zur mehrfach Nutzung (gelöst)

    13
    0 Votes
    13 Posts
    357 Views
    D
    Perfekt! Vielen Dank! Mit dem Events Datenpunkt geht's dann auch! Vielen Dank für die Geduld! Mit dem oben gepostet Skript hatte es auch mit der Funktion Switch funktioniert. Aber so ist es natürlich besser.
  • [gelöst] fehlermeldung skript ns-panel

    34
    1
    0 Votes
    34 Posts
    171 Views
    HomoranH
    @Armilar sagte in fehlermeldung skript ns-panel: Es kopieren sich aber nur globale Skripte vor "jedes" Skript... Und das würde die Dublette erklären.. und das hat mich so lange zögern lassen. Da auch Pferde, Apotheke und so, könnte ja auch ein weiteres Skript zufällig doppelte Einträge verursachen
  • 4 Packs je 16 Zellspannungen, Diff V max ausgeben?

    6
    2
    0 Votes
    6 Posts
    107 Views
    HumidorH
    OK, danke dir.
  • Alexa Shopping List mit Bring synchronisieren

    175
    0 Votes
    175 Posts
    37k Views
    grrfieldG
    @mcBirne Es ist zwar schon einige Zeit her, aber hast Du das Skript als TypeScript eingefügt? Die Fehlermeldungen sehen nach JavaScript aus.
  • Fully browser starten

    javascript
    3
    0 Votes
    3 Posts
    102 Views
    M
    @arteck sagte in Fully browser starten: schau dir die apps tasker oder automate Moin ich habe es jetzt mit Tasker gelöst ;-)
  • Minuten in Stunden umwandeln

    blockly
    6
    1
    0 Votes
    6 Posts
    125 Views
    L
    @haus-automatisierung sagte in Minuten in Stunden umwandeln: @ltsalvatore sagte in Minuten in Stunden umwandeln: dann hatte ich aber das Gefühl, dass es mir nicht so wirklich weiterhilft. Du implementierst gerade exakt die gleichen Funktionen des Bausteins manuell. Dein Script könnte man aber noch optimieren. Du zählst ja manuell die Minuten hoch. Warum nicht einfach den Startzeitpunkt einmalig merken und dann die Differenz zum aktuellen Zeitpunkt berechnen? guter punkt 🤔
  • Wetterdaten abrufen per API-Call mit dem Javascript Adapter

    43
    1
    1 Votes
    43 Posts
    5k Views
    B
    Hallo Frage an die Gemeinde: Ich habe den One Call API 3.0. Wenn ich direkt im Broser aufrufe kommen auch stündliche Werte. Ist auch laut Beschreibung richtig. Kann ich das Script so erweitern dass hier für heute und morgen stündliche Werte angezeigt werden? Brauche Temp, Windstärke, Luftfeuchte, Bewölkung, Regen in mm pro Stunde und Regenwahrscheinlichkeit. Das SOLAR Paket ist je extra. LG Robert [image: 1767535947800-api-3.0.png] PS: Bin nun durch vielfaches probieren weitergekommen. ABER: Nun stehe ich wieder mal an. In den hourly Bereich gibt es den timestamp als UNIX timestamp (1767603600). Den kann ich anzeigen. Ich möchte diesen nun als "lesbaren" string anzeigen. ZB "Stunde:Minute Tag.Monat" Wie kann ich dies lösen? Eigenartig ist auch dass die Reihenfolge der Ausgabe nicht der Reihenfolge im script entspricht LG Robert
  • Visualisierung der Schalter beim Sonoff TX Ultimate

    1
    4
    1 Votes
    1 Posts
    42 Views
    No one has replied
  • iobroker.philips-air

    9
    0 Votes
    9 Posts
    1k Views
    DerSchattenloseD
    Hallo ich verwende seit neuestem auch den Adapter und habe das Problem dass ich, eigentlich bei allen, mir wichtigen Datenpunkte keine Werte bekomme im Protokoll steht zwar dass Typ number erwartet und string geliefert wird aber dieser Datenpunkt ist einer der wenigen die Werte liefern... State value to set for "philips-air.0.device.uptime" has to be type "number" but received type "string" was muss ich ändern damit ich auch Daten für die restlichen Punkte erhalte? PS nutze den Air Purifier 3400 [image: 1767171310598-5e89e094-b4d9-46f6-9606-49ba552a2907-image.png]
  • Javascript für Import wird nicht gefunden

    19
    2
    0 Votes
    19 Posts
    354 Views
    R
    @paul53 Danke für den Tipp.
  • Mit Blockly eine Scene aktivieren oder deaktivieren

    blockly
    7
    1
    0 Votes
    7 Posts
    127 Views
    hananH
    Starten, stoppen, aktivieren, deaktivieren, was ist was? Ich habe ein Blockly welches den Szenezustand einer Szene auf true oder false (nennen wir dieses start, stop) stellt, doch ich möchte mit einem anderen Blockly verhindern das diese Szene funktioniert und auch wieder funktioniert (nennen wir es deaktivieren, aktivieren). Szene deaktiviert: [image: 1766685667452-99145574-fefb-404d-9c4e-4997e02af7e9-image.png] Szene aktiviert: [image: 1766685704823-19ca4daf-46f0-47ea-8c8a-9a99a2b19af6-image.png]
  • Proxmox-Updater (Host/LXC/VM) auch ioBroker,piHole,etc

    56
    3 Votes
    56 Posts
    10k Views
    Master67M
    Danke, läuft immer noch super, hatte auf die 9er Version (neu installiert) gewechselt und dein Tool wieder Installiert
  • eCharge Hardy Barth Wallbox: eCB1 REST API Werte einlesen

    5
    2
    0 Votes
    5 Posts
    2k Views
    D
    @ThHa sagte in eCharge Hardy Barth Wallbox: eCB1 REST API Werte einlesen: Die Steurung mache ich momentan über die Wallbox Oberfläche in einen iFrame. Hey zur Steuerung gibt es natürlich auch API Endpunkte, hier meine JS Funktionen die ich benutze für: ECO/SCHNELL/MANUAL Start/Stopp AI AN/AUS function wbSetPvMode(mode) { // mode: 'eco' | 'quick' | 'manual' wbPostForm( '/api/v1/pvmode', { pvmode: mode }, 'PvMode=' + mode ); } function wbSetEcoAutostart(on) { wbPostForm( '/api/v1/chargecontrols/01/mode/eco/startstop', { autostartstop: on ? 'true' : 'false' }, 'Eco-Autostart=' + on ); } function wbStart() { wbPostJson('/api/v1/chargecontrols/01/start', 'Start'); } function wbStop() { wbPostJson('/api/v1/chargecontrols/01/stop', 'Stop'); }
  • Programm oder Befehl über Vis starten bzw. ausführen

    19
    0 Votes
    19 Posts
    216 Views
    M
    nein, aber ich habe den Fehler gefunden. Es hing mit den Rechten zusammen Danke für Deine Unterstützung
  • Analogwerte an loxone übertragen

    Moved
    17
    0 Votes
    17 Posts
    5k Views
    L
    Leider kann man mit dem virtuellen Status in Loxone dann nicht weiterverwenden um eine nachgeschaltete Logik zu bedienen. Der Baustein hat in der Config nur einen Eingang, keinen Ausgang. Gibt es hier noch eine andere Lösung ohne die + - Buttons? Bis vor kurzem ging es bei mir noch mit einem virtuellen Eingang, der "nur Statusanzeige" aktiviert hatte. Jetzt geht das seit ein paar Tagen plötzlich nicht mehr...

319

Online

32.6k

Users

82.1k

Topics

1.3m

Posts