Skip to content

Skripten / Logik

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

16.6k Themen 213.9k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    D
    So script ist umgebaut. War ja eigentlich ganz einfach. Ich habe einfach alle minsoc wo ich bis jetzt von mqtt bezogen habe durch eine in Objekte erstellten Variable ersetzt. Somit kann ich mit der den unteren soc steuern. Muss nur mal sehen wie sich der Speicher dann verhält ob er auch in standby dann geht wenn er den unteren soc nicht in Wirklichkeit erreicht oder ob dann der standbyverbrauch sich erhöht. Er zeigt zumindest mal standby an wenn ich Ausgabe 0 mache.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    paul53P
    @andre1de sagte: Problemen mit dem Zeitintervall über Mitternacht Probleme mit der Zeitspanne über Mitternacht gibt es nur bei Verwendung von Astro-Zeiten.
  • 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
  • Blockly, Radar, Alexa und Anwesenheitserkennung

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    MessiahsM
    Hallo Tom, für die Anwesenheitserkennung habe ich das AddOn "Radar" in ioBroker laufen. Sobald mein Handy in Reichweite ist, wird es somit von Radar erkannt (Bluetooth). In Radar kann für jedes Bluetooth-Gerät bereits einen Namen vergeben werden… also z.B. "Person1", deshalb wollte ich ungern weitere Variablen (Person1-Anwesend) erstellen. Ich habe es in JS wie folgt gelöst: function diffArray(arr1, arr2) { return arr1.concat(arr2).filter(function (val) { if (!(arr1.includes(val) && arr2.includes(val))) return val; }); } on({id: 'radar.0.whoHere', change: "ne"}, function (obj) { console.log('+++++++++ Anwesenheit +++++++++++ '); var newState = '', oldState ='', newStateArray = [], oldStateArray = [], changedPerson = '', sayString = "", delay=0; newState = (obj.newState.val ? obj.newState.val : ""); oldState = (obj.oldState.val ? obj.oldState.val : ""); console.log('newState: ' + newState); console.log('oldState: ' + oldState); if(newState.length>0){ newStateArray = (newState.split(", ") ? newState.split(", ") : newStateArray.push(newState) ); } if(oldState.length>0){ oldStateArray = (oldState.split(", ") ? oldState.split(", ") : oldStateArray.push(oldState) ); } // console.log('newStateArray.length: ' + newStateArray.length); // console.log('oldStateArray.length: ' + oldStateArray.length); changedPerson = diffArray(newStateArray, oldStateArray).toString(); changedPerson = changedPerson.replace(',',' und '); console.log('changedPerson: ' + changedPerson); if (newStateArray.length > oldStateArray.length){ // Person neu hinzugekommen sayString = "Willkommen zuhause " +changedPerson; delay =5000; } else { // Person hat den Bereich verlassen sayString = "Tschüss " + changedPerson; delay =0; } //Alexa ansteuern setState("alexa2.0.Echo-Devices.G000Jxxx.Commands.speak-volume"/*volume*/, 35); setStateDelayed("alexa2.0.Echo-Devices.G000xxx.Commands.speak"/*controlNext*/, sayString, delay, false); }); Grüße Markus Edit: code angepasst
  • Node Red Array in ioBroker nutzen

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    12k Aufrufe
    A
    Hallo, vielen Dank für den Tip. Habe es jetzt mit dem Array hinbekommen. André
  • WOL Skript Fehler

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    607 Aufrufe
    M
    @arteck: hast du auch die javainstanz kofiguriert ` nein, ging aber anscheinend auch ohne. danke trotzdem euch beiden
  • Blockly Anfänger möchte Rollos steuern Homematic Geräte

    Verschoben
    8
    1
    0 Stimmen
    8 Beiträge
    2k Aufrufe
    H
    @zakuma: Danke probiere ich mal so aus. Die Homematic Zentrale kann aber nur Tageszeit Sonnen auf/Untergang und dies ist mir zumindest bei Untergang eigentlich zu Früh. Hast schon recht das man die Grundfunktionen gut in der Zentrale nutzen kann, weiß aber nicht wann die Zentrale zu überladen ist. Man liest ja davon schon mal das zu viele Funktionen die Zentrale überladen deshalb wollte ich es direkt auslagern. ` Ich habe als eines der wenigen Scripte das Tageszeitenscript (such danach per Suchfunktion im Homematic-Forum) in der CCU laufen. Es befüllt eine Systemvariable mit den Werten Nacht;Frühmorgens;Morgengrauen;Vormittag;Mittag;Nachmittag;Dämmerung;Abend. Damit hast du genügend Zeitpunkte über den Tag verteilt, mit denen du arbeiten kannst. Dazu noch gewisse Verzögerungen in den Aktionen der Programme und fertig. Und was die Belastung der CCU betrifft, wirst du auch als Power-Anwender mit > 100 Geräten nicht an deren Grenzen kommen. Vorausgesetzt die von dir eingerichteten Programme arbeiten Funkhygienisch sauber und es gibt keine schlecht programmierten Scripte, die das System ausbremsen könnten. Gruß Manfred
  • Blockly 14 Tage timer

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    1k Aufrufe
    A
    @Dutchman: Warum so kompliziert ? Jeden Tag laufen lassen und immer object + 1, Dan ne If wen object 13 für aus und setze auf null ` … wenn's auch einfach geht :-) Stimmt, so ist es eleganter.
  • Alle Unterobjekte abfragen

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    911 Aufrufe
    P
    Oder mit regexp: https://github.com/ioBroker/ioBroker.ja ... some-state Scroll nach unten. Pix
  • [Vorlage] Denon Skript

    Verschoben
    141
    1
    0 Stimmen
    141 Beiträge
    34k Aufrufe
    MicM
    @djtale2003: Danke für den Tip. Das Script funktionert. Aber wie kann ich dort den Trigger auslesen? Und wie kann ich in meiner Homematic die Systemvariablen für den Inputkanal und Power binden? Mit dem "alten" Script hat das wundebar funktioniert. ` Welcher Trigger? Dieser Thread hier handelt nicht vom Denon-Adapter, daher empfehle ich Dir, einen neuen Thread aufzumachen mit Bezug auf den Denon-Adapter und möglichst genauer Fragestellung.
  • Homematic Ramp_time in blockly

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    324 Aufrufe
    Niemand hat geantwortet
  • Umrechnung einer Variablen von Minuten in Stunden und Minuten

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    2k Aufrufe
    W
    Ich wollte, wenn ich die Betriebsstunden über snips abfrage, das der Wert, der in der wago in Minuten eingetragen ist, umgerechnet ausgegeben wird.
  • Blockly Skript licht schalten

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    2k Aufrufe
    B
    Hallo ihr zwei, Ich werde versuchen eure beiden Lösungsansätze in die Tat umzusetzen und Berichte euch anschließend. Vielen Dank für eure Unterstützung. Gesendet von meinem SM-A520F mit Tapatalk
  • Http-Befehl ausführen

    Verschoben
    5
    -1 Stimmen
    5 Beiträge
    2k Aufrufe
    BuZZyB
    var request = require("request"); request('http://192.168.178.78/test', function (error, response, body) { ..... hier dein Code um den body zu verarbeiten ..... }); Gruß
  • [gelöst] on Methode wird nicht ausgeführt

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    764 Aufrufe
    P
    Hallo, ich empfehle dir, den langen ID-Namen in eine Konstante zu packen. Der ändert sich ja nicht und so kannst du den Code übersichtlicher machen und eine Fehlerquelle ausschließen. Denn ich glaube, hier liegt auch das Problem. Während createState() automatisch die Instanz des Javascript-Adapters auswählt, in der das Skript abgespeichert wurde, braucht on() den Adapternamen und die Instanz immer in der ID. const idLueften = "javascript." + instance + ".RaumklimaBerechnung.Wohnzimmer.Lueften"; createState(idLueften, false, { read: true, write: true, desc: "", type: "boolean", def: 0 }); schedule("* * * * *", function() { var ra = getState("xxx").val; var ri = getState("xxx").val; if (ri > (ra + 1)) { setState(idLueften, true); } if (ri < (ra)) { setState(idLueften, false); } }); //Telegram Nachicht senden on({id: idLueften, val: true}, function(obj) { console.log("Telegram Lüften versenden"); }); Gruß Pix PS: Oder ändere ergänze einfach deinen Code um die Instanz in der on()-Funktion (hier als Beispiel mit Instanz 0) ! //Telegram Nachicht senden on({id: "javascript.0.RaumklimaBerechnung.Wohnzimmer.Lueften", val: true}, function (obj) { console.log("Telegram Lüften versenden"); }); !
  • Blockly Variable mit Wert erzeugen

    Verschoben
    15
    1
    0 Stimmen
    15 Beiträge
    12k Aufrufe
    strikegunS
    Danke, das Wissen hat mir gefehlt! @umbm: Die eigentliche Funktion ist der Einzeiler-Block und über das Zahnrad links kannst du Parameter hinzufügen und benennen. Die Funktion selbst erstellst du dann über die 3 Punkte rechts im Block direkt als Javascript. Der große zusätzliche Block, der (erst) dann entsteht und im Blockly-Script eingefügt werden kann ist dann der Aufruf der eigentlichen Funktion mit Übergabe der Parameter. `
  • [Gelöst] Skript Lichtzählen verweigert Namen Homematic-Geräte

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    273 Aufrufe
    Niemand hat geantwortet
  • Fhem adapter - auf Aliasname von obj zugreifen

    Verschoben
    5
    1
    0 Stimmen
    5 Beiträge
    423 Aufrufe
    paul53P
    @intershopper: Funktioniert ` Das Thema im Betreff des ersten Beitrags bitte als [gelöst] markieren.
  • Blocky: Teilerwert ermitteln und in Variable speichern =?

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    646 Aufrufe
    Espace0401E
    Ich habe zu der genannten Art den Ferraris Zähler auszulesen auch mal eine Frage bzw. seit kurzem ein Problem. Mir wird unter Objecte/mqtt beim Stromzähler unter dem Reiter "Qualitätscode" device not connected angezeigt. Wenn ich den mqtt Stoppe und Starte, ist dieses Meldung für einige Zeit weg, kommt aber dann wieder. Das ESP Modul ist dabei jeder Zeit erreichbar. Jemand eine Idee woher das kommt? [image: 2622_bildschirmfoto_2018-11-04_um_19.46.07.png]
  • Rechenfehler?

    Verschoben Gelöst blockly
    4
    2
    0 Stimmen
    4 Beiträge
    2k Aufrufe
    I
    Kurz nach dem Absenden habe ich dann auch diese Erleuchtung gehabt. Der Wert von Dist_umgerechnet war so, wie er außerhalb stand, natürlich noch von der vorhergehenden Messung. Aber danke für euer schnelles Feedback! So funktioniert es jetzt: [image: 9586_javascript_-_iobroker3.png] Gruß ixy
  • Skript von Node Red triggern

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    794 Aufrufe
    A
    Hallo, du solltest ein eigenes Objekt in ioBroker anlegen, z.B. unter Javascript.0 Dieses Objekt ist dann quasi dein "Eingabe-Objekt" für Blockly, d.h. eine Veränderung an diesem Objekt ist in Blockly dein Trigger. Mittels Node-Red schreibst Du dann einfach den gewünschten Wert in das Objekt. Blockly bekommt die Änderung mit und läuft los und kann dann natürlich auch den aktuellen Wert des Objekts weiterverwenden. Ich hoffe es ist klar was ich meine und ich hoffe dass ich richtig verstanden habe was du machen möchtest :-) Gruss Ralf
  • Zeitraum formatiert ausgeben

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    550 Aufrufe
    arteckA
    ist mir auch nicht bekannt.. zumindest nicht in der Formatieurng die du brauchst aber du kannst das Script unter <u>global</u> aufhängen dan hast du es auch einmal und überall
  • Temperatur Differenz Berechnen

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    Amnesia1211A
    Hat super geklappt danke noch mal.

571

Online

32.7k

Benutzer

82.5k

Themen

1.3m

Beiträge