Skip to content

Skripten / Logik

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

16.5k Topics 213.3k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    A
    Neue Version Charge-Control auf GitHub hochgeladen. Version: 1.6.8 Änderungen: Fehler in der Funktion Prognosen_Berechnen() behoben. Hysteresewert für Batterie SOC Schwankungen auf 4% angepasst und neue, frei konfigurierbare Variable am Skriptanfang hinzugefügt.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    D
    Oha. Das war einfach. Danke sehr :-)
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • Blockly: Wiedereinschalten verhindern

    5
    1
    0 Votes
    5 Posts
    368 Views
    1Topf1
    @paul53 Alles klar, danke Dir. Dann warte ich mal auf viele sonnenlose Tage und -20°C. :wink:
  • 2 BWM/5 Lichtquellen/Speer-&Zeit-Datenpunkt

    3
    1
    0 Votes
    3 Posts
    259 Views
    paul53P
    @bacado sagte: Folgendes ist gewünscht: Vorschlag: [image: 1674932317518-blockly_temp.jpg] Spoiler <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="?,h:f}.OAF+=$YSwL[!l">ein</variable> <variable id="fD`y8)BjvBmZkIjCGMx{">hauptlicht</variable> <variable type="timeout" id="timeout">timeout</variable> </variables> <block type="on" id="ym3sQ8a-q/XTHHF1Y88{" x="-312" y="1762"> <field name="OID">0_userdata.0.Zeithilfe.Nachtlicht</field> <field name="CONDITION">false</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="h~hZ3xG^YW`?9c_P[3FF" inline="true"> <mutation name="indirekt"> <arg name="ein"></arg> </mutation> <value name="ARG0"> <block type="logic_boolean" id="f8b`vpNoSSw/Rv[5!v=v"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <next> <block type="on" id="a[0,K7vQk)?uxvvavMSr"> <field name="OID">openknx.0.Obergeschoss.Leuchten_Schalten.BadZentralAus</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="8+$*ao{u4Wj#G!z!oUYk" inline="true"> <mutation name="indirekt"> <arg name="ein"></arg> </mutation> <value name="ARG0"> <block type="logic_boolean" id="-X[uhrtK)o!*)iczOc_l"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> <next> <block type="on_ext" id="5NROZ2ogdfnre9OGiQLj"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="Rm,b,s8RBf*[:)V,D#/z"> <field name="oid">openknx.0.Obergeschoss.Leuchten_Schalten.Badezimmer_Bad_Ein_aus</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="gXG7N:PVaT,1DM6@8[nF"> <field name="oid">openknx.0.Obergeschoss.Leuchten_Schalten.Badezimmer_Dusche_Ein_aus</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="(R3,*r;9o4*9ya%(Ox+{"> <field name="VAR" id="fD`y8)BjvBmZkIjCGMx{">hauptlicht</field> <value name="VALUE"> <block type="logic_operation" id="3Ur#1_WV_~e#|tV3e01l" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="get_value" id="9z%H}x.LDxSu%PuME.~)"> <field name="ATTR">val</field> <field name="OID">openknx.0.Obergeschoss.Leuchten_Status.Badezimmer_Bad_Ein_aus</field> </block> </value> <value name="B"> <block type="get_value" id="3(6c/{Brvkxi5obj0#Ya"> <field name="ATTR">val</field> <field name="OID">openknx.0.Obergeschoss.Leuchten_Status.Badezimmer_Dusche_Ein_aus</field> </block> </value> </block> </value> <next> <block type="procedures_callnoreturn" id="A_)6$~d|I+ag?OnlV?f^" inline="true"> <mutation name="indirekt"> <arg name="ein"></arg> </mutation> <value name="ARG0"> <block type="logic_operation" id="#^G(+x[YF,!iimi3TQ6U"> <field name="OP">AND</field> <value name="A"> <block type="variables_get" id="@/ZI%]2+(M]T~J2,p.?Q"> <field name="VAR" id="fD`y8)BjvBmZkIjCGMx{">hauptlicht</field> </block> </value> <value name="B"> <block type="get_value" id="i)|[#gQ!1D/oblvmfs*a"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zeithilfe.Nachtlicht</field> </block> </value> </block> </value> </block> </next> </block> </statement> <next> <block type="on_ext" id="]tl|pI^Zy14-K9!@Iaok"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="2"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="7),$o:5!ozN1WSxlV#Tw"> <field name="oid">zigbee.0.a4c1388f02e12050.occupancy</field> </shadow> </value> <value name="OID1"> <shadow type="field_oid" id="o^|0q5]U`2?^iqQ@jTIy"> <field name="oid">zigbee.0.00124b002508d3eb.occupancy</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="!5:*;E=DoNK[_bk;@Wai"> <value name="IF0"> <block type="logic_operation" id="u9T@:){.loez-HMVOClJ" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="get_value" id="3_.[tN$7uzx6ItGm:CK{"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Zeithilfe.Nachtlicht</field> </block> </value> <value name="B"> <block type="logic_negate" id="lC_L:cY=0A_x.4bi8`.="> <value name="BOOL"> <block type="variables_get" id="^F^K42WT$Z=[;gLiPY7/"> <field name="VAR" id="fD`y8)BjvBmZkIjCGMx{">hauptlicht</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="k#ljA},8~6yz*F((;wmY"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_operation" id="d8*dsIQob;fuktj47_bF" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="get_value" id=")y]prKI~2rckQq9,R)(."> <field name="ATTR">val</field> <field name="OID">zigbee.0.00124b002508d3eb.occupancy</field> </block> </value> <value name="B"> <block type="get_value" id="Uaf*xd*W.o**nrIyf=Rs"> <field name="ATTR">val</field> <field name="OID">zigbee.0.a4c1388f02e12050.occupancy</field> </block> </value> </block> </value> <statement name="DO0"> <block type="procedures_callnoreturn" id="{mLh[m_L*t9,esucYy)#" inline="true"> <mutation name="indirekt"> <arg name="ein"></arg> </mutation> <value name="ARG0"> <block type="logic_boolean" id="de(/JP/O*Z:v/0_gd`bo"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="timeouts_settimeout" id=".m-G8rv8F(f]?*9LY}$e"> <field name="NAME">timeout</field> <field name="DELAY">70</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="procedures_callnoreturn" id="n;yhcacp`4EUDW!:%r(Z" inline="true"> <mutation name="indirekt"> <arg name="ein"></arg> </mutation> <value name="ARG0"> <block type="logic_boolean" id="S*lz`ILNUW-wv0%ToC8U"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </statement> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defnoreturn" id="NEip`/m*@B5EXT+aE*!^" x="538" y="1763"> <mutation> <arg name="ein" varid="?,h:f}.OAF+=$YSwL[!l"></arg> </mutation> <field name="NAME">indirekt</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="control" id="nF:y6{O~,-7o,LYlP1hu"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">wled.0.40915144e793.seg.0.on</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="]oV,_3($m,h.dze$3ic`"> <field name="VAR" id="?,h:f}.OAF+=$YSwL[!l">ein</field> </block> </value> <next> <block type="control" id="%X{hE3sFXP6l;q`}%/sR"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">zigbee.0.ec1bbdfffe7f5bc5.state</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="ZD!;u*H/wlYx`A!5;Zv~"> <field name="VAR" id="?,h:f}.OAF+=$YSwL[!l">ein</field> </block> </value> <next> <block type="control" id="Wa_UUjmCDr:yop^[OWVI"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">wled.0.58bf25d755ca.seg.0.on</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="^7W?EQ3YI/ol(ZdbPA2)"> <field name="VAR" id="?,h:f}.OAF+=$YSwL[!l">ein</field> </block> </value> <next> <block type="controls_if" id="SAxk7Uc(dE[TZ$@Q2E?q"> <value name="IF0"> <block type="variables_get" id="SVV]sWc}W9QV4UmhX2S4"> <field name="VAR" id="?,h:f}.OAF+=$YSwL[!l">ein</field> </block> </value> <statement name="DO0"> <block type="timeouts_cleartimeout" id="dQvjSEVQ+F1XU`BchX*C"> <field name="NAME">timeout</field> <next> <block type="comment" id="Z%a?UBi^j~KNs2nQOY$*"> <field name="COMMENT">Wled Dusche</field> <next> <block type="control" id="{y;-AaPonj%HO.$CochM"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">wled.0.40915144e793.ps</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id=",Z*@~I*HxVF~u9Xo?PJA"> <field name="NUM">1</field> </block> </value> <next> <block type="control" id="OE6CHy@M|(6-0;{BrG`h"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">wled.0.40915144e793.bri</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="C|x4hmzZbewM5%I#53{3"> <field name="NUM">200</field> </block> </value> <next> <block type="comment" id="pd61e/P=*$qJUQi{?Fjc"> <field name="COMMENT">Badezimmerschrank</field> <next> <block type="control" id="VHOa=9Z2%7kMu:DLrwj$"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">zigbee.0.ec1bbdfffe7f5bc5.colortemp</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="g)[f1U]Y8%5Og,pgSocz"> <field name="NUM">2200</field> </block> </value> <next> <block type="control" id="9j^wMSxRhQ9rrt!VX([r"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">zigbee.0.ec1bbdfffe7f5bc5.brightness</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="ngt!{os6yB(.Qy-cN9cK"> <field name="NUM">30</field> </block> </value> <next> <block type="comment" id="b5N:p5UR`u%`]Ea1}Ajv"> <field name="COMMENT">Badewanne</field> <next> <block type="control" id="]UV+%]3KtV|;O[2a=k0P"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">wled.0.58bf25d755ca.ps</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="!KbL$(26t6EDwEHmtizC"> <field name="NUM">1</field> </block> </value> <next> <block type="control" id="v_?KW6ExjY}U8WF.?+aR"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">wled.0.58bf25d755ca.bri</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="oLT(I;!S./N4Wzl)S^I["> <field name="NUM">200</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
  • [gelöst] Fernsteuern eines RasPis

    blockly javascript
    6
    0 Votes
    6 Posts
    386 Views
    PlasmachefP
    @liv-in-sky wow, klarer Fall von fortgeschrittene Herangehensweise :-) Herzlichen Dank auch dir für den Tipp, da ich aber nicht der Profi auf dem Gebiet bin, werde ich dem Adapter, der schon eingebunden und mit passenden Blocklys versorgt wurde, den Vorzug geben ;-)
  • NSPanel Warnmeldungen

    9
    1
    0 Votes
    9 Posts
    463 Views
    ArmilarA
    @marc-berg ich denke, manchmal sieht man den Wald vor lauter Bäumen nicht... Im TS-Script für das NSPanel gibt es aber auch gar nicht so viel im oberen Bereich zur Konfiguration... Wenn du nicht direkt mit der Programmierung bewandert bist, ist es häufig nicht so leicht - auch wenn die Wiki dahingehend sehr ausführlich ist. :blush:
  • Regex Experte gesucht

    6
    0 Votes
    6 Posts
    454 Views
    F
    @oliverio said in Regex Experte gesucht: const cheerio = require('cheerio'); const axios = require('axios'); const dp_Bad = "0_userdata.0.test1"; const dp_Sauna = "0_userdata.0.test2"; async function getData() { const response = await axios.get('https://aqualaatzium.de/'); const $ = cheerio.load(response.data); let bad = $($(".ampel-sauna div")[1]).text(); let sauna = $($(".ampel-schwimmbad div")[1]).text(); log(bad); log(sauna); setState(dp_Bad,bad); setState(dp_Sauna,sauna); } getData(); Hab ganz herzlichen Dank, läuft perfekt! Den Rest bekomme ich auch alleine hin, es scheiterte an den Web Abfrage. :heart_eyes:
  • Blockly und Funktionen

    Moved
    19
    0 Votes
    19 Posts
    5k Views
    A
    Ich habe eine andere, wie ich glaube, elegante Lösung gefunden, die ohne Pogrammierung in JavaScript auskommt. Ich habe mir fürs Senden nach Signal ein normales Blockly Script (_SendToSignal) geschrieben, was einfach ein paar extra dafür eingerichtete Datenpunkte (0_userdata.0.SendToSignal.SendStat, 0_userdata.0.SendToSignal.Text) überwacht. Wenn irgendein beliebiges Script, auch Blockly, den Datenpunkt SendStat auf true setzt, sendet das Script den String in Text an Signal und setzt SendStat auf false. Das wars. Total einfach im Handling. Sowas kann man mit beliebigen Funktionen erledigen, die in mehreren Scripn gleich sind. Das baue ich mir jetzt noch für die Thermostateinstellung und gut ist.
  • Schleife über Datenpunkte (JSON) inkl. DP ERstellung

    10
    0 Votes
    10 Posts
    568 Views
    nukleuzN
    @codierknecht Ich habe es für meine Zwecke hinbekommen. Danke für die Hilfestellung... Hier das Skript, falls jemand vor dem gleichen oder ähnlichem Problem steht: var json, name2; const idDP = '0_userdata.0.Klima.Test.'; on({id: [].concat(Array.prototype.slice.apply($("state[id=*](functions=thermo)"))), change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; json = (obj.state ? obj.state.val : ""); name2 = [idDP,getAttr(json, 'name'),'.temperatur'].join(''); name2 = name2.replace("(", ""); name2 = name2.replace(")", ""); name2 = name2.replace(/\s/g, '-'); console.log(name2); createState(name2, 0, {name: 'Temperatur', type: 'number', role: 'sensor.humidity', unit: '°C'}); setStateDelayed(name2, getAttr(json, 'tempc'), true, parseInt(((3000) || "").toString(), 10), false); name2 = [idDP,getAttr(json, 'name'),'.humidity'].join(''); name2 = name2.replace("(", ""); name2 = name2.replace(")", ""); name2 = name2.replace(/\s/g, '-'); console.log(name2); createState(name2, 0, {name: 'Luftfeuchtigkeit', type: 'number', role: 'sensor.temperature', unit: '%'}); setStateDelayed(name2, getAttr(json, 'hum'), true, parseInt(((3000) || "").toString(), 10), false); name2 = [idDP,getAttr(json, 'name'),'.rssi'].join(''); name2 = name2.replace("(", ""); name2 = name2.replace(")", ""); name2 = name2.replace(/\s/g, '-'); console.log(name2); createState(name2, 0, {name: 'Empfangsstärke', type: 'number', role: 'value.rssi', unit: 'dBm'}); setStateDelayed(name2, getAttr(json, 'hum'), true, parseInt(((3000) || "").toString(), 10), false); });
  • Esp32 cam Gaszähler

    5
    0 Votes
    5 Posts
    487 Views
    Thomas BraunT
    @dennis-80 Da ist auch lange nichts mehr passiert: sourceanalytix: github: 0.4.14 latest: 0.4.14 for 11 months stable: -.-.-
  • [geloest] Shelly schaltet plötzlich um 10:10 Uhr..!?!

    blockly javascript
    4
    2
    0 Votes
    4 Posts
    543 Views
    oberfraggerO
    @htrecksler Es scheint erfolgreich gewesen zu sein. Danke!
  • 0 Votes
    2 Posts
    359 Views
    arteckA
    @flyor87 das wirst du mit Blockly nicht lösen können. such nach axios
  • Objekte von Typ number in Binding auf Gleichheit in prüfen

    7
    0 Votes
    7 Posts
    396 Views
    F
    @codierknecht Kommando zurück. Mir ist eingefallen, dass ich schonmal ein Problem hatte dasbolded text nach Neustart sich aufgelöst hatte. Ich habe eben Raspi neu gestartet und browser cashe gelöscht. Es sieht so aus das jetzt alles klar ist. Prüfe nochmal und melde mich neu wenn doch nicht. Danke für Deine schnelle Hilfe H
  • Verschiedene Bilder bei unterschiedl. Ladezuständen

    6
    2
    0 Votes
    6 Posts
    308 Views
    paul53P
    @shigi76 sagte: nicht die entsprechenden Werte, sondern nur "true". Du hast es so programmiert mit Konvertierung "nach Logikwert". Außerdem haben eigene Datenpunkte nichts unter "scriptEnabled" zu suchen! Prinzip: [image: 1674394211244-bild_2023-01-22_143009472.png] EDIT: Erstelle einen eigenen Datenpunkt, z.B. "0_userdata.0.PV.Batteriestatus" vom Typ Zahl.
  • [gelöst] Optimale Neigung Solarmodule errechnen

    3
    3
    0 Votes
    3 Posts
    466 Views
    C
    @paul53 oh je, was ein blöder Fehler. Copy paste ist was für fortgeschrittene. Danke Paul! Funktioniert jetzt beides einwandfrei mit plausiblen Ergebnissen.
  • Einzelnen Host in einer Multihostumgebung neu starten

    19
    0 Votes
    19 Posts
    400 Views
    M
    @djmarc75 said in Einzelnen Host in einer Multihostumgebung neu starten: @mafeh69 sagte in Einzelnen Host in einer Multihostumgebung neu starten: einen Vorschlag? Ich nutze für sowas den Adapter "linux-control". Steuere und überwache damit meine mittlerweile 5 Raspberrys. Einfach mal testen. Habe es getestet und es tut genau was ich gesucht habe. Perfekt. Danke!:+1:
  • Gelöst: Status "Connection" der Zigbee Instanzen ermitteln

    javascript
    14
    1
    0 Votes
    14 Posts
    685 Views
    CodierknechtC
    @michihorn sagte in Gelöst: Status "Connection" der Zigbee Instanzen ermitteln: Der Punkt ist folgendes: Hier suchen Leute nach Lösungen. Dabei aber bitte ebenfalls berücksichtigen: Die Leute, die hier helfen, bieten in der Regel "Hilfe zur Selbsthilfe". Ziel ist also nicht unbedingt, ein passendes Script für das aktuelle Problem zu liefern, sondern das Problem zu erklären und zu helfen, das zu verstehen um in der Zukunft allein weiterzukommen.
  • Flurbeleuchtung Blockly Langer Tastendruck

    5
    2
    0 Votes
    5 Posts
    430 Views
    Mono990M
    @paul53 soweit funktioniert es jetzt das das Licht an bleibt aber wie bekomme ich sie wieder in bewegungsmelder funktion? [image: 1674256400443-unbenannt3.jpg]
  • Blockly nur schalten von Abenddämmerung bis Morgendämmerung

    4
    1
    0 Votes
    4 Posts
    346 Views
    paul53P
    @pi_noob15 Dir ist bewusst, dass "zwischen Abend- und Morgendämmerung" Sonnenelevation < -6° bedeutet? Die Ortskoordinaten sind in der Javascript-Instanz richtig eingestellt? In Berlin hat heute die bürgerliche Abenddämmerung (-6°) um 17:10 Uhr geendet.
  • Gelöst: Bluetooth Geräte zählen

    javascript
    19
    0 Votes
    19 Posts
    373 Views
    M
    @paul53 sagte in Gelöst: Bluetooth Geräte zählen: const ids = $('tr-064.0.devices.*.active'); Paul...Du bist der Beste. Danke für Deine Unterstützung
  • Echo device als default ausgabe Gerät

    12
    0 Votes
    12 Posts
    663 Views
    DJMarc75D
    @spitfire4all sagte in Echo device als default ausgabe Gerät: was der Vorteil zu steureBlock ist. im steuereBlock kannst Du ja nur einen fixen, von Dir gewählten Datenpunkt auswählen. Im schreibeBlock kann man den Datenpunkt flexibel auswählen. dieser schreibeBlock erspart quasi folgendes: [image: 1674139425397-screenshot-2023-01-19-154334.png]
  • Sourceanalytics berechnet keine Preise

    8
    1
    0 Votes
    8 Posts
    501 Views
    B
    @mickym oh man, wegen so einem doofen Mist. Jetzt zeigt er mir auch die preise an zwar falsch irgendwas stimmt bei den Einheiten nicht aber sonst läuft vielen danke dafür

322

Online

32.6k

Users

82.2k

Topics

1.3m

Posts