Skip to content

Blockly

Hilfe für Skripterstellung mit Blockly

6.5k Topics 79.5k Posts

NEWS

  • Summe einer Tabelle bilden

    9
    0 Votes
    9 Posts
    358 Views
    AsgothianA
    @peguschwein sagte in Summe einer Tabelle bilden: @asgothian vermutlich ist es einfach das ganze in Excel zu machen. Das was ich bereits habe. EVU Zähler auslesen etc an diesem ändert sich ja nichts. Ist lediglich die komerzielle Seite Nein - Du machst nur einen Denkfehler: Immer wenn Du in der excel Tabelle einen neuen Wert einträgst kannst Du den statt dessen in einen iobroker State schreiben. Diesen lässt Du dann via history Adapter in die Datenbank schreiben. Parallel nutzt Du einen trigger auf die Änderung des DP, und addierst den zu einem 2. ‘Summen’ DP. Dann hast Du immer die Summe, und kannst aus der DB die Tabelle dazu holen. Um das ganze zeitlich zu begrenzen kannst Du regelmäßig (immer am 1. Des Monats um 00:01 z.bsp) den Summe Wert in einen 3. DP setzen, und dann auf 0 zurück setzen. Diesen 3. DP speicherst du auch in der dB. Dann beinhaltet die dB Jeden einzelnen Wert Die monatlichen Summen Wenn deine Anwendung andere Intervalle braucht lässt sich das auch realisieren. Visualisieren lässt sich das auch - Tabellen die ‘alle Werte eines Monats’ darstellen gibt es. A.
  • DP abhängig von mehreren Varianten

    22
    1
    0 Votes
    22 Posts
    1k Views
    paul53P
    @stefan341 sagte : geht der DP vom ersten Skript ja wieder auf 0. Aber das zweite Skript nimmt den jeweiligen Text nicht raus. Es bleibt weiter im zweiten DP stehen, dass das Fenster auf ist. Das kann ich nicht nachvollziehen, denn genau das macht die Schleife: Sie schreibt nur die Räume in das Array, in denen der Wert 1 (oder true) ist.
  • Ab einem bestimmten Zeitpunkt zählen.

    4
    0 Votes
    4 Posts
    186 Views
    S
    @eduard77 Danke. Werde ich mir mal anschauen. @paul53 danke, das probiere ich mal aus.
  • Synology Surveillance Station Snapshot / Livestream

    Moved synology kamera
    5
    0 Votes
    5 Posts
    254 Views
    T
    @codierknecht Okay, danke. Ich mache es derzeit über das Skript, da ich es in Blockly nicht hinbekommen habe
  • Hilfe Blockly 2 Uhrzeiten in objekt ausgeben

    10
    0 Votes
    10 Posts
    947 Views
    K
    Seit dem letzten Firmeware update ging das script nicht mehr hab es geändert falls es jemand braucht <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="p?m(Q~}+lHKnTkdA.teN">Liste</variable> <variable id="`z(j}#qcJTueW#9U#Qb(">Dauer2</variable> <variable id="cYsu{X{2u^QK6{/6tgFZ">Dauer1</variable> </variables> <block type="on" id="R#%dPl,}X#:)M5[g4(rt" disabled="true" x="-487" y="-762"> <field name="OID">0_userdata.0.3d_drucker.qidi.rest</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="variables_set" id="NQR,n=$zBp-57#y[{G*E"> <field name="VAR" id="p?m(Q~}+lHKnTkdA.teN">Liste</field> <value name="VALUE"> <block type="lists_split" id="Hc~dcqus~z$XpY6Do9eZ"> <mutation mode="SPLIT"></mutation> <field name="MODE">SPLIT</field> <value name="INPUT"> <block type="on_source" id="r4XHfwqrFJeZy@sk4N_%"> <field name="ATTR">state.val</field> </block> </value> <value name="DELIM"> <shadow type="text" id=":gnC;z^gb1_c4bPBv8nD"> <field name="TEXT">:</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="cbN@2j?[=e$;,s~0B,}{"> <field name="VAR" id="cYsu{X{2u^QK6{/6tgFZ">Dauer1</field> <value name="VALUE"> <block type="math_arithmetic" id="l[{t_i`,E*XUIN`I8Ql="> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="lQ`|8NP,-a.,ZK!{R`A!"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="~.c4=A*fWVoL/r1a+p,#"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="1qOZ]AbIXqjsbSKJU=AE"> <field name="NUM">60</field> </shadow> <block type="lists_getIndex" id="[|*.bmk_,:j|W_%9RNik"> <mutation statement="false" at="false"></mutation> <field name="MODE">GET</field> <field name="WHERE">FIRST</field> <value name="VALUE"> <block type="variables_get" id="$4qF,LU9,*Q[peP5CqD,"> <field name="VAR" id="p?m(Q~}+lHKnTkdA.teN">Liste</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="]@kC7saoD2R$3qt:vZW|"> <field name="NUM">60</field> </shadow> </value> </block> </value> <value name="B"> <shadow type="math_number" id="D2/iMsbrg.9k#1uxCu6f"> <field name="NUM">1</field> </shadow> <block type="convert_tonumber" id="7w]y,z.}dmKuD1:g;5fe"> <value name="VALUE"> <block type="lists_getIndex" id="U3BeXkLtFB^AHS4p43(Y"> <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="GrvIBdf3i{:Kk0rfbBz/"> <field name="VAR" id="p?m(Q~}+lHKnTkdA.teN">Liste</field> </block> </value> <value name="AT"> <block type="math_number" id="A}//rz?@nh;KQ]f[}GNL"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="@E8I|8)~jUFh]!=afwzz"> <field name="VAR" id="`z(j}#qcJTueW#9U#Qb(">Dauer2</field> <value name="VALUE"> <block type="convert_from_date" id="i~pxj5?;ZhEM%5jh!n{]"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm</field> <value name="VALUE"> <block type="time_calculation" id="^uagMF^!oe6N@wTaJh,7"> <field name="OPERATION">+</field> <field name="UNIT">min</field> <value name="DATE_TIME"> <shadow type="time_get" id=";/?yTk!H|c9r]d1TSK7`"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">object</field> </shadow> </value> <value name="VALUE"> <shadow type="math_number" id="Ks,5cQduUd-rMudL-^y5"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Ynny|`s6fJjBS`gyNm5R"> <field name="VAR" id="cYsu{X{2u^QK6{/6tgFZ">Dauer1</field> </block> </value> </block> </value> </block> </value> <next> <block type="update" id="!jIJ=a3Jii;i5(+THi9O"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.3d_drucker.qidi.endzeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id=":pd%2C(=c$kmKs1BoUf:"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id=";];}nSs!?=%{RmNBRq]l"> <field name="TEXT">um </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="sTyd)aYa3.upxw4*2x=f"> <field name="VAR" id="`z(j}#qcJTueW#9U#Qb(">Dauer2</field> </block> </value> <value name="ADD2"> <block type="text" id=".x`/)Go|A_#%yQyoKKW~"> <field name="TEXT"> Uhr</field> </block> </value> </block> </value> <next> <block type="controls_if" id="{aXTW3+XCwl55i1D+T$d"> <value name="IF0"> <block type="logic_compare" id="ykEwP(+#LYww]3o(cY?E"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="ZTN+[E`1G7#Cl3{AUu$~"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.3d_drucker.qidi.printing</field> </block> </value> <value name="B"> <block type="text" id="}Ocm^!l{-L~8[xFhk_N,"> <field name="TEXT">standby</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_wait" id="sA1k1!p^ptPs:K1)S3oR"> <field name="DELAY">60</field> <field name="UNIT">sec</field> <next> <block type="control_script" id="y6UBq]S::qKv@joEH_s3"> <field name="OID">script.js.common.3d-Drucker.QIDI.Endzeit-qidi</field> <field name="ACTION">stopScriptAsync</field> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> <block type="on" id="|r0c`i-KtJ?t:Qs.mijO" x="-137" y="-337"> <field name="OID">0_userdata.0.3d_drucker.qidi.rest</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="variables_set" id="*rl7#vGQ_*O3S]qbShTW"> <field name="VAR" id="`z(j}#qcJTueW#9U#Qb(">Dauer2</field> <value name="VALUE"> <block type="convert_from_date" id="dqp]j/7+xMGG6gP/%FZn"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">hh:mm</field> <value name="VALUE"> <block type="time_calculation" id="fuX$k~R{_48Y=do?uk4V"> <field name="OPERATION">+</field> <field name="UNIT">min</field> <value name="DATE_TIME"> <shadow type="time_get" id="$/aws/(:5vlMK/al~#hM"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">object</field> </shadow> </value> <value name="VALUE"> <shadow type="math_number" id="Ks,5cQduUd-rMudL-^y5"> <field name="NUM">1</field> </shadow> <block type="get_value" id="!MvJGa}+h06W?%I1U@fX"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.3d_drucker.qidi.rest</field> </block> </value> </block> </value> </block> </value> <next> <block type="update" id=")E0XFIV%p4Y3Fxh^DkkH"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.3d_drucker.qidi.endzeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="KZdiA!2!yHASTdy4x+7N"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="WOqi{YblQiEQcAyT=]`a"> <field name="TEXT">um </field> </block> </value> <value name="ADD1"> <block type="variables_get" id=".:FK.NN{O`SWYs$ljQY="> <field name="VAR" id="`z(j}#qcJTueW#9U#Qb(">Dauer2</field> </block> </value> <value name="ADD2"> <block type="text" id="Mh*)X)$!CSLQ|nC]SPTd"> <field name="TEXT"> Uhr</field> </block> </value> </block> </value> <next> <block type="controls_if" id="4bAff/4#/]p}h.mD1b6J"> <value name="IF0"> <block type="logic_compare" id="L|[d?t?8z~7_%%4-W^zw"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="~$7T-7!.bK[l|$9`o/PY"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.3d_drucker.qidi.printing</field> </block> </value> <value name="B"> <block type="text" id="[4ms18HSxSpHo6Des%mq"> <field name="TEXT">standby</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_wait" id="Yt;+42DNrvt+6Pt;oN[^"> <field name="DELAY">60</field> <field name="UNIT">sec</field> <next> <block type="control_script" id="y[(w~.N3)46lVaOdqeV@"> <field name="OID">script.js.common.3d-Drucker.QIDI.Endzeit-qidi</field> <field name="ACTION">stopScriptAsync</field> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </xml>
  • gelöst - Blockly JSON auslesen und Wert in DP schreiben

    4
    1
    0 Votes
    4 Posts
    274 Views
    AtifanA
    @padrino Jo habs geändert :)
  • paperless-ngx-Adapter: Namen des letzten Dokumentes?

    5
    -1 Votes
    5 Posts
    318 Views
    CodierknechtC
    @mjas sagte in paperless-ngx-Adapter: Namen des letzten Dokumentes?: der Adapter zieht mir allerdings nur die ausführlichen Details von 999 Dokumenten Da müsstest Du Dich dann an den Entwickler wenden. Am besten ein Issue auf GitHub aufmachen. https://github.com/BenAhrdt/ioBroker.paperless-ngx
  • PV 0 Einspeisung mehrerer Wechselrichter (gel.)

    63
    1
    0 Votes
    63 Posts
    2k Views
    DuffyD
    @haselchen Ich hatte nach „gelöst“ einen Beitrag von @paul53 übersehen der sich überschnitten hatte deshalb ist das gelöst schon drin; sorry. Wie gesagt, ich finde auch es sieht sieht recht gut aus aber ich kann nicht beurteilen ob noch was verbessert werden kann. Paul hatte ha schon mal gesagt es wäre ok aber seitdem wurde das Chart optimiert was auch der Grund meiner erneuten, gleichen, Frage war. @paul53 sagte in PV 0 Einspeisung mehrerer Wechselrichter (gel.): @duffy sagte: Das sieht für mich auch ganz flott aus. Das macht der P-Anteil des PI-Reglers. Hältst du es für zu flott? Ich kann das nicht einschätzen. Es grüsst euch Duffy
  • Dateien in FS schreiben - trotz REDIS

    7
    0 Votes
    7 Posts
    316 Views
    OliverIOO
    @tops4u hm, so ein paar schlüsselbegriffe fehlen, woran ich erkenne, das du dich auskennst. daher wünsche ich dir mit deiner installation toitoitoi @tops4u sagte in Dateien in FS schreiben - trotz REDIS: Ich habe mir halt vorgestellt, dass es irgendwie eleganter gehen sollte und verstehe die Einschränkung von Files aus JavaScript nicht ganz, wenn es gleichzeitig von NodeRED aus geht. Man hätte ja die Einschränkung z.b. auf /opt/iobroker/iobroker-data/files/<z.b. JavaScript_FS> abschalten können, somit zerschiesst man sich keine Systemfiles. Mounts sind keine Option. Ich habe noch andere Daten welche aus NodeRed raus generiert werden, und die übertrage ich nun mit geplanten Scripts auf dem NAS. ich verstehe nicht ganz von welcher einschränkung du da sprichst. es wird für adapter entwickler empfohlen nicht mit fs in das dateisystem des iobrokers zu schreiben, da diese dateien nicht vom backup erfasst werden. auch wenn der nutzer redis nutzt, existieren die dateien gar nicht physisch im dateisystem, sondern sind genau so als key/value im redis gespeichert. bei jsonl weiß ich es nicht genau. für docker gilt, alles was sich nicht in einem volume befindet ist bei der nächsten regeneration des containers halt weg, das ist immer so bei container. aber du kannst selbst ein volume hinzufügen. siehe unten du als nutzer kannst volatile daten speichern wohin du willst. die muss das backup (des iobrokers) ja auch nicht berücksichtigen. aber wenn du die datei dann im dateisystem speicherst, was machst du den dann? dann musst du es immer noch transportieren. aber um dir einen docker konformen weg aufzuzeigen: richte einfach ein weiteres volume ein. also bspw /tmp/meineVerzeichnis:/tmp/meinVerzeichnis Dann steht IM iobroker container das Verzeichnis /tmp/meinVerzeichnis zur Verfügung und ist auf dem gleichen Pfad im Host-Dateisystem gemappt. Die Pfade kannst du jeweils anpassen, sollte aber keine existierenden Verzeichnisse im Dateisystem überschreiben.
  • Heizungssteuerung mit "Fenster auf"-Schutz

    14
    0 Votes
    14 Posts
    625 Views
    HomoranH
    @samson71 sagte in Heizungssteuerung mit "Fenster auf"-Schutz: @homoran sagte in Heizungssteuerung mit "Fenster auf"-Schutz: ...und den Schornsteinfeger :grin: Aber nur, wenn Du nicht noch zusätzlich einen Ofen/Kamin hast. Dann kommt der nämlich trotzdem :laughing: Wenn, dann richtig! Ich war sogar schon soweit den Schornstein zurückzubauen, damit er bei tiefstehender Sonne nicht zuviele PV-Module beschattet. Aber die Grundgebühr für Gas fällt auch noch weg.
  • [gelöst] Größte Ventilstellung von HZK eines Raumes

    7
    2
    0 Votes
    7 Posts
    342 Views
    metaxaM
    @paul53 sagte in Größte Ventilstellung von HZK eines Raumes ermitteln: Für dem Maximalwert aus einer Liste gibt es einen Mathe-Block. Das ist um einen Block kürzer und noch eleganter! DANKE! [image: 1759398115357-f794cd52-addd-431a-8d68-126cbf1d806e-image.png] javascript.0 11:42:14.534 info Start JavaScript script.js.common.350-379_Heizung_WW_Klima.363_03_WOZ_HZK_Ventilstellung_gesamt (Blockly) javascript.0 11:42:14.536 info [ 10, 47, 2, 23 ] javascript.0 11:42:14.536 info 47 javascript.0 11:42:14.536 info registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
  • 1 Votes
    11 Posts
    750 Views
    RaspiUserR
    ... ich hänge mich hier mal dran ... Vielleicht kann einer der "Mitleser" mir bei meiner Frage helfen: https://forum.iobroker.net/topic/76626/go-e-adapter-vers-1-0-38-pv-überschuss-laden Z.Zt. mache die Überschussladung (immernoch) "per Hand" .... :face_with_rolling_eyes: :cold_sweat:
  • Zeitplan definieren (Blockly Wizard)

    5
    1
    0 Votes
    5 Posts
    188 Views
    haselchenH
    @homoran Ich hab jetzt beide Varianten mal aktiv geschaltet. Vorgabe ist eigentlich ne Minustemperatur, aber um zu testen nehme ich mal "schnellere" Werte, da es noch nicht so kalt ist :)
  • Mehrere (separate) Timeouts in einer Statemachine

    15
    1
    0 Votes
    15 Posts
    540 Views
    paul53P
    @hajolu069 sagte: schreibe temporären Wert auf lokale Variable und anschließend auf Datenpunkt-Kopie, damit der Trigger wieder ausgelöst wird Vorschlag: [image: 1759071126580-blockly_temp.jpg]
  • Blockly für einen Fensterkontakt mit zwei Werten

    12
    1
    0 Votes
    12 Posts
    484 Views
    paul53P
    @autodidakt sagte: egal ob öffnen oder kippen - erst die rotation prüfen In beiden Logs kommt der Wert für "rotation" erst ca. 15 s nach dem Wert true für "window". Also verwende eine Verzögerung von 20 s, damit nicht erst 15 s lang "offen" gemeldet wird. EDIT: Besser ist es, nur die Reaktion auf den Wechsel von "window" auf true um 20 s zu verzögern: [image: 1758720649400-blockly_temp.jpg]
  • [gelöst] wie mit sendTo History.0 Werte im Voraus übergeben?

    22
    1
    0 Votes
    22 Posts
    1k Views
    HomoranH
    @homoran sagte in wie mit sendTo History.0 Werte im Voraus übergeben?: ich warte mal ab, ob es morgen wieder klappt Tut es! [image: 1758436563726-screenshot_20250921-083436_firefox.jpg] nochmals Danke @paul53
  • Zeit in Millisekunden seit 1970?

    3
    0 Votes
    3 Posts
    183 Views
    hotspot_2H
    @homoran Perfekt! Danke. Nun passt es ;-).
  • Blockly für go-e Charger - viele Fragen

    Moved
    111
    0 Votes
    111 Posts
    7k Views
    B
    @balu67 said in Blockly für go-e Charger - viele Fragen: @paul53 said in Blockly für go-e Charger - viele Fragen: Nein, ich habe kein E-Auto. Welche Einstellungen (Konfiguration / Datenpunkte) sind aktiv? ich hab das so eingestellt, wie beschrieben [image: 1757092893623-daae5e15-4c27-45cb-ae0c-7e3923b2a8ee-image.png] Momentan sieht es so aus [image: 1757092929906-1e8dad69-0085-4898-ac53-78f3645c6d32-image.png] @paul53 said in Blockly für go-e Charger - viele Fragen: 6 kW oder 6 A (1 oder 3 Phasen)? 6KW. Das Fahrzeug lädt ja bis zu 16 A. Zu dem Zeitpunkt hat es mit 12 A geladen / 3phasig und sich zusätzlich 6kw aus dem Netz geholt Ich muss mich korrigieren. Die Einstellung in der Instanz funktionieret sehr gut. Dort wird der Strom mit dem das Auto geladen wird automatisch angepasst, je nachdem wie viel Strom überschüssig ist. Also nicht "nur" laden oder nicht laden, je nach Überschussgrenze, die in einem Skript festgelegt wird, sondern dynamisch.
  • Adapter Fehler ?

    6
    1
    0 Votes
    6 Posts
    256 Views
    skvarelS
    Man sieht es auch schon im Trigger-Block, was dort verlangt wird. [image: 1758200059432-5edf0124-fbde-4455-97e1-c6ae65dcb91b-image.png]
  • JSON aus Victron VRM-API auslesen

    6
    0 Votes
    6 Posts
    265 Views
    paul53P
    @yellowflash sagte: Da ich nicht auf eine Änderung des Objektes warten woltle Endgültig besser so: [image: 1758123757081-blockly_temp.jpg]

541

Online

32.7k

Users

82.4k

Topics

1.3m

Posts