Skip to content

Skripten / Logik

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

16.5k Themen 213.2k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    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.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    T
    @schweiger2 du hast im Javascript Adapter über dem Objektbaum ein Lupensymbol. Klicke mal rauf und gib dort die Instanz eines Adapter ein z.B. mqtt.0 Dann siehst du alle Script, wo diese verwendet wird im Code.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • JSON wird in "vis-inventwo - JSON Table" falsch dargestellt

    javascript
    2
    2
    0 Stimmen
    2 Beiträge
    261 Aufrufe
    OliverIOO
    @langer sagte in JSON wird in "vis-inventwo - JSON Table" falsch dargestellt: Am json ist nix falsch https://jsonlint.com/
  • zugriff auf last change eines DP in Alias möglich?

    2
    1
    0 Stimmen
    2 Beiträge
    107 Aufrufe
    paul53P
    @chris299 sagte: Die aufwändige Alternative über user-variable und Skript würde ich gern vermeiden.... Lässt sich aber nicht vermeiden. Der Alias spiegelt nur den Zustand eines Referenz-Datenpunktes. Konvertierungen sind nur mit dem Wert (val) möglich.
  • Wie entschlüsselt man diese Iobroker Script-Warnung?

    12
    0 Stimmen
    12 Beiträge
    819 Aufrufe
    FabioF
    @homoran sagte in Wie entschlüsselt man diese Iobroker Script-Warnung?: @fa-bio hoffen auf Infos ja :+1: :+1: :+1: :+1: ich glaube aber nicht das das passiert. ;-)
  • [Lovelace] HTML Code anzeigen

    20
    1
    1 Stimmen
    20 Beiträge
    2k Aufrufe
    planetkeaneP
    Ich habe mir jetzt ein neues Skript gebaut, dass direkt aus den Objekten von Sourceanalytix eine HTML Tabelle erstellt. Diese funktioniert auch ganz gut, obwohl ich da bestimmt noch ein paar Verbesserungen durchführen werde. Falls es jemanden interessiert: // Erstelle ein HTML-Objekt im Verzeichnis 0_userdata.0.test /* * >>>>>>> Hier Eingabewerte <<<<<<< */ var anzeigeName = 'Computer'; var verzeichnisSave = '0_userdata.0.HTML.StromverbrauchComputer'; var verzeichnisPfad = 'sourceanalytix.0.0_userdata__0__Energiezaehler__Computer'; // 1 für "consumed", 2 für delivered var methode = 2; //>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<< createState(verzeichnisSave, { type: 'string', common: { name: 'HTML-Objekt', role: 'html', read: true, write: false, }, native: {}, }); //schedule("*/30 * * * *", async function () { on({ id: [].concat(['0_userdata.0.TabellenHTMLAktualisieren']), change: "any" }, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; // Jahresvariablen var aktuellesDatum = new Date(), jahr = aktuellesDatum.getFullYear(), vorJahr = jahr - 1; // Gesamtvariable var GesamtJetzt = 0, GesamtVorher = 0, GesamtKostenJetzt = 0, GesamtKostenVorher = 0; /* * Hier den Spaltennamen eingeben */ // Erstelle den HTML-Code für die Tabelle var tableHTML = '<table><thead><tr><th>' + anzeigeName + '</th><th>Dieses Jahr</th><th>Letztes Jahr</th><th>Kosten</th></tr></thead><tbody>'; var names = ""; for (var i = 1; i <= 12; i++) { var month = (i < 10) ? "0" + i : i; if (i == 1) { names = "January"; } else if (i == 2) { names = "February"; } else if (i == 3) { names = "March"; } else if (i == 4) { names = "April"; } else if (i == 5) { names = "May"; } else if (i == 6) { names = "June"; } else if (i == 7) { names = "July"; } else if (i == 8) { names = "August"; } else if (i == 9) { names = "September"; } else if (i == 10) { names = "October"; } else if (i == 11) { names = "November"; } else if (i == 12) { names = "December"; } /* * Hier den Quellpfad angeben */ if (methode == 1) { var valueThisYear = getState(verzeichnisPfad + '.' + jahr + ".consumed.months." + month + "_" + names).val; var cost = valueThisYear * 0.33; GesamtJetzt += valueThisYear; var valueLastYear = getState(verzeichnisPfad + '.' + vorJahr + ".consumed.months." + month + "_" + names).val; var costLast = valueLastYear * 0.33; GesamtVorher += valueLastYear; GesamtKostenJetzt += cost; tableHTML += '<tr><td>' + i + '</td><td>' + valueThisYear + '</td><td>' + valueLastYear + '</td><td>' + cost.toFixed(2) + ' | ' + costLast.toFixed(2) + '</td></tr>'; } else if (methode == 2) { var valueThisYear = getState(verzeichnisPfad + '.' + jahr + ".delivered.months." + month + "_" + names).val; var cost = valueThisYear * 0.33; GesamtJetzt += valueThisYear; var valueLastYear = getState(verzeichnisPfad + '.' + vorJahr + ".delivered.months." + month + "_" + names).val; GesamtVorher += valueLastYear; var costLast = valueLastYear * 0.33; GesamtKostenJetzt += cost; tableHTML += '<tr><td>' + i + '</td><td>' + valueThisYear + '</td><td>' + valueLastYear + '</td><td>' + cost.toFixed(2) + ' | ' + costLast.toFixed(2) + '</td></tr>'; } } // Zwei Nachkommastellen GesamtJetzt = Math.round(GesamtJetzt * 100) / 100; GesamtVorher = Math.round(GesamtVorher * 100) / 100; GesamtKostenJetzt = Math.round(GesamtKostenJetzt * 100) / 100; GesamtKostenVorher = GesamtVorher * 0.33; GesamtKostenVorher = Math.round(GesamtKostenVorher * 100) / 100; tableHTML += '<tr><td>' + "Ge" + '</td><td>' + GesamtJetzt + '</td><td>' + GesamtVorher + '</td><td>' + GesamtKostenJetzt + ' | ' + GesamtKostenVorher + '</td></tr>'; tableHTML += '</tbody></table>'; /* * Hier den Speicherpfad angeben (2x) */ // Schreibe den HTML-Code in den HTML-Objektzustand als Zeichenfolge setState(verzeichnisSave, { val: tableHTML, ack: true }); // Lese den HTML-Code als Zeichenfolge var tableHTMLString = getState(verzeichnisSave).val; // Gib den HTML-Code in der Konsole aus // console.log(tableHTMLString); });
  • Ordner Überwachung und per SFTP weitergeben

    8
    0 Stimmen
    8 Beiträge
    590 Aufrufe
    bahnuhrB
    @liv-in-sky Vielen lieben Dank. Top Beschreibung von dir. Jetzt klappt es. Hab mich irgendwie zu blöd angestellt (Error 50 halt). mfg Dieter
  • [gelöst] Weckzeit Blockly löst falsch oder garnicht aus

    6
    2
    0 Stimmen
    6 Beiträge
    407 Aufrufe
    blue231181B
    @paul53 hat funktioniert, vielen herzlichen Dank
  • Tagesschau-Script ändern!

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    761 Aufrufe
    bahnuhrB
    @quarkmax ich hab jetzt dies: https://www.tagesschau.de/multimedia/livestreams/index~player.html einfach in den DP geschrieben. Mal schauen obs morgen noch geht. Für mich liegt es an dem Index, der gestern noch durch eine Zahlenfolge ersetzt wurde. kann dies aber nicht im Quelltext erkennen.
  • Bewegungsmeldung mit Frigate

    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    WalW
    Da das Skript immer grösser wurde, habe ich alles in einen Adapter migriert.
  • Node Red Werte aus Objekten

    10
    3
    0 Stimmen
    10 Beiträge
    1k Aufrufe
    Sascha HolzerS
    @mickym Da hab ich mir schon gedacht, aber ich finde es als Anfänger so tatsächlich übersichtlicher und man kann sich schnell was neues zusammenkopieren.
  • [gelöst] Funktionsrückgabe undefined

    6
    0 Stimmen
    6 Beiträge
    541 Aufrufe
    O
    @paul53 wie immer besten Dank:+1: echt klasse wie du hier mit deinem Wissen hilfst und unterstützt. Hast du ne Kaffeekasse?:tea:
  • Ausführen einer Aktion zu bestimmten Zeit

    6
    2
    0 Stimmen
    6 Beiträge
    507 Aufrufe
    R
    Danke euch! Die Systemzeit vom Pi war falsch. Ist jetzt in der richtigen Zeitzone! Ich versuche mich jetzt mal am Zeitplan!
  • Sayit, doppelte Ansage und Lautstärke

    3
    2
    0 Stimmen
    3 Beiträge
    241 Aufrufe
    DJMarc75D
    @nachtfuchs Welche Version vom sayit ist installiert ? Und bitte auch mal die Einstellungen zeigen. Falls da "Cache" aktiviert ist dies dann mal deaktivieren. Skript mit Deinen Anforderungen und in Verbindung mit dem SayIt könnte folgend aussehen: [image: 1682248792429-screenshot-2023-04-23-131934.png] einfach mal so umsetzen, testen und das Ergebnis mitteilen :)
  • Problem mit dem Adapter History

    blockly monitoring
    4
    0 Stimmen
    4 Beiträge
    338 Aufrufe
    C
    @dp20eic Super vielen herzlichen Dank. Das habe ich gar nicht gesehen. Ich habe immer nur bei der Variablen geschaut
  • Alias DP Wert schreiben

    15
    0 Stimmen
    15 Beiträge
    1k Aufrufe
    paul53P
    @ostseeskipper sagte: im Objekte Tab hab ich noch nichts gesehen wie man da einen Alias anlegen kann Einfach Objekte unter "alias.0" erstellen. Bei Datenpunkten gibt es dann einen zusätzlichen Tab für die Alias-Eigenschaften. @ostseeskipper sagte in Alias DP Wert schreiben: über automatisch erstellen Diese Funktion habe ich nie genutzt. Sie könnte das Problem sein.
  • [gelöst]Enum und Trigger

    9
    0 Stimmen
    9 Beiträge
    530 Aufrufe
    O
    @paul53 Ich habs verstanden, war fachlich nicht korrekt ausgedrückt. jedenfalls macht die von @Codierknecht genannt Lösung was ich gesucht habe.
  • Gelöst: Schedule einer Funktion

    3
    0 Stimmen
    3 Beiträge
    344 Aufrufe
    B
    Die Klammersetzung ist natürlich falsch. Habe nun des gesamte Slript quasi in die Schedule Funktion aufgenommen. Dann klappt es auch problemlos. VG Holger
  • Gelöst [Blockly] Hue Lichtwecker

    Verschoben
    45
    0 Stimmen
    45 Beiträge
    8k Aufrufe
    N
    @negalein ja, dann reicht das
  • GELÖST: InversSuche einer Telefonnummer

    2
    0 Stimmen
    2 Beiträge
    264 Aufrufe
    B
    @butschek Lösung gefunden: Der Rückgabewert befindet sich hier: console.log(Name: ${match[1]}); Folgend noch einmal das nun korrekte Skript. Vielleicht hilft es jemandem. VG Holger const cheerio = require("cheerio"); const fetch = require("node-fetch"); async function getData(number) { const response = await fetch(`https://www1.dasoertliche.de/?form_name=search_inv&ph=${number}`); const htmlText = await response.text(); const $ = cheerio.load(htmlText); // const scriptText = $('script[type="text/javascript"]').first().text(); const scriptText = $(htmlText).text(); // console.log(scriptText); const regex = /@type":.+?"name":"(.+?)"/; const match = scriptText.match(regex); console.log(match); if (match) { console.log(`Name: ${match[1]}`); } else { console.log("No match found."); } } getData("xxxxxxxxxx").catch((err) => console.error(err)); // Nummer ge-xxxx ! Hier Nummer eintragen
  • Datenpunkt-Pfad mittels Variable bestimmen/ändern

    blockly
    6
    0 Stimmen
    6 Beiträge
    384 Aufrufe
    A
    @paul53 Vielen Dank. Funktioniert! War in diesem Fall eh schon auf dem richtigen Weg - hab mich nur bei der genauen Pfad-Bezeichnung verschrieben. DANKE
  • State auslesen und Werte ausgeben

    15
    0 Stimmen
    15 Beiträge
    1k Aufrufe
    U66U
    @liv-in-sky Noch mal Danke für Deinen entscheidenden Hinweis mit simple API :+1: :+1: :+1: [image: 1681574283512-1min.png]

738

Online

32.6k

Benutzer

82.2k

Themen

1.3m

Beiträge