Weiter zum Inhalt

Skripten / Logik

16.7k Themen 216.0k 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
    Murphy 0M
    @daniel-8 Ich habe letzten Winter sehr gute Erfahrung mit meinem Wintermodus gemacht. Mein Blockly stoppe das Entladen so lange bis der Akku voll ist. Dann startet Abends das Entladen nach Bedarf bis runter auf 50% oder minVolt <3.20 Volt - je nachdem was zuerst eintritt. Dann stoppe ich das Entladen und lade wieder so lange bis der Akku wieder voll ist. Mit meinen 2 kwp Solarmodulen und 3,9 kw Speicher wird der Speicher im Winter 1 bis 2 mal die Woche voll. Im Dez und Jan kann es auch mal fast 2 Wochen dauern. Wichtig dazu, mein Speicher steht das ganze Jahr im Keller. So passen die Eckwerte für mich perfekt.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    D
    @bullemausberlin ich denke Du hast alles richtig eingebaut. Es liegt vermutlich daran dass Dein Gerät im Json einen anderen Aufbau hat und daher die Reihenfolge der Values angepasst werden muss. Das war es z.B. bei mir. Mit diesen Anpassungen hat es dann funktioniert. Damit du es testen kannst musst du einen wert im Json ändern damit das Skript überhaupt wieder läuft [image: 1786786935571-c72ebed5-1fa5-429c-8268-7634d479d031-image.jpeg] Du siehst in meinem Fall war es 3.value und 3.target für die Temperatur und 2.value für superfrost. Sonst schick doch mal ein Bild von Deinem Json dann kann man das genau sagen.
  • Hilfe für Skripterstellung mit Node-RED

    964 13k
    964 Themen
    13k Beiträge
    P
    Statt des Screenshots am besten den Node-Red-Export hier in Code-Tags posten. Dann kann man sehen, ob man helfen kann.
  • 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
    881 Aufrufe
    Niemand hat geantwortet
  • [Erledigt]Hilfe Javascript Wert aus Alexa in SV schreiben

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    587 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
    1k 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
    8k 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
    3k 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
    674 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
    700 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
    2k 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.
  • Wie kann ich mit Blockly Variablen Ansagen lassen?

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    3k Aufrufe
    DutchmanD
    @Sven2013: Allerdings geht eins bei mir nicht. Ich kann kein Json Objekt mitschicken. Also Einträge aus ICal lassen sich so nicht verschicken. Weißt du ob ich diese irgenwie in "lesbares wandeln" kann? ` Kein dir ein beispiel geben wie ich einen MQTT JSON query auslese und die werte in variablen und log schreibe. Input MQTT: { "Battery" : 255, "RSSI" : 7, "dtype" : "Lighting 2", "id" : "14879AA", "idx" : 2, "name" : "Deurbel_Voor", "nvalue" : 1, "stype" : "AC", "svalue1" : "OFF", "switchType" : "Doorbell", "unit" : 1} Hieraus hohle ich mir die werte | val | name | und schreibe sie in variabelen + log: //Read value at update on MQTT trigger on({id: RegExp("javascript.0.domoticz."), change: "any"}, function (obj) { var name = obj.name; var value = (getState(id).val); log (value); log (name); // log("request: " + 'http://192.168.1.134:8084/json.htm?type=command¶m=switchlight&idx=7&switchcmd=On'); }); Resultat: 20:38:41.433 [info] javascript.0 script.js.common.Domoticz_Switch: 1 20:38:41.433 [info] javascript.0 script.js.common.Domoticz_Switch: Domoticz Deurbel_Voor Vielleicht hilft das ? :)
  • Übersetzung true/false

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    1k Aufrufe
    0
    durch Zufall gefunden : http://forum.iobroker.net/viewtopic.php … it=chat_ID sendTo('telegram.0', { text: 'Testnachricht empfangen.', chatId: '227174xxx', }); gruß

410

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge