Skip to content

Skripten / Logik

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

16.6k Topics 213.6k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    D
    Danke habe ich gemacht. ( 1punkt) Die Objekt-ID "aktuell erzeugte Energie" wäre bei mir: Objekt-ID: 0_userdata.0.Charge_Control.Allgemein.IstPvErtragLM0_kWh plus Objekt-ID: 0_userdata.0.Charge_Control.Allgemein.IstPvErtragLM1_kWh (zusatz WR) wie kann ich das bewerkstelligen?
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    paul53P
    @Duffy sagte: Kannst du mir bitte saen warum das nicht geht? Nein, für das Verhalten der BWM habe ich keine Erklärung. @Duffy sagte in Licht geht nicht mehr aus nach austausch Steckdose -> Birne: sage Alexa Licht Arbeitsplatte aus Hast du dann die Küche bereits verlassen?
  • 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
  • async-await sleep stoppen

    5
    0 Votes
    5 Posts
    425 Views
    S
    Super, vielen Dank für Eure Tipps, ! Habe es jetzt so umgesetzt var Timeout1 = null; var Timeout2 = null; on({id: RFCode, val: "12345"}, function() { if (getState(Light).val === false) { setState(Light, true); TimerLang(); } else if(Timeout1) { clearTimeout(Timeout1); Timeout1 = null; TimerKurz(); } else if(Timeout2) { clearTimeout(Timeout2); Timeout2 = null; TimerLang(); }}); function TimerLang() { Timeout1= setTimeout(function() { setState(Light, false); Timeout1 = null; }, 600000)}; function TimerKurz() { Timeout2= setTimeout(function() { setState(Light, false); Timeout2 = null; }, 30000)}; Falls man das noch eleganter machen kann, immer her mit den Tipps. Ich bin wie gesagt nicht so der JS Held, aber zumindest funktioniert es :blush:
  • Scripte verschwinden in der Ansicht

    9
    0 Votes
    9 Posts
    551 Views
    O
    @glasfaser Bin nicht über VNC verbunden. Mit "Problem mit dem Browser" meinte ich die Darstellung in einem Browser. Konnte das Problem jetzt eingrenzen. Die Ansicht fliegt nur bei einem bestimmten JS weg, nicht bei allen.
  • http request Erläuterung für Anfänger

    7
    3
    0 Votes
    7 Posts
    731 Views
    mickymM
    Ich hatte zwar an die Umsetzung des Http-Requests gedacht - aber wenn es fertige Nodes bzw. iobroker Adapter gibt - dann ist das ja vielleicht noch einfacher - da kann ich aber nichts zu beitragen.
  • Wert aus JSON in Variable mit Zeitstempel von gestern

    2
    0 Votes
    2 Posts
    290 Views
    paul53P
    @oggy1979 sagte: Zeitstempel (iobroker - letzte Änderung, für Verwendung in Grafana) auf den Wert aus dem json setzen?! Die Zeitstempel (ts, lc) eines Datenpunktes werden vom js-controller gesetzt.
  • Div class auslesen / parsen

    13
    0 Votes
    13 Posts
    1k Views
    mickymM
    @ceel Mit snmp müsste es eigentlich gehen. Ich lese das via snmp via NodeRed aus - und das klappt auch mit anderen Marken als meinem HP- Drucker - siehe hier: https://forum.iobroker.net/topic/44337/hp-tintenfüllstände-mit-nodered-und-snmp Ich würde Dir halt generell mal empfehlen, den in dem Thread genannten MIB Browser zu installieren [image: 1662056123128-0f3378a6-3981-49ee-8922-da1604218596-image-resized.png] . Auf dem Screenshot siehst Du die OID 1.3.6.1.2.1.43.11.1 und den Pfad in der herstellerunabhängigen Printer MIB. Jedenfalls kannst Du so sehen, ob Du eine snmp Verbindung aufbauen kannst dich über die MIB durchsuchen, wo die Werte bei Dir drin stehen. Den MIB Browser habe ich mir damals hier runtergeladen: https://www.manageengine.de/produkte-loesungen/kostenlose-produkte-und-editionen/free-snmp-mib-browser-tool.html
  • [Anleitung] Lokal Netatmo Presence Bild -> Telegram

    2
    4 Votes
    2 Posts
    885 Views
    A
    Wird dabei auch eine Bewegung erkannt b.z.w. ändert sich das Bild kommt dann eine Nachricht. Ich würde gern ein Bild und eine Nachricht bekommen wenn jemand in den Bereich der Kamera kommt.
  • Markisen Steuerung

    javascript
    18
    0 Votes
    18 Posts
    499 Views
    M
    Übrigens: Markise schreibt man mit einem "s". Danke du hast natürlich Recht. :+1:
  • Werte aus PV Anlage auslesen

    6
    1
    0 Votes
    6 Posts
    1k Views
    P
    @procrastinator Sorry to reply in English, used g-translate to find out what is going on here. I was wondering also the same thing, how to extract the production values from Steca's inverters. Their official way is to pull the data out with RS485 connection, but I wanted to get it out directly via their web server. They even sent the RS485 documentation when I asked how to pull out data over the www interface. After digging a while I found this, which at least gives you current values. By refreshing it, it gives you new values. This does't have yield values available, but those can be calculated roughly if the refresh is done often enough. http://192.168.0.161/measurements.xml (replace the IP with your's Steca IP)
  • LED am Raspberry per Script deaktivieren

    7
    0 Votes
    7 Posts
    523 Views
    AndreiosA
    @semmy sagte in LED am Raspberry per Script deaktivieren: @thomas-braun sagte in LED am Raspberry per Script deaktivieren: @semmy https://n.ethz.ch/~dbernhard/disable-led-on-a-raspberry-pi.html Wie bringt man das dann in ein Blockly? Als ich Deinen Beitrag gelesen habe, bin ich davon ausgegangen, dass Du die nur abschalten willst! Wenn das so ist, dann sollte es doch reichen, diese auf Betriebssystemebene abzuschalten, wie im Link beschrieben. Das geht auch dauerhaft!
  • Trigger mehrerer Werte

    javascript
    5
    0 Votes
    5 Posts
    372 Views
    S
    @paul53 sagte in Trigger mehrerer Werte: Wenn man die Zählerstanddifferenz zwischen Ein- und Ausschalten des DLE verwendet, werden auch alle parallel laufenden Verbraucher mit erfasst. ja klar, das ist so, deshalb Variante --- der durchschnittliche Verbrauch vorher Trigger wird ermittelt und anschließend abgezogen. // Smartmeter let idPOW = 'smartmeter.0.1-0:16_7_0__255.value'; // aktuelle Leistung in Watt let id_Zaehlerstand = 'smartmeter.0.1-0:1_8_0__255.value'; // aufgelaufener gesamt-Zählerstand in kWh let id_L2 = 'smartmeter.0.1-0:51_7_0__255.value'; // Stromstärke Phase 2 in A let id_L3 = 'smartmeter.0.1-0:71_7_0__255.value'; // Stromstärke Phase 3 in A // Userdata .. DlE = Durclauferhitzer let idDlE_Zustand = '0_userdata.0.Energieverbrauch.Durchlauferhitzer.DL_aktiv'; // DL aktiv|true , inaktiv|false let idDLE_Zaehlerstand = '0_userdata.0.Energieverbrauch.Durchlauferhitzer.Zaehlerstand'; // aufgelaufener Verbrauch in kWh //Trigger const iTrigger = 5000; // Schwellwert ab der aktiver Durchlauferhitzer vermutet wird. const iTrigger2 = 5; // Schwellwert in A bei L2 && L3 bei aktivem Durchlauferhitzer //Programm let fZaehlerStart; var fVerbrauch; // Verbrauch während Trigger var fAlterWert; var bAktiv; // true = Verbrauch wird aufgezeichnet, DLE in Betrieb var aGrundverbrauch = []; // 0-29 des Grundverbrauches var aTimeGrundverbrauch = []; // array 0-29 des Zeitabstand Grundverbrauchswerte var iAvgGrundverbrauch; // Mittelwert der letzten Werte Watt // ************************************************************************ // Mittelwert Grundverbrauch // Parameter myArray [Zeitstempel,Verbrauch] function ArrayMittel(myArray) { var i = 0, sum = 0, ArrayLen = myArray.length; // Verbrauch summieren while (i < ArrayLen) { sum = sum + myArray[i++][1]; } // Zeitspanne ermitteln var t = (myArray[myArray.length-1][0] - myArray[0][0]) / 1000; // Sekunden // Rückgabe KWh return (sum / 1000 / ArrayLen) / 3600 * t; } on({ id: idPOW, change: "ne" }, function (obj) { //if (obj.state.val >= iTrigger && !bAktiv) { if (obj.state.val >= iTrigger && !bAktiv && getState(id_L2).val > iTrigger2 && getState(id_L3).val > iTrigger2 ) { bAktiv = true; setState (idDlE_Zustand,true); fZaehlerStart = getState(id_Zaehlerstand).val; //gesamt-Zählerstand notieren } else if (obj.state.val < iTrigger && bAktiv) { bAktiv = false; setState (idDlE_Zustand,false); fVerbrauch = getState(id_Zaehlerstand).val - fZaehlerStart; // Verbrauch ermitteln fAlterWert = getState (idDLE_Zaehlerstand).val; // negative Werte durch Abzug von Grundverbrauch vermeiden if (fAlterWert + fVerbrauch - iAvgGrundverbrauch >= 0) { setState(idDLE_Zaehlerstand, fAlterWert + fVerbrauch); // Verbrauch abzüglich Grundeverbrauch ermitteln } } else if (!bAktiv) { // den Mittelwert der letzten 30 Werte vor Inbetriebnahme des Durchlauferhitzers ermitteln // laufend .... aGrundverbrauch.push( [new Date().getTime() , obj.state.val] ); // nur die letzten 30 Werte merken, Rest trashen .. if (aGrundverbrauch.length > 30) { aGrundverbrauch.shift(); } // Mittelwert aus den letzten 30 Werten bilden iAvgGrundverbrauch = ArrayMittel(aGrundverbrauch); console.log("aGrundverbrauch: " + JSON.stringify(aGrundverbrauch)); } });
  • Json 2 Datenpunkt

    10
    0 Votes
    10 Posts
    1k Views
    paul53P
    @vanom-vine sagte: greife ich die Json von jemand anderes ab Wie? Du musst es in ein Skript bekommen. EDIT: Zeile 17 enthält den Zeitstempel vom 27.08.22 09:05 Uhr MESZ.
  • Zeitsteuerung Umfrage

    7
    0 Votes
    7 Posts
    748 Views
    David G.D
    @joker2048 Ich mache es auch per cron. Habe global für alle Timer und für einige der einzelnen einen Datenpunkt zum deaktivieren. Alles in Lovelace. Über den "time input" kann man den Zeitplan auch sehr konfortabel in Lovelace anpassen (man kann den Cron Zeitplan ja auch per Datenpunkt anpassen). Da sollte/wird man optisch was ansprechendes hinbekommen. Darf ich fragen, warum du weg möchtest von Lovelace? Hab mir Jarvis auch öfters mal angesehen. Würde aber ehrlich gesagt nie wechseln 🥰 Edit: Würde es in der Art machen [image: 1661676056551-screenshot_20220828-103149_chrome.jpg] [image: 1661676068387-screenshot_20220828-102739_chrome.jpg]
  • Blockly Script für Steuerung Warmwasser mit PV

    1
    1
    0 Votes
    1 Posts
    587 Views
    No one has replied
  • [gelöst] HTTP request geht nicht mehr

    14
    1
    0 Votes
    14 Posts
    2k Views
    G
    @oliverio Oliver... Genial!!! Geht alles wieder wie vorher. Vielen vielen dank.
  • Homematic IP Rollo Positions Angaben umwandeln

    8
    0 Votes
    8 Posts
    704 Views
    HomoranH
    @mws sagte in Homematic IP Rollo Positions Angaben umwandeln: HmIP-HDM1 wo finde ich denn so was? Das führt mich zu der Annahme, dass dieser (seltsame) Aktor möglicherweise nicht sauber eingebunden ist. Ob jetzt schon bei EQ-3 oder nur bei ioBroker bleibt erst mal offen. Da solltest du auf jeden Fall mal ein Issue beim Adapteraufmachen, mit ausreichend Informationen über dieses Gerät. Ich habe nämlich auf die Schnelle nichts finden können EDIT: alles was ich bisher nach längerer Suche finde klingt ziemlich ernüchternd was die Implementierung seitens EQ-3 angeht, ist allerdings auch oft noch Stand von vor einem Jahr oder mehr
  • [gelöst] Szene Adapter Shelly

    6
    1
    0 Votes
    6 Posts
    375 Views
    D
    @paul53 perfekt, Danke dir.
  • Unbestätigten Wert schreiben lassen

    20
    1
    0 Votes
    20 Posts
    1k Views
    paul53P
    @fir3drag0n sagte: was bewirkt die Änderung der Rolle? Jarvis schreibt dann vielleicht eine Zahl in den Datenpunkt? Ich habe gelesen, dass Visualisierungen die Rolle auswerten. Da es ein r/w Datenpunkt ist, nimm die Rolle "level".
  • [gelöst] JS-Fehlermeldung

    8
    2
    0 Votes
    8 Posts
    215 Views
    manuxiM
    @homoran sagte in JS-Fehlermeldung: ehler in Zeile 126 sein soll und dein Skrip Alles klar, werds mir merken!
  • Zeitversatz Blockly

    5
    3
    0 Votes
    5 Posts
    524 Views
    W
    @bassface Perfekt... Da hätte ich auch drauf kommen können. Mit dem Neustart sieht heute wieder alles in Ordnung aus. Danke
  • Einzelnes Script importieren

    javascript
    29
    0 Votes
    29 Posts
    10k Views
    paul53P
    @drbest sagte: Ich will ja nichts überschreiben, sonder nur das eine hinzufügen....hat wer schon getestet? Wenn in einem Skript schon Blöcke vorhanden sind, werden die importierten Blöcke hinzugefügt. Man muss hinterher ein wenig suchen und schieben.

703

Online

32.7k

Users

82.4k

Topics

1.3m

Posts