Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.6k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 50k
    3k Themen
    50k Beiträge
    maxclaudiM
    Erweitertes Energie-Logging für Zendure-Geräte Ich arbeite aktuell an einem Script, das zusätzliche Datenpunkte für Energieauswertungen (kWh) erzeugt: [image: 1784641392579-iobroker_dp_kwh.png] Zusätzlich können zwei CSV-Dateien erzeugt werden. 1. Tagesenergie-Datei Beispiel: zendure_energy_2026.csv Diese Datei enthält Tageswerte über ein Kalenderjahr: Datum;pvInput_kWh;gridChargeInput_kWh;gridhomeOutput_kWh;gridOffSocketPower_kWh Vor Scriptstart kann einmalig festgelegt werden, ob pvInput_kWh integriert werden soll. Diese Option ist für Zendure-Geräte ohne DC-PV-Module-Eingänge gedacht, da dieser Wert dort immer 0 wäre. Bedeutung der Werte: pvInput_kWh Vom Zendure-System gemeldete PV-Energie der angeschlossenen DC-PV-Modul-Eingänge. gridChargeInput_kWh Energie, die das Zendure-Gerät per 230V AC aus dem Hausnetz aufgenommen hat (AC-Laden). gridhomeOutput_kWh Energie, die das Zendure-Gerät in das 230V AC Hausnetz abgegeben hat. gridOffSocketPower_kWh Energiefluss über die gridOff-Steckdose: positive Werte: Energiefluss von der Steckdose in das Zendure-Gerät (z.B. Microinverter) negative Werte: Energiefluss vom Zendure-Gerät zur Steckdose (z.B. Verbraucher) Die Datei enthält integrierte Tagesenergien in kWh und eignet sich für Statistiken, Diagramme und Langzeitauswertungen. Die Jahresdatei wird automatisch anhand des aktuellen Kalenderjahres erzeugt. Beim Jahreswechsel wird automatisch eine neue Jahresdatei begonnen. 2. Live-Leistungsdatei Beispiel: zendure_liveEnergy.csv Die Aufzeichnung erfolgt in einem einstellbaren Intervall (z.B. jede Minute). Enthalten sind aktuelle Leistungswerte: Zeit;pvInput_W;gridChargeInput_W;gridhomeOutput_W;gridOffSocketPower_W Die Werte werden nicht integriert oder aufsummiert. Jede Zeile stellt eine Momentaufnahme der aktuellen Leistung in Watt dar. Bedeutung: pvInput_W Aktuelle PV-Eingangsleistung der PV-Module an den DC-PV-Eingängen. gridChargeInput_W Aktuelle 230V AC-Lade-Leistung aus dem Hausnetz zum Zendure-Gerät. gridhomeOutput_W Aktuelle AC-Leistung vom Zendure-Gerät ins 230V AC Hausnetz. gridOffSocketPower_W Aktuelle Leistungsrichtung der gridOff-Steckdose: positive Werte: Leistung von der Steckdose in das Zendure-Gerät negative Werte: Leistung vom Zendure-Gerät zur Steckdose Die Datei eignet sich für Leistungsdiagramme (W) und Dashboards. Archivierung Live-Datei: Beim Tageswechsel bzw. beim nächsten Schreibvorgang nach einem Tageswechsel wird: zendure_liveEnergy.csv automatisch archiviert als z.B.: zendure_liveEnergy_2026-07-20.csv Danach wird wieder die aktuelle Datei: zendure_liveEnergy.csv weitergeführt. Es werden maximal 30 Tagesarchive behalten. Ältere Dateien werden automatisch gelöscht. Zusätzlich kann im Script eingestellt werden, ob CSV-Dateien erzeugt werden sollen oder nur die ioBroker-Datenpunkte. Die Berechnung basiert ausschließlich auf den von Zendure gelieferten Leistungswerten. Es werden keine geschätzten Wirkungsgrade oder pauschalen Umrechnungen (z.B. Faktor 0,96 wie teilweise bei anderen Scripts verwendet) eingesetzt. Die gridOffSocketPower-Werte beschreiben ausschließlich den Energiefluss über die gridOff-Steckdose und stellen keine separate Netzeinspeisungsmessung dar. Die Energiezähler werden über die von Zendure gelieferten Zeitstempel und Leistungswerte fortgeführt. Bei Neustarts oder Unterbrechungen werden keine fehlenden Werte geschätzt oder nachberechnet. Das Script arbeitet unabhängig von der Gerätesteuerung und greift ausschließlich lesend auf vorhandene Zendure-Datenpunkte zu. Es verändert keine Geräteeinstellungen und kann daher parallel zu bestehenden Steuerungsscripten betrieben werden. Mehr fällt mir dazu im Moment nicht ein; genug getippt :-) Besteht Interesse an dieser Erweiterung bzw. an dem Script? Über eine Rückmeldung, wer welches meiner Blockly-Scripte verwendet und ob diese problemlos laufen, würde ich mich ebenfalls freuen ;-)
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    A
    @paul53 sagte: @andreas7712 [sagte]: als Taster funktioniert Also nur kurz einschaltet? Super so funktioniert es!!!! Vielen Dank!!!!!!
  • Hilfe für Skripterstellung mit Node-RED

    961 13k
    961 Themen
    13k Beiträge
    Marc BergM
    Man kann einen Flow von außen neu starten, indem man ihn per API deaktiviert und wieder aktiviert. Nicht sehr elegant, aber geht. Hier ein Flow dazu, das könnte man auch im Skript abbilden (hostname und Flow-ID im Inject Node anpassen: [ { "id": "0101b52dd8b0e69c", "type": "inject", "z": "tab_restart", "name": "Flow neu starten", "props": [ { "p": "baseUrl", "v": "http://nuc.fritz.box:1880", "vt": "str" }, { "p": "flowId", "v": "56a35d28dbb8d4c1", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": "", "topic": "", "x": 160, "y": 140, "wires": [ [ "ffb73632947a1b74" ] ] }, { "id": "ffb73632947a1b74", "type": "http request", "z": "tab_restart", "name": "GET /flow/:id", "method": "GET", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 370, "y": 140, "wires": [ [ "78e47724692d9c26" ] ] }, { "id": "78e47724692d9c26", "type": "change", "z": "tab_restart", "name": "deaktivieren", "rules": [ { "t": "set", "p": "flow", "pt": "msg", "to": "payload", "tot": "msg" }, { "t": "set", "p": "flow.disabled", "pt": "msg", "to": "true", "tot": "bool" }, { "t": "set", "p": "payload", "pt": "msg", "to": "flow", "tot": "msg" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.content-type", "pt": "msg", "to": "application/json", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 570, "y": 140, "wires": [ [ "b570b346c80301a6" ] ] }, { "id": "b570b346c80301a6", "type": "http request", "z": "tab_restart", "name": "PUT (aus)", "method": "PUT", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 770, "y": 140, "wires": [ [ "a062c2baa0932d3e" ] ] }, { "id": "a062c2baa0932d3e", "type": "delay", "z": "tab_restart", "name": "1s warten", "pauseType": "delay", "timeout": "1", "timeoutUnits": "seconds", "rate": "1", "nbRateUnits": "1", "rateUnits": "second", "randomFirst": "1", "randomLast": "5", "randomUnits": "seconds", "drop": false, "outputs": 1, "x": 960, "y": 140, "wires": [ [ "664a32887d83b305" ] ] }, { "id": "664a32887d83b305", "type": "change", "z": "tab_restart", "name": "aktivieren", "rules": [ { "t": "set", "p": "flow.disabled", "pt": "msg", "to": "false", "tot": "bool" }, { "t": "set", "p": "payload", "pt": "msg", "to": "flow", "tot": "msg" }, { "t": "set", "p": "headers", "pt": "msg", "to": "{}", "tot": "json" }, { "t": "set", "p": "headers.content-type", "pt": "msg", "to": "application/json", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 140, "y": 220, "wires": [ [ "83d399c90d46240f" ] ] }, { "id": "83d399c90d46240f", "type": "http request", "z": "tab_restart", "name": "PUT (ein)", "method": "PUT", "ret": "obj", "paytoqs": "ignore", "url": "{{{baseUrl}}}/flow/{{flowId}}", "tls": "", "persist": false, "proxy": "", "insecureHTTPParser": false, "authType": "", "senderr": false, "headers": [], "x": 320, "y": 220, "wires": [ [ "529c0e1896d1f278" ] ] }, { "id": "529c0e1896d1f278", "type": "debug", "z": "tab_restart", "name": "Ergebnis", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 480, "y": 220, "wires": [] } ]
  • Wärmepumpensteuerung für dynamischen Stromtarif

    17
    1
    0 Stimmen
    17 Beiträge
    2k Aufrufe
    S
    Für alle die es interessiert - das komplette Blockly Script. <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</variable> <variable id="$.ijy$M(?#p3+mCj!46[">ListSortedShort</variable> <variable id="NML2~Nw#WB6?jY9.a5ZI">MaxPrice</variable> <variable id="5%QL||{X_O:R=,]c,P~n">MinPrice</variable> <variable id="QU`)rxXu.-mP[4mf%Lne">i</variable> <variable id="eq6mJJ6^ou{5c0Hq5bV/">CurrentPrice</variable> <variable id="Cfxj8bn=[48.:vebkZGA">OffPeak</variable> </variables> <block type="comment" id="dBYlFB]~K.NQy%yR#;7r" x="-238" y="-12"> <field name="COMMENT">Steuere Netzvorgabe abhängig vom Strompreis</field> <next> <block type="control" id="^%irA!jkRYL=3@r^jJWd"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Strom.Netzvorgabe</field> <field name="WITH_DELAY">FALSE</field> <comment pinned="false" h="148" w="351">Netzvorgabe: 0... Standard (keine Regelung, kein WW) 1... Standard WW (keine Regelung, WW ein) 2... Erhöhung normal (WW aus) 3... Erhöhung normal (WW ein) 4... Erhöhung Max (mit WW Erhöhung) 5... Reduzierung (ohne WW) – SG 1 </comment> <value name="VALUE"> <block type="math_number" id="g#QsPEKJp639[2E,*2r/"> <field name="NUM">0</field> </block> </value> <next> <block type="schedule" id="f/td+AGC-sB8.9/%9Z@r"> <field name="SCHEDULE">10 0 * * * *</field> <statement name="STATEMENT"> <block type="comment" id="KMkVdSs5{L|2w4m3D.y*"> <field name="COMMENT">Prüfe Stündlich</field> <next> <block type="variables_set" id=".qdwHP3l$+R_csuP=8D9"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> <value name="VALUE"> <block type="time_get" id="0UzJkl$/?2nBW.5_oQ7R"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">h</field> </block> </value> <next> <block type="variables_set" id="KPX.Kh:(QgQ)}O?$LLR*"> <field name="VAR" id="$.ijy$M(?#p3+mCj!46[">ListSortedShort</field> <value name="VALUE"> <block type="convert_json2object" id="u$m;OUg.)l=~5z.$}-LD"> <value name="VALUE"> <block type="logic_ternary" id="/W3N:Cmqk=5S3T2kg|1d"> <value name="IF"> <block type="logic_compare" id="ChMPe({%BrA);vHX0^(H"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="-[5HR;W6WJcFY=+(U0`j"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> <value name="B"> <block type="math_number" id="nJp$4$U93M%12Lv.`y2,"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="THEN"> <block type="get_value" id="~tjI7NxKK/oWcfuV@H)}"> <field name="ATTR">val</field> <field name="OID">apg-info.0.marketprice.today_sorted.short</field> </block> </value> <value name="ELSE"> <block type="get_value" id="F425uXhv7eK0(FKc;=_c"> <field name="ATTR">val</field> <field name="OID">apg-info.0.marketprice.tomorrow_sorted.short</field> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="XnqO1%a^o%/jwFzxcl2J"> <field name="VAR" id="NML2~Nw#WB6?jY9.a5ZI">MaxPrice</field> <value name="VALUE"> <block type="get_attr" id="J5P~GZZeT1B_?)(l|ebo"> <value name="PATH"> <shadow type="text" id="N(:R6{lE%AB@qn_67T3F"> <field name="TEXT">1</field> </shadow> </value> <value name="OBJECT"> <block type="logic_ternary" id="qFn(|;VsIC).gE5rILY]"> <value name="IF"> <block type="logic_compare" id="]X[FT_Q16/KZ`wfc#}D("> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="1C0$b}c.U[gX]SG~O^n@"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> <value name="B"> <block type="math_number" id=")F)@uli^s4o$wL#i;.k."> <field name="NUM">0</field> </block> </value> </block> </value> <value name="THEN"> <block type="get_value_var" id="b,-i-!8{l/Bqk/u}J`wh"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="RL6}jSYsi!w6P[*rqlli"> <field name="oid">Object ID</field> </shadow> <block type="text" id=":+Wj[)X=7==Odf]~ngi8"> <field name="TEXT">apg-info.0.marketprice.today_sorted.23</field> </block> </value> </block> </value> <value name="ELSE"> <block type="get_value_var" id=")$UsS:b*m}sS@OB,@~OE"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="RL6}jSYsi!w6P[*rqlli"> <field name="oid">Object ID</field> </shadow> <block type="text" id="+dj#Sw^V+v|=,5](t,8L"> <field name="TEXT">apg-info.0.marketprice.tomorrow_sorted.23</field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="{HRrNn-=,Wudll]dN|qS"> <field name="VAR" id="5%QL||{X_O:R=,]c,P~n">MinPrice</field> <value name="VALUE"> <block type="get_attr" id="7@r$?~kB_++u;PVT-fG`"> <value name="PATH"> <shadow type="text" id="Lx`LE@*rSt{vhNsK{%`S"> <field name="TEXT">1</field> </shadow> </value> <value name="OBJECT"> <block type="logic_ternary" id="A.1kHN5gx9,X.EunEf~^"> <value name="IF"> <block type="logic_compare" id="8es2dQCYWFCHgVWn2z+h"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="yocha@3SFDqFN8WM;_Vl"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> <value name="B"> <block type="math_number" id="zpz=dT=_TYI?WO,ZRZ_E"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="THEN"> <block type="get_value_var" id="%2PzT|)zkl`.tN}JMkRx"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="RL6}jSYsi!w6P[*rqlli"> <field name="oid">Object ID</field> </shadow> <block type="text" id="aCu`{gCP@gHP]F`)O7Rp"> <field name="TEXT">apg-info.0.marketprice.today_sorted.0</field> </block> </value> </block> </value> <value name="ELSE"> <block type="get_value_var" id="uPzhBVzB|ElY/Pcg(meM"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="RL6}jSYsi!w6P[*rqlli"> <field name="oid">Object ID</field> </shadow> <block type="text" id="_|tAIlcUKt4,![r~e_3_"> <field name="TEXT">apg-info.0.marketprice.tomorrow_sorted.0</field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="T_H(6r)j*Hqd9-kQ`;Xx"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="WY)c7J0ob24[PfgcF/u8"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="?$Qr]db;ya]UuljL}=~x"> <field name="TEXT">APG: Liste sortiert: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id=":}C2aN5*sqQQjHFpT!Nt"> <field name="VAR" id="$.ijy$M(?#p3+mCj!46[">ListSortedShort</field> </block> </value> </block> </value> <next> <block type="debug" id="09C_!}=tM*iEJkvG6tmR"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="Lqs90-bo4=,1hLa$)YjC"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="{n}$}a_p{uWY4d#uwmN}"> <field name="TEXT">APG: Liste sortiert tomorrow: </field> </block> </value> <value name="ADD1"> <block type="get_value" id="|!n)o6J8P=s1$Kc$x8b5"> <field name="ATTR">val</field> <field name="OID">apg-info.0.marketprice.tomorrow_sorted.short</field> </block> </value> </block> </value> <next> <block type="debug" id="?^_z:z)QY)%G:7sba@T."> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="7;uQ,c)p[1UB0_t#Gi3E"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="[Q[g^z4-X5DT1}){mWT~"> <field name="TEXT">APG: maximaler Tagespreis: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="el3h,C3A;f!vw9=D.wwU"> <field name="VAR" id="NML2~Nw#WB6?jY9.a5ZI">MaxPrice</field> </block> </value> </block> </value> <next> <block type="debug" id="ZU+#KE2mn,!}R=-~}Z@F"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="rE%q39_LLI`Jy^lt,o3k"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="eAM.*bNH8Bu.k!qg~ieq"> <field name="TEXT">APG: minimaler Tagespreis: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="|1C@hq@I)3x~c]$rd}XX"> <field name="VAR" id="5%QL||{X_O:R=,]c,P~n">MinPrice</field> </block> </value> </block> </value> <next> <block type="comment" id="Cxd_W!5l^hn|Z*t],$!^"> <field name="COMMENT">Prüfe die sortierte Liste</field> <next> <block type="controls_for" id="CaCv!}@Yh4=lG!(|#957"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> <value name="FROM"> <shadow type="math_number" id="%GY{o2mw_oIIf)@N=*Cy"> <field name="NUM">1</field> </shadow> </value> <value name="TO"> <shadow type="math_number" id="kjlyj*@V$$SImzN,ZmeJ"> <field name="NUM">24</field> </shadow> </value> <value name="BY"> <shadow type="math_number" id="{U]p:zc6a:/EcmA_,zH}"> <field name="NUM">1</field> </shadow> </value> <statement name="DO"> <block type="comment" id="n_os8%Xd-](JeTeMs16q"> <field name="COMMENT">Suche den Index der aktuellen Stunde</field> <next> <block type="controls_if" id="5h8?oJRj@w#~p}!FsvVY"> <value name="IF0"> <block type="logic_compare" id="*X$pAQ`0x4mVzc0)XL|_"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id=",Dj#p)4IC`+x1|$Z#!Bt"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> <value name="B"> <block type="lists_getIndex" id="FpU#ulRh+x_Uur5{4U/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="3sD|DbwVYWFYB((EgpR-"> <field name="VAR" id="$.ijy$M(?#p3+mCj!46[">ListSortedShort</field> </block> </value> <value name="AT"> <block type="variables_get" id="pfXP-SNG`xD4Fvzpa1F_"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_flow_statements" id="=MVzaBxri=(DD71[y:pu"> <field name="FLOW">BREAK</field> </block> </statement> </block> </next> </block> </statement> <next> <block type="debug" id="5e|5NZj(WSrid{s=]GAL"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="Rx_U64Q8F|UOeuA4y,]l"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="`X_FuSR32WSRAL8qaMBW"> <field name="TEXT">APG: Element: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="M1%LRyy2:,Z7TIVMYIp1"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> </block> </value> <next> <block type="comment" id="cq;:w/t}BzUbDy).%9vk"> <field name="COMMENT">Lese aktuellen Preis aus</field> <next> <block type="variables_set" id="!#:DeBWCxB~$8v|)#{6i"> <field name="VAR" id="eq6mJJ6^ou{5c0Hq5bV/">CurrentPrice</field> <value name="VALUE"> <block type="get_attr" id="~%.{n3#1NFWCXGk*!y3`"> <value name="PATH"> <shadow type="text" id="tnNVdFzywOZVm1fOYZJy"> <field name="TEXT">1</field> </shadow> </value> <value name="OBJECT"> <block type="logic_ternary" id="ZChyz6;jB|9syFY2`u?7"> <value name="IF"> <block type="logic_compare" id="wjqM:BaoERJ8uvrHt|ie"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="A)?a%m92rha0?ha4`J(Q"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> <value name="B"> <block type="math_number" id="~|4FlBKu}`0sb#BVh{J1"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="THEN"> <block type="get_value_var" id="L9z~6kTF.@F3g9(wy)jE"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="RL6}jSYsi!w6P[*rqlli"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="dn{2Q]wh7vtG30V0C.lc"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id=".9w.Cv)U;Y40nlL%.b{W"> <field name="TEXT">apg-info.0.marketprice.today_sorted.</field> </block> </value> <value name="ADD1"> <block type="math_arithmetic" id="fLX]i;U|?QJ*|soD41_n"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="ctcnyn$E~wzgOz,Q{3;f"> <field name="NUM">5</field> </shadow> <block type="variables_get" id="Ia*5USTyB%=O];VRg9N4"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> <value name="B"> <shadow type="math_number" id="*r#:g3%)qw-[)N8jL1_q"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> </block> </value> <value name="ELSE"> <block type="get_value_var" id="})Oa67^YdUyb|66:dG.]"> <field name="ATTR">val</field> <value name="OID"> <shadow type="field_oid" id="RL6}jSYsi!w6P[*rqlli"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id=".ukJa]Bpk]x873/hMkVD"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="XL32Q)z5JuK$q[$k6LPg"> <field name="TEXT">apg-info.0.marketprice.tomorrow_sorted.</field> </block> </value> <value name="ADD1"> <block type="math_arithmetic" id="Z^;f7+RTmYWA(g9M}QK,"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="ctcnyn$E~wzgOz,Q{3;f"> <field name="NUM">5</field> </shadow> <block type="variables_get" id="_O_c.}Kf,0mO6mU+.{Li"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> <value name="B"> <shadow type="math_number" id="5]5^rrqz`4mnbe.0J+J{"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="debug" id="lQ]iDNf`,Dy;+j-CvV%~"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="EjD9`6@t|_/9jH^f$dM^"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="mxTxi|d0?Zsuw4ltc@VP"> <field name="TEXT">APG: aktueller Preis: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="We86c[+:d8*SXF9%L%zr"> <field name="VAR" id="eq6mJJ6^ou{5c0Hq5bV/">CurrentPrice</field> </block> </value> </block> </value> <next> <block type="controls_if" id="*}%7cx0UNSeZ@I-kJ{$|"> <mutation elseif="3" else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="+(=W/Xm!MP44iUux_?F1"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="s5z_i%m206fw$%BA{9RW"> <field name="VAR" id="eq6mJJ6^ou{5c0Hq5bV/">CurrentPrice</field> </block> </value> <value name="B"> <block type="math_number" id="j%LU^w9L.SQF.ac5giy:"> <field name="NUM">1</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="uL_Vo2ldA~DHzDaFC0x1"> <field name="COMMENT">Strompreis SUPERbillig = alles Einschalten</field> <next> <block type="debug" id="X@d{UA~pd7I#dJ6:ApBm"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="r^HlY4;c*GND{X/?Xg@A"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="k?}#Hyp$JO:aCuSmsQ^b"> <field name="TEXT">APG: Current Preis: NEGATIV Verbraucher Einschalten!!! - Uhrzeit: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="L87CZ2wYgX{ntpJ(E.EZ"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> </block> </value> <next> <block type="control" id="YvMSHk:dd.ldSo%g[q/e"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Strom.Netzvorgabe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="|HN*O;Wlwps;?RR}00Cf"> <field name="NUM">4</field> </block> </value> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="{.`Y0r`$MU.%#yk_;%*V"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="D^XKCRAoj3yu.SV[Q33m"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> <value name="B"> <block type="math_number" id="8^zkcrD,(?:Uq|EW(t]w"> <field name="NUM">3</field> </block> </value> </block> </value> <statement name="DO1"> <block type="comment" id="s2=z9}Dlh{uo`K:3ijkE"> <field name="COMMENT">günstigste 3 Stunden - Warmwasserbetrieb</field> <next> <block type="debug" id="W9g!D?BBo`o}gqpok$p."> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="U[Dl{FJR(UE;G4+pg1Cr"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="kWfa[#PIM+F:SX*R~Z1T"> <field name="TEXT">APG: OffPeak + Warmwasser - Uhrzeit: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="EEr{Q_|HRhs,,[rua[61"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> </block> </value> <next> <block type="control" id="iw+fJDGq^6HF~~V#p9eB"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Strom.Netzvorgabe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="`K8[XX68+xI1IY*5W5NG"> <field name="NUM">3</field> </block> </value> </block> </next> </block> </next> </block> </statement> <value name="IF2"> <block type="logic_compare" id=";u)urOxy`G|a%71./H?b"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="dslF:@MMzoEerk_{Z:6r"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> <value name="B"> <block type="math_number" id=":6{F+wxbT^l7VIdjh:%Y"> <field name="NUM">8</field> </block> </value> </block> </value> <statement name="DO2"> <block type="comment" id=",N6GO4998exNnULxj9oH"> <field name="COMMENT">Strompreis Offpeak - 8 günstigste Stunden</field> <next> <block type="variables_set" id="ZJ@ae%p?2s~@}TK@_:4Z"> <field name="VAR" id="Cfxj8bn=[48.:vebkZGA">OffPeak</field> <value name="VALUE"> <block type="logic_boolean" id="5K,{ow;3Qs2US1OC0_}U"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id="Fom^Upc)*?GWvGp;2pWs"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="3U_OJuL1uT7NMs+LU]:_"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id=")g!JG@8AfO/~%RuLDb$T"> <field name="TEXT">APG: OffPeak - Uhrzeit: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="u7lkPgj.mUD2hOztT2~="> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> </block> </value> <next> <block type="control" id="G7lF%({PdeYU8$HjLzoo"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Strom.Netzvorgabe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="dn`[{$GbhQHAx7]=4@UY"> <field name="NUM">2</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF3"> <block type="logic_compare" id="3^=dy$0t.-O_EPFwn1un"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="xJQ=Si+rJr)rio(dOgbs"> <field name="VAR" id="QU`)rxXu.-mP[4mf%Lne">i</field> </block> </value> <value name="B"> <block type="math_number" id="BO1^8aC-WM#sytRBa/k?"> <field name="NUM">18</field> </block> </value> </block> </value> <statement name="DO3"> <block type="comment" id="{pM;c6;:u0$DqE3czx8P"> <field name="COMMENT">Strompreis Shoulder - mittlere 10h</field> <next> <block type="debug" id="(ZQ5fz3o7T1ME*6sgG-t"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="!tKg`M1j|~|#T6F~P=fu"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="H8[FVoox54B/%V)B{/l:"> <field name="TEXT">APG: Shoulder - Uhrzeit: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="$r[W_5d$,0zEF+u7ewxQ"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> </block> </value> <next> <block type="control" id="(k$[CoSX`+29v}e`N/#a"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Strom.Netzvorgabe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="A+K+b1^zu0`6R8pYlHf7"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </next> </block> </statement> <statement name="ELSE"> <block type="comment" id="(C$,MswQG:kE$%n(^8zK"> <field name="COMMENT">Strompreis Preak: 6 teuerste Stunden</field> <next> <block type="debug" id="eGG2-P2i-%#MEKKCgmFO"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="qQcHfIv)`(=lF:A[Z7xw"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="??Ac8{3E6/=5?]@:~JQb"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="gAF6by,3skcS`)eQ0~v#"> <field name="TEXT">APG: Peak - Uhrzeit: </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="3HauEmu{9=1nKlrcrkW8"> <field name="VAR" id="xZ{$U%-tb..I1!P$fQ$h">CurrentHour</field> </block> </value> </block> </value> <next> <block type="control" id="YE]m{-axuxa+iL7-viKW"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Strom.Netzvorgabe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="}FLKUT*+H=^axWqJr7C="> <field name="NUM">5</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </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> </xml>
  • Umfassendes Alarmanlagen-Skript

    javascript security
    145
    13 Stimmen
    145 Beiträge
    49k Aufrufe
    LongbowL
    also ich mich mal wieder mit dem Script beschäfftigt. jetzt bekomme ich eine Fehlermeldung ständig, die ich nicht verstehe. javascript.0 19:26:01.501 warn at checkDetectors (script.js.Alarmanlage.Alarmanlage:783:5) javascript.0 19:26:01.501 warn at script.js.Alarmanlage.Alarmanlage:196:1 javascript.0 19:26:01.501 warn at script.js.Alarmanlage.Alarmanlage:839:3 javascript.0 19:26:01.502 warn at checkDetectors (script.js.Alarmanlage.Alarmanlage:784:5) javascript.0 19:26:01.502 warn at script.js.Alarmanlage.Alarmanlage:196:1 javascript.0 19:26:01.502 warn at script.js.Alarmanlage.Alarmanlage:839:3 javascript.0 19:26:01.503 warn at checkDetectors (script.js.Alarmanlage.Alarmanlage:785:5) javascript.0 19:26:01.503 warn at script.js.Alarmanlage.Alarmanlage:196:1 javascript.0 19:26:01.503 warn at script.js.Alarmanlage.Alarmanlage:839:3 javascript.0 19:26:01.504 warn at checkDetectors (script.js.Alarmanlage.Alarmanlage:786:5) javascript.0 19:26:01.504 warn at script.js.Alarmanlage.Alarmanlage:196:1 javascript.0 19:26:01.504 warn at script.js.Alarmanlage.Alarmanlage:839:3 javascript.0 19:26:01.504 warn at checkDetectors (script.js.Alarmanlage.Alarmanlage:787:5) javascript.0 19:26:01.504 warn at script.js.Alarmanlage.Alarmanlage:196:1 javascript.0 19:26:01.504 warn at script.js.Alarmanlage.Alarmanlage:839:3
  • Aquarium-Licht Steuerung: Wie %-Kanalwerte in RGB umrechnen?

    blockly javascript scenes template
    13
    1
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    paul53P
    @jhuebner1 sagte: Welches Objekt muss ich ansteuern und mit welchem Wert? Kann man den "colormode" nicht umstellen? Mode "xy" ist ziemlich umständlich.
  • Fehler bei per script angelegten Datenpunkten (gelöst)

    3
    2
    0 Stimmen
    3 Beiträge
    352 Aufrufe
    M
    @paul53 D A N K E!!! Das war es!!
  • [gelöst] kWh Zählerwert sichern

    3
    0 Stimmen
    3 Beiträge
    356 Aufrufe
    M
    @asgothian Danke für die schnelle Antwort und Ideen. Ladeleistung wird bei mir auch jede Sekunde nachgeregelt, weil ich Nulleinspeisung erreichen möchte, so lange der Speicher nicht voll ist. Aber ja, im Sommer wenn mehr PV Leistung als Ladeleistung vorhanden ist. Würde es etwas bringen. Ich könnte aber einfach 1x täglich den Wert in einen anderen Wert umspeichern und den dann sichern. Die genannten Adapter werde ich mir ansehen.
  • PV Überschuss mit Heizstab Stufenlos in den Heizungspuffer

    42
    0 Stimmen
    42 Beiträge
    15k Aufrufe
    Samson71S
    @cyberhome sagte in PV Überschuss mit Heizstab Stufenlos in den Heizungspuffer: PS: Hast Du mir ev. ein Link zum I-Net Post? Keine Ahnung. Er hat die Quelle des Bildes nicht genannt. Wobei zur Leistungsregelung aus der Kombination Shelly/KEMO selbst Tante Google einiges hergibt. Der ioBroker käme ja dann mehr zur Steuerung der fertigen Regelung ins Spiel.
  • [Vorlage] Aktionssteuerung mit flexiblen Triggern

    2
    6
    0 Stimmen
    2 Beiträge
    751 Aufrufe
    L
    Version 1.3 ist online Es wurden mehr Message Services (WhatsApp, Pushover etc) hinzugefuegt in einer Aktion können jetzt von und Bis Datum flexibel angegeben werden (Gültigkeit der Aktion) z.B. 10.10.24 08:00 = ab dann wird eine Aktion als gültig verwendet 10.10. 08:00:00 = ohne Jahresangabe wird das gegenwärtige Jahr angenommen 10.10. = ohne Zeitangabe, auch hier das gegenwärtige Jahr ab Mitternacht DatumVon Angabe ohne DatumBis Angabe: ab dem Zeitpunkt gültig DatumBis Angabe ohne DatumVon Angabe: bis zu diesem Zeitpunkt gültig Im Rahmen dessen wurden auch die Konfigurationstabellen angepasst.
  • Virtuelle Heizungsgruppe in Blockly

    3
    0 Stimmen
    3 Beiträge
    282 Aufrufe
    S
    @paul53 : Vielen Dank, insbesondere für die schnelle Hilfe. Hat funktioniert. Für alle anderen, die hier suchen: Die Variablen "hm-rpc.0" und "INT0000001" müst ihr entsprechend eurem System einstellen. Bedenkt, dass die Variable "wp" wie folgt gesetzt werden muss: Wochenprogramm 1 => wp = 0 Wochenprogramm 2 => wp = 1 .... Schorsch
  • json via Blockly: Objektname mit Punkt im Namen

    9
    1
    0 Stimmen
    9 Beiträge
    609 Aufrufe
    paul53P
    @accessburn sagte: JSONata... Nie gesehen vorher. Version ohne JSONata: [image: 1729335355676-blockly_temp.jpg]
  • Echo Wiedergabe über Lichtschalter beenden

    3
    1
    0 Stimmen
    3 Beiträge
    266 Aufrufe
    paul53P
    @michi-0 sagte: Schalter drücke (Homematic) passiert nix. Ändere den Trigger auf "ist wahr", denn Homematic-Taster ändern ihren Wert nicht.
  • Steuerung Zirkulationspumpe über Timeout

    14
    1
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    J
    @paul53 Ah, das kannte ich nicht! Danke dir nochmal. Hoffe jetzt habe ich mein Ziel erreicht. Sehr coole Community hier.
  • [gelöst] Backitup bleibt bei Redis Backup hängen

    55
    0 Stimmen
    55 Beiträge
    7k Aufrufe
    Q
    @thomas-braun Danke für den Hinweis !
  • Blockly Textausgabe Telegram in farbiger Box

    6
    1
    0 Stimmen
    6 Beiträge
    627 Aufrufe
    CodierknechtC
    @lemonbiter sagte in Blockly Textausgabe Telegram in farbiger Box: Muss ich die Funktion anlegen und wie geht das ? Und die Variable? Musst Du beides selbst anlegen. [image: 1729250553139-4abe3455-8ac5-4db0-85e6-c42db9209d2e-image.png] [image: 1729250607721-8b029103-129f-407a-ab12-bea42adbe098-image.png] Musst Du nur noch mit einem sinnvollen Namen versehen und die Funktion mit Inhalt füllen.
  • [Gelöst] Temperatur auslesen und wenn nötig schalten

    7
    1
    0 Stimmen
    7 Beiträge
    490 Aufrufe
    ?
    @paul53 mein Fehler. Es funktioniert! 1000 Dank!
  • Auslöser Briefkasten Bewegung für kurze Zeit unterbrechen

    15
    1
    0 Stimmen
    15 Beiträge
    1k Aufrufe
    paul53P
    @klaus-0 sagte: will ich nicht das wenn er sich im Obergeschoss wieder ins Wlan verbindet das die Meldung wieder kommt. Genau das macht die Verzögerung für die Variable abwesend.
  • Gelöst: Keine Ahnung von API

    23
    1
    0 Stimmen
    23 Beiträge
    2k Aufrufe
    M
    @codierknecht Guten Morgen, grundsätzlich hast Du Recht, aber dazu muss der Rechner auch laufen, meine Idee war ja, im Falle der "nichtverfügbarkeit" des Hauptrechners, auf den Backup Rechner umzuschalten, dass mache ich mit Ping. /*****URL von IOBRP5 auf IOBDebian umschalten falls RP5 nicht erreichbar*********************** ** Okt 2024 ** Java, Ping ** ** erstellt: 15.10.24 ** geändert: **********************************************************************************************/ const idrp5 = "ping.0.debianiob.RP5.alive" //schedule("* * * * *", function () { on({ id: idrp5, change: "ne" }, function (dp) { if (dp.state.val == false) { const url = 'http://192.168.178.192:2323/?cmd=loadUrl&url=http%3A%2F%2F192.168.178.162%3A8082%2Fvis%2Findex.html%3Fmain%23000Header_K&password=Wxxxl'; httpGet(url, (err, res, body) => { //console.log(err); }); log("done") } }); VG und nochmal herzlichen Dank Michael
  • [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe

    javascript template monitoring
    581
    1
    19 Stimmen
    581 Beiträge
    168k Aufrufe
    J
    @joestick007 Jetzt gebe ich mir mal selbst die Antwort. Ich glaube, dass ich den Fehler gefunden habe: Ich habe diverse ikea Tradfry Rollos über Zigbee in Betrieb. Bis auf ein Rollo zeigen auch alle einen korrekten Batterieladezustand an. Bei dem fehlerhaften wird nichts angezeigt und in den Objektdaten davon steht: "(null)". Wenn ich diesen aus den Kategorien lösche, wird alles korrekt angezeigt.
  • Eventlist Zeiten der Zustände ermitteln

    5
    0 Stimmen
    5 Beiträge
    297 Aufrufe
    S
    @paul53 ok Danke
  • Ausgabe der Ergebnisse zweier Skripte

    18
    2
    0 Stimmen
    18 Beiträge
    1k Aufrufe
    S
    @codierknecht Ich habe jetzt normal etwas rumexperimentiert. Ich denke auch ich habe die Anzeigen soweit hinbekommen, nur die Anzeige für die Rollos oben runter will noch nicht so ganz. Es wird immer eine Minute nach der Triggerzeit angezeigt. Irgendwo habe ich da wahrscheinlich ein Fehler im Script, finde ihn aber nicht: [image: 1728838284632-bildschirmfoto-2024-10-13-um-18.46.27.png] Sonntag bis Donnerstag gehen die Rollos um 19:00 Uhr runter wenn der Wert von schoolfree tomorrow falsch ist. Wenn er wahr ist, um 20:00Uhr Freitags um Samstags gehen die Rollos immer um 20:00Uhr runter.
  • [Vorlage] Entkalkungsfahrt fuer z.B. EVO Thermostate

    2
    1 Stimmen
    2 Beiträge
    757 Aufrufe
    L
    version 1.2 online

440

Online

33.0k

Benutzer

83.4k

Themen

1.3m

Beiträge