Skip to content

Skripten / Logik

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

16.6k Topics 214.0k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    RoddiEFR
    Ok dann warte ich lieber und fang eine frische Installation an wenn die neue Version fertig ist. Wäre es möglich beim aktuallisieren vom ersten Beitrag auch die Versionsnummern zu ändern wie schon jemand Vorgeschlagen hatte? Das macht das es einfacher wenn Änderungen anliegen. Thx
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    W
    Hallo zusammen, ich komme leider bei einem Blockly nicht weiter. Es geht um ein JSON, aus dem ich gerne 2 Werte hätte. Ich hätte gerne tempc und tempc2 aus dem JSON in 2 getrennten Datenpunkten. Ich komme leider nicht weiter. Ich dachte ich muss mit der Konvertierung JSON nach Objekt arbeiten. Aber ich weiß nicht weiter. Kann mir jemand helfen? Anbei mein aktuelles Blockly. Es kommt aber nur 0 in den angelegten Datenpunkten an. [image: 1773860401364-9e5ad891-a695-4951-9cd5-59e7eed647f9-image.png] { "id": "1C:B3:B6:15:46:3C", "name": "iBBQ", "rssi": -83, "txpower": 0, "brand": "Inkbird", "model": "iBBQ", "model_id": "IBT-2X(S)", "type": "BBQ", "tempc": 9, "tempf": 48.2, "tempc2": 11, "tempf2": 51.8 }
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    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
  • Button Press CUXD Device(CCU2)

    Moved
    13
    0 Votes
    13 Posts
    763 Views
    J
    Das Gerät (28) kann man nicht als Schalter erstellen. Dieses Gerät ist als "exec", "timer", "multi-dim-exec" und "ping" möglich. Wenn das Gerät als "exec" konfiguriert wurde ist es im Prinzip ein 16-fach-Taster. Der Datenpunkt "State" ist zwar vorhanden, aber kann nicht wie von Dir gewünscht einfach über die WebUI oder App gesetzt werden. Dazu wäre dann wiederum ein Skriptbefehl nötig. Was Du benötigst ist ein Schalter, also ein Gerät das den Status ein/aus annehmen kann und auch so bedient wird. Dazu benötigst Du das Gerät (40) konfiguriert als Schalter (NICHT als Taster). Hiermit kann dann über die WebUI/App der Status ein/aus gesetzt werden. Abgefragt werden muss dann aber der Datenpunkt "state" true/ein und false/aus. Du lagst also von Anfang an richtig mit der Auswahl des Gerätes und hast nur den falschen Datenpunkt abgefragt. Hättest Du gleich genau beschrieben worum es geht und was genau für ein Gerät/Zustand benötigt wird wäre bereits in der ersten Antwort die Lösung enthalten gewesen. Hier mal der Code "wenn Schalter ein, dann Meldung": on({id: "hm-rpc.2.CUX4000002.1.STATE"/*HM-RC-19 CUX4000002:1.STATE*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log('Der Schalter ist eingeschaltet'); });
  • Sql.0 abfrage

    Moved
    4
    0 Votes
    4 Posts
    592 Views
    apollon77A
    Nimm ein Array oder Objekt und füge alle antworten rein. Also mit nem Array ein werte.push(result.result); Und werte ist eine globale Variable. Und am besten hierhin ein check wenn die Länge des werte Arrays so lang wie die Anzahl der datenpunkte ist dann gleichbedeutend „Nachbearbeitung“ machen Gesendet vom Handy …
  • [Erledigt] Datum Monat in ausgeschriebener Form

    Moved
    3
    0 Votes
    3 Posts
    460 Views
    Z
    Danke für den Tipp, habe noch nie mit Arrays gearbeitet, aber es funktioniert. Habe es so gelöst //VorMonat als Namen Date.prototype.getFullMonth = function () { return (["Dezember", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November"])[this.getMonth()]; }; var d = new Date() , vorMonatName = d.getFullMonth(); console.log(vorMonatName); Gruß Zippolighter
  • Wand- und Heizungsthermostat - komme nicht weiter

    Moved
    21
    0 Votes
    21 Posts
    3k Views
    A
    lieben Dank für die Mühe, welche du dir für mich gemacht hast! sind fast exakt meine Settings was habe ich jetzt versucht: script abgeschaltet um als Fehlerquelle auszuschließen webUI, Gruppe -> bedienen -> Temp geändert -> alle drei bekommen Temperatur gesetzt webUI, Raum -> Wandthermostat Temp geändert -> die anderen zwei reagieren nicht irgendwas tut hier quer, da aber die Settings bei dir gleich sind bin ich langsam am verzweifeln
  • Anbindung eines Devices mittels Polling

    Moved
    1
    1
    0 Votes
    1 Posts
    241 Views
    No one has replied
  • [Erledigt] Hilfe IF zum Zahlen Vergleich

    Moved
    6
    0 Votes
    6 Posts
    465 Views
    Z
    Nachdem ich dann endlich auf Euch gehört habe, funktioniert es natürlich auch. Danke für die Hilfe
  • 0 Votes
    2 Posts
    970 Views
    BuZZyB
    Im Abschnitt "Listen" wirst du fündig. :) [image: 3092_screenshot_-_31.08.2018___13_05_40.png] Gruß
  • Problem mit CRONJOB

    Moved
    3
    3
    0 Votes
    3 Posts
    382 Views
    M
    Hallo, vielen dank. Ich habe herausgefunden was diesen Port belegt. Ich habe eine Instanz vom Homematic Manager laufen. Ich habe den jetzt mal gestoppt und die Skripte für die Zeitschaltuhren neu gestartet. Mal schauen, ob sich die Skripte jetzt wieder aufhängen. Grüße Markus
  • Skript Fehler Unterstüzung

    Moved
    1
    0 Votes
    1 Posts
    184 Views
    No one has replied
  • Boolean Verknüpfung

    Moved
    20
    1
    0 Votes
    20 Posts
    3k Views
    R
    Nicht schön, aber auf die Schnelle fällt mir auch nur eine eigene Funktion ein. //splitte string in int-Array let aI = msg.payload.match(/.{1,2}(?=(.{2})+(?!.))|.{1,2}$/g) //split in 2stellige strings .map(x => parseInt(x,16)); //konvertiere HEX strings nach Integer //xor vom inputArray let mustXor = aI[aI.length-1]; //xor aus inputArry entfernen aI.splice(-1, 1); //xor aus inputaary bilden let ifXor = aI.reduce((v, vnext) => v ^ vnext); let fix2 = (x) => ('0'+x).slice(-2); // einstelligen String mit führender Null if (ifXor == mustXor) { //no error node.status({fill:"green",shape:"dot",text:'no error'}) node.send([{payload: fix2(aI[0].toString(16))}, {payload: fix2(aI[1].toString(16))}, {payload: fix2(aI[2].toString(16))}, {payload: fix2(aI[3].toString(16))}, {payload: fix2(aI[4].toString(16))}, {payload: fix2(aI[5].toString(16))}, {payload: fix2(aI[6].toString(16))}, {payload: fix2(mustXor.toString(16))}]); } else { //xor error node.status({fill:"red",shape:"dot",text:'XOR error'}) node.send([null,null,null,null,null,null,null,{payload: 'XOR error'}]); } Jetzt wird an allen Ausgängen ein 2stelliger String ausgegeben. Edit: geht auch etwas kürzer s.o. und diesmal ohne Copy/Paste Fehler –hoffe ich ;-)
  • Script - mihome vacuum - reset all comsumables - hilfe benötigt

    Moved
    2
    4
    0 Votes
    2 Posts
    228 Views
    L
    @ltsalvatore: Hallo zusammen, Ich habe mir ein Script zusammengestellt, welches dafür gedacht ist, in meinem VIS beim drücken des entsprechenden buttons alle consumables des mihome vaccum auf einmal zu resetten. damit das ganze über ein button gesteuert werden kann, habe ich extra ein objekt im iobroker angelegt. vielleicht geht das ganze ja auch mit nem passenden widget, habe ich aber nicht gefunden. wie dem auch sein, das hat mit dem script soweit auch funktioniert gehabt. jedoch habe ich gestern per zufall festgestellt, dass ich dieses script ohne trigger erstellt habe, und somit das script dauerhaft ausgeführt wurde. entsprechend sind die consumable werte permanent auf 100% gesetzt. mit dem davor gesetzten trigger ist es jetzt so, dass die werte einfach nicht auf 100% zurückgesetzt werden und ich einfach nicht verstehe, woran das liegen könnte… habe alles schon 1000 mal durchgeschaut. auf dem bild seht ihr, welche werte gemeint sind: Screenshot_2018.08.17_15_34_34_001.jpg hier ist das script dazu: Screenshot_2018.08.17_15_34_07_001.jpg hier das extra dafür angelegte objekt Screenshot_2018.08.17_15_31_00_001.jpg und im vis sieht das ganze dann so aus: Screenshot_2018.08.17_15_57_10_001.jpg ich hoffe ihr könnt mir da weiter helfen. danke und gruß ` hallo zusammen.. ich habe mich heute nochmal dem thema gewidmet und per zufall festgestellt, dass es scheinbar einen unterschied macht, ob man im widget (jqui Radiobuttons ValueList) den wert auf "true" oder "1" setzt. steuere ich objekte, welche bereits existieren/vom adapter erstellt wurden an, dann muss der wert "true" lauten. bei selbst erstellten objekten über den javascript adapter, muss man scheinbar anstatt "true" den wert "1" im widget setzen. nachdem ich im widget den wert auf "1" gesetzt hatte, funktioniert mein button im vis einwandfrei und es werden alle vier status über den extra dafür erstellten script resettet.
  • [gelöst]Probleme mit Skript

    Moved
    14
    1
    0 Votes
    14 Posts
    991 Views
    paul53P
    @woehrer: Es funktioniert so wie es soll. ` Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst].
  • Mediatasten mit rpi-keyboard node

    Moved
    2
    0 Votes
    2 Posts
    683 Views
    T
    so hab es jetzt selbst hin bekommen mit node-red-contrib-usbhid. Hier für alle die es interessiert noch den Flow [ { "id": "b64f12a4.82f57", "type": "ioBroker out", "z": "b9b83901.0efa78", "name": "Tasten druck", "topic": "Tasten_druck", "ack": "true", "autoCreate": "true", "x": 1210, "y": 600, "wires": [] }, { "id": "65258308.49279c", "type": "rpi-keyboard", "z": "b9b83901.0efa78", "name": "", "x": 790, "y": 580, "wires": [ [ "c8a0770f.28c178" ] ] }, { "id": "5ab4c722.7dbe88", "type": "HIDdevice", "z": "b9b83901.0efa78", "connection": "4fbd6b73.15efb4", "name": "Fernbedienung", "x": 240, "y": 640, "wires": [ [ "a92ab222.942b5" ], [] ] }, { "id": "a92ab222.942b5", "type": "function", "z": "b9b83901.0efa78", "name": "Select ip Part 1", "func": "msg.payload = msg.payload[1];\nreturn msg;", "outputs": 1, "noerr": 0, "x": 420, "y": 640, "wires": [ [ "73cff708.3d01a8" ] ] }, { "id": "73cff708.3d01a8", "type": "switch", "z": "b9b83901.0efa78", "name": "Alles über 0", "property": "payload", "propertyType": "msg", "rules": [ { "t": "gt", "v": "0", "vt": "num" } ], "checkall": "true", "repair": false, "outputs": 1, "x": 590, "y": 640, "wires": [ [ "3ace679a.a3a588" ] ] }, { "id": "3ace679a.a3a588", "type": "function", "z": "b9b83901.0efa78", "name": " + 1000", "func": "msg.payload = (msg.payload + 1000);\nreturn msg;", "outputs": 1, "noerr": 0, "x": 750, "y": 640, "wires": [ [ "c8a0770f.28c178" ] ] }, { "id": "c8a0770f.28c178", "type": "deduplicate", "z": "b9b83901.0efa78", "name": "nur einmal", "keyproperty": "", "expiry": "1", "x": 990, "y": 600, "wires": [ [ "b64f12a4.82f57" ], [] ] }, { "id": "4fbd6b73.15efb4", "type": "HIDConfig", "z": "", "vid": "8985", "pid": "16", "name": "Mx3" } ] [image: 2538_flow.jpg]
  • 0 Votes
    10 Posts
    1k Views
    T
    So ich hab noch mal geschaut. Es sollten diese sein http://www.gevax.com/urun.php?id=686&re … -250-220AC
  • Alarmanlage + Sprachausgabe mit Alexa2-Adapter führt zu Freeze

    Moved
    5
    1
    0 Votes
    5 Posts
    829 Views
    L
    Ich habe gerade mal ein ähnliches Blockly kreiert - Anruferansage. Meins läuft so weit - da absoluter Anfänger, arbeite ich mich immer langsam hoch in Blockly, bzw. baue auch Debug Bausteine fürs Log zum Testen mit ein… gibt Einem dann im Falle des Falles auch eine Übersicht wo es vielleicht hängt... [image: 2257_alexa_anruferansage.jpg] javascript.0 2018-08-29 22:52:34.156 info script.js.common.Alexa_Anruferansage: Stop zyklische Anruferansage javascript.0 2018-08-29 22:52:34.156 info script.js.common.Alexa_Anruferansage: Alexa "Ansage: hat aufgelegt, oder spricht nun auf Band" javascript.0 2018-08-29 22:52:34.155 info script.js.common.Alexa_Anruferansage: Anruferansage Alexa javascript.0 2018-08-29 22:52:31.152 info script.js.common.Alexa_Anruferansage: Anruferansage Alexa javascript.0 2018-08-29 22:52:28.151 info script.js.common.Alexa_Anruferansage: Anruferansage Alexa javascript.0 2018-08-29 22:52:25.149 info script.js.common.Alexa_Anruferansage: Anruferansage Alexa javascript.0 2018-08-29 22:52:22.147 info script.js.common.Alexa_Anruferansage: Anruferansage Alexa javascript.0 2018-08-29 22:52:19.146 info script.js.common.Alexa_Anruferansage: Steuerung Lautstärke auf 100% javascript.0 2018-08-29 22:52:19.145 info script.js.common.Alexa_Anruferansage: Anruf Eingangsuhrzeit
  • Lampe (z.B. Hue) über Zeitraum dimmen - Blockly

    Moved
    17
    1
    0 Votes
    17 Posts
    10k Views
    A
    Super. Danke! Ich habe meinen o.g. Command getestet und als Reaktion auf einen trigger an die Lampe gesendet. Sie hat aber nicht reagiert. Muss ich zusätzlich noch den "put" Befehl geben? Wie? Gesendet von iPhone mit Tapatalk
  • [Gelöst] obj.newState.ts -> suche den "generellen" TimeStamp

    Moved
    2
    0 Votes
    2 Posts
    252 Views
    M
    Ich war blind, hatte doch schon die Lösung. Nur im Source nen Tippfehler.
  • Blocky neuen Datenpunkt setzen

    Moved
    3
    1
    0 Votes
    3 Posts
    475 Views
    A
    8-) :idea:
  • Gelöst Scenen Mit Node red Steuern

    Moved
    2
    0 Votes
    2 Posts
    564 Views
    E
    Es klappt wieder warum keine Ahnung
  • WENN UND Bedingung innerhalb eines Zeitfensters in Blockly

    Moved
    5
    1
    0 Votes
    5 Posts
    2k Views
    J
    So dann schreibe ich mal wieder mein Hinweis, dass es absolut unnötig ist bei einer falls Bedingung auf noch mal auf wahr zu prüfen, weil das die Grundfunktion der falls Bedingung ist und somit überflüssig. Steht aber auch genau so im Popup, welches aufgeht, wenn man mit der Maus über den Block fährt ;) Dann zur Übersichtlichkeit des Blockly. Wenn man bei den Blöcken auf externe Eingänge umschaltet, dann wirds deutlich übersichtlicher und zu guter letzt mal mein Blockly zu dem Thema mit dem einfacheren Ansatz, welches auch echt gut funktioniert. [image: 5076_2018_08_28_11_38_31_window.png] Die "…kommt heim" DPs sind meine "Merker" wenn sich jemand ins WLAN einloggt. Da das in der Regel etwas früher passiert, als die Tür Kontakte auslösen und ich vermeiden möchte, dass wenn jemand zu Hause ist ständig die Begrüßung abläuft werden die auch brav wieder zurückgesetzt. Die Timeout sind dafür da, dass es keine Überschneidungen gibt und der Text auch erst gesprochen wird, wenn die entsprechende Person in Reichweite des Echo ist.

629

Online

32.7k

Users

82.5k

Topics

1.3m

Posts