Skip to content

Skripten / Logik

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

16.4k Themen 211.7k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    P
    @ArnoD Ich habs mir noch mal geladen, muss aber warten, bis der Fehler wieder auftritt. Oder genügt dir die Logausgabe ohne den Fehler? Wahrscheinlich eher nicht.
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    nik82N
    Hi, hab downgrade gemacht, kommt aber immer noch leider :-)
  • 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
  • LED Ansteuerung über iobroker?

    Verschoben
    11
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    W
    @knopers1: ich habe mir dein Screan angeschaut. Laut Bild hast Du die RGB Werte bereits im IOBroker mit 255 drin. Demnach sollte bereits die Diode weiß leuchten. Hast Du sie richtig rum angeschlossen? Es gibt welche mit gemeisamer Kathode und Anode… meist das längere Beinchen etweder plus ode minus. Für Rot müßtest Du nur die den D1 Pin mit 255 ansteuern, D2 & D3 mit 0. Dann hast Du dein Rot als Beispiel. Evtl. könntest Du messen D1,D2,D3 gegen GND ob da ca. 3.3V anliegen. Vorher aber die Diode abklemmen! ` Ja, sie leuchtet schon weiß mit der Vorgabe 255, 255, 255 vom Script. Mein Problem ist, dass ich sie über den iobroker ansteuern möchte, aber nicht weiß, wie und ob das überhaupt funktioniert. Wie übergebe ich beispielsweise rgb 255,0,0 aus dem iobroker an die Diode? Über den Json String gehts nicht, das hab ich schon versucht.
  • Mit Blockly überschüssige PV Energie effizient nutzen

    Verschoben
    6
    2
    0 Stimmen
    6 Beiträge
    2k Aufrufe
    K
    Hier https://iobroker.blogspot.de/2017/07/so … -tank.html gibt es übrigens eine Beschreibung eines ähnlichen Anwendungsfalls mit zugehörigem Skript. Vielleicht bringt das noch ein paar weitere Anregungen.
  • [Frage] Sende Email bei Wert Unterschreitung

    Verschoben
    17
    0 Stimmen
    17 Beiträge
    2k Aufrufe
    T
    Habe das noch mal geändert. In der ersten Version habe ich bei jeder zweiten Temp Änderung eine Mail bekommen, weil das Flag dann wieder durch die Else Bedingung auf false gesetzt wurde. Jetzt bekomme ich eine Mail, wenn die Temperatur <=14 °C ist und wenn sie wieder über 14 °C gestiegen ist. var idTemp = "hm-rpc.0.MEQ1571251.1.TEMPERATURE"; // var idTemp = "s7.0.DBs.DB1.Dimmer_Ailin"; Zum Testen var idFlag = "javascript.0.Flag_Mail_TempWerkstatt"; var msg ="Temperatur Werkstatt <14°C" on(idTemp, function(dp) { if ((getState(idFlag).val === false) && (getState(idTemp).val) <= 14) { setState(idFlag, true); msg = " Temperatur Werkstatt <= 14 °C" sendTo('email.0', msg); } if ((getState(idFlag).val === true) && (getState(idTemp).val) > 14) { setState(idFlag, false); msg = " Temperatur Werkstatt = 14 °C" sendTo('email.0', msg); } }); // Script start setState(idFlag, false);
  • Blockly- Licht EIN/AUS bei Zeit und Dämmerung schalten.

    Verschoben
    15
    1
    0 Stimmen
    15 Beiträge
    10k Aufrufe
    B
    Hallo, warscheinlich wurde das schon zu hauf diskutiert aber ich finde die Lösung nicht! Ich schalte eine Funksteckdose mit diesem Blocky [image: 4663_2018_01_30_22_01_36_pi_192.168.1.45_22_bitvise_sftp.png] wie ist es möglich diese Steckdose um 19uhr einzuschalten und um 22uhr wieder auszuschalten? Funktioniert das auch mit der Astrofunktion? vielen dank
  • MQTT Json -> einzelner Datenpunkt - SonoffPOW Script

    Verschoben
    40
    0 Stimmen
    40 Beiträge
    12k Aufrufe
    C
    Guten Abend, ich kann Erfolg melden: nachdem ich nochmal alles durchgeklickt hatte, reset, Sensor neu eingesteckt, Cache gelöscht habe, geht es. Der 2.Sensor funktionierte kurioserweise dann gleich nach dem update der Firmware auf 5.11.1 - also klare Empfehlung für die Teile! clerosch
  • Gibt es so etwas für Java ? (Von Python zu Java )

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    A
    Ich nochmal Ich musste noch was einfügen in das Script. Damit nicht mehrere Filme gleichzeitig gestartet werden, muss vorher immer der omxplayer gekillt werden. Nur mal so , falls ….. var exec = require('child_process').exec; var fs = require('fs'); var dir = '/media/Youtube_Videos/Heidi - Klassik-Serie/'; var files = fs.readdirSync(dir); var file = files[Math.floor(Math.random() * files.length)]; exec('killall -9 omxplayer.bin', function (err, stdout, stderr) { if (err) { console.error(err); return; } console.log('stdout: ' + stdout); if (stderr) console.log('stderr: ' + stderr); }); exec('omxplayer --blank "' + dir + file + '"', function (err, stdout, stderr) { if (err) { console.error(err); return; } console.log('stdout: ' + stdout); if (stderr) console.log('stderr: ' + stderr); });
  • Salamiofen Steuerung mit Blockly

    Verschoben
    143
    0 Stimmen
    143 Beiträge
    20k Aufrufe
    T
    Ich wollte mir nur den unteren Text anzeigen lassen, habe es halt so gelösst , wollte nicht immer auf die Tabelle schauen die auf Seite 1 abgebildet ist. Es scheint jetzt zu gehen.man kann auch durch kopieren was lernen! Und in 14 Tage kann man nicht alles lernen und richtig machen. Wenn du möchtest kann ich ja hier auch berichten ob es durchgelaufen ist und Danke noch mal für deine Hilfe. mfg.Thomas 2554_jpg.png
  • Skript in mehrere Dateien aufteilen

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    2k Aufrufe
    AlCalzoneA
    Sieht IMO sinnvoll aus. Würde mal beobachten wie sich das bei vielen Skripten auf die Systemlast auswirkt.
  • Wrong type string - Type is Object?

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    B
    Okay dann stelle ich das ein.
  • Mqtt: String in Datenpunkte umwandeln?

    Verschoben
    12
    1
    0 Stimmen
    12 Beiträge
    5k Aufrufe
    W
    @paul53: @wolf: Nein, die LED leuchtet unverändert blau, egal was ich eintrage… Das hatte ich vermutet: Wenn die Kommunikation über JSON erfolgt, dann meist nur in eine Richtung. Nicht wirklich tragisch, wäre nur ein netter Mehrwert gewesen. Wäre dieses Script eigentlich auch unter Blockly zu realisieren gewesen? Damit konnte ich schon ein paar vernünftige Ergebnisse erzielen, wenn es um die Abfrage von Schaltzuständen gegangen ist. Hat für einen Anfänger wie mich den Vorteil, dass man die ganze Befehlssyntax nicht kennen muss. Gibt es eigentlich ein Programm, das den Code des Scriptes in Blockly Struktur darstellt? Würde mir das Lernen erleichtern. Jedenfalls nochmals Danke für deine Hilfe! Du hast mir wirklich sehr geholfen. LG Wolf
  • Blockly Frage

    Verschoben
    38
    1
    0 Stimmen
    38 Beiträge
    3k Aufrufe
    N
    Das ist doch schonmal was. Danke
  • Visualisierung

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    364 Aufrufe
    sigi234S
    hast du mal das iFrame Widget probiert?
  • Frage zur Javascript Syntax

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    386 Aufrufe
    F
    Für String Literale ist es egal, ob Du single oder double quotes benutzt. Quelle: http://www.ecma-international.org/ecma- … g-literals In der Praxis haben vermutlich die Leute einfach ihre Präferenzen. Wenn Du innerhalb eines String eines von beiden einsetzen willst, dann ist es sinnvoll das String-Literal mit dem jeweils Anderen einzuleiten, um dir das Escaping zu sparen. var str = 'Hier kann ich "doppelte Anführungszeichen" einfach so ohne Escaping benutzen.'
  • [gelöst] Beobachten vom Gewerk Beleuchtung funktioniert nicht

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    384 Aufrufe
    PeoplesP
    @BuZZy: Javascript adapter nach dem hinzufügen des aktors in das gewerk neu gestartet? Gruß ` Das wars! Manchmal sollte man halt doch dann besser ins Bett gehen als ewig Fehler zu suchen wo keine sind :lol:
  • Doppeltes ausführen einer Funktion

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    845 Aufrufe
    blauholstenB
    @pix: Ich nehme die blauholstens Antwort mal vorweg: on({id: 'hm-rpc.0.BidCoS-RF.4.PRESS_SHORT'}, function (obj) { auf Änderung, Callback in Objekt mit Namen "obj" if(obj.state.val)console.log("Antasten= " + obj.state.val); Wenn der Wert des Objektes (obj.state.val) wahr ist (Kurzschreibweise von obj.state.val === true), dann erfolgt die Logausgabe des Wertes des Objektes. Also wird nur bei true ins Log geschrieben, nicht bei false. Gruß Pix ` Danke…
  • Wenn Objekt true, dann setState überspringen

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    419 Aufrufe
    modmaxM
    Habe eine globales Skript angelegt, daß sowas enthält: function setStateIfChanged(stateId, newVal) { if (getState(stateId).val != newVal) { setState(stateId, newVal); } } Damit wird der State nur auf "newVal" gesetzt, wenn es noch nicht newVal ist. In einem Fall also: nur auf true setzen, wenn nict bereits auf true. Kann es ansonsten auch einfach anpassen, oder nur die if-Abfrage verwenden.
  • Kein Aktualisierung über Alexa

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    615 Aufrufe
    Niemand hat geantwortet
  • Änderung mehrerer Schalter kombinieren

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    923 Aufrufe
    S
    @paul53: @Seehofweg: Funktioniert das grundsätzlich so? Nein, aber mit einem [http://forum.iobroker.net/viewtopic.php?f=21&amp;t=2407&amp;p=110805#p108006](http://forum.iobroker.net/viewtopic.php?f=21&amp;t=2407&amp;p=110805#p108006). Hi! Sorry für die späte Rückmeldung. Unser zweites Kind kam dazwischen. :D Ich habe es entsprechend umgesetzt, erhalte aber leider keine Funktion… var idTasterEG = ["hm-rpc.0.MEQ0717364.1.STATE", "hm-rpc.0.MEQ1726689.1.STATE", "hm-rpc.0.MEQ1727185.1.STATE", "hm-rpc.0.NEQ0757939.1.STATE"]; on({id: idTasterEG, val: true}, function(){ –------------------------------------------------------------- > Du machst anschließend einen Stringvergleich, was bedeutet der Datenpunkt ist vom Typ "string" ? Was meinst du mit "Stringvergleich"? Ich habe die Variable "javascript.0.alarmanlage.anwesenheit" angelegt, hierunter sind die Stati meiner Alarmanalge hinterlegt (z. B. "anwesend-ein"). Diese rufe ich ja ab, schreibe diese in die Programmvariable und lasse mir den aktuellen Status ausgeben… Viele Grüße
  • Mit Sonoff T1 ein Sonoff Basic mit schalten

    Verschoben
    10
    1
    0 Stimmen
    10 Beiträge
    1k Aufrufe
    G
    @Buko: Also ON / OFF geht bei mir leider nicht. ` Ist komisch da ich noch kein Sonoff Gerät mit wahr/unwahr steuern konnte. Wenn es bei dir funktioniert auch gut. @Buko: Deine Dritte komme ich noch nicht ganz klar mit. ` Experimentier ein wenig mit dem Trigger dann kommst du schon dahinter. Gruß
  • (ERLEDIGT) einfaches Blockly Skript zum neustarten über Sonoff POW und Basic

    Verschoben
    25
    1
    0 Stimmen
    25 Beiträge
    4k Aufrufe
    G
    Da ich das Blockly gestern schon fertig und getestet hatte und es vielleicht doch noch jemanden nützlich sein kann stell ich es noch hier rein bevor ich es lösche. Üblicherweise werden Sonoff mit Tasmota geflasht die dann bestimmte Grundeinstellungen haben wie ein Sendeintervall der Daten alle 300 Sek. Ohne den Sendeintervall zu ändern würde ein Blockly das mit einem 3 min. timeout arbeitet nur "alten Daten" erhalten bzw. bis neue Daten kommen ist das Blockly längst abgearbeitet. Dann könnte man gleich beim unterschreiten des Grenzwertes ausschalten und auf den timeout verzichten. Ich habe das Blockly anhand er Daten von meinem Server getestet wodurch eine Überbrückungszeit einzubauen notwendig war. Die Überbrückungszeit wird im timeout2 eingetragen die sich aus der verzögerten Einschaltung (40 sek.) und der Zeit die nach dem wieder einschalten gewartet werden soll bis der Grenzwert sicher überschritten ist. In den "request" Blöcken ist die IP-Adresse noch einzutragen. Der Sendeintervall der Sonoff Daten wird beim unterschreiten des Grenzwertes auf 10 sek. gesetzt und beim beenden der Überbrückungszeit wieder auf 300 sek. zurückgesetzt. [image: 4173_1.png] Export ! ```` <xml xmlns="http://www.w3.org/1999/xhtml"><block type="variables_set" id="LXo4C`;b@)UU^c]v/EAI" x="-87" y="-488"><field name="VAR">Timer_OFF_Läuft</field> <value name="VALUE"><block type="logic_boolean" id="sY_DFgl2Yc0F/U,n@G,"><field name="BOOL">FALSE</field></block></value> <next><block type="variables_set" id="gE{jkO_.!X!oD)gwvZt"><field name="VAR">Timer_Pause</field> <value name="VALUE"><block type="logic_boolean" id="D9l%P;J;O=V#Oo5-17mu"><field name="BOOL">FALSE</field></block></value> <next><block type="on_ext" id="d0[YYdZDI{r2(i+^H~6k"><mutation items="1"></mutation> <field name="CONDITION">any</field> <value name="OID0"><shadow type="field_oid" id="11:L)kD)[Xz/sF5_V-8y"><field name="oid">javascript.0.Power</field></shadow></value> <statement name="STATEMENT"><block type="controls_if" id="TIxyAkFg}uIhrY9iA-3q"><value name="IF0"><block type="logic_operation" id="SS`D8[tFc~.5lJ}pXrb+" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="8kZq*60w-M-fT@%B{Y2N"><field name="OP">LT</field> <value name="A"><block type="get_value" id="`kczcX0[4W#a2}O:/F7g"><field name="ATTR">val</field> <field name="OID">javascript.0.Power</field></block></value> <value name="B"><block type="math_number" id="^Q=X6j3{eQChA2KG2@t5"><field name="NUM">1200</field></block></value></block></value> <value name="B"><block type="logic_operation" id="y^K5/WO892=Z.!v=LOAf" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="5i/u:oMcC+*`+:0kz9j*"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="u8PqlwOo=HTT7]S?-Kod"><field name="VAR">Timer_OFF_Läuft</field></block></value> <value name="B"><block type="logic_boolean" id="{@4Q,[1+f]MHo:wy6DWw"><field name="BOOL">FALSE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="S%fxdkj01LyX.)8?03Q#"><field name="OP">EQ</field> <value name="A"><block type="variables_get" id="VX{!I]BR*0wN~Fo4c+#i"><field name="VAR">Timer_Pause</field></block></value> <value name="B"><block type="logic_boolean" id="Qv5=n9FbQC8Z*m??]I3^"><field name="BOOL">FALSE</field></block></value></block></value></block></value></block></value> <statement name="DO0"><block type="comment" id=".(IcX/gt5#SuJxj5~mIE"><field name="COMMENT">Sendeintervall des Sonoff auf 10 sek. setzen</field> <next><block type="request" id="Iy+P(eO[~+-R{05^m]SO"><mutation with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG">log</field> <value name="URL"><shadow type="text" id=",;KnXC=[%HvM,8{C8JjZ"><field name="TEXT">http://Sonoff-IP/cm?cmnd=TelePeriod%2010</field></shadow></value> <next><block type="comment" id="uR#}+d;`CiEf@`zri@j/"><field name="COMMENT">Start des Ausschalttimers</field> <next><block type="timeouts_settimeout" id="3TdDK@x#TxN5}+?Ar-z]"><field name="NAME">timeout</field> <field name="DELAY">3</field> <field name="UNIT">min</field> <statement name="STATEMENT"><block type="controls_if" id="i;U(LK,:3*AG]7Cs[B3y"><value name="IF0"><block type="logic_compare" id="0rBeEYYqKav|-`dqI[Ti"><field name="OP">LT</field> <value name="A"><block type="get_value" id="*@N~e9|AT.=U^]~f@#i_"><field name="ATTR">val</field> <field name="OID">javascript.0.Power</field></block></value> <value name="B"><block type="math_number" id="c+cbZPZyjO8bb7xLzhf^"><field name="NUM">1200</field></block></value></block></value> <statement name="DO0"><block type="control" id="Sk[S,4ag_O%9P-Gy(A*)"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="rLa35BO{Uw9.V)A::#5K"><field name="TEXT">OFF</field></block></value> <next><block type="comment" id="JYQf@e0OmDn[%N(@)|-@"><field name="COMMENT">Einschaltverzögerung</field> <next><block type="control" id="B`l9`[%OVU=7HyR}spOv"><mutation delay_input="true"></mutation> <field name="OID">javascript.0.POWER</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">40</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="C+zv`PhHS)~:0;?]!z[X"><field name="TEXT">ON</field></block></value> <next><block type="variables_set" id="?Hv(m@,+f^[=T,3q6Zpa"><field name="VAR">Timer_OFF_Läuft</field> <value name="VALUE"><block type="logic_boolean" id="Jrw+:tz{2=V2KZ)g)H8z"><field name="BOOL">FALSE</field></block></value> <next><block type="comment" id="+lS-5[0ZqcI[rdSN1*9}"><field name="COMMENT">Start der Überbrückungszeit</field> <next><block type="variables_set" id="@{5P:)vkgl0N6c(1X]jY"><field name="VAR">Timer_Pause</field> <value name="VALUE"><block type="logic_boolean" id="I.%87EjD.|`jl@#0Wp_M"><field name="BOOL">TRUE</field></block></value> <next><block type="timeouts_settimeout" id="0YA6M}B(8nvuPlvj00Yj"><field name="NAME">timeout2</field> <field name="DELAY">60</field> <field name="UNIT">sec</field> <statement name="STATEMENT"><block type="variables_set" id="n|%^RZ,;?VN*p-B5UA?{"><field name="VAR">Timer_Pause</field> <value name="VALUE"><block type="logic_boolean" id="qT,mAT@j]vk(*n#nqC=E"><field name="BOOL">FALSE</field></block></value> <next><block type="comment" id="2T}HLbLs#Q~Tde7#db7L"><field name="COMMENT">Sendeintervall des Sonoff auf 300 sek. setzten</field> <next><block type="request" id="k4pC}qfw1IN2J2q:a}i_"><mutation with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG">log</field> <value name="URL"><shadow type="text" id="1Kqkdwdfr_m11)hGXr~w"><field name="TEXT">http://Sonoff-IP/cm?cmnd=TelePeriod%20300</field></shadow></value></block></next></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></statement></block></next></block></next></block></next></block></statement></block></statement></block></next></block></next></block></xml>

792

Online

32.4k

Benutzer

81.5k

Themen

1.3m

Beiträge