Weiter zum Inhalt

Blockly

6.6k Themen 79.8k Beiträge

Hilfe für Skripterstellung mit Blockly

NEWS

  • Probleme mit Exec

    13
    1
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    AlCalzoneA
    @UncleB Das Problem ist andersherum. Du benötigst keinen User iobroker auf dem Zielrechner. Der User iobroker auf dem aktuellen Host benötigt die Zertifikate/whatever für root auf dem Zielhost.
  • Steuere Objekt wird nicht ausgeführt.

    7
    1
    0 Stimmen
    7 Beiträge
    501 Aufrufe
    HomoranH
    @paul53 Hast ja recht - andersrum klappts nicht
  • Wörter als Blacklist für Alexa

    Ungelöst blockly security
    7
    0 Stimmen
    7 Beiträge
    636 Aufrufe
    NegaleinN
    @CKMartens Hab jetzt mal etwas rumgetestet. Wenn ich zB den Pupsgenerator starte und gleich "Alea Stopp" sage, wird der Pups_Dings sofort abgebrochen. Aber wenn ich den Stopp im Alexa2 Adapter starte, wird er nicht abgebrochen. Hmmmm, gäb es noch eine andere Möglichkeit?
  • iCal Termine in der Vergangenheit

    blockly
    5
    0 Stimmen
    5 Beiträge
    354 Aufrufe
    StM47S
    Ich bin folgendermaßen vorgegangen und gespannt ob es funktioniert. Als erstes habe ich 3 Datenpunkte erstellt. [image: 1574364698077-bildschirmfoto-2019-11-21-um-20.31.28.png] -nachtschicht -nachtschicht1 -tagschicht Anschließend habe ich folgendes Blockly Script erstellt: [image: 1574364885206-bildschirmfoto-2019-11-21-um-20.33.51-resized.png] Hierbei werden zwei Termine aus iCal gertriggert. NW Nachtdienst 🌒 für die 8h Schicht und N1W Nachtschicht 🔦 für die 12h Schicht Wenn einer der beiden Termine in iCal auftaucht, wird der Datenpunkt "nachtschicht" im ersten Teil des Blocklys auf true gesetzt, wenn nicht auf false. [image: 1574366814683-bildschirmfoto-2019-11-21-um-20.39.01.png] Im nächsten Teil des Blockly Scripts wird bei Änderung des Datenpunktes "Nachtschicht" geprüft, ob der Datenpunkt auf false steht. Wenn ja, wird der Datenpunkt "Nachtschicht1" auf true gesetzt. Der Hintergrund ist hierbei folgender. iCal prüft alle 30 Minuten, ob sich ein Ereignis im Kalender geändert hat. Wenn ich meine letzte Nachtschicht habe, wird ab 0:00 Uhr in den nächsten 30 Minuten von iCal erkannt, dass keiner der beiden Termine NW Nachtdienst 🌒 N1W Nachtschicht 🔦 mehr im Kalender steht und somit wird der Datenpunkt "nachtschicht" auf false gesetzt. Das Bolckly sollte dies nun im zweiten Teil erkennen und den Datenpunkt "nachtschicht1" auf true setzen. [image: 1574365984512-bildschirmfoto-2019-11-21-um-20.52.55.png] Im unteren Teil des Blockly Scriptes wird der Datenpunkt "nachtschicht1" getriggert. Steht dieser auf true, dann startet ein Timeout mit 1500 Minuten, dass sind 25 Stunden. Wenn diese Zeit abgelaufen ist, sollte der State von "nachtschicht1" wieder auf false gesetzt werden und der Datenpunkt "tagschicht" auf true. [image: 1574366444111-bildschirmfoto-2019-11-21-um-20.55.30.png] In einem weiterem Blockly Script werden dann über die Datenpunkte -nachtschicht -nachtschicht1 -tagschicht die FritzDect Schaltvorlagen in der Fritzbox für die Heizungsthermostate geschaltet. [image: 1574366617774-bildschirmfoto-2019-11-21-um-21.03.24-resized.png] Ich bin gespannt, ob dass so funktioniert. Vielleicht, kann der Eine oder Andere Spezialist hier, sich die Blockly Scripte mal anschauen!?
  • 2 Werte addieren

    37
    0 Stimmen
    37 Beiträge
    2k Aufrufe
    HomoranH
    @BBTown sagte in 2 Werte addieren: @Homoran was das für Auswirkungen hat, ist mir dabei nur nicht klar Mir auch nur teilweise ;-) Das offensichtliche (aber unbedeutende) ist, dass Werte in rot bleiben, wenn steuere benutzt wird, wo kein Adapter den Wert abholt, umsetzt und dann bestätigt. Umgekehrt wird ein Adapter nie auf eine Änderung reagieren, die mit aktualisiere geschickt wurde. Das ACK-Flag ist bereits true und der Adapter sieht sich nicht genötigt da etwas zu tun. Wo zu es noch wichtig ist sieht man (in der unglücklichen Übersetzung) im Trigger bei Blockly. Die Bezwichnung "anerkannt" bezieht sich auf diesen ACK(nowledge) Flag. Hier kann man also triggern, ob ein Adapter auch tatsächlich auf die Änderung reagiert hat.
  • Stromverbrauch - Homematic Visualisieren

    27
    0 Stimmen
    27 Beiträge
    7k Aufrufe
    sigi234S
    @TG70 sagte in Stromverbrauch - Homematic Visualisieren: Sehr Cool ... vielen lieben DANK. Das einzige was mir jetzt noch fehlt - ich weiß aus den Datensätzen dann nicht mehr welcher Tag bzw. welches Datem der Datensatz (TAG1-15) war. Möchte so ein Monat darstellen können. Das Widget ist sehr Mächtig, du musst experimentieren. Schau dir auch die Line Chart an.
  • Dimm Skript Error

    4
    1
    0 Stimmen
    4 Beiträge
    438 Aufrufe
    marcusklM
    @paul53 Vielen Dank dafür, funktioniert perfekt
  • Was kann Nodered was Blockly nicht kann?

    19
    0 Stimmen
    19 Beiträge
    2k Aufrufe
    J
    @Hamudulu Sieht doch ganz gut aus, auch die Funktion sinnvoll verwendet. Dann noch der standard Hinweis, bei falls ist =wahr nicht nötig, da Grundfunktion des Block.
  • Aktualisierte Zeit von Objekt kleiner als

    blockly
    2
    0 Stimmen
    2 Beiträge
    218 Aufrufe
    W
    Konnte es bereits lösen: "Aktuelle Zeit als Datumsopbjekt" minus "Zeitstempel von Objekt ID"
  • [gelöst] String zu Datum konvertieren?

    blockly
    1
    0 Stimmen
    1 Beiträge
    449 Aufrufe
    Niemand hat geantwortet
  • [gelöst] Blockly Licht bei Dämmerung automatich an

    blockly
    10
    1
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    J
    @StM47 sagte in [gelöst] Blockly Licht bei Dämmerung automatich an: @ITCrowd Eigentlich logisch. Bei meinem Blockly wird zur Abenddämmerung getriggerrt und hierbei geprüft, ob es 01:00 Uhr ist. Da es zur Dämmerung natürlich nicht 01:00 Uhr ist bleibt die Funzel an. Danke für deine Erleuchtung! Falsch, Dein Ausschalte Block hat gar kein Trigger und wird nur einmalig beim Script Start getriggert, danach ist er funktionslos, deshalb geht da nichts aus So wie das ITCrowd gezeigt hat, ist der Trigger der Cron und schaltet wie gewünscht aus.
  • Hue Skript Idee?

    24
    0 Stimmen
    24 Beiträge
    2k Aufrufe
    A
    Also ich hatte damals mal für meinen Dachboden ein gleiches Problem gelöst. Leider habe ich das Blockly nicht mehr. Aber prinzipiell hatte ich es so gelöst: "Trigger " schaltet bei erkannter Bewegung Licht an . "CRON" prüft jede Minute ob Licht im Raum an ist. Wenn ja, erhöhe Zähler (Datenpunkt oder Variable) um 1. Wenn Zähler>15 (Minuten), schalte Licht aus und setze Zähler auf 0. Wenn nein, setzte Zähler auf 0.
  • Passender Trigger gesucht

    blockly
    4
    1
    0 Stimmen
    4 Beiträge
    357 Aufrufe
    S
    @paul53 Wie versprochen, hier die getestete Lösung, falls jemand genau so sparsam kuckt wie ich. [image: 1574234297817-funktion-anspringen.png] Der größte Stolperstein dabei ist, dass der Baustein [image: 1574234610487-oder.png] ODER erst auftaucht, nachdem man eine [image: 1574234868603-erstfunktion.png] Funktion mit dem Namen "ODER" angelegt hat. Ich hatte zunächst keinen sonderlich intelligenten Gesichtsausdruck... Danke für die Hilfe! Ich hatte so einige AHA-Effekte. SBPoly
  • Licht geht häufig nicht aus

    7
    1
    0 Stimmen
    7 Beiträge
    483 Aufrufe
    J
    @maxpd Ich hatte ein ähnliches Problem und da ging das Ding nicht an. Der DP wurde aber auf true gesetzt. Ändert sich bei Dir der DP auf false, oder kommt das gar nicht an?
  • Alarm wenn letzte änderung zu lange her ist

    blockly
    4
    0 Stimmen
    4 Beiträge
    2k Aufrufe
    C
    coole ideen da werd ich mich mal dran versuchen. DANKE
  • Bewegungsmelder/Lampe einschalten Frage

    5
    1
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    PeoplesP
    Bei Blocky kann ich dir da leider nicht helfen, habe aber damals ein Script genau dafür geschrieben. https://forum.iobroker.net/topic/21226/vorlage-automatisches-licht
  • Bewegungsmelder über Sat-Receiver anzeigen lassen

    7
    0 Stimmen
    7 Beiträge
    539 Aufrufe
    J
    @oberfragger Ja morgens muss der TV an sein, wie soll ich sonst wissen, ob da draußen noch alles so ist wie ein Tag vorher, bevor ich zur Arbeit fahre? So zur eigentlichen Frage. Mein Sat Receiver bootet in 20 Sekunden hoch, deshalb schalte ich den auch immer komplett aus. Hat dann den Vorteil, dass ich den DP "connection to receiver"des Enigma2 Adapter schön zum Triggern des Blockly verwenden kann. Die Temperatur zieh ich mir aus dem "temperatureMin" DP des openweathermap Adapter der mir wirklich für meine Ecke sehr genaue Daten liefert (Abweichung zu meinem Thermometer draußen, selten mehr als 0.1°C). Mit dem Telegram Blockly schreibe ich gleich ne Variable, ob überhaupt was angezeigt werden muss und schon funktioniert das wie gewünscht. Message.timeout bewirkt dann noch, dass man die Meldung mit OK am Receiver bestätigen muss und sie so definit auch gelesen wird.
  • [Gelöst] Timeout mit Variable setzen

    blockly
    3
    0 Stimmen
    3 Beiträge
    793 Aufrufe
    W
    Danke, werde ich testen und mir das Video auch mal ansehen Viele Grüße Walkinlarge2010
  • Diverse Aktoren über einen Schalter steuern.

    scenes javascript blockly
    8
    0 Stimmen
    8 Beiträge
    520 Aufrufe
    A
    Und das Ganze etwas erweitert: var Rueckstellung, Zaehler_On, Zaehler_OFF, Auswertung; on({id: 'Aktor_Küche#1.Relay0.Switch', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Rueckstellung = setTimeout(function () { Zaehler_On = 0; Zaehler_OFF = 0; console.warn((['Variablen zurückgesetzt, Mit Zähler ON= ',Zaehler_On,' und Zähler OFF=',Zaehler_OFF].join(''))); }, 10000); if (getState("Aktor_Küche#1.Relay0.Switch").val == true) { Zaehler_On = (typeof Zaehler_On == 'number' ? Zaehler_On : 0) + 1; } if (getState("Aktor_Küche#1.Relay0.Switch").val == false) { Zaehler_OFF = (typeof Zaehler_OFF == 'number' ? Zaehler_OFF : 0) + 1; } Auswertung = setTimeout(function () { if (Zaehler_On == 2 && Zaehler_OFF == 2) { if (getState("Lampe 1#1.Relay0.Switch").val == false) { setState("Lampe 1#1.Relay0.Switch"/*Switch*/, true); console.log('Aktor1_in_der_Wunschszene aktiviert'); } if (getState("Lampe 1#1.Relay0.Switch").val == true) { setState("Lampe 1#1.Relay0.Switch"/*Switch*/, false); console.log('Aktor1_in_der_Wunschszene deaktiviert'); } Zaehler_OFF = 0; Zaehler_On = 0; } if (Zaehler_On == 3 && Zaehler_OFF == 3) { if (getState("Lampe 2#1.Relay0.Switch").val == false) { setState("Lampe 2#1.Relay0.Switch"/*SHSW-1#BA6C4B#1.Relay0.Switch*/, true); console.log('Aktor2_in_der_Wunschszene EIN'); } if (getState("Lampe 2#1.Relay0.Switch").val == true) { setState("Lampe 2#1.Relay0.Switch"/*SHSW-1#BA6C4B#1.Relay0.Switch*/, true); console.log('Aktor2_in_der_Wunschszene AUS'); } Zaehler_OFF = 0; Zaehler_On = 0; } }, 6000); }); Die Variablen werden erst nach 10 Sekunden genullt und die Auswertung der Wunschszene erfolgt - in diesem Beispiel - nach 6 Sekunden. Hinterlegt wird ein jeweils angepasstes Script für jeden in Frage kommenden Teilnehmer, der die Szenen auswählen darf.
  • Osram Plug, Zeitschaltuhr & Anwesenheitskontrolle

    3
    1
    0 Stimmen
    3 Beiträge
    851 Aufrufe
    BBTownB
    @Dennis-80 so etwas in der Art könnte funktionieren [image: 1573899972715-4c02c2cf-2f46-4dc0-91f1-999f1a6f048c-grafik.png] Spoiler <xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="Wg=Kx)B2jS@5sHnC-GjP">Nachtruhe</variable> <variable type="" id="!rm1dl0R?IS0xR^zOKfz">TV</variable> <variable type="" id="nuLeyg)0=b%9p:7`B`m1">Anwesenheit</variable> </variables> <block type="variables_set" id="W.)DSCv_,jHFEO8y4(2a" x="13" y="13"> <field name="VAR" id="Wg=Kx)B2jS@5sHnC-GjP" variabletype="">Nachtruhe</field> <value name="VALUE"> <block type="logic_boolean" id="@m^k3VN;mznwXQ~T0xc7"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="on_ext" id="pO41L)e{#85jz6qWV2kj"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="SO?Hhkk@-nsj{I4-OT)-"> <field name="oid">Test.0.TV</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="g/a=C@1:8Z7bUcd*;h*7"> <field name="VAR" id="!rm1dl0R?IS0xR^zOKfz" variabletype="">TV</field> <value name="VALUE"> <block type="on_source" id="IYH@/3n*Iw#%3B:DK#!z"> <field name="ATTR">state.val</field> </block> </value> <next> <block type="procedures_callnoreturn" id="XX6fI49Qn^C/seTsc#CF"> <mutation name="Steckdose"></mutation> </block> </next> </block> </statement> <next> <block type="on_ext" id="^;y73TC8#eTVcfuMs9$%"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="kbrb]tF(gd9em=u{m3HZ"> <field name="oid">Test.0.Anwesenheit</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="u38_lQ*Yr`,l(XFY~bb^"> <field name="VAR" id="nuLeyg)0=b%9p:7`B`m1" variabletype="">Anwesenheit</field> <value name="VALUE"> <block type="on_source" id="ufMsS1qn}*UJR=|~H!*="> <field name="ATTR">state.val</field> </block> </value> <next> <block type="procedures_callnoreturn" id="D,,l+P6rqYVjf;W_ssfV"> <mutation name="Steckdose"></mutation> </block> </next> </block> </statement> <next> <block type="schedule" id="i]5(xi+AsodxbD}ie+E~"> <field name="SCHEDULE">0 21 * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="*88(xzk6PTC`opAfhz$+"> <field name="VAR" id="Wg=Kx)B2jS@5sHnC-GjP" variabletype="">Nachtruhe</field> <value name="VALUE"> <block type="logic_boolean" id="BQ(Sy7oq{oR_1si)?MoB"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="procedures_callnoreturn" id="UG{5@|RI7neleL*{(]vr"> <mutation name="Steckdose"></mutation> </block> </next> </block> </statement> <next> <block type="schedule" id="1BxLuB==*AT,6{H~eB_b"> <field name="SCHEDULE">0 7 * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="HN5j{NW1Ecxk$m[4bE=e"> <field name="VAR" id="Wg=Kx)B2jS@5sHnC-GjP" variabletype="">Nachtruhe</field> <value name="VALUE"> <block type="logic_boolean" id="t7q$0EOeKREs$C2pYZ}i"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="procedures_callnoreturn" id="lu`qfG%KH`@P9J4NT~:f"> <mutation name="Steckdose"></mutation> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defnoreturn" id="LNLf}4H8lV=Ge#vy!#YZ" x="363" y="13"> <field name="NAME">Steckdose</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="controls_if" id="37uxm2u@ZP15cwHFBP5,"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="g7,5TKwcr}I3h_Pa2Cl," inline="false"> <field name="OP">AND</field> <value name="A"> <block type="variables_get" id="}r_o69LPG6ajxjU$h:KV"> <field name="VAR" id="Wg=Kx)B2jS@5sHnC-GjP" variabletype="">Nachtruhe</field> </block> </value> <value name="B"> <block type="logic_operation" id="OP70TDHjO;Koj7bWJRXx" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_negate" id="Q|.dn,yjN$ya#pz(uY/y"> <value name="BOOL"> <block type="variables_get" id="voy^i7@iTQ^cb56UcqCG"> <field name="VAR" id="!rm1dl0R?IS0xR^zOKfz" variabletype="">TV</field> </block> </value> </block> </value> <value name="B"> <block type="logic_negate" id="2yfNcB:wo$a]jeB)h,ON"> <value name="BOOL"> <block type="variables_get" id="uH-_1^0tG4)bI2lE(XqE"> <field name="VAR" id="nuLeyg)0=b%9p:7`B`m1" variabletype="">Anwesenheit</field> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="(L*L7OwEx1Uwr#my9ly="> <mutation delay_input="false"></mutation> <field name="OID">Test.0.Steckdose</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="wH((r[5|Pw+L18YSrzP`"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_negate" id="ntXC!2knRBSbi;;(mn6."> <value name="BOOL"> <block type="variables_get" id="3h[oawL{7r6wu.;SJ6e%"> <field name="VAR" id="Wg=Kx)B2jS@5sHnC-GjP" variabletype="">Nachtruhe</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="GYvY_y%XMF+#:-lV2oCb"> <mutation delay_input="false"></mutation> <field name="OID">Test.0.Steckdose</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="0T8=kRA{*8THui-KpIWx"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> </block> </statement> </block> </xml> Hier würde dann um 07:00h die Steckdose automatisch eingeschaltet, wenn das manuell erfolgen soll - und nicht automatisch - müßte der "sonst falls" Bereich entsprechned geändert werden.

583

Online

32.8k

Benutzer

82.8k

Themen

1.3m

Beiträge