Skip to content

Skripten / Logik

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

16.4k Themen 211.7k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    A
    Danke, für die Korrektur. :-)
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    Olli_MO
    ich probiere :-) danke dir :-)
  • Hilfe für Skripterstellung mit Node-RED

    952 13k
    952 Themen
    13k Beiträge
    HomoranH
    @fiddle sagte in [Gelöst]: Adapter per {Node Red | JS} (de)aktivieren: Ok, nicht als "Wert" schreiben, sondern als "Befehl". Dann scheint ihn das zu beeindrucken. du zeigst ja nichts, aber es geht mit true/false [image: 1763416200051-screenshot_20251117-224854_firefox.jpg] gesteuert über eigenen DP vom typ Bool
  • Steuerung der Schwörer Heizung (Ventcube-Adapter)

    1
    0 Stimmen
    1 Beiträge
    127 Aufrufe
    Niemand hat geantwortet
  • Tradfri Fernbedienung > Hue dimmen & Szenen

    blockly
    13
    2
    0 Stimmen
    13 Beiträge
    2k Aufrufe
    AphofisA
    @rehmosch Magst du deinen Code mal exportieren und hier psoten!? Das wäre nett Danke
  • FritzBox Onlinezeit von Teilnehmern verlängern

    22
    1
    0 Stimmen
    22 Beiträge
    2k Aufrufe
    S
    @bananajoe Anbei das Script <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="}/BV?J`ZBj[g9)lo@/Xb">Spielzeit</variable> <variable type="interval" id="Intervall">Intervall</variable> <variable id="ew40Bf2{8Yw8DtK6weyX">Bonuszeit</variable> <variable type="interval" id="Intervall2">Intervall2</variable> </variables> <block type="on_ext" id="5/ZEq7o$e2CNvj5jJlHX" x="-4505" y="-3273"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <comment pinned="true" h="80" w="160">Tägliche Spielzeit</comment> <value name="OID0"> <shadow type="field_oid" id="t4`1=0WacF/7lwKvu(Cg"> <field name="oid">tr-064.1.devices.ps5-61c94dlan.active</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="H4kymGZi,S/A#4@/o{1{"> <value name="IF0"> <block type="logic_compare" id="$$O,t76l+aa8c(]0i43_"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="igDb+CncG)X!rO5Vu%Lc"> <field name="ATTR">val</field> <field name="OID">tr-064.1.devices.ps5-61c94dlan.active</field> </block> </value> <value name="B"> <block type="logic_boolean" id="Ri5vcHZx_XV!-7M:jV@z"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="J*VPf~+lNGw$P];BN]5_"> <field name="VAR" id="}/BV?J`ZBj[g9)lo@/Xb">Spielzeit</field> <value name="VALUE"> <block type="get_value" id="7,TyJg}[afyM3GYn!WBF"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Playstation.Spielzeit</field> </block> </value> <next> <block type="timeouts_clearinterval" id="_i)|aBOk-+gG6k+}~Mxy"> <field name="NAME">Intervall</field> <next> <block type="timeouts_setinterval" id="nh_mg|XZDI2A]T7k24K*"> <field name="NAME">Intervall</field> <field name="INTERVAL">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="math_change" id="Vv{m[XOiXR;=x3VpTS6n"> <field name="VAR" id="}/BV?J`ZBj[g9)lo@/Xb">Spielzeit</field> <value name="DELTA"> <shadow type="math_number" id="d+;Dk{:1B#R0y!u80D;,"> <field name="NUM">-1</field> </shadow> </value> <next> <block type="update" id=".~)p{s$FPpIp[`Cg^VcW"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Playstation.Spielzeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="cU7rCPb,n.s|5yGD?(|f"> <field name="VAR" id="}/BV?J`ZBj[g9)lo@/Xb">Spielzeit</field> </block> </value> <next> <block type="controls_if" id="d;8#gYb(h@)[|[5=cb67"> <value name="IF0"> <block type="logic_compare" id="V5|yFTv}ud64?E7BWj3k"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="pmH-*R?j_F:.6cxA^T/N"> <field name="VAR" id="}/BV?J`ZBj[g9)lo@/Xb">Spielzeit</field> </block> </value> <value name="B"> <block type="math_number" id="w:w`pMlaG+l@AD,C{i}l"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_clearinterval" id="[C$s~CNZ%``pv`rXQ4bU"> <field name="NAME">Intervall</field> <next> <block type="control" id="u:{aZ$a`y1pEKVwdU0Bh"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">tr-064.1.states.command</field> <field name="WITH_DELAY">FALSE</field> <comment pinned="true" h="80" w="160">Command Befehl vom TR064 Adapter. NewDisallow: 1= Gerät wird gespertt 0= Geräte wieder freigeschaltet </comment> <value name="VALUE"> <block type="text" id="4}qm.Z8#Y[A4Le2O)kkN"> <field name="TEXT">{ "service": "urn:dslforum-org:service:X_AVM-DE_HostFilter:1", "action": "DisallowWANAccessByIP", "params": { "NewIPv4Address": "192.168.178.118", "NewDisallow": 1 } }</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </statement> <next> <block type="on_ext" id="#{+.-:M($}0:gUxj]xk1"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="kI1r9AD7*Tz`}A:uKb2B"> <field name="oid">0_userdata.0.Playstation.Bonuszeit_Aktivator</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="#*2B^/XUIN#JV9E(Yzkd"> <value name="IF0"> <block type="logic_compare" id="_64G!8.HoP7*RGMlu|4o"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="m7ZLAgsEOHtrK=7:fDQ_"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Playstation.Bonuszeit_Aktivator</field> </block> </value> <value name="B"> <block type="logic_boolean" id="H,FV%ShQCi5GT8x#l7$p"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="Oj80pJCR}+*)DlD7$(,)"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">tr-064.1.states.command</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="-:{k+}jPr}rv)p)G(7Zf"> <field name="TEXT">{ "service": "urn:dslforum-org:service:X_AVM-DE_HostFilter:1", "action": "DisallowWANAccessByIP", "params": { "NewIPv4Address": "192.168.178.118", "NewDisallow": 0 } }</field> </block> </value> <next> <block type="update" id="+6$r)*skoKdB%TW37-9n"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Playstation.Extrazeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="6+tKP`C3rVwPK,KwJCWO"> <field name="NUM">1800</field> </block> </value> <next> <block type="variables_set" id="bscs6L0+m`?]=6(a,4]p"> <field name="VAR" id="ew40Bf2{8Yw8DtK6weyX">Bonuszeit</field> <value name="VALUE"> <block type="get_value" id="GI?clIE]o%sgbN1+$~uz"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Playstation.Extrazeit</field> </block> </value> <next> <block type="timeouts_clearinterval" id="!{i%+gK)aqs00*9i9hO5"> <field name="NAME">Intervall2</field> <next> <block type="timeouts_setinterval" id="`0`zG3^f1IY1km|y`}Td"> <field name="NAME">Intervall2</field> <field name="INTERVAL">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="math_change" id="PKl]c;Q/DDv}NCp|3*cn"> <field name="VAR" id="ew40Bf2{8Yw8DtK6weyX">Bonuszeit</field> <value name="DELTA"> <shadow type="math_number" id=".{vboei$0X.Jy){kSTU2"> <field name="NUM">-1</field> </shadow> </value> <next> <block type="update" id="+M8VoW5o7SVdgMR-7.D+"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Playstation.Extrazeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="P3c9U.Xo^vSObZ:V?ejD"> <field name="VAR" id="ew40Bf2{8Yw8DtK6weyX">Bonuszeit</field> </block> </value> <next> <block type="controls_if" id="I~^3=?vpN0,9u(g)QbQ!"> <value name="IF0"> <block type="logic_compare" id="VI,6xaUA1u}sAdum8l~Y"> <field name="OP">LTE</field> <value name="A"> <block type="variables_get" id="]wrti}f7XbqcTmJGZgX~"> <field name="VAR" id="ew40Bf2{8Yw8DtK6weyX">Bonuszeit</field> </block> </value> <value name="B"> <block type="math_number" id="1lKv4F@t-EP2eZ_ww3~q"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_clearinterval" id="JeD[K:Y-KD5-thJyRpK="> <field name="NAME">Intervall2</field> <next> <block type="control" id="o;0vLTy1:G0khe9,Oix?"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">tr-064.1.states.command</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="..tJUyU1=CLa$$Y,EfY;"> <field name="TEXT">{ "service": "urn:dslforum-org:service:X_AVM-DE_HostFilter:1", "action": "DisallowWANAccessByIP", "params": { "NewIPv4Address": "192.168.178.118", "NewDisallow": 1 } }</field> </block> </value> <next> <block type="update" id="NO`p]!;Di0]4`nr}8,4u"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Playstation.Bonuszeit_Aktivator</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="~/awpVORNqBC?RGed9:y"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </xml>
  • Bräuchte untersützung bei python

    2
    0 Stimmen
    2 Beiträge
    164 Aufrufe
    A
    hat sich erledigt.. habs geschafft.
  • [gelöst] Probleme mit AppleTV steuern über "hass" Adapter

    12
    0 Stimmen
    12 Beiträge
    575 Aufrufe
    CinimodC
    @ticaki Funktioniert soweit einwandfrei, dank nochmal
  • +/- Watt-Wert (Power) in 2 kWh-Werte (Energy) trennen lassen

    3
    0 Stimmen
    3 Beiträge
    260 Aufrufe
    M
    Wow, vielen herzlichen Dank!
  • gelöst: Alias, Konvertierungsfunktion, Zeit hh:mm anzeigen

    4
    0 Stimmen
    4 Beiträge
    291 Aufrufe
    G
    Moin, Moin @paul53 said in Alias, Konvertierungsfunktion, Zeit hh:mm anzeigen lassen: @geophysiker sagte: Ich hätte gerne führende Nullen Vorschlag: Math.floor(val / 3600).toString().padStart(2, '0') + ':' + ((val % 3600) / 60).toFixed().padStart(2, '0') 00:08h :)))) Wie soll ... Ich bin begeistert. Danke!! Tschö, Ralf
  • Scripts für PV Anlage

    13
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    S
    @gukerl Werde ich mir irgendwann in Ruhe anschauen, derzeit ist zigbee2mqtt wichtiger
  • Gelöst: Tabelle mit dem Zustand der PING Zustände erstellen

    javascript
    19
    1
    0 Stimmen
    19 Beiträge
    1k Aufrufe
    M
    @paul53 sagte in Gelöst: Tabelle mit dem Zustand der PING Zustände erstellen: Starte mal die Javascript-Instanz neu. Danke jetzt ist alles ohne Leichen
  • Objekte finden in verschiedenen Skripten

    2
    0 Stimmen
    2 Beiträge
    174 Aufrufe
    T
    @hotspot_2 Die Suchfunktion im Javascript-Adapter schon ausprobiert? Oder überhaupt gesehen das es die gibt? (war bei mir so :D )
  • Sporadische Aussetzer Shelly 1 PM mit Tasmota

    1
    2
    0 Stimmen
    1 Beiträge
    153 Aufrufe
    Niemand hat geantwortet
  • source does not exist for "read" function

    52
    1
    0 Stimmen
    52 Beiträge
    3k Aufrufe
    HomoranH
    @thomas-braun sagte in source does not exist for "read" function: Fand es auch immer unübersichtlich mit den ganzen Ansätzen. stimmt! deswegen immer nativ! (die drei aliases die ich bisher hab)
  • IPhone Kurzbefehl "Garage öffnen" via Telegram-Bot

    7
    0 Stimmen
    7 Beiträge
    851 Aufrufe
    T
    @codierknecht Bedingung wäre, dass da ein HomePod o... Ups, stimmt :)
  • eCharts mit Telegram-Adapter

    6
    0 Stimmen
    6 Beiträge
    633 Aufrufe
    Q
    @bananajoe Vielen Dank. Ich schaue mir das mal an. iobroker.inst@3.0.0 /opt/iobroker ├─┬ iobroker.echarts@1.9.2 │ ├── canvas@2.11.2 │ └─┬ jsdom@25.0.0 │ └── canvas@2.11.2 deduped └─┬ iobroker.energiefluss@3.6.2 └── canvas@2.11.2 deduped iobroker@raspberrypi:/opt/iobroker/node_modules/canvas $ npm rebuild rebuilt dependencies successfully Telegram-Grafiken werden wieder angezeigt. Ein Rebuild war ausreichend/hilfreich. Merci. Ich nehme "nur" die Versionen, die mir "offiziell" zum Update auch angeboten werden. Danach war der Adapter up-to-date.
  • io.javascript.0 immer bei rund 100%

    15
    0 Stimmen
    15 Beiträge
    885 Aufrufe
    mcm1957M
    @tasuanetrukiat Eher schon spät aber noch ne Nachfrage: Hast du nach dem Stoppen aller Scripte im Adapter auch mal den ganzen Rechner (nicht nur ioBroker) neu gestartet? Es kann ja auch sein, dass ein Prozess amok gelaufen ist den ioBroker gar nicht mehr als einen eigenen erkannt hat. Und der könnte dann nur z.B. manuell gestoppt werden oder ebern durch einen Reboot des Betriebssystems.
  • HEOS Player Queue als html tabelle?

    2
    0 Stimmen
    2 Beiträge
    175 Aufrufe
    icebearI
    @icebear Ich antworte mir mal selber. Habs rausgefunden mit jsonata = $.payload.{"Art": image_url, "Artist":artist, "album": album, "Titel": song} Bring als Ergebnis: [ { "Art": "https://m.media-amazon.com/images/I/B1EQ4x6+cPL.jpg", "Artist": "Kx5", "album": "Take Me High", "Titel": "Take Me High" }, { "Art": "https://m.media-amazon.com/images/I/617MVZdW+9L.jpg", "Artist": "Papa Roach", "album": "Who Do You Trust? [Explicit]", "Titel": "The Ending" }, { "Art": "https://m.media-amazon.com/images/I/614X7vU4kvL.jpg", "Artist": "Swedish House Mafia", "album": "Paradise Again [Explicit]", "Titel": "Heaven Takes You Home" }, { "Art": "https://m.media-amazon.com/images/I/91WFfUhav8L.jpg", "Artist": "Fred again..", "album": "Turn On The Lights again.. (feat. Future) [Explicit]", "Titel": "Turn On The Lights again.. (feat. Future)" }, { "Art": "https://m.media-amazon.com/images/I/71nY9Fa-06L.jpg", "Artist": "Gorgon City", "album": "Dreams (Terrace Dub / Amazon Original)", "Titel": "Dreams (Terrace Dub / Amazon Original)" }, { "Art": "https://m.media-amazon.com/images/I/91859e+jTSL.jpg", "Artist": "Papa Roach", "album": "Dying To Believe", "Titel": "Dying To Believe [Explicit]" }, { "Art": "https://m.media-amazon.com/images/I/81pg+33+WiL.jpg", "Artist": "Fred again..", "album": "Actual Life 3 (January 1 - September 9 2022) [Explicit]", "Titel": "Clara (the night is dark)" }, { "Art": "https://m.media-amazon.com/images/I/81bZ4dEMUhL.jpg", "Artist": "Chase & Status", "album": "What Came Before [Explicit]", "Titel": "Mixed Emotions" }, { "Art": "https://m.media-amazon.com/images/I/81pg+33+WiL.jpg", "Artist": "Fred again..", "album": "Actual Life 3 (January 1 - September 9 2022) [Explicit]", "Titel": "Kammy (like i do)" }, { "Art": "https://m.media-amazon.com/images/I/910MrctHG9L.jpg", "Artist": "Biffy Clyro", "album": "A Celebration Of Endings [Explicit]", "Titel": "Instant History" }, { "Art": "https://m.media-amazon.com/images/I/A1LKu3twuLL.jpg", "Artist": "John Summit", "album": "Human (feat. Echoes)", "Titel": "Human (feat. Echoes)" }, { "Art": "https://m.media-amazon.com/images/I/81+lGZN8RaL.jpg", "Artist": "070 Shake", "album": "Modus Vivendi [Explicit]", "Titel": "Morrow [Explicit]" }, { "Art": "https://m.media-amazon.com/images/I/61+IZElnaJL.jpg", "Artist": "London Grammar", "album": "Californian Soil [Explicit]", "Titel": "Lose Your Head" }, { "Art": "https://m.media-amazon.com/images/I/71Zv20vA1KL.jpg", "Artist": "Sigala", "album": "Melody", "Titel": "Melody" }, { "Art": "https://m.media-amazon.com/images/I/A19aTcXcAZS.jpg", "Artist": "gardenstate", "album": "Take Me There (Falden Remix)", "Titel": "Take Me There" }, { "Art": "https://m.media-amazon.com/images/I/81vMxIyDZ9L.jpg", "Artist": "Glass Animals", "album": "Dreamland [Explicit]", "Titel": "Heat Waves" }, { "Art": "https://m.media-amazon.com/images/I/81ClMoKQXtL.jpg", "Artist": "Anne-Marie", "album": "Don't Play", "Titel": "Don't Play" }, { "Art": "https://m.media-amazon.com/images/I/81CZHVekd3L.jpg", "Artist": "Olly Alexander (Years & Years)", "album": "Night Call (New Year's Edition) [Explicit]", "Titel": "Sooner Or Later" }, { "Art": "https://m.media-amazon.com/images/I/51mcmSwN3yL.jpg", "Artist": "SUB-X", "album": "What You Do To Me", "Titel": "What You Do To Me" }, { "Art": "https://m.media-amazon.com/images/I/A1n4oQ6tvkL.jpg", "Artist": "Robin Schulz", "album": "Young Right Now", "Titel": "Young Right Now" }, { "Art": "https://m.media-amazon.com/images/I/71A9YljT53L.jpg", "Artist": "Kx5", "album": "Alive", "Titel": "Alive" }, { "Art": "https://m.media-amazon.com/images/I/71RMVPlE8sL.jpg", "Artist": "Topic", "album": "All Or Nothing", "Titel": "All Or Nothing" }, { "Art": "https://m.media-amazon.com/images/I/812T5aAeMRL.jpg", "Artist": "Daniel Blume", "album": "Better", "Titel": "Better" }, { "Art": "https://m.media-amazon.com/images/I/71RyhGdHj4L.jpg", "Artist": "Purple Disco Machine", "album": "Exotica (Deluxe)", "Titel": "Hypnotized" }, { "Art": "https://m.media-amazon.com/images/I/A1Aq18EMk9L.jpg", "Artist": "Fred again..", "album": "Jungle (Rico Nasty Remix) [Explicit]", "Titel": "Jungle (Rico Nasty Remix) [Explicit]" }, { "Art": "https://m.media-amazon.com/images/I/71Xcvw1W3sS.jpg", "Artist": "Becky Hill", "album": "Only Honest On The Weekend [Clean]", "Titel": "My Heart Goes (La Di Da)" }, { "Art": "https://m.media-amazon.com/images/I/91oU-LoTeBL.jpg", "Artist": "TSHA", "album": "Dancing In The Shadows", "Titel": "Dancing In The Shadows" }, { "Art": "https://m.media-amazon.com/images/I/81bZ4dEMUhL.jpg", "Artist": "Chase & Status", "album": "What Came Before [Explicit]", "Titel": "Don't Be Scared [feat. Takura]" }, { "Art": "https://m.media-amazon.com/images/I/91JwD4kecOL.jpg", "Artist": "Grafix", "album": "Half Life", "Titel": "Feel Alive" }, { "Art": "https://m.media-amazon.com/images/I/81bZ4dEMUhL.jpg", "Artist": "Chase & Status", "album": "What Came Before [Explicit]", "Titel": "When It Rains [Explicit]" }, { "Art": "https://m.media-amazon.com/images/I/71v4TvAQ7UL.jpg", "Artist": "Mabel", "album": "Overthinking [Explicit]", "Titel": "Overthinking [Explicit]" }, { "Art": "https://m.media-amazon.com/images/I/71f-F6A-SpL.jpg", "Artist": "Alesso", "album": "Words", "Titel": "Words" }, { "Art": "https://m.media-amazon.com/images/I/717MR4yRF5L.jpg", "Artist": "Fred again..", "album": "Jungle [Explicit]", "Titel": "Jungle [Explicit]" }, { "Art": "https://m.media-amazon.com/images/I/81biZj+P+GL.jpg", "Artist": "Mazzy Star", "album": "So Tonight That I Might See", "Titel": "Fade Into You" }, { "Art": "https://m.media-amazon.com/images/I/A1UJ43C7DzL.jpg", "Artist": "Tion Wayne", "album": "IFTK [Explicit]", "Titel": "IFTK [Explicit]" }, { "Art": "https://m.media-amazon.com/images/I/61SdrYe7XGL.jpg", "Artist": "Sub Focus", "album": "Ready To Fly (Sub Focus & Dimension)", "Titel": "Ready To Fly (Sub Focus & Dimension)" }, { "Art": "https://m.media-amazon.com/images/I/B1EQ4x6+cPL.jpg", "Artist": "Kx5", "album": "Take Me High", "Titel": "Take Me High" }, { "Art": "https://m.media-amazon.com/images/I/617MVZdW+9L.jpg", "Artist": "Papa Roach", "album": "Who Do You Trust? [Explicit]", "Titel": "The Ending" }, { "Art": "https://m.media-amazon.com/images/I/614X7vU4kvL.jpg", "Artist": "Swedish House Mafia", "album": "Paradise Again [Explicit]", "Titel": "Heaven Takes You Home" }, { "Art": "https://m.media-amazon.com/images/I/91WFfUhav8L.jpg", "Artist": "Fred again..", "album": "Turn On The Lights again.. (feat. Future) [Explicit]", "Titel": "Turn On The Lights again.. (feat. Future)" }, { "Art": "https://m.media-amazon.com/images/I/71nY9Fa-06L.jpg", "Artist": "Gorgon City", "album": "Dreams (Terrace Dub / Amazon Original)", "Titel": "Dreams (Terrace Dub / Amazon Original)" }, { "Art": "https://m.media-amazon.com/images/I/91859e+jTSL.jpg", "Artist": "Papa Roach", "album": "Dying To Believe", "Titel": "Dying To Believe [Explicit]" }, { "Art": "https://m.media-amazon.com/images/I/81pg+33+WiL.jpg", "Artist": "Fred again..", "album": "Actual Life 3 (January 1 - September 9 2022) [Explicit]", "Titel": "Clara (the night is dark)" }, { "Art": "https://m.media-amazon.com/images/I/81bZ4dEMUhL.jpg", "Artist": "Chase & Status", "album": "What Came Before [Explicit]", "Titel": "Mixed Emotions" }, { "Art": "https://m.media-amazon.com/images/I/81pg+33+WiL.jpg", "Artist": "Fred again..", "album": "Actual Life 3 (January 1 - September 9 2022) [Explicit]", "Titel": "Kammy (like i do)" }, { "Art": "https://m.media-amazon.com/images/I/910MrctHG9L.jpg", "Artist": "Biffy Clyro", "album": "A Celebration Of Endings [Explicit]", "Titel": "Instant History" }, { "Art": "https://m.media-amazon.com/images/I/A1LKu3twuLL.jpg", "Artist": "John Summit", "album": "Human (feat. Echoes)", "Titel": "Human (feat. Echoes)" }, { "Art": "https://m.media-amazon.com/images/I/81+lGZN8RaL.jpg", "Artist": "070 Shake", "album": "Modus Vivendi [Explicit]", "Titel": "Morrow [Explicit]" }, { "Art": "https://m.media-amazon.com/images/I/61+IZElnaJL.jpg", "Artist": "London Grammar", "album": "Californian Soil [Explicit]", "Titel": "Lose Your Head" }, { "Art": "https://m.media-amazon.com/images/I/71Zv20vA1KL.jpg", "Artist": "Sigala", "album": "Melody", "Titel": "Melody" }, { "Art": "https://m.media-amazon.com/images/I/A19aTcXcAZS.jpg", "Artist": "gardenstate", "album": "Take Me There (Falden Remix)", "Titel": "Take Me There" }, { "Art": "" } ] und dann in VIS-2 [image: 1737967156014-playlist.png] Jetzt muß ich nur noch schauen wie ich das in ein blockly bekomme
  • Rutenbeck TCR IP4 wie korrekt schalten

    5
    3
    0 Stimmen
    5 Beiträge
    880 Aufrufe
    B
    Ich habe mir folgenden JS-Code mit Hilfe von ChatGPT erstellt: const dgram = require('dgram'); const deviceIP = 'xxx.xxx.xxx.xxx'; // IP-Adresse der Zeitschaltuhr const port = 30303; // UDP-Port der Zeitschaltuhr const states = ['OUT1', 'OUT2', 'OUT3', 'OUT4']; // Zustände (ohne Temperatur) const warnCooldown = {}; // Warnungstimer für Statusabweichungen const retryAttempts = 3; // Anzahl der Wiederholungen bei Abfrageabweichungen const warnLimit = 2; // Anzahl maximaler Warnungen pro Abweichung // Datenpunkte im ioBroker erstellen states.forEach(state => { createState(`javascript.0.Zeitschaltuhr.${state}`, false, { name: `${state} Schalter`, type: 'boolean', def: false, read: true, write: true }); }); // Spezieller Datenpunkt für Temperatur createState(`javascript.0.Zeitschaltuhr.Temperatur`, 0, { name: 'Temperatur Status', type: 'mixed', def: 0, read: true, write: false }); // Funktion, um UDP-Befehl zu senden und Antwort abzurufen function sendUDPCommandAndReceive(command, callback) { const message = Buffer.from(command); const client = dgram.createSocket('udp4'); client.on('message', (msg, rinfo) => { const response = msg.toString(); // Antwort analysieren und Datenpunkte aktualisieren if (response.startsWith('T')) { const parts = response.split('='); if (parts.length > 1) { const value = parseFloat(parts[1].trim()); if (!isNaN(value)) { const currentState = getState(`javascript.0.Zeitschaltuhr.Temperatur`).val; if (value === -27) { if (currentState !== 'nicht angeschlossen') { setState(`javascript.0.Zeitschaltuhr.Temperatur`, 'nicht angeschlossen', true); } } else { if (currentState !== value) { setState(`javascript.0.Zeitschaltuhr.Temperatur`, value, true); } } } } } else { states.forEach(state => { if (response.startsWith(state)) { const parts = response.split('='); if (parts.length > 1) { const value = parseInt(parts[1].trim(), 10); if (value === 0 || value === 1) { const currentState = getState(`javascript.0.Zeitschaltuhr.${state}`).val; if (currentState !== (value === 1)) { setState(`javascript.0.Zeitschaltuhr.${state}`, value === 1, true); } } } } }); } client.close(); if (callback) callback(response); }); client.send(message, 0, message.length, port, deviceIP, (err) => { if (err) { console.error(`Fehler beim Senden: ${err.message}`); client.close(); } }); } // Funktion zur Steuerung der Ports (ein- und ausschalten) function controlPort(portNumber, state) { if (portNumber < 1 || portNumber > 4) { console.error('Ungültige Portnummer. Bitte 1 bis 4 angeben.'); return; } if (state !== 0 && state !== 1) { console.error('Ungültiger Zustand. Bitte 0 (aus) oder 1 (ein) angeben.'); return; } const command = `OUT${portNumber} ${state}`; sendUDPCommandAndReceive(command, () => { let attempts = 0; let warnings = 0; function checkStatus() { const queryCommand = `OUT${portNumber} ?`; sendUDPCommandAndReceive(queryCommand, (response) => { const parts = response.split('='); if (parts.length > 1) { const value = parseInt(parts[1].trim(), 10); if (value === state) { setState(`javascript.0.Zeitschaltuhr.OUT${portNumber}`, value === 1, true); } else { attempts++; if (attempts < retryAttempts) { setTimeout(checkStatus, 500); // Wiederholen nach 500ms } else { warnings++; if (warnings <= warnLimit) { console.warn(`Status von OUT${portNumber} stimmt nicht überein: Erwartet ${state}, erhalten ${value}`); } } } } }); } // Erste Statusprüfung nach 1 Sekunde setTimeout(checkStatus, 1000); }); } // Listener für Schalter in ioBroker states.forEach((state, index) => { on({ id: `javascript.0.Zeitschaltuhr.${state}`, change: 'any' }, (obj) => { const newState = obj.state.val ? 1 : 0; controlPort(index + 1, newState); }); }); // Funktion zur regelmäßigen Abfrage function queryStates() { states.concat('T').forEach((state) => { const command = `${state} ?`; sendUDPCommandAndReceive(command); }); } // Intervall für regelmäßige Abfragen (alle 10 Sekunden) setInterval(queryStates, 10000); // Initialer Aufruf queryStates(); Der Code ließt den aktuellen Zustand der Ports 1-4 sowie der Temperatur (Ich besitze keinen Sensor und kann die Ausgabe der Temp. nicht testen) per UDP-Protokoll und erstellt in ioBroker passende Datenpunkte. Diese können dann aus ioBroker oder VIS geschaltet werden.
  • Syntaxerror JSON Fehler abfangen

    14
    1
    0 Stimmen
    14 Beiträge
    901 Aufrufe
    P
    Quick and dirty, er soll es 2x versuchen :-) [image: 1737789632714-6dad05d7-5a1b-4489-9fd9-9759af83e876-8bf80c08-a497-4200-8b22-00d2e12cf589.png]
  • Alle Datenpunkte umziehen und Skripte automatisiert anpassen

    6
    0 Stimmen
    6 Beiträge
    548 Aufrufe
    T
    @mlapp Punkt 2 da hättest du den Datenbaum exportier können, im erhaltenen JSON die Datenpunkt ändern und wieder importieren können Sonst sie sehe ich kein vernesserungspotenzial 😊
  • Script Hilfe für Abfrage Serielle Kommunikation gesucht!

    Verschoben
    192
    0 Stimmen
    192 Beiträge
    28k Aufrufe
    Axel KoenekeA
    @spawnsen 6.0.2 = 1 6.0.3 = 1 6.0.4 = 0

705

Online

32.4k

Benutzer

81.4k

Themen

1.3m

Beiträge