Weiter zum Inhalt

Skripten / Logik

16.6k Themen 214.5k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 49k
    3k Themen
    49k Beiträge
    D
    Ich habe heute mal angefangen mein ganzes Steuerungsscript umzuschreiben mit deinem Script zur Abfrage. Da ist mir aufgefallen, das im pass Modus der wert nicht 1 sondern 2 ist. [image: 1776934145376-screenshot-2026-04-23-104848.jpg]
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    hg6806H
    Danke für die Antworten. Der Adapter ist dafür etwas überdosiert, ist aber interessant, dass es sowas gibt. Das mit dem Zeitplan hatte ich mir auch schon überlegt, dachte es gibt was anderes oder besseres. Ich denke stündlich reicht in dem Fall.
  • Hilfe für Skripterstellung mit Node-RED

    955 13k
    955 Themen
    13k Beiträge
    mickymM
    @Tontechniker Man kann solche Filter aber auch OHNE neue Nodes zu installieren mit einfachen Standard-Switch Nodes realisieren: [image: 1776865319208-af3cab3c-2716-43f4-b7df-7f74e8bf051b-image.jpeg] ggf. einfach nochmal meinen alten Thread anschauen: https://forum.iobroker.net/topic/50086/datum-und-zeitverarbeitung-mit-nodered
  • Mittelwertbildung für die Windrichtung mit JavaScript

    1
    2
    2 Stimmen
    1 Beiträge
    675 Aufrufe
    Niemand hat geantwortet
  • [GELÖST] Im Skript eigene ID (Name) ermitteln?

    3
    0 Stimmen
    3 Beiträge
    232 Aufrufe
    NewpicselN
    @paul53 Ja richtig perfekt! Ich danke dir
  • Bei Eingabe über Tastatur oder Tablet Timer zurücksetzen

    2
    0 Stimmen
    2 Beiträge
    255 Aufrufe
    liv-in-skyL
    @fleck-a87 das problem dabei ist , dass die vis das wissen muss, wann du etwas eingibst und die vis dann den timeout unterbrechen soll du müßtest ein script in der vis am laufen haben, dass dies überprüft und ausführt - machbar - aber nicht ganz trivial du könntest dir aber einen button machen, der das unterbricht - also einen extra schalter dafür (der auf jeder view zu sehen ist, der einen datenpunkt setzt. den dp fügst du dann in dein obiges script ein (if-abfrage ob true/false und stoppen des timeouts) .
  • Uhrzeitabhängiges Dimmen mit Skript

    3
    0 Stimmen
    3 Beiträge
    285 Aufrufe
    T
    @ft-knorr Hier ein Ausschnitt aus meinem Skript das etwas ähnliches tut. Der Code unten ist aus dem Skript kopiert das deutlich umfangreicher ist. EDIT: Dachte ich wäre im Unterforum Javascript. :) const DEBUG = false; const maxCt = 500; const minCt = 250; const maxBri = 190; const minBri = 80; const endHourOfFade = 22;//1-24 const startHourOfFade = 20 ; function main() { var currentSunSet = getAstroDate("sunset"); if (timeIsBetween(new Date(),currentSunSet, endHourOfFade+':00') ) { if (DEBUG) console.log('Fade 1. Abschnitt: Sonnenuntergang:'+currentSunSet+' aktuelle Zeit:'+new Date()); fadeLights(currentSunSet, new Date()); myInterval = setInterval(function(){ fadeLights(currentSunSet, new Date()); },5000); // bleibe Nachts bei den zurückhaltenden Einstellungen, ab 4 Uhr ist die Automatik beendet } else if (timeIsBetween(currentTime,endHourOfFade+':00','04:00')){ if (DEBUG) console.log('Fade 2. Abschnitt'); setState('deconz.0.lights.0017880103a0037c.action', '"on": true, "bri": '+minBri+', "ct": '+maxCt); } else { setState('deconz.0.lights.0017880103a0037c.on', true); } } function fadeLights (currentSunSet,currentTime) { var endTime = new Date(currentSunSet); endTime.setHours(endHourOfFade, 0, 0); endTime = currentSunSet < endTime ? endTime : new Date(new Date(currentSunSet).setMinutes(new Date(currentSunSet).getMinutes() + 15)); var startTime = new Date(new Date(currentSunSet).setHours(startHourOfFade,0,0)); startTime = currentSunSet < startTime ? startTime : new Date(currentSunSet); var currentDiff = (endTime.getTime() - currentTime.getTime()); var currentMaxDiff = (endTime.getTime() - startTime.getTime()); if (currentDiff > currentMaxDiff) currentDiff = currentMaxDiff; var ct = minCt + (maxCt - minCt) * (currentMaxDiff - currentDiff) / currentMaxDiff; ct = Math.round(ct); if (ct > maxCt) ct = maxCt; //Passe die Helligkeit an var bri = maxBri; if (currentTime > startTime) { bri = minBri + (maxBri - minBri) * currentDiff / currentMaxDiff; bri = Math.round(bri); } setState('deconz.0.lights.0017880103a0037c.action', '"on": true, "bri": '+bri+', "ct": '+ct); } // Hilfsfunktion: function timeIsBetween(fTime,start,ende) {//Dateobjekt,hh:mm,hh:mm var eTime = new Date(), sTime = new Date(); if (typeof start == 'object') { sTime = new Date(start); } else { start = start.split(':'); sTime.setHours(parseInt(start[0]), parseInt(start[1]), 0); } if (typeof ende === 'object') { eTime = new Date(ende); } else { ende = ende.split(':'); eTime.setHours(parseInt(ende[0]), parseInt(ende[1]), 0); } if (sTime.getTime()>eTime.getTime()) { if (fTime.getTime() < eTime.getTime()) sTime.setDate(eTime.getDate()-1); if (fTime.getTime() > sTime.getTime()) eTime.setDate(sTime.getDate()+1); } if ( compareTime(sTime, eTime, 'between', fTime) ) return true; return false; }
  • Variable verzögert setzen und wieder löschen (Fehler)

    javascript
    5
    0 Stimmen
    5 Beiträge
    163 Aufrufe
    liv-in-skyL
    @alcalzone Ich glaube dass war früher anderes Hatte auch plötzlich irgendwann ein Problem mit einem Script, was vorher lief Ist aber schon länger her. Kann mich nur noch daran erinnern, dass es mit dem setstatedelayed war
  • (GELÖST) JSON Zeitplan auslesen

    javascript
    4
    0 Stimmen
    4 Beiträge
    155 Aufrufe
    L
    @paul53 @mickym Guten Morgen Ihr beiden, Danke für die Hilfe, hat funktioniert!!!! MfG Wastl
  • Javascript für UDP Protokolle

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    2k Aufrufe
    SKBS
    Hi, ich habe hier einmal anhand der Möglichkeiten etwas gebaut. Vielleicht hilft es dem Ein oder Anderen: https://www.kreyenborg.koeln/proscenic-roboter-in-iobroker-integrieren/
  • CCU Firmware Script

    3
    0 Stimmen
    3 Beiträge
    203 Aufrufe
    bahnuhrB
    @glasfaser Super, Danke für den Link. Offensichtlich hat sich der request Link für raspberrymatic geändert. Jetzt läuft es wieder. Danke. mfg Dieter
  • Wert aus Website auslesen

    15
    0 Stimmen
    15 Beiträge
    650 Aufrufe
    David G.D
    @liv-in-sky Klappt jetzt wunderbar. Vielen Dank [image: 1632205539196-screenshot_20210921-082206_telegram.jpg]
  • [gelöst] Wert (JSON) an URL senden

    82
    0 Stimmen
    82 Beiträge
    8k Aufrufe
    K
    @paul53 anderes Gerät, aber auch JSON an URL senden. [image: 1632176272522-c4419a2c-f3bf-4d87-ae92-d6ea05ddda91-image.png] Der Befehl ist wie folgt : curl -i -d '{"method": "getSystemInformation","id": 65,"params": [],"version": "1.4"}' http://192.168.1.254:10000/sony/system Eine Antwort erhalte ich, somit funktioniert die Kommunikation. Nun versuche ich aber, einen anderen Befehl zu senden, welche ich auf folgender Seite finde: API reference Als Beispiel folgender JSON: { "method":"notifyPowerStatus", "params":[ { "status":"standby" } ], "version":"1.0" } Nun habe ich folgenden exec-Befehl probiert: curl -i -d '{"method": "notifyPowerStatus","params":[{"status":"standby"}],"version": "1.0" }' http://192.168.1.254:10000/sony/system Folgender Fehler erscheint jetzt: HTTP/1.1 200 OK Connection: close Content-Length: 28 Content-Type: application/json {"error":[5,"Illegal JSON"]} Kann mir jemand weiterhelfen?
  • Buderus KM 200 Adapter

    2
    2
    0 Stimmen
    2 Beiträge
    225 Aufrufe
    I
    Hier mal wie das im Log aussieht, wenn ich schalte: [image: 1632082120679-fehler-km.jpg]
  • Firebase DB via Script ansprechen

    javascript
    4
    0 Stimmen
    4 Beiträge
    596 Aufrufe
    BobbyB
    @braindead Hast du vielleicht ein kleines Tutorial wie der Adapter zu benutzen ist? Die Verbindung habe ich bereits hinbekommen, heißt der Adapter steht komplett auf grün. Allerdings habe ich keine Ahnung wie ich Daten zwischen Firebase und meinen Objecten synchronisiere. Grüße
  • Script erwartet String statt Boolean

    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    AlCalzoneA
    @ralle1 sagte in Script erwartet String statt Boolean: Er liefert beim Drücken den Wert von 1002 und beim Loslassen dann wieder den Ursprungswert 0. Dann setz den Auslöser am besten auf ist 1002, statt "wurde geändert"
  • [gelöst] Status Trigger für Homeconnect Adapter

    11
    1
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    T
    @Claus1985 Sagmal, wenn das Gerät im Fernstart ist, welches Objekt muss ich denn steuern damit das programm startet? Reicht es diesen dann einfach auf "true" zu setzen?
  • Termine mit Vorlauf über Alexa ansagen

    4
    0 Stimmen
    4 Beiträge
    292 Aufrufe
    amg_666A
    @liv-in-sky Hey, vielen Dank für das Skript, bin erst heute dazu gekommen damit etwas rumzuspielen. Ich muss da natürlich noch diverse Anpassungen machen aber vom Grundsatz her passt das. Danke auch im Namen meiner Faulheit :-)
  • Codeschnipsel - Datei löschen auf Synology

    javascript
    13
    0 Stimmen
    13 Beiträge
    466 Aufrufe
    liv-in-skyL
    @bahnuhr bei mir funktioniert das auf der console: curl -v -u user:passwort ftp://192.168.178.1/test/filmstatus.txt -Q '-DELE filmstatus.txt'
  • Mit Datenpunkt zählen

    2
    1
    0 Stimmen
    2 Beiträge
    250 Aufrufe
    paul53P
    @bodo-krollpfeiffer sagte: Kann mir da BITTE jemand mal auf die Sprünge helfen? Das liegt an der asynchronen Abarbeitung von "steuere": Wenn der Wert erneut eingelesen wird, ist "steuere" noch nicht fertig. Deshalb verwendet man Variablen. [image: 1631264680397-bild_2021-09-10_110439.png] Spoiler <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="j(#`e^fJSfCBuPqf~uuU">fu</variable> </variables> <block type="on_ext" id="F)y(oPeAFI(Xn(XJXdfU" x="88" y="-512"> <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="`rI#4#iDM}_*Kh@RwtVh"> <field name="oid">0_userdata.0.Gartensteuerung.Hauptventil</field> </shadow> </value> <statement name="STATEMENT"> <block type="update" id=";/$hyF!RSJLXos**LWUR"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Frequenzumrichter-läuft</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="on_source" id="|^yF0d=dVnQ(7una2qd8"> <field name="ATTR">state.val</field> </block> </value> <next> <block type="controls_if" id="O:g4U2T;~B8jsTKC2zoh"> <mutation else="1"></mutation> <value name="IF0"> <block type="on_source" id="yq4(^Mw%3~W?j*16Svim"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="request" id="SoV|5q,dWw?%eYO|FI(0"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="URL"> <shadow type="text" id="U0*};h%}s]iSz|:IWt,y"> <field name="TEXT">text</field> </shadow> <block type="text" id="m8=qo~0a9M#/0g+ya9)s"> <field name="TEXT">http://192.168.188.158/control?cmd=gpio,5,1</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="request" id="YNK9Z[vzd6}I{CF#sd2k"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="URL"> <shadow type="text" id="L8(U4;^ayR*aW)s%]hfF"> <field name="TEXT">text</field> </shadow> <block type="text" id="df8E1ZxO!S-,XBTS@}Af"> <field name="TEXT">http://192.168.188.158/control?cmd=gpio,5,0</field> </block> </value> <next> <block type="variables_set" id="B1AIs:[TWUt0(cw?cL3p"> <field name="VAR" id="j(#`e^fJSfCBuPqf~uuU">fu</field> <value name="VALUE"> <block type="get_value" id="32{lye0+$,NoKJa-64S6"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Frequenzumrichter-Anforderung.50-Hz-Anforderung</field> </block> </value> <next> <block type="math_change" id="@:dSMzu;+JzX^=3C=qB9"> <field name="VAR" id="j(#`e^fJSfCBuPqf~uuU">fu</field> <value name="DELTA"> <shadow type="math_number" id="6c9DuSUj)OoonqI~w$kz"> <field name="NUM">1</field> </shadow> </value> <next> <block type="update" id="8!JhHNeK`3{s=Iu(dP@]"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.Frequenzumrichter-Anforderung.50-Hz-Anforderung</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"> <block type="variables_get" id="{+wD1#/A66t/D}!vIm{!"> <field name="VAR" id="j(#`e^fJSfCBuPqf~uuU">fu</field> </block> </value> <next> <block type="math_change" id="4g^!,6]GK,yiu^[5?fQf"> <field name="VAR" id="j(#`e^fJSfCBuPqf~uuU">fu</field> <value name="DELTA"> <shadow type="math_number" id="ZRa?6Gc?HlC%dF1S;4tg"> <field name="NUM">-1</field> </shadow> </value> <next> <block type="update" id="jlc7ZQ[Pa|9`DvS3Qc=|"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">0_userdata.0.Frequenzumrichter-Anforderung.50-Hz-Anforderung</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">TRUE</field> <value name="VALUE"> <block type="variables_get" id="gsXt[D4[.v`S9}/Y20J6"> <field name="VAR" id="j(#`e^fJSfCBuPqf~uuU">fu</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </xml>
  • Versteckten Trigger lokalisieren...

    9
    0 Stimmen
    9 Beiträge
    666 Aufrufe
    W
    @radi Hatte ich doch oben schon geschrieben und wurde von @reini84 aber ausgeschlossen. Gruß, Jürgen
  • Blockly-Request scheitert an Synology-Webhook

    blockly javascript
    3
    3
    0 Stimmen
    3 Beiträge
    512 Aufrufe
    B
    @karstent huch, dass hier tatsächlich noch jemand antwortet – ich hatte das Forum schon abgeschrieben😅. Ja, in der FB-Gruppe wurde mir auch schon in diese Richtung ein Hinweis gegeben. Nach Wechsel von https auf http und von Port 5001 auf 5000 funktionierte es bei mir! Danke für Deinen Hinweis aber auf alle Fälle
  • Blockly Sonnenaufgang minus 1 Std. berechnen

    5
    2
    0 Stimmen
    5 Beiträge
    653 Aufrufe
    M
    @paul53 Mega... hat direkt geklappt. Wäre ich nie drauf gekommen. Wieder was dazugelernt! Vielen Dank!

589

Online

32.8k

Benutzer

82.8k

Themen

1.3m

Beiträge