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
    O
    Da ich tandoor nutze und Bring als Einkaufslistenapp (wird auch mit Alexa synchronisiert), hab ich mir ein Script erstellt, welches mit die Tandoor items ins Bring holt - ggf. kann das ja noch jemand gebrauchen: // --- KONFIGURATION --- const tandoorUrl = 'tandoorURL'; const apiToken = 'tandoorAPI-KEY'; const bringListState = 'bring.XXX.saveItem'; // --- Ab hier keine Konfig mehr --- const axios = require('axios'); const syncInterval = 5; // Alle 5 Minuten // --- HAUPTFUNKTION --- async function syncTandoorToBring() { console.log('Tandoor-Sync: Starte Synchronisierung (Bearer-Mode)...'); try { const response = await axios({ method: 'get', url: `${tandoorUrl}/api/shopping-list-entry/`, headers: { 'Authorization': `Bearer ${apiToken}`, 'Accept': 'application/json' }, timeout: 10000 }); // Tandoor liefert Liste oft in .results let data = Array.isArray(response.data) ? response.data : (response.data.results || []); // Nur nicht-erledigte Items filtern const openEntries = data.filter(entry => !entry.completed); if (openEntries.length === 0) { console.log('Tandoor: Keine neuen Einkaufslisten-Einträge gefunden.'); return; } for (const entry of openEntries) { // Logik-Update: Wir prüfen alle Namensfelder von Tandoor let name = ""; if (entry.food_display) { name = entry.food_display; } else if (entry.description) { name = entry.description; } else if (entry.food && entry.food.name) { name = entry.food.name; } else { name = "Unbekannte Zutat"; } let amount = (entry.amount && entry.amount !== 0) ? entry.amount : ""; let unit = entry.unit_display || ""; // Sauber zusammenfügen und unnötige Leerzeichen entfernen let itemName = `${amount} ${unit} ${name}`.replace(/\s+/g, ' ').trim(); console.log(`Tandoor-Sync: Übertrage "${itemName}" zu Bring!`); // 1. In Bring-Adapter schreiben await setStateAsync(bringListState, itemName); // 2. In Tandoor als erledigt markieren await markAsCompleted(entry.id); } console.log('Tandoor-Sync: Synchronisierung abgeschlossen.'); } catch (error) { if (error.response) { console.error(`Tandoor-Sync Fehler (${error.response.status}): ${JSON.stringify(error.response.data)}`); } else { console.error('Tandoor-Sync Netzwerkfehler: ' + error.message); } } } // --- HILFSFUNKTION: ABHAKEN --- async function markAsCompleted(entryId) { try { await axios({ method: 'patch', url: `${tandoorUrl}/api/shopping-list-entry/${entryId}/`, headers: { 'Authorization': `Bearer ${apiToken}`, 'Content-Type': 'application/json' }, data: { completed: true } }); console.log(`Tandoor-Sync: Item ${entryId} in Tandoor abgehakt.`); } catch (error) { console.error(`Tandoor-Sync Update Fehler für ID ${entryId}: ${error.message}`); } } // --- ZEITSTEUERUNG --- schedule(`*/${syncInterval} * * * *`, syncTandoorToBring); // Sofort-Start beim Speichern syncTandoorToBring();```
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    M
    Gestern war bei VolMax 3,54V Ladeende 100%, das Entladen stoppt halt dann doch relativ bald wenn ich bei Volmin 3,16V stoppe, aber wird wohl Sinn machen. Damit es ein bisschen hinausgezögert wird habe ich aber aktuell schon von 40% (500W) bis 10% verlaufend das Entladelimmit bis zu nur noch maximal 200W runtergesetzt.
  • Hilfe für Skripterstellung mit Node-RED

    955 13k
    955 Themen
    13k Beiträge
    mickymM
    @Tontechniker Man kann solche Filter aber auch OHNE neue Nodes zu installieren mit einfachen Standard-Switch Nodes realisieren: [image: 1776865319208-af3cab3c-2716-43f4-b7df-7f74e8bf051b-image.jpeg] ggf. einfach nochmal meinen alten Thread anschauen: https://forum.iobroker.net/topic/50086/datum-und-zeitverarbeitung-mit-nodered
  • Json Werte per MQTT senden ?

    12
    1
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    mickymM
    @yoshi Hast Du die Datenpunkte auch unbestätigt beschrieben? [image: 1676840383809-b1088743-1ed5-4b5f-9ef5-a36b27caef0a-image.png]
  • Log Error an Pushover melden

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    M
    @dicken Hi - hat mir echt geholfen. Danke! Habe die Ausgabe noch etwas "ge-pimpt", da ich davon ausgehe, dass die Meldungen unterschiedlich lang sein können. Muss ich aber erst noch testen...bis dahin der Zwischenstand: [image: 1676826577796-7a9c2085-9f63-4980-a36b-f566071dd099-grafik-resized.png]
  • Fritzbox-> Ip von neuem Teilnehmer ermitteln

    13
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    M
    @liv-in-sky let wlan = '1'; // 1 -> 2.4GHz ( für diesen Fall missverständlich ) let fritzCommandDP = 'tr-064.0.states.command'; let fritzResultDP = 'tr-064.0.states.commandResult'; let cmdHostListPath = {'service': 'urn:dslforum-org:service:Hosts:'+wlan,'action': 'X_AVM-DE_GetHostListPath','params': {}}; sendCMD(JSON.stringify(cmdHostListPath)); async function sendCMD(cmd) { setState(fritzCommandDP, cmd); const obj = await once({ id: fritzResultDP }); // log("Erg: " + obj.state.val); let erg = JSON.parse(obj.state.val); // log(erg["NewX_AVM-DE_HostListPath"]); const request = require('request'); request('http://192.168.178.1:49000'+erg["NewX_AVM-DE_HostListPath"], { json: true }, (err, res, body) => { if (err) { return console.log(err); } //console.log(body.url); //console.log(body.explanation); //console.log(res); console.log(body); }); } Machst du ein JSON daraus?
  • SayIt Adapter - danach Radio auf Sonos weiter laufen lassen

    6
    1
    0 Stimmen
    6 Beiträge
    589 Aufrufe
    DJMarc75D
    @nachtfuchs warum so kompliziert und nicht meinem Beispiel folgen ? 3 mal der gleiche Falls ist recht sinnfrei. Und ganz unten den DP play button braucht es nicht da sobald der DP favorites set einen Wert gesetzt bekommt das Abspielen startet. Wie gesagt anhand meinem Blockly funktioniert es (bei mir) auch wie es soll :)
  • PV Warmwassererzeugung

    2
    0 Stimmen
    2 Beiträge
    243 Aufrufe
    amg_666A
    @do5tj80 Wenn du keine eigene Wetterstation hast würde ich es mal mit dem Adapter DasWetter probieren, der zeigt dir relativ genau für deinen Ort die Prognose bzw aktuelle Temperatur an und auch ob die Sonne scheint oder es bewölkt ist. Ich nutze den um wetterabhängig Rolläden zu steuern
  • Fehler im Script "node_ssh is not a constructor"

    javascript
    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    liv-in-skyL
    @von-cartman für monitor aus wird ein tool gebraucht - muss installiert werden - es simuliert einen mouseclick https://linuxhint.com/xdotool_stimulate_mouse_clicks_and_keystrokes/
  • [gelöst] Nachkommastellen abschneiden

    7
    0 Stimmen
    7 Beiträge
    595 Aufrufe
    T
    @homoran said in Nachkommastellen abschneiden: nimm beim einlesen den runde auf 2 Nachkommastellen-Block Hallo Homoran, Danke, den habe ich mehrfach gesucht und immer wieder übersehen. Manchmal klappt das halt mit dem Wald und den Bäumen nicht so. MfG Thomas Pfaffinger
  • Script wenn mehr als 30min true

    27
    0 Stimmen
    27 Beiträge
    2k Aufrufe
    AsgothianA
    @cephalopod Bitte mal prüfen ob sich der Datenpunkt innerhalb der 30 Minuten wirklich geändert hat - nicht das es zu Verzögerung bei der Weitergabe der Fenster Offen Information kommt. A.
  • Türklingel Skript ändert Lautstärke

    12
    1
    0 Stimmen
    12 Beiträge
    927 Aufrufe
    I
    @beeblebrox Tatsächlich bei mir nicht Aber @DJMarc75 besten Dank! Mit Speak und dem Befehl hat es wirklich geklappt, so dass man den Zwischenschritt den @emil70 beschreibt gar nicht mehr braucht. Mit announcement braucht man den Zwischenschritt bei mir allerdings schon noch... dann klappt auch das Aber so bin ich sehr zufrieden und bedanke mich herzlichst erneut bei allen ! :)
  • Skript schreibt nicht in Datenpunkte

    17
    0 Stimmen
    17 Beiträge
    1k Aufrufe
    V
    @codierknecht Habe mir den Adapter nun installiert und konfiguriert. Es sollten nun 3 Werte berechnet werden. In den Objekten finde ich seit gestern keine Einträge Dachte ich warte sicherlich mal das Ende des Tages ab. Aber weiterhin keine Einträge vorhanden.... Gibt's da noch einen fehlende Eintrag zum aktivieren? Danke pat Update: Alias deaktiviert!
  • Script Stromzähler eBZ DD3 2R06 DTA ODZ1

    2
    0 Stimmen
    2 Beiträge
    2k Aufrufe
    paul53P
    @pskiel sagte: Werte Tag Woche Monat und der aktuelle Verbrauch nicht. Dafür gibt es den Adapter Sourceanalytix.
  • Problem mit getStateAsync

    27
    0 Stimmen
    27 Beiträge
    3k Aufrufe
    haus-automatisierungH
    @automatisierer-0 sagte in Problem mit getStateAsync: Es kommt dann der folgende Fehler nd der Javascript Adapter ist "rot": Liegt nicht an Dir. Ist ein Bug im Adapter und schon bekannt und gefixt. Wird mit der nächsten Version laufen (wenn diese bald freigegeben wird): https://github.com/ioBroker/ioBroker.javascript/issues/1198
  • Wasseruhr auslesen mit ESP D1-Mini und TCRT5000

    3
    1
    0 Stimmen
    3 Beiträge
    1k Aufrufe
    T
    @rikdrs Als Alternative zum selbst gedruckten oder gekauften Gehäuse geht auch einfach eine HT-U Überschiebmuffe DN 90 mm (Dichtung auf beiden Seiten) mit HT-M Muffenstopfen DN 90 mm (Kappe am andere Ende). Nicht ganz so formschön aber da wo die Wasseruhr normalerweise ist, stört das ja meistens nicht [image: 1676156914301-wasserz%C3%A4hler.jpg]
  • Tasterzeitlängen abfragen

    7
    0 Stimmen
    7 Beiträge
    448 Aufrufe
    paul53P
    @asgothian sagte: da darf man aber auch noch nix machen, wenn man lang und kurz unterscheiden will. Doch, z.B. Dimmen per Rampe, das bei Loslassen beendet wird. @asgothian sagte in Tasterzeitlängen abfragen: als "timestamp vorherige Änderung" enthalten. Ja, aber erst nachträglich.
  • SimpleAPI Zugriff auf Datenpunkte

    1
    0 Stimmen
    1 Beiträge
    237 Aufrufe
    Niemand hat geantwortet
  • Temperaturgesteuerte Pumpensteuerung -wo ist der Fehler?

    5
    3
    0 Stimmen
    5 Beiträge
    374 Aufrufe
    S
    @paul53 ok, vielen Dank, werde es so machen.
  • [gelöst] Datenpunkte zyklisch oder ereignisgesteuert lesen

    53
    0 Stimmen
    53 Beiträge
    7k Aufrufe
    CodierknechtC
    @hub01 sagte in Datenpunkte zyklisch oder ereignisgesteuert lesen: Ich bedanke mich bei Allen für die rege Diskussion und würde hiermit das Thema abschließen. Wenn das Thema für Dich abgeschlossen ist, bearbeite bitte Deinen Eingangspost und setze ein "[gelöst] - " vor den Titel. Ich möchte mich an der Stelle dann für eine - in den meisten Fällen - sachliche Diskussion bedanken. Im Gegensatz zu zu manchem Anderen hast Du zumindest alle Standpunkte angehört und Deine Schlüsse daraus gezogen. Ist hier nicht unbedingt jedem gegeben ;-)
  • Javascript nach Uhrzeit/DP-Status starten/stoppen

    javascript
    10
    0 Stimmen
    10 Beiträge
    788 Aufrufe
    CodierknechtC
    @paul53 sagte in Javascript nach Uhrzeit/DP-Status starten/stoppen: Am RAM-Verbrauch ändert sich wenig durch ein Ereignis. Kommt halt darauf an, was man dann in der Ereignisbehandlung so treibt ;-) Durch das reine "anhängen" der Methode an das Event natürlich nicht.
  • String aufspliten

    10
    0 Stimmen
    10 Beiträge
    935 Aufrufe
    P
    @paul53 Danke dir perfekt.
  • Wie Shedules bei Verwendung Astro löschen / ändern

    2
    0 Stimmen
    2 Beiträge
    230 Aufrufe
    mickymM
    @kersten-0 Nutze Node-Red mit der cron-plus Node und das ist super einfach. Du kannst ja dann wieder mit Blockly oder was Du sonst willst kombinieren, wenn Du Dich nicht weiter mit dem genialen Tool beschäftigen willst. Nachdem Du es ja im allgemeinen Skript/Logik Bereich gepostet hast, besteht ja die Chance, dass Du bzgl. der Logikmaschine, die Du nutzen möchtest noch offen bist und noch nicht auf JS oder Blockly festgelegt bist. Ansonsten gibts ja hier genügend andere Leute, die Dir helfen können. [image: 1675739132073-a9e1ad5b-2267-442b-aa27-2f705f4a8617-image-resized.png]

582

Online

32.8k

Benutzer

82.8k

Themen

1.3m

Beiträge