Skip to content

Blockly

Hilfe für Skripterstellung mit Blockly

6.5k Themen 79.3k Beiträge

NEWS

  • Hilfe: Werte nur jede Minute schicken

    blockly
    2
    0 Stimmen
    2 Beiträge
    202 Aufrufe
    arteckA
    @Homoran dein job :-)
  • Texte von mehreren SV in eine SV schreiben

    11
    1
    0 Stimmen
    11 Beiträge
    602 Aufrufe
    hananH
    Hallo Homoran Ist vielleicht nicht das sauberste, aber könnte funktionieren... var freier_Tag_Name; schedule("* * * * *", function () { if (getState("hm-rega.0.25018").val == 0) { freier_Tag_Name = 'unbekannt'; } else if (getState("hm-rega.0.25018").val == 1) { freier_Tag_Name = 'Arbeit'; } else if (getState("hm-rega.0.25018").val == 2) { freier_Tag_Name = 'Wochenende'; } else if (getState("hm-rega.0.25018").val == 3) { freier_Tag_Name = 'Frei'; } else if (getState("hm-rega.0.25018").val == 4) { freier_Tag_Name = 'Ferien'; } else if (getState("hm-rega.0.25018").val == 5) { freier_Tag_Name = 'Urlaub'; } setStateDelayed("hm-rega.0.2633"/*Heute ist*/, (String(freier_Tag_Name)), 1000, false); if (getState("hm-rega.0.3365").val == '' && getState("hm-rega.0.39794").val == '') { setStateDelayed("hm-rega.0.2633"/*Heute ist*/, (String(freier_Tag_Name)), 1000, false); } else if (getState("hm-rega.0.3365").val != '' && getState("hm-rega.0.39794").val == '') { setStateDelayed("hm-rega.0.2633"/*Heute ist*/, ([freier_Tag_Name,'; ',getState("hm-rega.0.3365").val].join('')), 1000, false); } else if (getState("hm-rega.0.3365").val == '' && getState("hm-rega.0.39794").val != '') { setStateDelayed("hm-rega.0.2633"/*Heute ist*/, ([freier_Tag_Name,'; ',getState("hm-rega.0.39794").val].join('')), 1000, false); } else if (getState("hm-rega.0.3365").val != '' && getState("hm-rega.0.39794").val != '') { setStateDelayed("hm-rega.0.2633"/*Heute ist*/, ([freier_Tag_Name,'; ',getState("hm-rega.0.39794").val,'; ',getState("hm-rega.0.3365").val].join('')), 1000, false); } }); [image: 1559916414485-0a17b221-248f-426b-9c92-76cb76dcae1e-image.png]
  • Abfrage Liste - Konvertierung Astrozeitenskript in Blockly

    2
    2
    0 Stimmen
    2 Beiträge
    276 Aufrufe
    D
    Guten Morgen, das ist kein Bug sondern ein Feature ... es liegt daran das Listen in Blockly nicht bei [0] begonnen werden zu zählen sondern bei [1] ... Mit einem zusätzlichen +1 würde es funktionieren, schön ist aber anders: [image: 1559886524469-4972ca63-803c-4664-89bc-bc8c33627bde-grafik.png] <xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="/W{U,=czPw.ii`I$||qJ">tageszeiten</variable> <variable type="" id="]0j+(fGNY(]AJjAv3hmf">test</variable> </variables> <block type="schedule" id="qvc,g|l-Dp;I:`$JUH/P" x="1513" y="-387"> <field name="SCHEDULE">*/5 * * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="a)bnCEh5BM05}i9Hvqiu"> <field name="VAR" id="/W{U,=czPw.ii`I$||qJ" variabletype="">tageszeiten</field> <value name="VALUE"> <block type="lists_create_with" id="Q2:h`{oqE*BCT7`xy+Kg"> <mutation items="8"></mutation> <value name="ADD0"> <block type="text" id="-hvJ#koD0zea@xpt!eMP"> <field name="TEXT">Nacht</field> </block> </value> <value name="ADD1"> <block type="text" id="F-[fo_c,N.IS-l$SI{J|"> <field name="TEXT">Morgendämmerung</field> </block> </value> <value name="ADD2"> <block type="text" id="n~okDyHScEj7Np}E_o|q"> <field name="TEXT">Morgen</field> </block> </value> <value name="ADD3"> <block type="text" id="`f[9n.X=kvWR`)Cw0P1~"> <field name="TEXT">Vormittag</field> </block> </value> <value name="ADD4"> <block type="text" id="1^9R(^_YWi0O?D4H!xj|"> <field name="TEXT">Mittag</field> </block> </value> <value name="ADD5"> <block type="text" id="/j/zYB+xY;d:3HT0l[r5"> <field name="TEXT">Nachmittag</field> </block> </value> <value name="ADD6"> <block type="text" id="waj4#d+eu2}uil?{Lwx0"> <field name="TEXT">Abenddämmerung</field> </block> </value> <value name="ADD7"> <block type="text" id="Dx+(C@@fEmKcWM#QgL4Z"> <field name="TEXT">Abend</field> </block> </value> </block> </value> <next> <block type="variables_set" id="YK}Vr}iss[/Nux^Of@1g"> <field name="VAR" id="]0j+(fGNY(]AJjAv3hmf" variabletype="">test</field> <value name="VALUE"> <block type="math_number" id="^(VJlP~L9CT[|9g|v(1W"> <field name="NUM">2</field> </block> </value> <next> <block type="comment" id="f;4k1dM91VNX:[]M*s4k"> <field name="COMMENT">Aktuelle Tageszeit</field> <next> <block type="debug" id="2@05?W;?/!{V0}[j7^x:"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="^7lla0/+/$!R.^wMP{b3"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="Do!n3=z7EDpWR`H#hH9T"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="2d:Kpu+yh(s.ABn~VDEA"> <field name="TEXT">Aktuelle Tageszeit: </field> </block> </value> <value name="ADD1"> <block type="lists_getIndex" id="#P;oal!,sc__.P0QRVte"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="g|_}o8e9zyx2W-V:?EGc"> <field name="VAR" id="/W{U,=czPw.ii`I$||qJ" variabletype="">tageszeiten</field> </block> </value> <value name="AT"> <block type="math_arithmetic" id="X(wDbsJKMhe$zNumm*vD"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="9@A,o8b6aRwUy1;rXu=+"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="-90p$hq`{^x]u|u(qhKv"> <field name="VAR" id="]0j+(fGNY(]AJjAv3hmf" variabletype="">test</field> </block> </value> <value name="B"> <shadow type="math_number" id="aBG^cdP|l:Y@VjA?zan)"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <next> <block type="comment" id="[!?R@N*t{3J4|L%WY/NA"> <field name="COMMENT">Nächste Tageszeit</field> <next> <block type="controls_if" id="][?ex;if!5(S`,zD%jvk"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="Pl0ELsLx6D?*sqmhu)qA"> <field name="OP">EQ</field> <value name="A"> <block type="math_arithmetic" id="*wBE^;J1wEMLj^S}8JM)"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="Q*a|P7THbcgr_^thah`%"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="e99:je.?A9z0I4(4V+N0"> <field name="VAR" id="]0j+(fGNY(]AJjAv3hmf" variabletype="">test</field> </block> </value> <value name="B"> <shadow type="math_number" id="rVR%(wk|D,;yxm%R6Yb3"> <field name="NUM">1</field> </shadow> <block type="math_number" id="j)M$C|$mA@G4N;w5tu#."> <field name="NUM">1</field> </block> </value> </block> </value> <value name="B"> <block type="lists_length" id="!l544YZ.,r@dTlInOmxX"> <value name="VALUE"> <block type="variables_get" id="SE%PL[8}IB-9W;9*O;pF"> <field name="VAR" id="/W{U,=czPw.ii`I$||qJ" variabletype="">tageszeiten</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="6!W4eZX$vKIQ4UeB8j^g"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="p;ZX7r-b9h=}%cyE!hby"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="Q%Ck$L;j?aq_USw7U:|R"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="d?+`~+f%u[|J,eN/pCf3"> <field name="TEXT">(if) Nächste Tageszeit: </field> </block> </value> <value name="ADD1"> <block type="lists_getIndex" id="O;W8%`u3uEIaYjB%}qdY"> <mutation statement="false" at="false"></mutation> <field name="MODE">GET</field> <field name="WHERE">FIRST</field> <value name="VALUE"> <block type="variables_get" id="7:+#CLK-+IYu1(#X)L7x"> <field name="VAR" id="/W{U,=czPw.ii`I$||qJ" variabletype="">tageszeiten</field> </block> </value> </block> </value> </block> </value> </block> </statement> <statement name="ELSE"> <block type="debug" id="B00.bcp]Oa__HSfhcB?a"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id=";tHbjtCkf*)VIo5*#DV."> <field name="TEXT">test</field> </shadow> <block type="text_join" id="KW/}K|1v~.E1:LsKyMT5"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="_fwRg~xJ,t7wqCd958(v"> <field name="TEXT">(else) Nächste Tageszeit: </field> </block> </value> <value name="ADD1"> <block type="lists_getIndex" id="w9^l=o.V~D2;OnV7anc?"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="%{3{2J*%Is,wX`(x#2SP"> <field name="VAR" id="/W{U,=czPw.ii`I$||qJ" variabletype="">tageszeiten</field> </block> </value> <value name="AT"> <block type="math_arithmetic" id="Mvbwf1PxXCjVjdvmNJl6"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="Gh6+VuMmuFQ=9+3lp?6d"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="hGAGFJF`VWlhh#zT|Jv!"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="Q*a|P7THbcgr_^thah`%"> <field name="NUM">8</field> </shadow> <block type="convert_tonumber" id="pzOwY/4vpZz9*(B[-/!{"> <value name="VALUE"> <block type="variables_get" id="Fo3j7-W)k?~f3c(.EdRq"> <field name="VAR" id="]0j+(fGNY(]AJjAv3hmf" variabletype="">test</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="rVR%(wk|D,;yxm%R6Yb3"> <field name="NUM">1</field> </shadow> <block type="math_number" id="qQK2$cnDghsf|W{lB051"> <field name="NUM">1</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id=".@~H=vjx/dFF^;mMUGjI"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
  • 2 Objekte "true" Status von anderen Objekt setzen

    blockly
    4
    0 Stimmen
    4 Beiträge
    352 Aufrufe
    SBorgS
    Kein Problem :) Du legst dir einen Datenpunkt an wie bspw. javascript.0.blabla.alarmmeldung als Typ bool (true/false) Nun brauchst du ein kleines Blockly, welches auf "Voralarm" und "ausgelöst" prüft --> beide "true", setze javascript.0.blabla.alarmmeldung auf "true". In der VIS sagst du nun bei "Sichtbarkeit" nur wenn javascript.0.blabla.alarmmeldung = "true" Schon ist das Widget nur sichtbar wenn "Voralarm" und "ausgelöst" wahr sind.
  • Warum erhalte ich einen doppelten Eintrag im Log?

    blockly communication
    7
    1
    0 Stimmen
    7 Beiträge
    617 Aufrufe
    lost in translationL
    @dslraser Bei mir jetzt auch. Und in meinem "selbst geschriebenen" debug.txt die ganze Zeit nur einfach. Naja, ich behalte es mal im Auge, habe gerade was anderes gefunden :-) EDIT: nun taucht die Dopplung doch wieder auf. :-( ciao frank
  • Blockly Schleife bis Zustand erreicht ? (Stromausfall)

    blockly
    4
    0 Stimmen
    4 Beiträge
    545 Aufrufe
    paul53P
    @ChrisXY Ich mache es so: Merke den Sollzustand in Datenpunkten oder Variablen und bei Netzspannungswiederkehr wird verzögert gesendet, wenn der Sollzustand "ein" ist. "Heizventil" enthält den Sollzustand. // Heizaktor für Auf-/Zu-Ventil ansteuern // no = Ventil stromlos offen var no = false; // Raumkurzname am Anfang des Datenpunktnamen und als JS-Gruppenname var raum = name.split(".")[2]; var actid = getIdByName(raum + ".Heizaktor-Ein"); var ventid = getIdByName(raum + ".Heizventil"); var netid = getIdByName("USV.Netz"); var net = getState(netid).val; var vent = getState(ventid).val; var act = getState(actid).val; var timer1 = null; var timer5 = null; function actor() { var y = vent; if(no) y = !vent; if(act === y) { // Ist == Soll if(timer1) clearTimeout(timer1); if(timer5) clearTimeout(timer5); } else if(net) { // Ist != Soll und Netz vorhanden setState(actid, y); timer1 = setTimeout(function() {setState(actid, y);}, 1000); timer5 = setTimeout(function() {setState(actid, y);}, 5000); } } actor(); // script start on(ventid, function(dp) { vent = dp.state.val; actor(); }); on(netid, function(dp) { net = dp.state.val; act = false; // Aktor ist nach Netzausfall aus if(net) setTimeout(actor, 10000); // Netzwiederkehr }); on({id: actid, ack: true}, function(dp) { // Aktor-Zustand bestätigt act = dp.state.val; // Ist actor(); });
  • Sonoff Steuerung über Homematic Input

    7
    2
    0 Stimmen
    7 Beiträge
    486 Aufrufe
    S
    Hiermit funktionierts... [image: 1559656737154-2019-06-04-15_57_43-javascript-iobroker.png] Wobei laut smarthome tricks beides identisch ist sofern man nur einen triggerpunkt nimmt...
  • Zeiten speichern in einem Objekt und Subtrahieren (Stoppuhr Rasenmäher)

    3
    0 Stimmen
    3 Beiträge
    690 Aufrufe
    dslraserD
    @pupsi im zweiten Beitrag hat @paul53 ein Beispiel verlinkt wie man mit Zeiten rechnen kann. https://forum.iobroker.net/topic/22830/blockly-mit-uhrzeiten-rechnen
  • 0 Stimmen
    16 Beiträge
    2k Aufrufe
    AlCalzoneA
    @lost-in-translation sagte in jede Minute ein Bild downloaden und per sftp uploaden (mit Zeitstempel im Namen) geht das?: Wenn es mit dem Haken wartet, kann ich den Rest dann dahinter lassen, oder muss er dann in das neue Feld? Der zweite Befehl müsste dann geschachtelt in den ersten exec-Befehl. Alles was darin steht, wird nach Beendigung des Befehls ausgeführt. Ich kann mit dem XML leider nichts anfangen, da ich hier kein ioBroker griffbereit habe.
  • Eurotronic Spirit (Z-Wave) mit Aqara-Fenstersensoren "steuern"

    13
    1
    0 Stimmen
    13 Beiträge
    855 Aufrufe
    paul53P
    @kenny384 sagte: Soll verhindern, dass die Heizung sofort aus geht, wenn nur mal kurz das Fenster auf gemacht wird. Haken hinter löschen falls läuft.
  • [Erledigt] "Anwesenheitstest" im Programmfluss

    2
    2
    0 Stimmen
    2 Beiträge
    210 Aufrufe
    S
    [image: 1559563654016-anwesenheit.png] Hat sich erledigt... Mein Hauptfehler war, dass ich nicht Objekt "ping" abgefragt habe. Grüße
  • [gelöst]Hilfe! true false Aquarium steuerung

    10
    0 Stimmen
    10 Beiträge
    786 Aufrufe
    AphofisA
    @Asgothian na Klar kein Sreß! Ich habe mir dieses Jahr gesetzt damit alles läuft. Klar vis wird noch bis ins nächste Jahr dauern aber die Technik sollte bald stehen. Heute hatte ich eine Platine für 5 Schwimmschalter Anschlüße gelötet. Damit kann ich dann sämtliche Zustände steuern. Schwimmschalter 1 = Vliesfilter Vorschub (Wellenmotor) Schwimmschalter 2 = Osmose nachfüllung (Magnetventil) Schwimmschalter 3 = Bei Störung Max Füllstand für Osmose (Notabschaltung Magnetventil) Schwimmschalter 4 = Alarm Sirene Max Füllstand Technikbecken Schwimmschalter 5 = Skimmer überlauf im Abschäumer Topf Deckel Not Neustart nach timeout Sind natürlich Klinken Buchsen die ins spätere Acryl Gehäuse geschraubt werden und die Schwimmschalter bekommen alle einen Klinken Stecker. Momentan laufen alle Schwimmschalter Geschichten direkt über die Plus leitung der jeweiligen Netzteile bis 12 Volt. Dann kommt irgendwann eine 8 fach Dosierpumpe dazu! und wenn ich weiss wie ich die Tunze txt Datei per iobroker übertragen kann dann auch das nach x zeit eine andere txt Datei laden. Da der Inhalt ein witz ist! Ich muss nur wissen wie das Programm die txt Datei per USB an den Multi Controller schickt. Momentan läuft auf einem Netbook die Software mit einer Batch Datei die mir mal ein Kumpel programmiert hatte. Doch wollte ich schon gerne von dem Laptop weg und komplett auf Pi und Iobroker umsteigen. °°°Zumindest schönen Urlaub noch°°°
  • Timer ungenau

    javascript blockly
    29
    2
    0 Stimmen
    29 Beiträge
    2k Aufrufe
    M
    @paul53 ja das funktioniert auch jetzt soweit, danke. Jetzt muss ich mal schauen wie ich die Restzeit Anzeige mache, da bekomme ich aber was hin. Vielen Dank allen für die Unterstützung. So jetzt mit den KIDS ins Freibad.
  • (Gelöst) Aktion zu bestimmter Zeit ausführen

    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    IncMrGI
    Verdammt gutes Argument So müsste es jetzt hinhauen? [image: 1559473545564-852432f6-33b6-4677-84db-0b4b8483bbd4-image.png]
  • Alexa Sprachausgabe nach Zeitplan läuft in Schleife

    blockly multimedia
    3
    1
    0 Stimmen
    3 Beiträge
    312 Aufrufe
    T
    Hallo zusammen. Sorry, hat was länger gedauert bis ich es umsetzten konnte. Klappt aber super so. Danke @thewhobox ternst
  • Adapter Telegram mit Blockly

    blockly
    17
    1
    0 Stimmen
    17 Beiträge
    1k Aufrufe
    A
    @BuZZy Hi, mein Blockly habe ich jetzt mehrfach getestet. Meldet sich Telegram wenn ich den Dienst starte und stoppe, Wenn mein Backup läuft.usw. Hierfür habe ich nichts eingestellt. Komisch. Kann man das hier auch noch einstellen wann es losgehen soll und wann nicht? Versuchsaufbau: eine HMIP-PSM , eine Waschmaschine dran angeschlossen. Über die CCU 3 schalte ih den Schalter (state) 4 ein und wieder aus. Wenn ich diesen Test mache klappt es manchmal und manchmal nicht. Ich habe heraus gefunden, dass unter Objekten die States nicht immer aktualisiert werden. Maus auf den State, dann erscheint Datum und Uhrzeit) Kann man das einstellen? Gruß Alero
  • Blockly Taster ein/aus KNX

    1
    0 Stimmen
    1 Beiträge
    333 Aufrufe
    Niemand hat geantwortet
  • Milight E27 LED Lampe über iobroker Alexa2 Adapter einschalten mit kalt weißem Licht.

    1
    2
    0 Stimmen
    1 Beiträge
    193 Aufrufe
    Niemand hat geantwortet
  • eingehendes Telefonat mit Alexa ankündigen

    blockly
    52
    1
    0 Stimmen
    52 Beiträge
    4k Aufrufe
    dabbeljuhD
    War ja klar, kaum stellt man die Frage im Forum, klappt alles. :unamused: :joy: Hab noch mal explizit Hans über Alexa aktiviert und nun läuft's ... Danke für dieses überaus geniale Script!!! :)
  • Blockly Script stoppen/beenden beim erneuten ausführen

    13
    0 Stimmen
    13 Beiträge
    4k Aufrufe
    nik82N
    Ist nur ne Whirlpoolbadewanne :-)

310

Online

32.7k

Benutzer

82.4k

Themen

1.3m

Beiträge