Weiter zum Inhalt

JavaScript

2.5k Themen 49.5k Beiträge

Hilfe für Skripterstellung mit JavaScript

NEWS

  • Kontakte (Cards)

    javascript multimedia template
    24
    2
    3 Stimmen
    24 Beiträge
    474 Aufrufe
    Ro75R
    Wie versprochen, die Korrekturen: Position für den Hinweistext Öffnungszeiten (falsche Zusammenstellung) Bei Öffnungszeiten kann nun zusätzlich zum EN-DASH auch der normale Bindestrich (-) Verwendung finden. Konfiguration (Schriftgröße, Farbe, Stil) der Felder nun in allen Themen möglich. const FONT = { family: "InterVariable", // Globale Schriftfamilie für alle Karten // STANDARD – neutral, technisch, kühl standard: { name: { size: 16, color: "#ffffff", bold: true, italic: false }, // Name / Praxis / Firma address: { size: 13, color: "#d0d7e2", bold: false, italic: false }, // Straße, PLZ, Ort contact: { size: 12, color: "#9fb3d9", bold: false, italic: false }, // Tel., Fax, E-Mail web: { size: 12, color: "#6fa8ff", bold: false, italic: false }, // Website-Link title: { size: 13, color: "#ffffff", bold: true, italic: false }, // Abschnittstitel ("Öffnungszeiten") times: { size: 12, color: "#d0d7e2", bold: false, italic: false }, // Öffnungszeiten-Zeilen hint: { size: 12, color: "#ffcc66", bold: true, italic: false } // Hinweis-/Infozeilen }, // WAVE – kühl, frisch, maritim wave: { name: { size: 16, color: "#163a70", bold: true, italic: false }, // Name / Praxis / Firma address: { size: 13, color: "#173d74", bold: false, italic: false }, // Straße, PLZ, Ort contact: { size: 12, color: "#173d74", bold: false, italic: false }, // Tel., Fax, E-Mail web: { size: 12, color: "#2563eb", bold: false, italic: false }, // Website-Link title: { size: 13, color: "#1d4ed8", bold: true, italic: false }, // Abschnittstitel ("Öffnungszeiten") times: { size: 12, color: "#173d74", bold: false, italic: false }, // Öffnungszeiten-Zeilen hint: { size: 12, color: "#1a1a1a", bold: true, italic: false } // Hinweis-/Infozeilen }, // TEAL – modern, kühl, glasig teal: { name: { size: 16, color: "#ffffff", bold: true, italic: false }, // Name / Praxis / Firma address: { size: 13, color: "#e8ffef", bold: false, italic: false }, // Straße, PLZ, Ort contact: { size: 12, color: "#e8ffef", bold: false, italic: false }, // Tel., Fax, E-Mail web: { size: 12, color: "#e8ffef", bold: false, italic: false }, // Website-Link title: { size: 13, color: "#e8ffef", bold: true, italic: false }, // Abschnittstitel ("Öffnungszeiten") times: { size: 12, color: "#e8ffef", bold: false, italic: false }, // Öffnungszeiten-Zeilen hint: { size: 12, color: "#1a1a1a", bold: true, italic: false } // Hinweis-/Infozeilen }, // WHITE – hell, neutral, klar white: { name: { size: 16, color: "#1a1a1a", bold: true, italic: false }, // Name / Praxis / Firma address: { size: 13, color: "#2d3748", bold: false, italic: false }, // Straße, PLZ, Ort contact: { size: 12, color: "#2d3748", bold: false, italic: false }, // Tel., Fax, E-Mail web: { size: 12, color: "#33691e", bold: false, italic: false }, // Website-Link title: { size: 13, color: "#254618", bold: true, italic: false }, // Abschnittstitel ("Öffnungszeiten") times: { size: 12, color: "#2d3748", bold: false, italic: false }, // Öffnungszeiten-Zeilen hint: { size: 12, color: "#1a1a1a", bold: true, italic: false } // Hinweis-/Infozeilen }, // COFFEE – warm, erdig, gemütlich coffee: { name: { size: 16, color: "#4E342E", bold: true, italic: false }, // Name / Praxis / Firma address: { size: 13, color: "#4E342E", bold: false, italic: false }, // Straße, PLZ, Ort contact: { size: 12, color: "#4E342E", bold: false, italic: false }, // Tel., Fax, E-Mail web: { size: 12, color: "#6D4C41", bold: false, italic: false }, // Website-Link title: { size: 13, color: "#4E342E", bold: true, italic: false }, // Abschnittstitel ("Öffnungszeiten") times: { size: 12, color: "#4E342E", bold: false, italic: false }, // Öffnungszeiten-Zeilen hint: { size: 12, color: "#4E342E", bold: true, italic: false } // Hinweis-/Infozeilen }, // YELLOW – warm, freundlich, sonnig yellow: { name: { size: 16, color: "#5D4037", bold: true, italic: false }, // Name / Praxis / Firma address: { size: 13, color: "#4E342E", bold: false, italic: false }, // Straße, PLZ, Ort contact: { size: 12, color: "#4E342E", bold: false, italic: false }, // Tel., Fax, E-Mail web: { size: 12, color: "#F57F17", bold: false, italic: false }, // Website-Link title: { size: 13, color: "#5D4037", bold: true, italic: false }, // Abschnittstitel ("Öffnungszeiten") times: { size: 12, color: "#4E342E", bold: false, italic: false }, // Öffnungszeiten-Zeilen hint: { size: 12, color: "#5D4037", bold: true, italic: false } // Hinweis-/Infozeilen }, // GREEN – natur, frisch, harmonisch green: { name: { size: 16, color: "#1B5E20", bold: true, italic: false }, // Name / Praxis / Firma address: { size: 13, color: "#2E7D32", bold: false, italic: false }, // Straße, PLZ, Ort contact: { size: 12, color: "#2E7D32", bold: false, italic: false }, // Tel., Fax, E-Mail web: { size: 12, color: "#1B5E20", bold: false, italic: false }, // Website-Link title: { size: 13, color: "#1B5E20", bold: true, italic: false }, // Abschnittstitel ("Öffnungszeiten") times: { size: 12, color: "#2E7D32", bold: false, italic: false }, // Öffnungszeiten-Zeilen hint: { size: 12, color: "#1B5E20", bold: true, italic: false } // Hinweis-/Infozeilen }, // RED – kräftig, energisch, dominant red: { name: { size: 16, color: "#B71C1C", bold: true, italic: false }, // Name / Praxis / Firma address: { size: 13, color: "#C62828", bold: false, italic: false }, // Straße, PLZ, Ort contact: { size: 12, color: "#C62828", bold: false, italic: false }, // Tel., Fax, E-Mail web: { size: 12, color: "#B71C1C", bold: false, italic: false }, // Website-Link title: { size: 13, color: "#B71C1C", bold: true, italic: false }, // Abschnittstitel ("Öffnungszeiten") times: { size: 12, color: "#C62828", bold: false, italic: false }, // Öffnungszeiten-Zeilen hint: { size: 12, color: "#B71C1C", bold: true, italic: false } // Hinweis-/Infozeilen }, // BLUE – kühl, seriös, sachlich blue: { name: { size: 16, color: "#0D47A1", bold: true, italic: false }, // Name / Praxis / Firma address: { size: 13, color: "#1E3A5F", bold: false, italic: false }, // Straße, PLZ, Ort contact: { size: 12, color: "#1E3A5F", bold: false, italic: false }, // Tel., Fax, E-Mail web: { size: 12, color: "#1565C0", bold: false, italic: false }, // Website-Link title: { size: 13, color: "#0D47A1", bold: true, italic: false }, // Abschnittstitel ("Öffnungszeiten") times: { size: 12, color: "#1E3A5F", bold: false, italic: false }, // Öffnungszeiten-Zeilen hint: { size: 12, color: "#0D47A1", bold: true, italic: false } // Hinweis-/Infozeilen }, weight: { normal: 400, // Normalgewicht bold: 600 // Fett } }; Script im Eingangspost #1 aktualisiert. Ro75.
  • Omlet Hühnerstall webhook API

    41
    0 Stimmen
    41 Beiträge
    1k Aufrufe
    J
    Spoiler Futterklappen zu "actionName": "close", "description": "Close Feeder", "actionValue": "close", "pendingValue": "closepending", " "url": "/device/XXXXXXXXXXXX/action/close" }, Futterklappen auf { "actionName": "open", "description": "Open Feeder", "actionValue": "open", "pendingValue": "openpending", "url": "/device/XXXXXXXXXXXX/action/open" }, "feeder": { Modus (Lichtsensor/ Zeit): Lichtsensor: "mode": "light", "openLightLevel": 27, "closeLightLevel": 6, Zeit: Modus: Zeit: "openTime1": "06:30", "closeTime1": "19:00", Batteriestatus + WLan Verbindung "state": { "general": { "batteryLevel": 80, "powerSource": "battery", }, "connectivity": { "connected": false aktuelle Status Gesamtübersicht }, "feeder": { "state": "open // Futterklappen "fault": "blocked", // Warnhinweise "feedLevel": 34, //Füllstand "lightLevel": 100,//Lichtstatus "mode": "faulted" //MOdus Warnhinweise ??? } }, "remainingDays": 3, //verbleibende Tage bis das Futter leer ist Hühnerzahl -und Größe sowie Futtermittel "meta": { "feed_type": "crumb", "large_chicken_count": "4", "medium_chicken_count": "0", "small_chicken_count": "0" Ich habe dir nun alles rausgesucht bzw. unnötiges rausgestrichen. Reicht dir das?
  • POST in JSON an WLED absenden

    9
    1
    0 Stimmen
    9 Beiträge
    339 Aufrufe
    Matthias JakobM
    @MCU Bei mir hat das jetzt so ausgesehen (Das JSON ist jetzt ein bisschen länglich, aber das zeigt, dass es sich lohnt, es in einem Rutsch durchzuschicken, statt jeden einzelnen Wert über den WLED-Adapter zu setzen): function testWled() { const url = 'http://X.X.X.X/json/state'; const payload = { "on": true, "bri": 255, "transition": 10, "bs": 5, "mainseg": 0, "seg": [ { "id": 0, "start": 0, "stop": 144, "grp": 1, "spc": 0, "of": 0, "on": true, "frz": false, "bri": 255, "cct": 127, "set": 0, "lc": 1, "n": "", "col": [ [ 255, 170, 85 ], [ 255, 160, 0 ], [ 8, 255, 0 ] ], "fx": 0, "sx": 128, "ix": 128, "pal": 0, "c1": 128, "c2": 128, "c3": 16, "sel": true, "rev": false, "mi": false, "o1": false, "o2": false, "o3": false, "si": 0, "m12": 0, "bm": 0 } ] }; httpPost( url, payload, { timeout: 3000, headers: { 'Content-Type': 'application/json' } }, (error, response) => { if (error) { log('WLED httpPost Fehler: ${error}', 'error'); return; } log('WLED Antwort Status: ${response.statusCode}'); log('WLED Antwort: ${JSON.stringify(response.data)}'); } ); }
  • [TypeSkript] Wetter.com Forecast/Vorhersage

    72
    4 Stimmen
    72 Beiträge
    4k Aufrufe
    P
    Danke, witzig, in meinem Entwurf war es auch last_sync_ts. Allerdings legt Dein Skript den Datenpunkt schreibgeschützt an. Wohl, weil der Wert nur vom Skript überschrieben werden soll.
  • Zendure zenSDK Lokal API, SmartMode, SolarFlow AC 800 Pro 2

    294
    10 Stimmen
    294 Beiträge
    27k Aufrufe
    T
    @maxclaudi Vielen Dank für die ausführliche Info, dann hab ich es tatsächlich richtig verstanden. Klassische Nulleinsppeisungs-Script für Wechselrichter hab ich schon öfter gesehen und mir auch mal ein sehr umfangreiches Script bereitsgestellt, was ich im Netz (glaube sogar hier im Forum) gefunden habe. Aber aktuell entsteht massig Wirrwarr in meinem Kopf, wenn ich überlege, wie ich das anpassen muss, um damit auch noch das Laden/Entladen Wechselspiel zu realisieren. Ich hoffe dada kommt Licht ins Dunkel, wenn der 800 Pro2 erstmal mit Deinem Script angebunden ist und ich sehe, wie die Datenpunkte zusammenspielen. Bin sehr gespannt und freu mich auf's Mittüfteln.
  • Rauchmelder - Ein Javascript ersetzt vier Blockly

    6
    1
    0 Stimmen
    6 Beiträge
    102 Aufrufe
    paul53P
    @Michael-Schmitt [sagte]: hab das bekommen. Das komplette Skript mit den beiden Vereinfachungen: // ZUORDNUNG: Hier fließen deine echten Datenpunkte und Lichter zusammen const sicherheitsSchnittstelle = { // 1. Wohnzimmer 'alias.0.Co2/Rauchmelder.Rauchmelder_WZ.ACTUAL': { raum: 'Wohnzimmer', typ: '🔥 Rauchmelder', lichter: ['alias.0.Lichter.WZ_Decke_hinten.SET', 'alias.0.Lichter.WZ_Decke_vorne.SET'] }, // 2. Schlafzimmer 'alias.0.Co2/Rauchmelder.Rauchmelder_Schlafzimmer.ACTUAL': { raum: 'Schlafzimmer', typ: '🔥 Rauchmelder', lichter: ['alias.0.Lichter.Schlafzimmer_Decke.SET', 'alias.0.Lichter.Schlafzimmer_Nachttischlampe.SET'] }, // 3. Flur 'alias.0.Co2/Rauchmelder.Rauchmelder_Flur.ACTUAL': { raum: 'Flur', typ: '🔥 Rauchmelder', lichter: [] // Im Flur soll laut deinem Blockly kein Licht geschaltet werden }, // 4. Küche (CO2) 'alias.0.Co2/Rauchmelder.Co2Melder_Küche.ACTUAL': { raum: 'Küche', typ: '⚠️ CO2-Melder', lichter: [ 'alias.0.Lichter.Küche_1.SET', 'alias.0.Lichter.Küche_2.SET', 'alias.0.Lichter.Küche_3.SET', 'alias.0.Lichter.Küche_4.SET' ] } }; // Ab hier arbeitet das Skript vollautomatisch auf einem einzigen Gruppen-Trigger const melderListe = Object.keys(sicherheitsSchnittstelle); on({id: melderListe, change: 'ne'}, function (obj) { let ausgeloesteID = obj.id; let info = sicherheitsSchnittstelle[ausgeloesteID]; let datum = formatDate(new Date(), "DD.MM."); let uhrzeit = formatDate(new Date(), "hh:mm"); let nachricht = ''; // ========================================================================= // FALL 1: EIN MELDER SCHLÄGT ALARM (AN) // ========================================================================= if (obj.state.val) { let lichtWurdeGesteuert = false; // Alle zugeordneten Lichter für diesen Raum einschalten if (info.lichter && info.lichter.length > 0) { for (let i = 0; i < info.lichter.length; i++) { if (existsState(info.lichter[i])) { setState(info.lichter[i], true); lichtWurdeGesteuert = true; } } } // Elegante HTML-Nachricht zusammenbauen nachricht = "🚨 <b>GEFAHREN-ALARM !</b> 🚨\n" + "🕒 <i>Am " + datum + " um " + uhrzeit + " Uhr</i>\n\n" + "Ein Sicherheitsmelder hat angesprochen:\n" + "• <b>Typ:</b> " + info.typ + "\n" + "• <b>Raum:</b> " + info.raum + " (AN)\n\n"; if (lichtWurdeGesteuert) { nachricht += "💡 <i>Die Beleuchtung im Raum wurde automatisch eingeschaltet!</i>"; } else { nachricht += "ℹ️ <i>In diesem Raum ist keine Notbeleuchtung hinterlegt.</i>"; } log("Sicherheits-ALARM AUSGELÖST: " + info.raum + " (" + info.typ + ")", 'warn'); } // ========================================================================= // FALL 2: EIN MELDER GEHT WIEDER AUS (AUS) // ========================================================================= else { // Elegante HTML-Entwarnung zusammenbauen nachricht = "🟢 <b>Sicherheits-Entwarnung</b> 🟢\n" + "🕒 <i>Am " + datum + " um " + uhrzeit + " Uhr</i>\n\n" + "Der Gefahrenbereich hat sich normalisiert:\n" + "• <b>Typ:</b> " + info.typ + "\n" + "• <b>Raum:</b> " + info.raum + " (AUS)\n\n" + "✅ <i>Der Melder meldet wieder einen sicheren Zustand.</i>"; log("Sicherheits-Alarm beendet: " + info.raum, 'info'); } // Per Telegram absenden im sauberen HTML-Modus sendTo('telegram.0', { text: nachricht, user: 'Michael', parse_mode: 'HTML' }); });
  • Error aus Kostal Piko 5.5 schiesst Script ab

    4
    0 Stimmen
    4 Beiträge
    113 Aufrufe
    paul53P
    @Homoran [sagte]: Dann bau ich das mal für zukünftige Fälle ein. Version, die nur ein komplettes Objekt erstellt, wenn der Code nicht gefunden wurde: var msg = msgs.find(item => item.code==code); if(!msg) msg = { code: code, type: 'unbekannt', description: 'n.v.', action: 'n.v.' }; msg.date=date;
  • ioBroker Prozess- & Gesundheitsmonitor + Grafana + HTML

    javascript monitoring
    90
    5
    5 Stimmen
    90 Beiträge
    3k Aufrufe
    crunchipC
    @emil70 du schreibst nen falschen DP in die Influx 0_userdata.0.Systeminfos.ioBroker.Prozesse.LogErrorHistory gehört da nicht hin Im ersten Beitrag unter Punkt 4 ist ein Screen mit allen DP`s die in die InfluxDB kommen
  • E3DC Hauskraftwerk steuern

    4k
    1
    3 Stimmen
    4k Beiträge
    2m Aufrufe
    A
    @Dave69-CH Ok, normalerweise sollten die Werte wieder ausgelesen und aktualisiert werden, selbst wenn diese mal gelöscht werden. Eventuell mal ein Issue hier eröffnen: e3dc-rscp Adapter
  • getobject und rooms

    2
    0 Stimmen
    2 Beiträge
    61 Aufrufe
    paul53P
    @bob79999 [sagte]: enumNames, sie können im Script nur nicht angesprochen werden. Meiner Erfahrung nach funktioniert dieser Ansatz (mehrfach getestet): let room = getObject(id, 'rooms').enumNames[0]; if(typeof room == 'object') room = room.de; Als (globale) Funktion: function roomName(id) { const room = getObject(id, 'rooms').enumNames[0]; if(typeof room == 'object') return room.de; return room; } @bob79999 sagte: Compiler wirft wie bekannt und oft im Forum adressiert ein "property enumNames does not exist" aus. Das ist nicht der Compiler, sondern die Typescript-Prüfung im Editor. Vom rot unterkringelten enumNames sollte man sich nicht verrückt machen lassen.
  • ioBroker Forum Widget – Forum-Daten direkt in Visu

    18
    2
    0 Stimmen
    18 Beiträge
    358 Aufrufe
    M
    Es gibt eine Möglichkeit im Profil [image: 1778956764291-1565b73c-02ac-4b1c-aa71-82d8311947d5-image.jpeg]
  • Todoist Script Lösung

    11
    1
    1 Stimmen
    11 Beiträge
    334 Aufrufe
    haselchenH
    Update: Mit diesem Befehl in einer Konsole kann man seine Projekte auflisten lassen (aus der App). Das ist wichtig für die Projekt ID im Skript. curl -i https://api.todoist.com/api/v1/projects -H "Authorization: Bearer XXXXXXXX" (für die XXXX muss euer Token eingesetzt werden) Die Ausgabe sähe als Beispiel so aus: { "results": [ { "id": "XXXXXX", "can_assign_tasks": false, "can_comment": true, "child_order": 0, "is_collapsed": false, "color": "grey", "creator_uid": "", "created_at": "", "is_archived": false, "is_deleted": false, "is_favorite": false, "is_frozen": false, "name": "Inbox", "is_shared": false, "updated_at": "", "view_style": "list", "default_order": 0, "description": "", "public_access": false, "public_key": "", "access": { "visibility": "restricted", "configuration": {} }, "role": "CREATOR", "goal_ids": [], "parent_id": null, "inbox_project": true }, { "id": "XXXXXX", "can_assign_tasks": false, "can_comment": true, "child_order": 1, "is_collapsed": false, "color": "sky_blue", "creator_uid": "", "created_at": "", "is_archived": false, "is_deleted": false, "is_favorite": false, "is_frozen": false, "name": "Alexa-Einkaufsliste", "is_shared": false, "updated_at": "", "view_style": "list", "default_order": 0, "description": "", "public_access": false, "public_key": "", "access": { "visibility": "restricted", "configuration": {} }, "role": "CREATOR", "goal_ids": [], "parent_id": null, "inbox_project": false }, { "id": "XXXXXX", "can_assign_tasks": false, "can_comment": true, "child_order": 2, "is_collapsed": false, "color": "orange", "creator_uid": "", "created_at": "", "is_archived": false, "is_deleted": false, "is_favorite": false, "is_frozen": false, "name": "Alexa To-Do Liste", "is_shared": false, "updated_at": "", "view_style": "list", "default_order": 0, "description": "", "public_access": false, "public_key": "", "access": { "visibility": "restricted", "configuration": {} }, "role": "CREATOR", "goal_ids": [], "parent_id": null, "inbox_project": false } ], "next_cursor": null Nehmen wir den Block , wo Alexa-Einkaufsliste steht. Darüber gibt es das Feld "id". Diese ID nehmt ihr für euer Skript. Das könnt ihr für jedes Projekt , was ihr in der App angelegt habt, machen. Ich habe ne ToDo Liste noch mit Aufgaben, die ich mir zukünftig so vorgenommen habe. Ein HTML Widget und sie werden mir in der VIS angezeigt. Immer wenns mir in den Kopp kommt, trage ich ne Aufgabe oder was für den Einkauf in der ToDoIst App ein und je nach Update Intervall im Skript, erscheint es dann in der VIS. [image: 1778806962575-4af9418b-b376-4f21-8e11-192aec03c340-image.jpeg] Token und Project ID vervollständigen und die beiden Datenpunkte anlegen 0_userdata.0.todoist.aufgaben.html 0_userdata.0.todoist.aufgaben.count const TOKEN = "XXXXXX"; // 🔴 Kann numerisch sein (muss nicht) const PROJECT_ID = "XXXXXX"; const DP_HTML = "0_userdata.0.todoist.aufgaben.html"; const DP_COUNT = "0_userdata.0.todoist.aufgaben.count"; // Cache let lastHTML = "Keine Daten"; let lastCount = 0; // ===================== // LOG INFO TEIL (SEPARAT & CLEAN) // ===================== function logInfo(msg) { log("[TODOIST] " + msg, "info"); } function logError(msg) { log("[TODOIST ERROR] " + msg, "info"); // kein warn/error → keine Stacktraces } // ===================== // START // ===================== schedule("*/5 * * * *", loadTasks); loadTasks(); // ===================== // MAIN // ===================== function loadTasks() { logInfo("Lade Tasks..."); httpPost("https://api.todoist.com/api/v1/sync", "sync_token=*&resource_types=" + encodeURIComponent('["items"]'), { headers: { "Authorization": "Bearer " + TOKEN, "Content-Type": "application/x-www-form-urlencoded" }, timeout: 10000 }, (err, res) => { if (err) { logError("HTTP Fehler"); setState(DP_HTML, lastHTML, true); setState(DP_COUNT, lastCount, true); return; } let data; try { data = JSON.parse(res.data); } catch (e) { logError("JSON Fehler"); return; } const items = data.items || []; if (!Array.isArray(items)) return; const filtered = items.filter(t => t.project_id == PROJECT_ID ); const html = filtered.length ? filtered.map(t => { let text = escapeHtml(t.content || ""); // entfernt führende "-" oder "•" falls sie im Task stehen text = text.replace(/^(\s*[-•]\s*)+/, ""); return "&#8226; " + text; }).join("<br>") : "Keine Einträge vorhanden"; setState(DP_HTML, html, true); setState(DP_COUNT, filtered.length, true); lastHTML = html; lastCount = filtered.length; logInfo("OK: " + filtered.length + " Items"); } ); } // ===================== // HTML SAFE // ===================== function escapeHtml(str) { return (str || "") .replace(/&/g, "&amp;") .replace(/</g, "&lt;") .replace(/>/g, "&gt;"); }
  • Werte in ein Register Schreiben

    48
    0 Stimmen
    48 Beiträge
    971 Aufrufe
    T
    Oha, das es so einfach ist hätte ich jetzt nicht gedacht. Da habe ich ja diese Woche eine Menge gelernt
  • HowTo: Zusatz-Programme fuer jarvis v3

    javascript
    899
    4 Stimmen
    899 Beiträge
    258k Aufrufe
    D
    @MCU geiler Scheiss. Danke funktioniert! 👍🏻
  • SQL-Abfrage aus Script an MariaDB

    9
    0 Stimmen
    9 Beiträge
    390 Aufrufe
    Uwe-KU
    @Norwegen60 Das hier funktioniert jetzt incl. zurück holen des Wertes in Datapoint let sSQL0 = "SELECT ioBroker.fn_energy('" + Mode + "', " + ID + ", " + Offset + ") AS energy"; sendTo('sql.0', 'query', sSQL0, function (result) { let energy = result.result[0].energy; setState(DataPoint, {val: Number(energy), ack: true}); log('GetEnergy: ' + energy + ' -> ' + DataPoint, 'info'); }); Danke für die Unterstützung Hast du das als reines Java Script realisiert oder es irgendwie in den Send_to Blockly Block integriert ? Ich würde es am liebsten rein im Blockly umsetzen, SQL Basic kann ich, aber Java Script ist nicht mein Metier. Ich habe schon Stunden zugebracht nach einem Blockly Beispiel, aber ich habe nichts gefunden, welches mir Werte zurückliefert die ich dann weiterverarbeiten kann.
  • Rauchmelder Skript

    javascript security
    53
    1 Stimmen
    53 Beiträge
    7k Aufrufe
    Kanzler1959K
    Ich wollte mich nur bedanken - auch wenn die Beiträge alle schon ein wenig alt sind. Das Script am Anfang hat mit geholfen eine Abfrage über meine RM zu machen. Diese sind alle im Gewerk "Sicherheit". Ich habe PushOver durch Telegram ersetzt und und auch eine 'daily' Meldung (um 22:22) eingebaut. Wenn jemand Interesse hat einfach fragen, dann poste ich das hier. Ist aber im Grunde das Script von ganz oben. Nachtrag: Man kann es testen, in dem man den Status 'editiert' (false -> true (Auslöser) -> false)
  • Tandoor zu Bring

    1
    0 Stimmen
    1 Beiträge
    64 Aufrufe
    Niemand hat geantwortet
  • [Vorlage] Script: JSON-->Datenpunkte mit sync

    Verschoben javascript monitoring
    11
    2 Stimmen
    11 Beiträge
    2k Aufrufe
    C
    @Ahnungsbefreit Kein Problem, ich habe das Thema für mich lösen können.
  • HTTP PATCH

    5
    1
    0 Stimmen
    5 Beiträge
    198 Aufrufe
    m1k3f15hM
    Super danke @codierknecht für den Tipp mit Axios Haut super hin :) function renameCam() { var temp = getState("alias.0.au.ga.xxxxxxxxx").val axios.patch('https://192.168.xxx.xxx/proxy/protect/integration/v1/cameras/xxxxxxxxxxxxxxxxxx', { name: 'xxxxx' + temp + '°C' }, { httpsAgent: agent, headers: { 'X-API-KEY': 'xxxxxxxxxxxxxxxxxxxxxxxxx', 'Accept': 'application/json' } }) // .then(function(response) { // log("Response: " + JSON.stringify(response.data)) // }) .catch(function(error) { log("Error: " + error, error) }) }; Mike
  • Homepilot Rolladensteuerung per Telegram

    javascript
    1
    0 Stimmen
    1 Beiträge
    67 Aufrufe
    Niemand hat geantwortet

324

Online

32.9k

Benutzer

83.1k

Themen

1.3m

Beiträge