Skip to content

Skripten / Logik

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

16.6k Topics 213.9k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    C
    so läuft bei jetzt auch bei mir wer es als js haben will: /*************************************************************** * VW → ABRP Telemetry Script * für ioBroker Javascript Adapter * * Funktionen: * 1. Sendet Fahrzeugdaten alle 5 Minuten an ABRP * 2. Sendet sofort wenn sich der SOC ändert * * Gesendete Daten: * - SOC (Batteriestand) * - GPS Position * - Odometer * - Batteriekapazität * - Timestamp * * API: * https://api.iternio.com/1/tlm/send ***************************************************************/ const apiKey = "API-KEY-von-iternio.com"; const token = "Token-aus-der-APP"; const vin = "VIN-des-Autos"; /*********************** * Datenpunkte ***********************/ const dp_soc = "vw-connect.0." + vin + ".status.charging.status.battery.stateOfChargeInPercent"; const dp_odometer = "vw-connect.0." + vin + ".mqtt.events.charging-completed.data.odometer"; const dp_lat = "vw-connect.0." + vin + ".status.position.parkingPosition.gpsCoordinates.latitude"; const dp_lon = "vw-connect.0." + vin + ".status.position.parkingPosition.gpsCoordinates.longitude"; /*********************** * Funktion zum Senden ***********************/ function sendToABRP(trigger) { const soc = getState(dp_soc).val; const odometer = getState(dp_odometer).val; const lat = getState(dp_lat).val; const lon = getState(dp_lon).val; // Prüfen ob wichtige Daten vorhanden sind if (soc === null || lat === null || lon === null) { log("ABRP: Daten fehlen → kein Versand", "warn"); return; } const utc = Math.round(Date.now() / 1000); const tlm = { utc: utc, soc: soc, capacity: 85, odometer: odometer, lat: lat, lon: lon }; const url = "https://api.iternio.com/1/tlm/send?api_key=" + apiKey + "&token=" + token + "&tlm=" + encodeURIComponent(JSON.stringify(tlm)); httpGet(url, { timeout: 2000 }, function (err, response) { if (err) { log("ABRP Fehler: " + err, "error"); } else { log("ABRP gesendet (" + trigger + "): " + JSON.stringify(tlm), "info"); } }); } /*********************** * 1️⃣ Alle 5 Minuten senden ***********************/ schedule("*/5 * * * *", function () { sendToABRP("Timer"); }); /*********************** * 2️⃣ Senden wenn SOC sich ändert ***********************/ on({ id: dp_soc, change: "ne" }, function (obj) { log("SOC Änderung erkannt: " + obj.state.val + "%", "info"); sendToABRP("SOC Änderung"); });
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    paul53P
    @Lottemann sagte: ein + als nächstes rein Addition und Multiplikation sind der 2. Mathe-Block von oben. Schritte: [image: 1773072613287-blockly_temp.jpg]
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • Sonos Lautstärke um je „1“ anheben od. absenken

    12
    0 Votes
    12 Posts
    912 Views
    W
    @homoran Ja, so dachte ich es mir fast. Wie gesagt, bislang problemlos. Vielleicht bin ich beim Drücken auch einfach zu langsam. :blush: Aber Danke für den Hinweis und die Erklärung. Das behalte ich im Hinterkopf. Gruß, Jürgen
  • [Frage] ioBroker - iLO Server Daten auslesen

    Moved
    44
    1
    0 Votes
    44 Posts
    7k Views
    kmxakK
    Ich benutze das Script selber nicht mehr. Siehe https://github.com/SebastianSchultz/ioBroker.hp-ilo
  • State Unifi Protect

    7
    0 Votes
    7 Posts
    443 Views
    5
    @paul53 Vielen Dank, ob ich mir sowas je merken kann....
  • [Vorlage]-Zeit herunterzählen bis GoogleTermin Eintritt

    blockly javascript
    58
    3
    8 Votes
    58 Posts
    8k Views
    hananH
    @liv-in-sky Hallo liv-in-sky Habe das Skript importiert und die Datenpunkte angepasst. :clap: super Arbeit, funz auf anhieb. Besten Dank nochmals für Deine Hilfe.
  • setStateAsync-Änderungen landen in Endlosschleife

    13
    0 Votes
    13 Posts
    705 Views
    paul53P
    @sir0drake sagte: a) Wird dieses Attribut c ausschließlich von ioBroker gesetzt ? Gerade getestet: Das Attribut c enthält den Skriptnamen, wenn der Wert mit setState() aus einem Skript gesetzt wurde. log(getState('0_userdata.0.Test.neueZahl')); setState('0_userdata.0.Test.neueZahl'/*neueZahl*/, {val:11, ack:true, c: 'Kommentar'}); Log: script.js.common.Neuer_Test: {'val':11,'ack':true,'ts':1630442081839,'q':0,'c':'script.js.common.Neuer_Test','from':'system.adapter.javascript.0','user':'system.user.admin','lc':1630441922443} @sir0drake sagte in setStateAsync-Änderungen landen in Endlosschleife: b) Darf ich das Attribut from mit einem String meiner Wahl besetzen, ohne im Hintergrund Chaos anzurichten ? from wird vom js-controller gesetzt, genauso wie ts, lc, und q. Die Attribute c und user werden an getState() übergeben, aber nicht an on().
  • Skript für Remote Sunricher SR-ZG9001K12-DIM-Z4

    3
    0 Votes
    3 Posts
    263 Views
    M
    @hsteinme Hi, ioBroker und Phoscon laufen via Proxmox auf einem Intel NUC. Linux Phoscon 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64 Dresden ConBeeII Stick, Version 2.07.01 / 8.12.2020, Firmware 26680700 IoBroker mit NodeJS V12.22.5, NPM V6.14.14 mit deConz ZigBee Adapter Version 1.3.19 Läuft flüssig und ohne Probleme. Gruß
  • Bilder von Webseiten als Telegram verwenden

    2
    2 Votes
    2 Posts
    296 Views
    liv-in-skyL
    @christoph1337 super - danke dir
  • Javascript Adapter läßt sich nicht updaten

    12
    0 Votes
    12 Posts
    218 Views
    W
    @guergen erstmal vielen Dank. Meine Pause ist nun vorbei. Gucke hier später nochmal rein
  • Falls x ist wahr, mache yz funktioniert nicht

    5
    1
    0 Votes
    5 Posts
    417 Views
    David G.D
    @chris929 Sehr gut. Falls du planst die Anlage zu erweitern und irgendwann mehrere Sensoren hast würde ich allerdings was anders vorgehen. Auf dem Weg hat man sonst bald sehr viele dopplungen im Blockly. Immer wieder das selbe für jeden Sensor. EDIT: Glaube nicht, dass dein Skript gut klappt. So bekommst du NUR eine Meldung beim aktivieren der Anlage ob die Türen offen sind. Aber nicht wenn sich nach dem aktivieren eine Türe öffnet. Musst auf die Türe triggern, damit dadurch die Nachricht ausgelöst wird. Das dann 2 mal (1 mal für jeden Sensor).
  • suche script homematic wandtaster bedient Tradefri Dimbare

    19
    0 Votes
    19 Posts
    2k Views
    paul53P
    @adriaanb sagte: dieser pro schalter Offenbar kann man nur die Betätigungsdauer einstellen, ab der langer Tastendruck gesendet wird.
  • suche Batterie-Alexa-Alarm-Script/Blockly

    13
    0 Votes
    13 Posts
    444 Views
    crunchipC
    @dslraser damit nur einmal täglich, wie in dem Beispiel um 15:00 geprüft wird
  • ioBroker Signal Nachrichten

    8
    0 Votes
    8 Posts
    2k Views
    K
    @saschame da ich jetzt einige Stunden darauf verwendet habe, eine Variable in den zu sendenden Text einzubauen, will ich mein Ergebnis hier teilen; vielleicht hilft's ja jemandem. Ich habe zunächst das Blockly-Beispiel von Elzershark aus seinem Forum genommen, wo immerhin schon neben fixem Text ein Variablenwert ergänzt wurde. Ich habe das Beispiel auf einen Variablenwert reduziert - also die festen Texte entfernt- , mir den JS-Code kopiert und diesen dann in einem JS-Skript laufen lassen. Ging auch. Dann wollte ich eine globale Funktion definieren, an die ein zuvor konstruierter String zum Senden übergeben wird. Dann wurd's erwas kompliziert mit 2 Sorten Anführungszeichen und Kommata. Verstanden hab ich es nicht 100%ig - auch weiß nicht nicht was .join('') am Ende bewirkt - , aber so funktioniert es immerhin: Globale Funktion: function SignalSend (SignalText) { exec((['signal-cli -u +49172xxxxxxx send -m ', SignalText ,' +49172xxxxxxx'].join(''))); return; } let DAX = "'Der DAX steht bei " + getState('0_userdata.0.DAX30').val + " Punkten.'"; SignalSend (DAX); Es geht auch ohne Text in der simplen Form let DAX = getState('0_userdata.0.DAX30').val; Doch wenn man Text vor den Wert stellt, muss man m.E. den String mit einem Hochkomma vorne beginnen lassen und hinter dem Wert ein Hochkomma in Anführungsstrichen folgen lassen, also: let DAX = "'Der DAX liegt jetzt etwa bei " + getState('0_userdata.0.DAX30').val + "'"; Nachtrag: Damit man sich keine Gedanken machen muss und einfach grundsätzlich einen "normalen" String an die globale Funktion übergeben kann, würde ich in der Globalfunktion zwei Hochkommata zwischen Anführungsstrichen ergänzen. Selbst wenn sie nicht gebraucht werden , stören sie wohl nicht: exec((['signal-cli -u +49172xxxxxxx send -m ',"'"+ SignalText +"'",' +49172xxxxxxx'].join('')));
  • Blockly: Wert auf NULL abfragen

    blockly
    14
    1
    0 Votes
    14 Posts
    3k Views
    G
    @heinrichb DANKE! Genau das habe ich gesucht. Selbstverständlich macht dieser Check Sinn. So kann sich ein DP "selbst" reparieren.
  • [Gelöst] Mit Datum Rechnen

    5
    2
    0 Votes
    5 Posts
    189 Views
    paul53P
    Anmerkung: Die Berechnung oben liefert die ms für 00:00 Uhr UTC. Möchte man 00:00 Uhr Ortszeit haben, muss an den String " 00:00" angehängt werden.
  • Proxmox Backup darstellen

    5
    0 Votes
    5 Posts
    615 Views
    FredFF
    @DarkDevil @thaverland es gibt schon länger dafür einen feature request: https://github.com/iobroker-community-adapters/ioBroker.proxmox/issues/11
  • Gelöst: Update HTML Widget

    javascript
    7
    0 Votes
    7 Posts
    3k Views
    M
    @oliverio sagte in Update HTML Widget: Also den Namen des Datenpunktes in geschweiften Klammern da reinschreiben wo die Url auftauchen soll. Hallo Oliver, ich habe Deinen Tip umgesetzt. In dem vom RING Adapter angelegten Datenpunkt ist die URL mit Angabe des Hostes abgelegt, dass war nicht so gut, ich habe den Hostnamen gegen die Host IP per Script getauscht. on({id: 'ring.0.doorbell_21502358.livestream_url', change: "ne"}, async function (obj) { var string = getState("ring.0.doorbell_21502358.livestream_url").val; var newstring newstring=string.replace("http://DESKTOP-RQ1PD76(SmartHome)","http://192.168.178.xxx"); log(newstring); setState("ring.0.doorbell_21502358.livestream_url",newstring) }); Aus "http://DESKTOP-RQ1PD76(SmartHome):8082/ring.0/doorbell_21502358/livestream21502358_1629730800258.mp4" ist nun http://192.168.178.xxx:8082/ring.0/doorbell_21502358/livestream21502358_1629730800258.mp4 geworden. Der Eintrag im HTML-Widget sieht jetzt so aus: <video height="448px" width="800" autoplay muted loop="true"> <source src="{ring.0.doorbell_21502358.livestream_url}" type="video/mp4"> </video> Das klappt. War ein toller Tip mit dem Binding. Gruß Michael
  • [Gelöst] Philips Button und WLED

    11
    2
    0 Votes
    11 Posts
    317 Views
    U
    @paul53 Funktioniert wie gewünscht . Danke!
  • Unerklärliches Verhalten mit Shelly Markise

    9
    1
    0 Votes
    9 Posts
    702 Views
    D
    Das ist echt komisch. Heute war das Problem definitiv der Shelly Adapter. Das Verhalten bestand gerade auch wenn ich in den Objekten eine Stellung vorgegeben habe. Kurz hin und her und stop. Gestern war aber definitiv die Steuerung des Scrips das Problem. Das geht gerade einwandfrei. Hab jetzt erstmal den Shelly Adapter deaktiviert und steuere über den FHEM-Adapter. Das geht (zumindest gerade) problemlos.
  • [Skript] LG TV via WOL einschalten und per Adapter ausschalten

    Moved
    9
    0 Votes
    9 Posts
    8k Views
    ?
    @elbo said in [Skript] LG TV via WOL einschalten und per Adapter ausschalten: createState("javascript.0.TVeinschalten"); var wol = require('wake_on_lan'); // Lädt von ioBroker das nötige Paket herunter on({id: "javascript.0.TVeinschalten", change: 'any'}, function (obj) { var current_state = getState("javascript.0.TVeinschalten").val; if(current_state == "1"){ wol.wake('14:C9:13:18:34:5B', { address: '192.168.0.255', port: 9}); log("Skript WOL - TV gestartet", "info"); }else{ setState("lgtv.0.turnOff", true); log("Skript WOL - TV ausgeschaltet", "info"); }}); Hi, hab mal das script eingebaut, natürlich Adressen geändert aber da tut sich nix bei mir.
  • [Gelöst] Blockly - Button als Switch

    11
    1
    0 Votes
    11 Posts
    838 Views
    paul53P
    @umbrella1980 sagte: Jetzt funktioniert das einwandfrei ! Dann markiere bitte das Thema in der Überschrift des ersten Beitrags als [Gelöst].

604

Online

32.7k

Users

82.5k

Topics

1.3m

Posts