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
    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 Topics
    79k Posts
    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 Topics
    13k Posts
    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 Votes
    2 Posts
    261 Views
    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 Votes
    2 Posts
    107 Views
    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 Votes
    12 Posts
    819 Views
    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 Votes
    20 Posts
    2k Views
    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 Votes
    8 Posts
    590 Views
    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 Votes
    6 Posts
    407 Views
    blue231181B
    @paul53 hat funktioniert, vielen herzlichen Dank
  • Tagesschau-Script ändern!

    Moved
    10
    0 Votes
    10 Posts
    761 Views
    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 Votes
    6 Posts
    1k Views
    WalW
    Da das Skript immer grösser wurde, habe ich alles in einen Adapter migriert.
  • Node Red Werte aus Objekten

    10
    3
    0 Votes
    10 Posts
    1k Views
    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 Votes
    6 Posts
    541 Views
    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 Votes
    6 Posts
    507 Views
    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 Votes
    3 Posts
    241 Views
    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 Votes
    4 Posts
    338 Views
    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 Votes
    15 Posts
    1k Views
    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 Votes
    9 Posts
    530 Views
    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 Votes
    3 Posts
    344 Views
    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

    Moved
    45
    0 Votes
    45 Posts
    8k Views
    N
    @negalein ja, dann reicht das
  • GELÖST: InversSuche einer Telefonnummer

    2
    0 Votes
    2 Posts
    264 Views
    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 Votes
    6 Posts
    384 Views
    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 Votes
    15 Posts
    1k Views
    U66U
    @liv-in-sky Noch mal Danke für Deinen entscheidenden Hinweis mit simple API :+1: :+1: :+1: [image: 1681574283512-1min.png]

742

Online

32.6k

Users

82.2k

Topics

1.3m

Posts