Skip to content

Skripten / Logik

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

16.4k Themen 211.8k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    J
    Ich habe den Adapter (V1.6.2) auch installiert und habe den gleichen Fehler (Adapter an sich funktioniert. Eingetragene IP-Adresse wird in den Objekten (Ping.0.ipadresse) aktualisiert, Ping per JS (sendTo) wie in der Beschreibung angegeben ergibt Result: {"error":"timeout"} -> funktioniert also nach wie vor nicht. Der Issue wie in https://github.com/ioBroker/ioBroker.ping/issues/93 scheint bisher nicht gelöst worden zu sein. Hat jemand eine Idee wie ich anders einen Ping absetzten kann um die Erreichbarkeit eines Servers zu verifizieren ? Ich möchte jeweils Eventgesteuert herausfinden ob a) die Fritzbox noch lebt und b) eine Verbindung nach aussen exestiert (ping auf externe Adresse, z.B. www.google.de) Die Zeitintervalle des Adapters interesieren mich dabei nicht und könnten auch auf undendlich gestellt, bzw unter Geräte gelöscht werden. Vielen Dank für eure Hilfe
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    paul53P
    @13patrick37 sagte: Kann ich das hier wieder über timeout lösen? Wozu timeout? Damit bei Helligkeitswerten > 200 nicht laufend gesendet wird, würde ich noch prüfen, ob das Licht an ist: [image: 1764704098952-blockly_temp.jpg]
  • 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
  • Blockly keine Auswahl

    Verschoben
    2
    1
    0 Stimmen
    2 Beiträge
    566 Aufrufe
    juergen2908J
    Hat sich erledigt, lag am Browser (IE) @juergen2908: Grüß Euch, wollte heute Blockly ausprobieren. Leider habe ich keine Auswahl. iobroker läuft auf einer pi 2b. was fehlt mir da? Bitte um Hilfe LG Jürgen `
  • Milight hack per Serialport über ein script ansprechen

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    640 Aufrufe
    Niemand hat geantwortet
  • Script in einem Widget mit HTTP GET Befehl

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    3k Aufrufe
    hg6806H
    Jetzt geht es halbwegs. Sind immer noch 2 Warnings drin. Wenn ich 2 Schleifendurchgänge einstelle, wird nur um 0,5dB erhöht, bei 4 Durchgängen wird um 1dB erhöht. Irgendwas stimmt da mit der Schleife wohl noch nicht. Mir reicht es aber so, ich werde es einfach so einstellen, dass sich pro Tastendruck um 1,5dB erhöht. Danke nochmals!
  • RunScript / stopScript Problem

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    M
    Hallo, ich habe noch etwas weiter experimentiert und festgestellt, dass man das stopScript nur mit dem reinen Scriptnamen aufrufen darf. Also z.B.: stopScript("Lichtautomatik_Couch"); Dann wird unter Objects das Value = true gesetzt. Zurücksetzen des Value geht aber nicht!? Das ist ja nötig, um das Script erneut vom Button aus starten zu können. Forsche mal weiter… Viele Grüße myiob
  • [gelöst] Anbindung CONRAD Transponder RF-Leser über serialport

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    815 Aufrufe
    Niemand hat geantwortet
  • [Erledigt]Hilfe Javascript Wert aus Alexa in SV schreiben

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    553 Aufrufe
    paul53P
    setStateDelayed(idlautstaerke, x, 1000); // Nach einer Sekunde den Wert in XBMC Volume schreiben
  • Countdown vorzeitig stoppen

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    2k Aufrufe
    D
    Klasse. Funktioniert genau so, wie gewünscht. Vielen, vielen Dank. Gruß, Thorsten
  • Gewerke "durchschleifen"

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    849 Aufrufe
    M
    Ich habe es mir mal rudimentär angesehen und es sieht so aus, als wäre es eine machbare Aufgabe, aber man müsste sich einarbeiten. Für mich ist leider der Januar die reinste Einarbeitungshölle geworden und da passe ich auf die Schnelle, aber ohne eine solche Listenfunktion kann ich viele Skripte nicht portieren .. mal sehen, was mir da noch einfällt. Zum Glück sind Blockly und iobroker.JavaScript gut dokumentiert.
  • SayIt - Ausgabe bei Wetterwarnung (DWD)

    Verschoben
    40
    0 Stimmen
    40 Beiträge
    6k Aufrufe
    N
    Hi, welche Ursache könnte es haben, dass bei diesem Skript die eigentliche Meldung (also idDWD) nicht mit ausgegeben wird obwohl sie in den Datenpunkten vorhanden ist. Irgendwie sehe ich den Wald vor lauter Bäumen nicht….. var Severity = "dwd.0.warning.severity"/*Warning severity*/; var request = require("request"); var ansage2 = "Eine bestehende Wetterwarnung wurde aufgehoben." ; on(Severity, function (obj) { if (obj.newState.val !==0) { var idDWD = getState("dwd.0.warning.description"/*Warning description*/).val; var Begin = getState("dwd.0.warning.begin"/*Warning begin*/).val; var End = getState("dwd.0.warning.end"/*Warning end*/).val; Url = "http://192.168.178.58:50000/tts=Der Deutsche Wetterdienst meldet." + idDWD ; request(Url); } if (obj.newState.val === 0) { Url = "http://192.168.178.58:50000/tts=" + ansage2 ; request(Url); } }); Danke für die Unterstützung. Gruß Thomas
  • XML Ausgabe parsen - DENON

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    2k Aufrufe
    B
    Mahlzeit, keine Ahnung ob das der eleganteste Weg ist, aber über den Weg JSON Objekt - bearbeiten - Array einlesen komme ich jetzt an die Werte: var link = 'http://IPdesAVR/goform/formMainZone_MainZoneXmlStatusLite.xml'; var request = require('request'); var parseString = require('xml2js').parseString; function datenlesen() { request(link, function (error, response, body) { var xml, result; parseString(body, function (err, result) { log("XML Objekt: " + result); xml = JSON.stringify(result); log("XML Objekt: " + xml); xml=replaceAll(xml,'[',''); xml=replaceAll(xml,']',''); xml=JSON.parse(xml); log ("Power: " + xml.item.Power.value); log ("Input: " + xml.item.InputFuncSelect.value); log ("Volume: " + xml.item.MasterVolume.value); log ("Mute: " + xml.item.Mute.value); }); }); // Ende request } datenlesen(); function replaceAll(string, token, newtoken) { if(token!=newtoken) while(string.indexOf(token) > -1) { string = string.replace(token, newtoken); } return string; } Das ergibt: 13:44:34.573 [info] javascript.0 script.js.##_Denon: XML Objekt: {"item":{"Power":[{"value":["OFF"]}],"InputFuncSelect":[{"value":["Favorites"]}],"VolumeDisplay":[{"value":["Absolute"]}],"MasterVolume":[{"value":["-60.0"]}],"Mute":[{"value":["off"]}]}} 13:44:34.573 [info] javascript.0 script.js.##_Denon: Power: OFF 13:44:34.573 [info] javascript.0 script.js.##_Denon: Input: Favorites 13:44:34.573 [info] javascript.0 script.js.##_Denon: Volume: -60.0 13:44:34.573 [info] javascript.0 script.js.##_Denon: Mute: off Und ich kann es weiter verarbeiten… Danke. Grüße Brati
  • Ansage für Waschmaschiene

    Verschoben Gelöst javascript blockly
    10
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    S
    @paul53: Ein kurzes Script mit Ausgabe auf den Sayit-Adapter: var idSayIt = "sayit.0.tts.text"; // Wert 5 und ID anpassen ! on({id: "hm-rpc.0.NEQ1234567.2.POWER", valLt: 5, oldValGe: 5}, function() { setState(idSayIt, "Waschmaschine ist fertig"); }); ```` ` paul53, könntest du bitte auch mal ein Scriptbeispiel für die Ausgabe einer mp3-Datei posten ?
  • Ping - Gerät online in Stunden

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    S
    Man könnte doch auch ein Script schreiben in dem die Zeit gespeichert wird wann der erste Ping statt gefunden hat, somit hätte man die Startzeit und dann könnte man an den nachfolgenden Ping's ausrechnen wie lang der PCs schon an ist! Oder man führt ein Script als autostart beim anmelden aus! In dem zB die Startzeit per simple API in ioBroker gesetzt wird und so lange der PC an ist kann man mit den Ping's ausrechnen wie lang der PCs schon an ist! Oder besser wäre wenn das Autostart Script in regelmäßigen abständen ein Heartbeat absenden würde! Gruß Adrian Gesendet von iPhone mit Tapatalk Pro
  • Verarbeitung von CaCrosse Sensoren TX29DTH

    Verschoben
    15
    1
    0 Stimmen
    15 Beiträge
    2k Aufrufe
    S
    @DerUwe: @simpixo: Wenn das der Adapter vom KleinenDrachen ist, der speichert die Sensordaten unter seiner ID ab, richtig? Also sowas wie Lacrosse_65_xxxx Das wollte ich ja nicht! Wenn ich die Batterien wechsel, will ich nicht immer das Projekt umbauen. Deshalb kann ich jetzt über die VIS den Räumen die neue Addresse mitteilen. ` Ja Beim Batteriewechsel muss ich auch die ID in meinen Script ändern, aber nur an einer Stelle! Da historisiere ich auch die ganzen Daten! Das LaCrosse Objekt interessiert mich in der Hinsicht ja nicht! Also ist es fast genauso wie bei dir! Ich weise sozusagen die ID einem Raum zu [emoji1360] Gruß Adrian Gesendet von iPhone mit Tapatalk Pro
  • Script Umsetzung für das "Badewannen"-Prinzip

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    3k Aufrufe
    etvE
    Servus Pix, danke für die Tipps. Ja es ist wie du schreibst erst sinnvoll bei mehreren Meldern - das ist bei uns im Carport der Fall…jo...Mal weiter durchdenken das Ganze. Jetzt ist es eh viiiiiieeeeelen zu kalt um die Lampen zu montieren :D Liebe Grüße tom
  • Fehlerhafte Javascript Kommentare mit //

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    J
    Ok. In der Anlage noch der ausführliche Fehlerstack im JS. Wer hat den JS Code im Adapter geschrieben, insbesondere den Code in der tab.js->saveScript()? Und: Weiss jemand wo der ausgeführte Code der tab.js im Dateisystem liegt? Die tab.js im node-Modulcode scheint es nicht zu sein. Würde dann nochmal tiefer reingehen und bei mir nach der Ursache suchen. Danke u Gruß Jan 1789_fehler.png
  • DWD -> per Telegram, Sound auf Tablet, View Tablet wechseln, etc.

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    652 Aufrufe
    Niemand hat geantwortet
  • Adapter mit Script ein/ausschalten

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    5k Aufrufe
    Jey CeeJ
    Und die kontrolanzeige läuft außerhalb von iobroker und/oder nicht in javascript? Sonst würde ich direkt die Anzeige als trigger nutzen. Gesendet von meinem m8 mit Tapatalk
  • Blockly Timer Interval

    Verschoben
    9
    1
    0 Stimmen
    9 Beiträge
    4k Aufrufe
    M
    Hallo, es hat tatsächlich an dieser Variable gelegt, in ioBroker wird dadurch auch leider das Blockly Script immer 2 x aufgerufen. erst steht "im Haus" dann nach einiger Zeit "True", das scheint die Probleme gemacht zu haben. Meine Anwesenheit war auch nicht die Originale, ich hatte sie auch umbenannt wegen HM Scripte ausführen bei CCU Neustart. Es ist also eine reine "BOOL" Variable und keine Werteliste oder ähnliches, in Homematic funktioniert das alles wunderbar. Im HM rega Adapter sieht das aber wie folgt aus, wollte auch nichts ändern, da ich die Befürchtung habe das bei Neu Synchronisation das wieder überschrieben wird. [image: 670_variable.jpg] Ich hoffe das es jetzt gelöst ist, habe einfach auf "TRUE" oder Text "im Haus" abgefragt. Schwierige Geburt, vielen Dank für die Hilfe hier im Forum. Lg Mike
  • Telegram: Reihenfolge der empfangenen Nachrichten stimmt nicht

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    607 Aufrufe
    bahnuhrB
    Also, ich bekomms nicht hin. Könnte ihr doch nochmal mein Script im Beitrag 1 vorher anschauen. mfg Dieter
  • Blockly…. ich versteh es nicht :-(

    Verschoben
    13
    1
    0 Stimmen
    13 Beiträge
    1k Aufrufe
    wendy2702W
    Guten Morgen zusammen, habe mich heute mal weiter mit Blockly beschäftigt. Habe mir das für die Ansage jetzt erstmal so gebastelt: Blockly: ! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml"> ! <block type="comment" id="0#2N9{f1qzS.?aQjyF^t" x="62" y="6"><field name="COMMENT">Ansage Wetter Warnung</field> ! <next><block type="on" id="{(/0/XswO#kI,[z2]L"><field name="OID">dwd.0.warning.description</field> ! <field name="CONDITION">ne</field> ! <statement name="STATEMENT"><block type="comment" id="lQLZ-.DmLp46gH#A(:"><field name="COMMENT">Ansage in Zeitraum</field> ! <next><block type="debug" id="yqjq:JM+5|2Rr9_~1S!n"><field name="Severity">log</field> ! <value name="TEXT"><shadow type="text" id="rPI@5!j.egewYu#x7o5Q"><field name="TEXT">Änderung Wetterwarnung</field></shadow></value> ! <next><block type="controls_if" id="@K{38@g4[,lRQVs1eSY*"><value name="IF0"><block type="time_compare_ex" id="Q0%APiD4]sG/K=O/XBc"><mutation end_time="true" actual_time="true"></mutation> ! <field name="USE_ACTUAL_TIME">TRUE</field> ! <field name="OPTION">between</field> ! <value name="START_TIME"><shadow type="text" id="hD]^-0=mMS5T{5B|u~s^"><field name="TEXT">09:00</field></shadow></value> ! <value name="END_TIME"><shadow type="text" id="2,#Yrkh|9-j[8)|7S)3K"><field name="TEXT">23:00</field></shadow></value></block></value> ! <statement name="DO0"><block type="debug" id=":y3?1.vBaGiqvENrj8p"><field name="Severity">log</field> ! <value name="TEXT"><shadow type="text" id="f^)TeKU?Q!3_.Ej[6ivs"><field name="TEXT">IPAD AN</field></shadow></value> ! <next><block type="control" id="{WnshUZH-i@6Lg38CD3}"><mutation delay_input="false"></mutation> ! <field name="OID">hm-rpc.0.MEQ0201401.1.STATE</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="m6G%H?[!JtBqzsl7!Hu9"><field name="BOOL">TRUE</field></block></value> ! <next><block type="comment" id="~O]]/P%WI{x;TV.hfLc"><field name="COMMENT">Ansage mit Verzögerung</field> ! <next><block type="timeouts_settimeout" id="~T[e.?@YO)jp;c(|;!?"><field name="NAME">timeout</field> ! <field name="DELAY">2000</field> ! <statement name="STATEMENT"><block type="sayit" id="J)T;J+yr},36p,wbCt3Y"><field name="INSTANCE">.1</field> ! <field name="LANGUAGE">de</field> ! <field name="LOG">debug</field> ! <value name="VOLUME"><block type="variables_get" id="lhbkT^B0:wfs~!^pa)q"><field name="VAR">100</field></block></value> ! <value name="MESSAGE"><shadow type="text" id="o{T4nu,J5miCy=WGyjm?"><field name="TEXT">Test</field></shadow> ! <block type="text_join" id=";u-JOA:L:Mbn-10BCYB"><mutation items="6"></mutation> ! <value name="ADD0"><block type="get_value" id="}Q!.?u,~ekR_U+eKmj2"><field name="ATTR">val</field> ! <field name="OID">dwd.0.warning.headline</field></block></value> ! <value name="ADD1"><block type="text" id="ZS/3]BbZR:Q)imJ0IwP-"><field name="TEXT">Von</field></block></value> ! <value name="ADD2"><block type="get_value" id="dlgKvcKmC}I9PM)T.Ycd"><field name="ATTR">val</field> ! <field name="OID">dwd.0.warning.begin</field></block></value> ! <value name="ADD3"><block type="text" id="T-%]nCUX:Qq(SnHAyO@2"><field name="TEXT">bis</field></block></value> ! <value name="ADD4"><block type="get_value" id="-.;_F()4hAP29[:x,sSE"><field name="ATTR">val</field> ! <field name="OID">dwd.0.warning.end</field></block></value> ! <value name="ADD5"><block type="get_value" id="w;c:G:2=V+}+8iP4(6x"><field name="ATTR">val</field> ! <field name="OID">dwd.0.warning.description</field></block></value></block></value></block></statement> ! <next><block type="debug" id="zp7aG:e4YZ4v)o1(oP"><field name="Severity">log</field> ! <value name="TEXT"><shadow type="text" id=";GIT][`[Hnfi#{((;)Vu"><field name="TEXT">IPAD aus nach 30 Sekunden</field></shadow></value> ! <next><block type="control" id="n=zNe6R.0_(QoGKI+DNu"><mutation delay_input="true"></mutation> ! <field name="OID">hm-rpc.0.MEQ0201401.1.STATE</field> ! <field name="WITH_DELAY">TRUE</field> ! <field name="DELAY_MS">30000</field> ! <field name="CLEAR_RUNNING">FALSE</field> ! <value name="VALUE"><block type="logic_boolean" id="J:+ZU*3h^KFb-6g,LMk+"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></statement></block></next></block></xml> Javascript Code: ! var my_100, timeout; ! // Ansage Wetter Warnung ! on({id: "dwd.0.warning.description"/Warning description/, change: "ne"}, function (obj) { ! var value = obj.state.val; ! var oldValue = obj.oldState.val; ! // Ansage in Zeitraum ! console.log('Änderung Wetterwarnung'); ! if (compareTime('09:00', '23:00', "between", null)) { ! console.log('IPAD AN'); ! setState("hm-rpc.0.MEQ0201401.1.STATE"/HM-Dis-TD-T MEQ0201401:1.STATE/, true); ! // Ansage mit Verzögerung ! timeout = setTimeout(function () { ! setState("sayit.1.tts.text", "de;my_100;" + ([getState("dwd.0.warning.headline").val,'Von',getState("dwd.0.warning.begin").val,'bis',getState("dwd.0.warning.end").val,getState("dwd.0.warning.description").val].join(''))); ! console.debug("sayIt[de][Volume - my_100]: " + ([getState("dwd.0.warning.headline").val,'Von',getState("dwd.0.warning.begin").val,'bis',getState("dwd.0.warning.end").val,getState("dwd.0.warning.description").val].join(''))); ! }, 2000); ! console.log('IPAD aus nach 30 Sekunden'); ! setStateDelayed("hm-rpc.0.MEQ0201401.1.STATE"/HM-Dis-TD-T MEQ0201401:1.STATE/, false, 30000, false); ! } ! }); Allerdings bekomme ich keine Ansage sondern diesen Fehler im Log: sayit.1 2017-01-07 10:24:27.784 error Cannot get file: received file is too short sayit.1 2017-01-07 10:24:27.698 info saying: Amtliche WARNUNG vor LEICHTEM SCHNEEFALLVon07.01.2017 06:00bis07.01.2017 14:00 Sayit ist so befüllt: de;my_100;Amtliche WARNUNG vor LEICHTEM SCHNEEFALLVon07.01.2017 06:00bis07.01.2017 14:00 Sayit nutzt IVONA und wenn ich den Text ohne "de;" und ohne "my_" absende funktioniert es. Ist das jetzt ein Fehler von dem Blockly Modul oder von SayIt? EDIT: Das "my_" habe ich wegbekommen. Da hatte ich etwas falsches ausgewählt. Allerdings kommt immer noch das "de;" mit und sobald ich das absende funktioniert es nicht.

896

Online

32.4k

Benutzer

81.5k

Themen

1.3m

Beiträge