Skip to content

Skripten / Logik

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

16.4k Themen 211.9k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    F
    LIebe Community. Darf ich Euch um Hilfe bitten. Zurzeit steuere ich mein Umwalzpumpe Schaltung anhand der Ventilwerte alle Thermostaten. Da ich nun ein Kacheloffen in EG installiert habe, verfälscht der neuen Heizung die duchschnitliche Ventilwerte über der gesamten Haus. Daher schaltet der Umwalzpumpe frühseitig aus. Meine Idee ist folgendes: ein Filter in diese Skript einbauen, wo die Heizkörper pro Stockwerk gelistet werden, und in mein Blockly ein "OR" einbauen. zB - Wenn die EG Ventilwert < 20% OR Wenn die OG1 Ventilwert < 20% or Wenn die OG2 Ventilwert < 20%, dann der Umwalzpumpe einschalten. Hier der bestehenden Skript - der bis jetzt sehr gut funktioniert hat. Vielen Dank für eure Hilfe ! ############ string itemID; object i = (dom.GetObject(ID_FUNCTIONS)).Get("Heating"); integer test = 0; !Berrechnung der ges. Ventilöffnung string s_device; object o_device; integer i_devices = 0; integer i_cdevices = 0; string s_channel; object o_channel; integer i_channels = 0; integer i_cchannels = 0; string s_typelist = ""; string s_temp; foreach(itemID, i.EnumUsedIDs()) { var ch = dom.GetObject(ID_CHANNELS).Get(itemID); if (ch.TypeName() == "CHANNEL") { ! Sicherheitsabfrage, verhindert Absturz, falls ein falsches Gerät im Gewerk ist ! Datenpunkt für Ventilstellung ermitteln var dp = ch.DPByHssDP("LEVEL"); if (dp) { ! Sicherheitsabfrage, verhindert Absturz, falls ein falsches Gerät im Gewerk "Heizung" ist var name = ch.Name(); WriteLine(name); ! Ventilstellung ermitteln var vent = dp.Value(); var conv = vent*100; WriteLine(conv); test = test + conv; i_channels = i_channels + 1; } } } WriteLine("****************************************************"); WriteLine(name); WriteLine(conv); WriteLine(i_channels); WriteLine(test); var diff = test / i_channels; WriteLine(diff); dom.GetObject("Ventilwert").State(diff); if(diff > 20.0){WriteLine("Bedingung erfüllt"); dom.GetObject("Heizungspumpe").State(1);} else {WriteLine("Bedingung nicht erfüllt"); dom.GetObject("Heizungspumpe").State(0);}
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    C
    Vielleicht eine einfache Frage, aber ich habe im Internet nichts gefunden: Gibt es bei Blockly die Möglichkeit, andere Blöcke einzubinden? Ich meine jetzt nicht ein "Import" im Sinne der Import-Funktion von Blockly. Mir geht es darum, dass ich z.B. Standardfunktionen (z.B. Kennlinie auslesen und interpolieren) auslagern möchte, die ich in mehreren Blöcken benötige. Und jetzt soll Sie nicht importiert (=kopiert) werden, sondern nur verlinkt werden. Vergleichbar mit dem import in Python oder dem include bei C.
  • Hilfe für Skripterstellung mit Node-RED

    952 13k
    952 Themen
    13k Beiträge
    HomoranH
    @fiddle sagte in [Gelöst]: Adapter per {Node Red | JS} (de)aktivieren: Ok, nicht als "Wert" schreiben, sondern als "Befehl". Dann scheint ihn das zu beeindrucken. du zeigst ja nichts, aber es geht mit true/false [image: 1763416200051-screenshot_20251117-224854_firefox.jpg] gesteuert über eigenen DP vom typ Bool
  • [GELÖST] iCal bei js table Zeit auslesen

    10
    0 Stimmen
    10 Beiträge
    496 Aufrufe
    G
    @paul53 ich hab's! Den Baustein "nach JSON" wollte er nicht und brachte einen Fehler. Somit wurde die Uhrzeit nicht in den DP eingetragen. Mit dieser Konfiguration macht es jetzt zumindest was es soll: [image: 1666982147407-screenshot-29.png]
  • [gelöst] "Textabschnitt zurückgeben" ist ungehorsam

    14
    1
    0 Stimmen
    14 Beiträge
    436 Aufrufe
    P
    @paul53 ist umgesetzt und funktioniert! [image: 1666811153325-3cd87938-6570-4bf4-9919-8e20c5076c00-image.png] 21:05:09.579 info javascript.0 (5687) script.js.exp.4_Szenenauslösung_Manipulation_-_8fach-Taster: alias.0.KG.Hobbyraum.Taster_Tuer.state 21:05:09.579 info javascript.0 (5687) script.js.exp.4_Szenenauslösung_Manipulation_-_8fach-Taster: KG 21:05:09.579 info javascript.0 (5687) script.js.exp.4_Szenenauslösung_Manipulation_-_8fach-Taster: Hobbyraum 21:05:09.580 info javascript.0 (5687) script.js.exp.4_Szenenauslösung_Manipulation_-_8fach-Taster: Szene an
  • [GELÖST] - FFMPEG: MP4 und JPG aus RTSP-Stream

    6
    1
    0 Stimmen
    6 Beiträge
    2k Aufrufe
    P
    Zur Info: hiermit extrahiere ich nun erfolgreich ein Bild aus einem RTSP-Stream: ffmpeg -y -rtsp_transport tcp -i rtsp://<IP-Adresse_der_Cam>:554/user=XXX_password=XXX_channel=0_stream=0.sdp?real_stream -vframes 1
  • [GELÖST] - IoT Adapter: zu viele Lampen

    3
    1
    0 Stimmen
    3 Beiträge
    231 Aufrufe
    P
    @meister-mopper Moin... also ich habe es nun gemäß Anleitung vom IoT-Adapter gemacht (pro komplette Objektgruppe). Es funktioniert nun sehr gut. Mein Problem war, dass aus unerklärlichen Gründen zwei Funktionstypen "Licht" unter Aufzählungen definiert waren. Daher hatte ich das Objekt "Schlafzimmer_Licht" beiden Funktionstypen zugeordnet und hatte daher zwei Schalter.
  • Einfaches Blockly möchte nicht laufen

    110
    6
    0 Stimmen
    110 Beiträge
    11k Aufrufe
    B
    @homoran sagte in Einfaches Blockly möchte nicht laufen: @basti2022 das sieht gut aus. was ist nach dem speichern passiert? Das Licht ist angegangen edit: passiert erst was beim ändern des TV Status Beim aus bzw. Einschalten geht dann auch das Licht an und aus. Wunderbar Ich danke dir bis dahin. Und nochmal zu der korrektur mit dem vielen hin und her ... weiter oben hatte ich mal exakt diesen screenshot gepostet, wie du ihn ja selbst verlinkt hast. Nur da laß sich deine Antwort so, also ob das falsch wäre, deshalb habe ich das nicht mehr beachtet.
  • [gelöst] Lichtsteuerung mit zwei Türsensoren (Nuki)

    3
    1
    0 Stimmen
    3 Beiträge
    235 Aufrufe
    K
    @cinimod Tatsächlich ist das im Original Skript genau so hinterlegt. Aber ja, habe das auf den "timeout" korrigiert. Letztendlich war mein ganzes Problem, dass durch eine Löschung des Objektsbaums von "mihome" sich die Beschreibung änderte und ich schlicht den falschen Magneten abgefragt habe. Also, erledigt aufgrund von scharfem Nachdenken :D
  • Gosund SP112 (mit Tasmota) - Wert im Datenpunkt fehlt

    blockly
    11
    2
    0 Stimmen
    11 Beiträge
    437 Aufrufe
    I
    @ralla66 Sorry, habe es immer noch nicht geschafft. Ist halt bisschen "fummelig", denn der Kühlschrank ist alt und läuft manchmal nach Stromtrennung nicht wieder an. (Austauchen ist extrem aufwendig, da es ein etwas spezielles Modell ist ). Wenn ich ihn stromlos mache, kann ich "so schnell" nicht die Konsole beobachten bzw. Screenshots erstellen, da der Mac in einem anderen Stockwerk steht und mit dem iPhone bekomme ich es nicht wirklich leserlich hin. Vielleicht tausche ich die Gosund einfach aus gegen eine andere, die ich schon mal woanders benutzt habe und die definitiv funktioniert. Ich vermute mal, daß es bei der "fehlerhaften" an dem Speichern ("savedata"-Kommando) liegt, daß da also irgendwas nicht richtig eingestellt ist konsolenseitig.
  • Ordner richtig anlegen

    6
    1
    0 Stimmen
    6 Beiträge
    488 Aufrufe
    CinimodC
    @homoran OK, dann vergesst meine Nachricht. War mir auch nicht mehr so ganz sicher. Vermutlich hat man es mir mal so verkauft, war dann aber vielleicht auch schon falsch :blush:
  • Pushnachricht funktioniert nicht

    8
    1
    0 Stimmen
    8 Beiträge
    418 Aufrufe
    C
    @gerhardptl Oben im Screenshot wird doch alles angezeigt, was man benötigt. ;)
  • PV-Überschuss dynamisch Warmwasserspeicher heizen

    2
    0 Stimmen
    2 Beiträge
    235 Aufrufe
    paul53P
    @mori Suche im Forum nach PV-Überschuss und PI-Regler.
  • [GELÖST] - Text aus iCal vorlesen lassen (SayIt)

    10
    0 Stimmen
    10 Beiträge
    527 Aufrufe
    CodierknechtC
    @puls200 sagte in Text aus iCal vorlesen lassen (SayIt) - [GELÖST]: @armilar Also einfach manuell [GELÖST] oder Ähnliches hinzufügen? Ich kenne das aus anderen Foren, wo man über ein Attribut den Thread mit GELÖST markieren kann. Eine solche Markierung gibt's hier nicht. Hier kannst Du das nur über den Titel sinngemäß mitteilen. Und am besten nicht hinzu- sondern vorne einfügen.
  • Dynamische Fortschritt-Bar

    16
    0 Stimmen
    16 Beiträge
    441 Aufrufe
    OliverIOO
    @michihorn feuert halt jede Sekunde und erzeugt Grundlast im Server/Netz und Client. Aktuell wahrscheinlich nicht so schlimm, aber mit der Zeit und mehreren solchen Lösungen wird es halt dann relevant
  • Zahl mit Parser aus Webseiten auslesen - RegEx

    javascript
    7
    0 Stimmen
    7 Beiträge
    467 Aufrufe
    OliverIOO
    @andyf2000 sagte in Zahl mit Parser aus Webseiten auslesen - RegEx: Das mit den Regulären Ausdrücken hab ich aber leider noch nie verstanden - vielleicht kann mir jemand von euch weiterhelfen? das mit erklären bei regex ist nicht so einfach du kannst es mal mit dieser seite probieren https://wiki.selfhtml.org/wiki/Regulärer_Ausdruck zum liefe testen kannst du https://regex101.com/ verwenden. gaaaaanz grob kannst du dir das vorstellen wie die platzhalterzeichen beim dir befehl im dos-fenster * und ? aber mit tausend mehr möglichkeiten und flexibilitäten. die sehr kryptische und kompakte notation ist auch nicht besonders hilfreich. ich selbst habe da auch mehrere anläufe gebraucht. rgex101 versucht aber den regex im oberen rechten bereich mit natürlicher sprache etwas zu erklären. also einfch da mal reicnkoieren und schauen was das steht. hier hatte ich mal eine vorgehensweise aufgeschrieben, wie man hier für den hausgebrauch selbst seine regex finden kann https://forum.iobroker.net/topic/8379/einlesen-von-aktienkursen/81?_=1666174343107
  • Script außerhalb vom IObroker löschen

    javascript blockly
    10
    0 Stimmen
    10 Beiträge
    534 Aufrufe
    ArmilarA
    @bertman2000 gerne :blush:
  • Homematic IP Thermostat und Aquara Thermometer

    4
    0 Stimmen
    4 Beiträge
    444 Aufrufe
    paul53P
    @root_ sagte: geht das nur direkt über Homematic selbst? Ja, den internen Messwert der HKT können nur HomeMatic IP Sensoren per Direktverknüpfung überschreiben. Sollen die internen Wochenprogramme genutzt werden, hat man dazu keine Alternative. Werden die Wochenprogramme in ioBroker erzeugt (Adapter "Heatingcontrol"), können die Sollwerte mittels beliebigem Sensor korrigiert werden.
  • [How-To] BMW HomeKit Integration via ioBroker

    1
    0 Stimmen
    1 Beiträge
    184 Aufrufe
    Niemand hat geantwortet
  • Datenwert aus Userdate auslesen

    4
    2
    0 Stimmen
    4 Beiträge
    318 Aufrufe
    arteckA
    @captainchaos666 ich will jetzt nicht pingellig sein aber "Datenwert aus Userdate auslesen " was den für userdate... --> userdata
  • [Vorlage] Wetterdatenempfänger USB-WDE1-2 von ELV

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    772 Aufrufe
    S
    @sigi234 Vielen Dank für die Hilfe, das war ein erster Denkanstoß. Das Thema ist jetzt für mich persönlich etwas komplizierter geworden als gedacht. Ich habe einen neuen Faden eröffnet, ich hoffe das ist so in Ordnung. ELV Raumklimastation RS 500 bzw. dnt RoomLogg Pro
  • Iobroker daten per Script auslesen

    javascript
    4
    0 Stimmen
    4 Beiträge
    931 Aufrufe
    T
    Danke für die Idee! Hat bei mir auch nicht 1:1 funktioniert, hab's auf das hier angepasst (und um die GPU Temperatur erweitert): const Frequenz = 'vcgencmd measure_clock arm'; // | tr -d "frequency(45)=" const Temperatur = 'cat /sys/class/thermal/thermal_zone0/temp'; const GPU_temp = 'vcgencmd measure_temp | tr -d "temp=\'C"' const CPU_Last = 'load=$(cat /proc/loadavg) ; printf "%s\n" "${load%% *}"'; const Pi_in_Volt = 'vcgencmd measure_volts | tr -d "volt=V"'; // | tr -d "V" const Variable = '0_userdata.0.pi4-stats.'; createState(Variable + 'CPU_Frequenz' , 0.0, {name: 'CPU Frequenz' , type: 'number', unit: 'MHZ'}); createState(Variable + 'CPU_Temperatur', 0.0, {name: 'CPU Temperatur', type: 'number', unit: '°C'}); createState(Variable + 'GPU_Temperatur', 0.0, {name: 'GPU Temperatur', type: 'number', unit: '°C'}); createState(Variable + 'CPU_Last' , 0.0, {name: 'CPU Last' , type: 'number', unit: '%'}); createState(Variable + 'Pi_in_Volt' , 0.0, {name: 'Pi_in_Volt' , type: 'number', unit: 'V'}); function Systemlogger() { exec(Frequenz, function (error, stdout, stderr) { var temp = parseInt(stdout.substring(14, stdout.length - 1)) / 1000000; setState(Variable + 'CPU_Frequenz', temp); //log(temp + 'MHZ - from: ' + stdout); }); exec(Temperatur, function (error, stdout, stderr) { var temp = parseInt(stdout.substring(0, stdout.length - 1)) / 1000; setState(Variable + 'CPU_Temperatur', temp); //log(temp + '°C'); }); exec(GPU_temp, function (error, stdout, stderr) { var temp = parseFloat(stdout.substring(0, stdout.length - 1)); setState(Variable + 'GPU_Temperatur', temp); //log("GPU_Temperatur = "+temp + '°C'); }); exec(CPU_Last, function (error, stdout, stderr) { var temp = parseFloat(stdout.substring(0, 4)) * 100; setState(Variable + 'CPU_Last', temp); //log("load = " + temp + '% - src: ' + stdout); }); exec(Pi_in_Volt, function (error, stdout, stderr) { var temp = parseFloat(stdout.substring(0, stdout.length - 1)); // / 1000000; setState(Variable + 'Pi_in_Volt', temp); //log(temp + 'V'); }); } var Generator = setInterval(function() {Systemlogger()} ,3000);
  • Datenpunkt aktualisieren über Name [gelöst]

    5
    1
    0 Stimmen
    5 Beiträge
    250 Aufrufe
    liv-in-skyL
    @starlord42 es gibt auch die möglichkeit, das alles über eine "function" (aufzählung) zu steuern - beispiel: https://www.machs-smart.de/iobroker-blockly-geraete-aufzahlung-steuern/ wenn man über eine schleife arbeitet , könnte man das auch mit einer liste (array) von dp machen, wobei man das array einfach mit den dp vordefiniert

832

Online

32.4k

Benutzer

81.5k

Themen

1.3m

Beiträge