Skip to content

Skripten / Logik

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

16.6k Topics 213.6k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    D
    Danke habe ich gemacht. ( 1punkt) Die Objekt-ID "aktuell erzeugte Energie" wäre bei mir: Objekt-ID: 0_userdata.0.Charge_Control.Allgemein.IstPvErtragLM0_kWh plus Objekt-ID: 0_userdata.0.Charge_Control.Allgemein.IstPvErtragLM1_kWh (zusatz WR) wie kann ich das bewerkstelligen?
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    T
    Hallo @paul53 vielen Dank für deine Rückmeldung. Zur Erläuterung: „Stromstärke“ ist in meinem Fall eine Variable eines Shelly-Geräts in einem Nebenraum – konkret vom Fernseher. Wenn dieser eingeschaltet wird und das Radio noch läuft, soll das Radio nach 45 Sekunden entsprechend ausgeschaltet werden. Daher auch der Trigger über die Strommessung. Richtig verstanden: Im Party-Modus soll gar nichts passieren. Grundsätzlich möchte ich das Radio bzw. den Radiosender über den Präsenzmelder steuern. Das heißt: • Wenn Präsenz erkannt wird, soll ein bestimmter Radiosender gestartet werden (inkl. definierter Lautstärke). • Wenn der Raum verlassen wird, soll das Radio 45 Sekunden später wieder ausgeschaltet werden. Das Ein- und Ausschalten an sich bekomme ich grundsätzlich hin. Mein Problem im Blockly-Skript ist jedoch, dass ich es nicht schaffe, im Sonos-Adapter den Radiosender korrekt zu setzen. Genau an diesem Punkt hänge ich aktuell. "Binary play/pause state" ist steuerbar und started bzw. stopped die Musikwiedergabe. Vielleicht hast du ja einen Tipp, wie man den Sender im Sonos-Adapter richtig übergibt bzw. welchen Datenpunkt oder welches Format man verwenden muss.
  • 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
  • Länge und Breite aus DP auslesen

    8
    0 Votes
    8 Posts
    472 Views
    C
    @paul53 Jo nu löppt es Ich hatte es schon richtig, aber weil sich nichts getan hat hab ich weiter versucht und das Ganze verschlimmbessert. Na ja wieder was dazu gelernt. Vielen Dank für die Hilfe.
  • Screenshot wird nicht erstellt.

    35
    1
    0 Votes
    35 Posts
    3k Views
    Curtis777C
    @andre Lieber Andre, und Lieber @Glasfaser Das war der Fehler. Danke euch, es läuft schon zumindest teilweise. Leider scheint es noch immer das Problem zu geben, das ich gehofft habe zu umgehen. PhantomJS hat anscheinend auch das Problem die MaterialWidgetAdvanced Widgets anzuzeigen. So sollte es aussehen bzw sieht es im Chrome Browser aus. [image: 1680024873498-2112dc9e-d4a9-4906-a925-0786a25fe962-image.png] und der Screenshot sieht dann so aus: [image: 1680024956475-168a95aa-63ec-4eef-8235-a9cf3ff44468-image.png] Danke euch!
  • Script zum Schalten einer Steckdose am Ecoflow zum laden

    37
    0 Votes
    37 Posts
    2k Views
    paul53P
    @würfel sagte: Verzögerung für das Ausschalten einzubauen ? Wo? So kann man unterschiedliche Verzögerungen für Ein- und Ausschalten realisieren: [image: 1680022897274-blockly_temp.jpg]
  • Frage: alias Konvertierungsfunktion

    12
    0 Votes
    12 Posts
    1k Views
    G
    @codierknecht said in Frage: alias Konvertierungsfunktion: Wobei Deine Lösung vermutlich etwas weniger Ressourcen frisst Ich habs gerade mal verglichen. Bei 100.000 Konvertierungen ist die Math.round()-Variante meist um 30ms schneller als die parseFloat()-Variante - auf meinem Pi4. 17:10:06.158 info javascript.0 (6125) script.js.common.Testen.Performance: -899 17:10:06.389 info javascript.0 (6125) script.js.common.Testen.Performance: 37 17:10:06.609 info javascript.0 (6125) script.js.common.Testen.Performance: 30 17:10:06.830 info javascript.0 (6125) script.js.common.Testen.Performance: 29 17:10:07.049 info javascript.0 (6125) script.js.common.Testen.Performance: 1029 17:10:07.269 info javascript.0 (6125) script.js.common.Testen.Performance: 29 17:10:07.487 info javascript.0 (6125) script.js.common.Testen.Performance: 29 17:10:07.707 info javascript.0 (6125) script.js.common.Testen.Performance: 30 17:10:07.923 info javascript.0 (6125) script.js.common.Testen.Performance: 28 17:10:08.141 info javascript.0 (6125) script.js.common.Testen.Performance: -973 Die Liste zeigt insgesamt 10 Versuche. Es wird die Dauer der Versuche mit parseFloat() von der Dauer mit Math.round() abgezogen. Das ist das Script: let loops:number = 100000; for (let j=0; j<10; j++) { // Erster Versuch let start=new Date().getMilliseconds(); for (let i=0; i<loops; i++) { parseFloat((i / 1000).toFixed(2)); } let end=new Date().getMilliseconds(); let duration=end-start; // Zweiter Versuch start=new Date().getMilliseconds(); for (let i=0; i<loops; i++) { Math.round(i / 10) / 100 } end=new Date().getMilliseconds(); let duration2=end-start; console.log(duration - duration2); }
  • Tasmota: mit Schalter unterschiedliche Szenen steuern

    21
    0 Votes
    21 Posts
    3k Views
    BananaJoeB
    @sorai Öhm, was genau willst du machen? Die von dir zitierte Anleitung dient der folgenden Funktion: Kurzer druck schaltet das direkt angeschlossene Gerät/Licht Langer druck (Hold) schaltet ein anderes Tasmota-Gerät Das mit der SetOption32 ... mhh lauf der offziellen Anleitung, ja es sind inzwischen 0.1 Sekunden-Schritte. Bei läuft es überall wo ich es einsetzt noch mit einer 3, in einem Zimme rnutze ich 5. wenn ich drüber nachdenke sind es keine 5 Sekunden, muss ich mal beobachten. In meiner Anleitung auf meiner Webseite habe ich mal einen Hinweis dazu eingebaut. Das habe ich neulich noch nach meiner eigenen Anleitung eingerichtet. Die Rule reagiert ja auf ON Switch1#State=3 Und das ist Hold laut Dokumentation: [image: 1680016468057-60323010-a4d0-4635-bc65-698f7984b526-image.png] https://tasmota.github.io/docs/Rules/#rule-trigger Hast du noch mehr Rules laufen?
  • Q: [selbst gelöst] Fehler in Scripten (Blockly)

    5
    0 Votes
    5 Posts
    126 Views
    R
    @homoran Ok, danke für den Hinweis. Ich hatte zwar schon so eine leise Ahnung, dass mit dem Begriff "global" eine etwas andere "Funktion" verbunden sein könnte, habe das aber ehrlicherweise ignoriert und auch nicht weiter vertieft. Gab ja auch bislang keine Probleme. Und Scripte, die andere Scripte triggern, wirds wohl auf absehbare Zeit bei mir nicht geben. Aber wer weiß... Der Hinweis mit dem Draft-Ordner ist ist gut und eigentlich viel aussagekräftiger, da selbstsprechender Name. Werde ich stehenden Fußes umsetzen. Zu den Logs: Richtig. Logs vorher lesen! Bisher hatte ich zum Glück keine Notwendigkeit auf Fehlersuche zu gehen. Von daher waren die Logs für mich bisher kein Thema. Aber es zeigt sich, dass so eine Community ziemlich nützlich ist. Auch bei Themen, die eher rechts und links von der eigentlichen Frage/vom eigentlichen Problem liegen. Der "Beifang" also :-) Kurz: habe schon eine Menge an kleinen Dingen dazugelernt. Danke Euch dafür... VG Peter
  • SayIt wird ausgeführt obwohl skript nicht mehr existiert

    6
    0 Votes
    6 Posts
    479 Views
    H
    @meister-mopper Danke für den Hinweis. Habe ich schon 'durchgekämmt' - nur das aktuelle Skript wurde gefunden.
  • Einen Telegram-User mit Rules-Skript anschreiben

    1
    0 Votes
    1 Posts
    137 Views
    No one has replied
  • Fahrzeug Standortabfrage mit Alexa

    12
    0 Votes
    12 Posts
    1k Views
    DJMarc75D
    @brunoz immer gerne :grinning:
  • kleiner Webserver auf Win Tablet

    2
    1
    0 Votes
    2 Posts
    121 Views
    liv-in-skyL
    @bahnuhr vielleicht geht dmit was?: https://bobbyhadz.com/blog/npm-warn-old-lockfile-the-package-lock-json-file-was-created npm install --package-lock-only
  • Fehler bei "Installing iobroker.javascript@6.1.4..."

    16
    0 Votes
    16 Posts
    1k Views
    O
    @thomas-braun danke, hat sich erledigt. VG
  • [Gelöst] JSON Tabelle per Email oder Telegram senden

    8
    0 Votes
    8 Posts
    710 Views
    nik82N
    @paul53 Du bist einfach der Beste! Vielen lieben Dank :+1:
  • UDP-Befehl mittels Blockly / JavaScript senden?

    Moved
    8
    0 Votes
    8 Posts
    2k Views
    OliverIOO
    @slemy im javascript adapter läuft node. hier ein beispiel direkt aus der node dokumentation import dgram from 'node:dgram'; import { Buffer } from 'node:buffer'; const message = Buffer.from('FF13029CA52580AA7761646D696E0061646D696E002E', 'hex'); const client = dgram.createSocket('udp4'); client.send(message, 8899, '192.168.1.183', (err) => { client.close(); }); https://nodejs.org/docs/latest-v18.x/api/dgram.html#socketsendmsg-offset-length-port-address-callback ich hab hier mal auf die version 18 LTS verlinkt. da hat sich aber mit 19 auch nix verändert. Nicht durch die Doku verwirren lassen. Mit node kannst du auch udp server entwickeln. Das ist ein wenig komplexer die verwendeten module/bibliotheken sind bestandteile von node, daher müssen sie nicht in den javascript adapter einstellungen eingetragen werden. Wenn du das senden willst, FF 13 02 9C A5 25 80 AA 77 61 64 6D 69 6E 00 61 64 6D 69 6E 00 2E musst du nur die hexzahlen der reihe nach ohne leerzeichen schreiben. Ich habe dir den code oben mal aufbereitet. theoretisch einfach nur copy paste. sofern deine angaben alle stimmen. die hex zahlen kann ich nicht überprüfen const message = Buffer.from('FF13029CA52580AA7761646D696E0061646D696E002E', 'hex'); // Prints <Buffer FF 13 02 9C A5 25 80 AA 77 61 64 6D 69 6E 00 61 64 6D 69 6E 00 2E>, all data represented. https://nodejs.org/api/buffer.html#buffers-and-character-encodings (ziemlich am Ende des Abschnitts
  • Roborock bei Abwesenheit, aber nur 1x täglich starten

    5
    0 Votes
    5 Posts
    351 Views
    S
    @paul53 Auch eine gute Idee. Werde morgen mal ausprobieren, was ich am besten umgesetzt bekomme. Danke dir.
  • Cronjob immer letzter Tag im Monat

    Moved
    24
    0 Votes
    24 Posts
    7k Views
    CodierknechtC
    @endurance Nein, das Script startet um 23:30 Uhr und prüft, ob der Tag in 12 Stunden zufälligerweise der 1. ist. Dann ist ja der aktuelle Tag der letzte des Monats und die Verarbeitung soll durchgeführt werden. Laufen muss das Script ja nur vom 28. bis zum 31. - denn nur an diesen Tagen besteht die Chance, dass der nächste Tag der 1. ist.
  • Gelöst: Stur schalten oder lieber vorher IST-Zustand abfrag

    5
    1
    0 Votes
    5 Posts
    454 Views
    W
    @paul53 Ich Blindfisch, vor lauter Abfragen hatte ich vergessen, dass ich ja auch abfrage, ob auf Bewegungsmelder gerade überhaupt reagiert werdedn soll oder ich zu nachtschlafender Zeit lieber darauf verzichte. Super, dann ist mir klar, was ich zu tun habe. Ich danke Dir. :+1: Und Danke für die Info, dass Adapter auch stur Pakete absenden, wenn es eigentlich nicht nötig wäre. Da habe ich dann doch noch einiges mehr zu optimieren. Gruss, Jürgen
  • Heizungsprogramme mit Google Kalender. (ioBroker + iCal)

    3
    0 Votes
    3 Posts
    241 Views
    S
    @nachtfuchs vielen Dank für deine Mithilfe und deine Gedankenastöße. Habe es leider erst heute gesehen das jemand geantwortet hat, muss da wohl noch mal die Benachrichtigungeinstellungen ansehen.
  • IP Cam FTP Bild und Video per Telegram schicken

    3
    0 Votes
    3 Posts
    957 Views
    Bastian LahrmannB
    @liv-in-sky Danke für die Hilfe! Ich habe es mir dann doch einfacher gemacht und Motioneye trotzdem angebunden um mir das in der Vis anzuzeigen oder Bilder per Telegram zu schicken. Jetzt muss ich mir nur noch ein Skript bauen um die Dateien, die von Reolink gespeichert werden, automatisch zu löschen, aber ich denke, dass ich das hinbekomme. Gibt da ja auch einige Anleitungen. Danke dir!
  • iObroker restart per script

    5
    0 Votes
    5 Posts
    554 Views
    Thomas BraunT
    @dieterb sagte in iObroker restart per script: Warum sollte man das nicht verwenden? Weil für den ioBroker keine root-Rechte benötigt werden und wenn man den dennoch mit root-Rechten anpackt läufst du Gefahr dir das Rechtegefüge zu zerballern. Deswegen macht man das nicht. iob stop iob fix iob start ausführen.
  • Trigger unsubscribe (Verständnisfrage)

    22
    0 Votes
    22 Posts
    1k Views
    O
    @paul53 ja klar Script starten und werden von anderen Scripten mit Triggern aufgerufen / gestartet besser ausgedrückt. Wir meinen das selbe.

692

Online

32.7k

Users

82.4k

Topics

1.3m

Posts