Skip to content

Skripten / Logik

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

16.5k Topics 213.5k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    D
    Ja es kommt bei jedem Start des Scripts. 30_AbfrageSolcast ist auf = false. Werde die USER_ANPASSUNGEN nochmals überprüfen. Die Kurvendiagramme laufen über einen separaten adapter, habe ich festgestellt, Flot. Werde mich da mal reinlesen.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    David G.D
    @MCU Klaro. Die komplette Zeile wie es in meinem Fall abgearbeitet wird ist echo "<html><body><h1>Test</h1></body></html>" | weasyprint - /tmp/temp.pdf && iobroker file write /tmp/temp.pdf 0_userdata.0/test/test.pdf && rm /tmp/temp.pdf Der relevante Part, die Datei dem iobroker bekannt zu machen ist sie mittels iobroker file write abzusprechen iobroker file write /tmp/temp.pdf 0_userdata.0/FGB/fgbxls/test.pdf Danach empfiehlt sich das Löschen der tmp Datei.
  • 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
  • Shelly schalten, solange bis...

    5
    0 Votes
    5 Posts
    224 Views
    surfer09S
    @paul53 Ich konnte es noch nicht testen, weil ich den Heizstab erst heute bekommen habt. Ich war mir nicht sicher mit dem Blockly, ob das so die beste Variante ist. Danke für den Hinweis mit den 20%.
  • Handbetrieb ermitteln

    javascript
    5
    0 Votes
    5 Posts
    236 Views
    M
    @paul53 sagte in Handbetrieb ermitteln: Okay ich test mal, hatte genau aus diesem Grund auch schon den State "tahoma.0.devices.Markisse_Rechts.states.core:TargetClosureState" [der hat nur 0 oder 100 als Wert], ausgewählt und nicht wie im ersten Script den "tahoma.0.devices.Markisse_Links.states.core:DeploymentState", bei dem es diese Zwischwerte gibt. Edit: Anbei mein Script, es tut was es soll: var logging = true; const js = 'system.adapter.javascript.' const idHand = "0_userdata.0.Garten.Tahoma.Markise.Hand" const id_RolloL = "tahoma.0.devices.Markisse_Links.states.core:TargetClosureState" const id_RolloR = "tahoma.0.devices.Markisse_Rechts.states.core:TargetClosureState" var text //const auslöser =[id_RolloL, id_RolloR] const auslöser = [id_RolloR] on({ id: auslöser, val: 0, fromNe: js }, function (dp) { log("Handbetrieb: " + dp.state.val, "info") setState(idHand, true) var text = '\u270b Markiese von Hand eingefahren' sendTo('whatsapp-cmb.0', 'send', { text, phone: '+49152539xxxxx' }); }); on({ time: { hour: 23, minute: 59 } }, function () { setState(idHand, false); }); Zur Erklärung, ich werte aktuell nur den DP in Zeile 5 aus, der DP hat im Zustand Markiese Eingefahren den Wert "0" ansonsten "100" Der DP Hand "True" dient quasi als Verriegelung gegen nochmaliges automatischen Ausfahren der Markiese.
  • Ports auf Online Verfügbarkeit prüfen wie ?

    javascript blockly
    12
    0 Votes
    12 Posts
    1k Views
    M
    @garfonso sagte in Ports auf Online Verfügbarkeit prüfen wie ?: @pmunz Ok, nachdem ich den Fehler auch sehen konnte, geht es nun so (mein ursprüngliches Skript war falsch): const net = require('net'); const ip = "192.168.0.1"; const port = 80; const connection = net.createConnection({host: ip, port: port, timeout: 10000}); connection.on('ready', () => { log("Port offen"); connection .destroy(); //wieder zu machen :-) }); connection.on('error', (e) => { log("Error: " + e.code); if (e.code === 'ECONNREFUSED') { log("Port zu"); } if (e.code === 'EHOSTUNREACH') { log("Gerät offline 2"); } else { log("Anderer Fehler, vermutlich Gerät nicht da?"); } connection .destroy(); //wieder zu machen :-) }); connection.on('timeout', () => { log("Gerät offline"); connection .destroy(); //wieder zu machen :-) }); Den "timout" Fall hatte ich bisher nicht. Könnte aber theoretisch auftreten. Ich hatte im Fall, dass es an der IP gar kein Gerät gab den "EHOSTUNREACH" fall. Am besten wäre für den Fall, dass das Gerät gar nicht da ist eine Funktion zu definieren und die aufzurufen (falls der Fall für dich überhaupt relevant ist). //Edit: achja, damit das sinnvoll ist, also ein Status überwacht wird oder so, müsstest du den ganzen "connection" Block noch regelmäßig aufrufen also mit setTimeout oder schedule oder sowas (keine Ahnung, was du genau vorhast.. ggf. kannst du auch aus einem anderen Skript heraus das Skript aktivieren und am Ende des Skripts es sich selber deaktivieren lassen, das mache ich hin und wieder). Hallo, ich möchte gerne wisssen, wie ich permanent die Port prüfen kann. Das Script oben läuft offenbar nur einmal, oder? Ich habe das mal mit Schedule gemacht. schedule("*/1 * * * *", function () { Gruß Michael
  • NSPanel wie kann man per Script gezielt eine Page anzeigen?

    6
    0 Votes
    6 Posts
    872 Views
    T
    @dermurgser Ja, das Problem liegt im Ursprung des Panels.
  • Script Problem

    9
    1
    0 Votes
    9 Posts
    696 Views
    HomoranH
    @hippocampus-0 sagte in Script Problem: Bin über Hilfestellungen dankbar um dir besser helfen zu können, bitte einen aussagekräftigen Threadtitel wählen. @hippocampus-0 sagte in Script Problem: Habe den Zustandstyp auf Number gesetzt . Bitte Logs nie als Screenshots, immer als Text in code-tags posten. siehe auch: https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1
  • Zigbee Steckdosen Stromwerte auf 0 setzten

    2
    0 Votes
    2 Posts
    117 Views
    arteckA
    @mico du musst es entweder über den payload DP machen oder mit dem sendTo Befehl das Thema ist nicht neu es steht hier im Forum .. ein wenig Suchen sollte da schon helfen
  • Zigbee true/false tauschen

    2
    1
    0 Votes
    2 Posts
    230 Views
    haus-automatisierungH
    @schnitti Alias anlegen, Lesefunktion: !val Fertig
  • Zappi in Abhängigkeit von BYD-Bat. steuern

    8
    0 Votes
    8 Posts
    1k Views
    S
    @pir sagte in Zappi in Abhängigkeit von BYD-Bat. steuern: @sigimoe Habe für mich einen Workaround gefunden, indem ich den min-SoC der Batterie bei Aktivierung des Fast-Mode gleichsetzen lassen mit dem aktuellen SoC-Wert. So wird die Batterie bei Aktivierung des Fast-Mode nicht entleert. Nachteil ist, dass auch alle anderen Verbraucher nicht mehr von der Batterie gespeist werden. @PiR könntest du mir dein blockly senden oder wie hast du dies umgesetzt ? Vielen lieben Dank für die Unterstützung
  • Skript für Ansteuerung LED Streifen von Türstation

    5
    0 Votes
    5 Posts
    528 Views
    S
    @arteck vielen Dank - ich verstehe es trotzdem nicht... von websockets habe ich keine Ahnung, bin kein programmierer... iobroker habe ich am laufen, javaskript adapter auch - nutze ich mit blockly, soweit kenne ich mich schon aus. axios finde ich nicht als adapter!? vielleicht kannst du mir das etwas genauer erläutern bzw. erstmal eine grundlage? wäre klasse!
  • Shelly script Wasserzähler

    1
    0 Votes
    1 Posts
    145 Views
    No one has replied
  • Gelöst: Datenpunkte addieren

    44
    1
    0 Votes
    44 Posts
    2k Views
    C
    @mickym ich danke dir für die vielen Tipps und Infos. Die Links schaue ich mir gerne an. Da habe ich jetzt Lust auf mehr. Das macht so viel Spaß, auch wenn man viel rumbasteln/rumprobieren muß. Aber das sind dann alles Erfahrungen.
  • Blockly Geofencing mit Türauslöser

    15
    1
    0 Votes
    15 Posts
    1k Views
    U
    Oh man. Danke, das kannt ich trotz der vielen IOB Jahre auch noch nicht. lol
  • S0 Stromzähler umrechnen in aktuelle Verbrauch

    Moved
    66
    0 Votes
    66 Posts
    9k Views
    leovandavartL
    @paul53 über den Rpi Adapter da kann ich das einstellen
  • TDS Sensor / EC-Messen Hilfe gesucht

    blockly
    3
    1
    0 Votes
    3 Posts
    732 Views
    E
    Nach einigen Stunden basteln habe ich es nun mit einem berry script geschafft den richtigen TDS und EC Wert zu berechnen. Die Grundlage für mein Skript habe ich hier gefunden: https://github.com/arendst/Tasmota/discussions/18046 Dieses habe ich dann noch angepasst, damit man die beiden Werte über MQTT in den iobroker bekommt. Hier das tasmota berry script: Spoiler #- - Analog input driver written in Berry - - Support for TDS (Total Dissolved Solids) Meter Sensor_CQRSENTDS01 - http://www.cqrobot.wiki/index.php/TDS_(Total_Dissolved_Solids)_Meter_Sensor_SKU:_CQRSENTDS01 - Based on TMP117-driver driver by sfromis and TomsTek (https://github.com/TomsTek/tasmota-berry-TMP117-driver) -# class CQRSENTDS01: Driver static sensor_name = "CQRSENTDS01" # sensor name static tds_label = "TDS" # label for temperature in language of preference var tds # global TDS value in PPM var comp_temp # global temperature compensation var voltage # global TDS sensor voltage var prev_voltage var calib_offset var percentage_offset var ec def init() # initialize globals self.tds = 0 self.comp_temp = 25.0 self.voltage = 1.0 self.prev_voltage = self.voltage self.ec = 0.00 self.calib_offset = 176 # Minimale, angezeigte Spannung wenn Sensor nicht im Wasser self.percentage_offset = 0.96 # Abweichung des PPM Wertes. Bsp.: Anzeige 4% zu hoch -> 0.96 # create rules to trigger when TDS sensor voltage updates and temp sensor updates tasmota.add_rule("ANALOG#A5", /value -> self.trigger_voltage(value)) # TDS-Sensor festlegen tasmota.add_rule("DS18B20-1#Temperature", /value -> self.trigger_temp(value)) # Temp-Sensor festlegen end def trigger_voltage(voltage) if voltage != nil self.voltage = voltage - self.calib_offset end # print("voltage:", voltage) end def trigger_temp(temp) if temp != nil if tasmota.get_option(8) == 1 self.comp_temp = 1.0 + 0.02 * (((temp - 32.0) * 0.5555) - 25.0) else self.comp_temp = 1.0 + 0.02 * (temp - 25.0) end end # print("temp:", temp, "comp_temp:", self.comp_temp) end #- calculate TDS & EC value from voltage and temp -# def calc_tds() # to reduce cpu usage, only perform calculation if voltage changes if self.prev_voltage != self.voltage self.prev_voltage = self.voltage var comp_voltage = (self.voltage / 1000.0) / self.comp_temp self.tds = (((133.42 * comp_voltage * comp_voltage * comp_voltage - 255.86 * comp_voltage * comp_voltage + 857.39 * comp_voltage) * 0.5) * self.percentage_offset) self.ec = (self.tds * 2) / 1000 # print("comp_temp:", self.comp_temp, ", comp_voltage:", comp_voltage, ", tds:", self.tds, ", EC:", self.ec) end end #- trigger a read every second -# def every_second() self.calc_tds() end #- display sensor TDS & EC value in the web UI -# def web_sensor() import string if ! self.tds self.tds = 0 self.ec = 0 end var msg = string.format("{s}%s %s{m}%s PPM{e}", "TDS-Sensor", "", self.tds) var msg_ec = string.format("{s}%s %s{m}%s EC{e}", "EC-Sensor", "", self.ec) tasmota.web_send_decimal(msg) tasmota.web_send_decimal(msg_ec) end #- add sensor TDS & EC value to teleperiod -# def json_append() import string if ! self.tds self.tds = 0 self.ec = 0 end var msg = string.format(',"%s":{"%s":%s}', "TDS-Sensor", "TDS", self.tds) var msg_ec = string.format(',"%s":{"%s":%s}', "EC-Sensor", "EC", self.ec) tasmota.response_append(msg) tasmota.response_append(msg_ec) end end cqrsentds01 = CQRSENTDS01() tasmota.add_driver(cqrsentds01) Viele Grüsse Chris
  • Systemair Genius Steuerung über Iobroker -Modbus Http

    2
    1
    0 Votes
    2 Posts
    118 Views
    T
    keiner ne Ahnung ?
  • kWh für jeden Monat in ein DP

    3
    1
    0 Votes
    3 Posts
    204 Views
    mickymM
    Lass einfach Deinen Monatsdatenpunkt triggern, sprich wenn Du den schreibst, starte ein neues Skript und ermittle den aktuellen oder Vormonat und schreibe den Wert in einen entsprechenden Datenpunkt.
  • Internetzugang sperren

    16
    0 Votes
    16 Posts
    1k Views
    S
    @marc-berg said in Internetzugang sperren: @stefan341 Das ginge auch mit dem Adapter "Fb-Checkpresence". [image: 1714313036989-4e23a4c8-8682-4b75-a8d8-f011bb607865-grafik.png] Das entsprechende Gerät kannst du über "disabled" vom Internet trennen, ganz ohne Script. Danke für den Hinweis. So ist es natürlich viel einfacher. …und funktioniert
  • Boiler Relais Steuerung

    5
    0 Votes
    5 Posts
    332 Views
    paul53P
    @pv-anlage Wenn das Relais nach 19:00 Uhr ausschalten soll, obwohl die Leistung noch > 3000 W ist: [image: 1714233246925-blockly_temp.jpg]
  • erledigt: mqtt Wert nach Alias (Konvertierungsfunktion)

    javascript
    3
    2
    0 Votes
    3 Posts
    330 Views
    S
    @paul53 sagte in Wert aus mqtt in Alias mit Konvertierungsfunktion speichern: JSON.parse(val).MT691.Leistung DANKE!!! das wars! :face_palm:
  • Werte aus JSON in Alias-DP zerlegen

    14
    0 Votes
    14 Posts
    1k Views
    L
    @paul53 Ich hatte gehofft, mit dem Logparser komfortabel bestimme Fehlermeldungen des VE-Adapters im Log detektieren zu können. Das generierte JSON dann auf die Fehlermeldung durchsuchen. Mit Hilfe eines Alias. Das wird aber einfach nichts!

618

Online

32.6k

Users

82.3k

Topics

1.3m

Posts