Skip to content

Skripten / Logik

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

16.5k Themen 213.2k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    P
    Oben steht, dass der Server öfter mal offline ist. Da ist ping meine erste Idee. Ob der Server auf Pings antwortet, weiß ich nicht. Reagiert der Server nicht auf ping, dann evtl. als Ersatz einen httpcheck nehmen. httpcheck nutze ich auf der Synology, bevor die auf den ioBroker zugreift. # ===== HTTP-Check statt Ping ===== curl -s --connect-timeout 3 "$BASE/system.adapter.admin.0.alive" > /dev/null || exit 1 Ist allerdings ein Bash-Skript. Das muss für die Zwecke angepasst werden.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    S
    @TT-Tom Vielen Dank für den Tip.
  • 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?
  • 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
    365 Aufrufe
    sigi234S
    hast du mal das iFrame Widget probiert?
  • Frage zur Javascript Syntax

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    407 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
    385 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
    874 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
    430 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
    628 Aufrufe
    Niemand hat geantwortet
  • Änderung mehrerer Schalter kombinieren

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    S
    @paul53: @Seehofweg: Funktioniert das grundsätzlich so? Nein, aber mit einem [http://forum.iobroker.net/viewtopic.php?f=21&t=2407&p=110805#p108006](http://forum.iobroker.net/viewtopic.php?f=21&t=2407&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>
  • Tankerkönig -> Vorhersagen

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    380 Aufrufe
    Niemand hat geantwortet
  • Alte Archiv Dateien löschen - Automatisches Backup_-Pi3 ioBroker-

    Verschoben
    13
    2
    0 Stimmen
    13 Beiträge
    2k Aufrufe
    R
    Danke erstmal an alle, teste jetzt mal die nächsten 7 Tage obs passt.
  • Telegram -> sendMediaGroup

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    622 Aufrufe
    Niemand hat geantwortet
  • Script Verständnisproblem

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    693 Aufrufe
    AlCalzoneA
    Ne Alternative wären promises und optional async/await in TypeScript. Damit kannst du diese callback Logik so umbauen, dass es von außen so aussieht wie ein ganz normaler funktionsaufruf mit Rückgabewert. Ist aber für Anfänger noch schwieriger, das initial zu verstehen. Danach ist der asynchrone Programmablauf imo deutlich einfacher zu verstehen. Gesendet von unterwegs
  • Über SetState geänderte Werte werden auf dem objects-Tab nicht korrekt angezeigt

    Verschoben
    3
    1
    0 Stimmen
    3 Beiträge
    522 Aufrufe
    T
    Ich hab die Lösung: setState(name_saved_state_lamp, new Date().getTime()); funktioniert nicht. Hier liefert getState() zwar den korrekten Wert zurück, aber auf dem objects-Tab wird der geänderte Wert nicht angezeigt. Wenn ich aber Datum/Zeit nach Int konvertiere setState(name_saved_state_lamp, parseInt(new Date().getTime())); funktioniert es. <size size="150">Warum?</size>
  • [gelöst] switch / case mit Wert aus state liefert undefined… wieso?

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    T
    @BuZZy: Ah warte mal, hab mir dein Script nochmal angesehen..```` createState('Ansage.Terminvorschau','1', { ... }); createState('Ansage.Terminvorschau',1, { ... }); (OHNE ' ' um den Wert 1 herum).. Dann hast du die 1 als Number drin stehen! ;) Jetzt ist wieder die Frage was schreibt VIS in den Datenpunkt.. Wahrscheinlich einen String, ich vermute da kommt auch der Zeilenumbruch \n her.. Gruß ` Hi, das ist ein C&P Fehler. Ich hatte zwischenzeitlich zum Testen mal auf string gestellt und dann die '' gesetzt. Vorher war es nur Number und ohne '' Den Grund habe ich nun denke ich entdeckt, steht paar Postings weiter oben; Apollons Hinweis hat mich auf die Spur der Erklärung gebracht, dein Posting hats gelöst.
  • [gelöst] Fritz dect - drei Heizungsthermostate mit einem Widget steuern

    Verschoben
    5
    1
    0 Stimmen
    5 Beiträge
    2k Aufrufe
    F
    Die Heater Groups sind übrigens in der Version 0.1.0 vom fritzdect nun drin. Hat mich einiges an Nerven gekostet, aber nun brauchts kein Script mehr. Wenn keine Probleme mehr gemeldet werden, werde ich ihn demnächst auf npm veröffentlichen.
  • Werte anpassen

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    653 Aufrufe
    J
    Hi! Sorry für die Verspätung. Hatte etwas um die Ohren. Es hat scheinbar nichts mit Float oder Integer zu tun. Irgendwer formatierte die Null einfach weg. Hab aber das Problem in Node-Red mit .toFixed lösen können. Danke Gruß Jan

467

Online

32.6k

Benutzer

82.2k

Themen

1.3m

Beiträge