Skip to content

Skripten / Logik

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

16.5k Themen 213.4k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    B
    Hi, Würde gerne meinen Solarflow 800 Pro mit 4 PV Modulen (gesamt ca. 1700 Wp) zur Null-Einspeisung mit iobroker und Tasmota smartmeter betreiben. Sollte das mit dem Script möglich sein?
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    paul53P
    @Cephalopod sagte: Also "schlampig" Programmiert? Sieht so aus. Ich hätte die Button so programmiert: // NET USB Down if (id === adapter.namespace + '.Device.MediaDown' && state.val === true) { const new_val = 'NTCDOWN'; adapter.log.debug('new_val: ' + new_val); adapter.setState(adapter.namespace + '.Device.command', {val: new_val, ack: false}); }
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • async-await sleep stoppen

    5
    0 Stimmen
    5 Beiträge
    419 Aufrufe
    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 Stimmen
    9 Beiträge
    547 Aufrufe
    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 Stimmen
    7 Beiträge
    702 Aufrufe
    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 Stimmen
    2 Beiträge
    288 Aufrufe
    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 Stimmen
    13 Beiträge
    1k Aufrufe
    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 Stimmen
    2 Beiträge
    878 Aufrufe
    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 Stimmen
    18 Beiträge
    499 Aufrufe
    M
    Übrigens: Markise schreibt man mit einem "s". Danke du hast natürlich Recht. :+1:
  • Werte aus PV Anlage auslesen

    6
    1
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    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 Stimmen
    7 Beiträge
    482 Aufrufe
    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 Stimmen
    5 Beiträge
    361 Aufrufe
    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 Stimmen
    10 Beiträge
    1k Aufrufe
    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 Stimmen
    7 Beiträge
    743 Aufrufe
    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 Stimmen
    1 Beiträge
    582 Aufrufe
    Niemand hat geantwortet
  • [gelöst] HTTP request geht nicht mehr

    14
    1
    0 Stimmen
    14 Beiträge
    2k Aufrufe
    G
    @oliverio Oliver... Genial!!! Geht alles wieder wie vorher. Vielen vielen dank.
  • Homematic IP Rollo Positions Angaben umwandeln

    8
    0 Stimmen
    8 Beiträge
    695 Aufrufe
    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 Stimmen
    6 Beiträge
    357 Aufrufe
    D
    @paul53 perfekt, Danke dir.
  • Unbestätigten Wert schreiben lassen

    20
    1
    0 Stimmen
    20 Beiträge
    1k Aufrufe
    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 Stimmen
    8 Beiträge
    215 Aufrufe
    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 Stimmen
    5 Beiträge
    511 Aufrufe
    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 Stimmen
    29 Beiträge
    10k Aufrufe
    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.

484

Online

32.6k

Benutzer

82.3k

Themen

1.3m

Beiträge