Skip to content

Skripten / Logik

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

16.5k Themen 213.4k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    P
    @ArnoD sagte in E3DC Hauskraftwerk steuern: @azzkikrboy Hierfür brauchst du den Adapter ‚Energiefluss-erweitert‘. Damit lässt sich der Energiefluss richtig schick grafisch darstellen. Die Konfiguration ist zwar etwas zeitaufwendig, aber die Mühe lohnt sich definitiv für das Design! ;) [image: 1770554279240-video-project.gif] Sieht sehr gut aus, hab ich bei mir auch mal ausprobiert. Leider funktioniert das nicht mit der Android VIS-App. Lösung wäre nur der Kiosk Browser aber das ist mir zu umständlich. Schade :-(
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    S
    @MCU Vielen Dank für diesen wichtigen Tip. Ich bin dann zusätzlich noch von RGB auf xy umgestiegen, weil Hue damit nativ arbeitet. Durch deinen Hinweis konnte ich das Blitzen vermeiden, die jetzt überflüssige Szene löschen und vor allen Dingen meine sonstigen Skripte massiv ausdünnen. Top !
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • [Frage] Einfaches Script verursacht JS Absturz - Warum

    Verschoben
    30
    0 Stimmen
    30 Beiträge
    5k Aufrufe
    B
    Hi, ich habe für mich eine Lösung gefunden. Ich habe den Ping Adapter installiert und frage die Erreichbarkeit des Gerätes ab. [image: 654_unbenannt.png] Gruß Lars
  • [Problem] javascript stürzt bei request() ab

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    2k Aufrufe
    MeistertrM
    @ein-bayer: Hallo Meistertr, hast du es mitlerweile hinbekommen? Habe auch Hyperion am laufen und würde es gern per vis Befehl aus bzw einschalten. Könntest du mir kurz erklären wie du Hyperion angesprochen hast? ` Ja nach langem probieren hat es geklappt hier mein script: ! ```` // Zum Ansteuern von Hyperion // Copyright by Meistertr //Version 0.2 ! createState('ambipi.on', false); createState('ambipi.clear', false); createState('ambipi.color'); createState('ambipi.tvmode',true); createState('ambipi.effects'); createState('ambipi.sel_effect'); ! var logging = true; var ip = "ambipi"; //hier die IP oder den Hostname var port = 19444; // Port vin Hyperion nicht ändern var onByOther = false; ! var eff = "Cinema brighten lights;Cinema dim lights;Knight rider;Blue mood blobs;Cold mood blobs;Full color mood blobs;Red mood blobs;Green mood blobs;Warm mood blobs;Police Lights Single;Police Lights Solid;Rainbow mood;Rainbow swirl fast;Rainbow swirl;Running dots;System Shutdown;Snake;Sparks Color;Sparks;X-Mas"; ! setState("javascript.0.ambipi.effects",eff); ! var net = require('net'); ! function sendMessage(message) { var client = net.connect({host:ip, port: port}, function () { ! if(logging)console.log('connected to server!'); try{ client.write(message); }catch(e){ console.log("Konnte Wert nicht an Ambipi senden, Fehler: " + e); } }); } ! subscribe({id:"javascript.0.ambipi.color"}, function (obj) { if (obj.newState.val != obj.oldState.val){ onByOther=true; var r = parseInt(obj.newState.val.substr(1, 2), 16); var g = parseInt(obj.newState.val.substr(3, 2), 16); var b = parseInt(obj.newState.val.substr(5, 2), 16); console.log(r +" "+g+ " "+b); if(logging) log(" Ambipi: Die Farbe wurde auf "+ r + g + b + " gesetzt" ); sendMessage('{ "color": ['+ r +','+ g +','+ b +'], "command": "color", "priority": 100 }\r\n'); if(obj.newState.val !== "#000000")setState("javascript.0.ambipi.on", true); } ! }); ! subscribe({id:"javascript.0.ambipi.on"}, function (obj) { if (obj.newState.val === true && onByOther === false){ turnON(true); } else if(obj.newState.val === false){ turnON(false); } ! }); ! subscribe({id:"javascript.0.ambipi.sel_effect", valNe:""}, function (obj) { if (obj.newState.val !== obj.oldState.val) { onByOther= true; sendMessage('{ "command": "effect", "effect": {"name": "'+ obj.newState.val +'"}, "priority": 100 }\r\n'); if(logging) log(" Ambipi: Ambipi auf Effect " + obj.newState.val + " geschaltet" ); setState("javascript.0.ambipi.on", true); ! } else { ! } }); ! subscribe({id:"javascript.0.ambipi.clear", value:true}, function (obj) { if (obj.newState.val ===true && getState("javascript.0.ambipi.on").val ){ sendMessage('{"command": "clear", "priority": 100 }\r\n'); if(logging) log(" Ambipi: Set to default" ); setState("javascript.0.ambipi.sel_effect",""); } }); ! subscribe({id:"hm-rpc.1.CUX2803003.1.STATE"/TV:1.STATE/}, function (obj) { if (obj.newState.val ===true){ ! setState("javascript.0.ambipi.on", true); turnON (true); if(logging) log(" Ambipi: wurder durch TV eingeschaltet" ); } if (obj.newState.val ===false){ turnON (false); setState("javascript.0.ambipi.on", false); if(logging) log(" Ambipi: wurder durch TV ausgeschaltet" ); } }); ! function turnON (param){ if (param === true) { sendMessage('{"command": "clear", "priority": 100 }\r\n'); if(logging) log(" Ambipi: Ambipi wurde angeschaltet" ); } else { sendMessage('{ "color": [0,0,0], "command": "color", "priority": 100 }\r\n'); if(logging) log(" Ambipi: Ambipi wurde abgeschaltet" ); setState("javascript.0.ambipi.sel_effect",""); onByOther=false; ! } } ! ````
  • Sayit-Adapter sayit.N.tts.cachetext in Blockly nicht verfuegbar?

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    609 Aufrufe
    Niemand hat geantwortet
  • Datenpunkt berechnen

    Verschoben
    70
    1
    0 Stimmen
    70 Beiträge
    15k Aufrufe
    HomoranH
    Ich muss diesen Thread mal wieder nach oben holen. Mein Wechselrichter war ausgefallen/defekt und da dieser Flow ständig Ergebnisse lieferte, die ich nicht gebrauchen konnte, hatte ich ihn gelöscht, ohne zu wissen, dass da per mqtt alle anderen Rechner dranhingen :( Shit happens- Jetzt habe ich einen neuen WR, der aber mit der neuen Firmware (5.4) ausgestattet ist. Auch wenn @Paul53 dazu bereits in einem anderen Thread eine js-Lösung vorgestellt hat, möchte ich es nochmal mit node-red versuchen. Wenn ich jetzt per hhtp-request aufrufe: http://<ip>/api/dxs.json?dxsEntries=33556736&dxsEntries=33555203&dxsEntries=33555459&dxsEntries=67109120</ip> erhalte ich im Browser: {"dxsEntries":[{"dxsId":33556736,"value":1853.714966},{"dxsId":33555203,"value":886.787903},{"dxsId":33555459,"value":966.926941},{"dxsId":67109120,"value":1738.264160}],"session":{"sessionId":0,"roleId":0},"status":{"code":0}} auf rexex101.com erhalte ich ein Array mit den Werten über value":(\d+.\d+) wenn ich einen xml-node benutze erhalte ich wenn ich das richtig interpretiere, die Ergebnisse schön aufgelistet. "<root><dxsentries><dxsid>33556736</dxsid><value>1154.386597</value></dxsentries><dxsentries><dxsid>33555203</dxsid><value>546.535339</value></dxsentries><dxsentries><dxsid>33555459</dxsid><value>607.851196</value></dxsentries><dxsentries><dxsid>67109120</dxsid><value>1081.819824</value></dxsentries><session><sessionid>0</sessionid><roleid>0</roleid></session><status>`0`</status></root>" jetzt will ich nur noch die Werte zwischen <value>…</value> auf verschiedene DPs ausgeben, bekomme es aber ums verrecken nicht mehr hin diese Ausgabe zu splitten. Nehme ich statt dessen einen json-node erhalte ich: msg.payload : Object { dxsEntries: array[4], session: object, status: object } nur an den Inhalt des Arrays komme ich nicht :( Sorry Rainer
  • Hat sich erledigt - bitte loeschen

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    501 Aufrufe
    Niemand hat geantwortet
  • Ausschalttimer Restzeit [Blockly]

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    3k Aufrufe
    DutchmanD
    @Schubi: Okay - ja ich hab die Logik noch nicht so recht verstanden. Meinst du diesen Beitrag: http://forum.iobroker.net/viewtopic.php … =40#p63514 Ich werde mir das morgen genauer ansehen - jetzt mach ich mal Schluss für Heute. Danke schon mal für den Hinweis. ` genau :), musst halt nur die zeiten anpassen und ein bisschen rumspielen bis es passt aber die basis steht da. und wen es nicht weitergeht einfach wieder fragen dafuer ist das forum ja da ! :)
  • Objekttyp Button per Script ändern

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    976 Aufrufe
    AlCalzoneA
    @0018: wie kann ich ein Objekttyp "Button" welche vom Harmony Hub angelegt werden, per Script ändern? Funtioniert dieses genauso wie bei Typ boolean mit setState(Objekt, Wert) ? ` Willst du den Typ des Objekts ändern oder den Wert? Letzteres geht mit setState(id, true) Im Prinzip kennt ein Button nur true als Wert und wird betätigt bei Aktualisierung des Werts.
  • Math.abs() in Script / Funktion

    Verschoben
    7
    1
    0 Stimmen
    7 Beiträge
    2k Aufrufe
    R
    > Erwartest du negative Zahlen? Dann brauchst du es, sonst nicht. Nein in meinem Fall erwarte ich sie nicht. Konkret geht es um eine uptime Formatierung. Da reicht parseInt() oder Math.floor(). Ich habe eher gedacht, es gibt eine integer() Funktion und ich find sie bloß nicht. Habs jetzt so gelöst: //hours var h = Math.floor(msg.payload.uptime/3600) ; //rest minutes var mm = msg.payload.uptime % 3600 //minutes var m = Math.floor(mm/60); //seconds var s = (mm % 60); //uptime as string msg.payload = "uptime: " + h + " h " + m + "min " + s + "sec"; return msg; Weis zwar nicht ob es optimalere Lösungen gibt, aber tut erst mal;-)
  • [gelöst]Briefkasten Abfrage Code vereinfachen

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    P
    Hallo Paul, danke für dein Skript. Natürlich kann man die Erkennung des Status in eine extra Funktion packen. Die Verzögerung ist nötig, denn die Sensoren lösen im Fall, dass vor allen ein Brief liegt, nacheinander aus. Der erste nach 1s, der zweite nach 2s, der dritte nach 3s. Daher warte ich 3.5s und lesen dann den Status von allen dreien ein. Schließlich hüpfen die Brief auch nicht so schnell wieder raus :lol: Wenn der Bote eine größere Zeitung einsteckt, wird nur der obere Sensor (TFK1) ausgelöst. Beim kleinen Karten evtl. nur der linke untere oder der rechte untere (2 und 3). Gruß Pix
  • Tr-064 command state für weitere Fritzbox Daten

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    6k Aufrufe
    E
    @Meistertr: da ich auch auf der suche war, hab ich es gerade herausgefunden: {"service": "urn:dslforum-org:service:WANCommonInterfaceConfig:1","action": "GetTotalBytesSent","params": {}} ````lifert das ergebnis ` Kannst du mir sagen wie du die Anfrage machst?
  • Problem mit Konvertierung von Buffer()

    Verschoben
    11
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    N
    Moin, dein Beitrag hat mich zum Umdenken gebracht. Dafür vielen Dank. Nach dem Wechsel von Telnet auf TCP habe ich die Probleme in den Griff bekommen und habe nun die ersten Werte zurückerhalten. Das ist übrigens daraus entstanden: http://forum.iobroker.net/viewtopic.php?f=30&t=8803
  • Hilfe: Variable URL erstellen

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    686 Aufrufe
    AlCalzoneA
    @Zippolighter: Hier erhalte ich nie den Wert sondern nur den String "parser.0.kodi" Kann mir bitte jemand sagen wie ich den Inhalt in die URL bekomme. Stehe da voll auf dem Schlauch ` Na du schreibst ja auch den String da rein und nicht den Inhalt des States: > [http://192.168.1.7:8081/jsonrpc?request … layer.open](http://192.168.1.7:8081/jsonrpc?request=%7B%22jsonrpc%22:%222.0%22,%22method%22:%22player.open)", "params": {"item": {"file":getState("parser.0.kodi").val}}} Keine Garantie dass das 1:1 so funktioniert, da ich nicht weiß, wie du diese URL im Skript zusammensetzt.
  • Licht mit BWM schalten Verz. löschen falls läuft

    Verschoben Gelöst blockly
    13
    1
    0 Stimmen
    13 Beiträge
    4k Aufrufe
    DutchmanD
    @RalfR72: Ok aber stört ja nicht. Danke dir vielmals, denke das Hauptproblem war mit der Ausschaltverz. Nun mit Timeouts. Super schöne Nacht noch. Gesendet von iPhone mit Tapatalk ` Jup nur ich bin faul wenn ich Blöcke/Code sparen kann [emoji13] Good night! –----------------------- Send from mobile device
  • ESP8266 und WS2812 / WS2811 Steuerung MQTT - Gartenbeleuchtung

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    3k Aufrufe
    N
    @Marcolotti: Hallo Kai, wie wäre es damit? https://www.aliexpress.com/item/DC5-12V … .45.y2pej5 und damit: https://www.nodo-shop.nl/en/rflink-gate … tenna.html Gruß Marco ` Kann ich den Controller vollständig in IoBroker steuern?
  • Ausgabe von SayIt umbauen und in anderen Objekt State schreiben

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    N
    Okay, folgender Code hat funktioniert: setState (idSayIt,' " ' + 'Anruf von. ' + rufnummer2name(getState(idAnrufer).val) + ' " '); Vielen Dank, Du hast mir jetzt sehr geholfen. Gruss, Nanouk
  • Array durchlaufen und Inhalt erweitern?

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    567 Aufrufe
    C
    Erledigt :)
  • [gelöst] Daten aus Homewizard - JSON -Datei in iobroker als Geräte mit Status anzeigen

    Verschoben
    27
    0 Stimmen
    27 Beiträge
    6k Aufrufe
    S
    Ganz herzlichen Dank an Paul53 und Lucky! Beide Varianten des Scripts laufen jetzt, wie sie sollen! :D Glücklicherweise habe ich mir die Scripte in Textdateien gesichert - iobroker scheint mir abgeschmiert zu sein. Mal schauen, ob ich das wieder zum Laufen bekomme…
  • Blockly –> Sonnenuntergang soll "aktion" in anderem Script starten

    Verschoben
    2
    1
    0 Stimmen
    2 Beiträge
    895 Aufrufe
    DutchmanD
    functionen und variablen existieren nur im jeweiligen script (aussame von global scripten) Wen du also eine aktion in anderen scripten triggeren moechtest scheib am besten de status in ein object rein und im anderen script triggerst du dan wieder auf diese object changes. Also in deinem beispiel: Blockly script zum schalten der hue variable erstellen (gibt es eine block fuer) Lampe + variable schalten im anderen script diese variable als trigger nemen
  • Fehlerhafte Darstellung im Skripte/Blockly Bereich (GELÖST)

    Verschoben
    3
    2
    0 Stimmen
    3 Beiträge
    582 Aufrufe
    H
    Danke! Durch den Tipp und den Thread habe ich heraus gefunden, das der TextToSpeech-Adapter das ganze ausgelöst hat! Nach der Deinstallation funzt jetzt wieder alles, da ich den sowieso nicht eingesetzt habe, kein Verlust.
  • Camera-Email Script Zeitversetzt starten

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    565 Aufrufe
    I
    @BuZZy: Timeout von 2300 ms setzen. @ianmoone: var idklingel = "hm-rpc.0.KEQ1062555.1.INSTALL_TEST"; on({id:idklingel, change: "any"}, function() { // To send in html format with delay of 2300ms setTimeout(function() { sendTo("email", { html: " Foto Haustür Cam: ![](cid:image1) ", attachments:[{path: "http://user:????@192.168.178.??:???/tmpfs/auto.jpg", cid: "image1"}] }); }, 2300); }); ```` ` Gruß ` Funktioniert Danke!

597

Online

32.6k

Benutzer

82.3k

Themen

1.3m

Beiträge