Skip to content

Skripten / Logik

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

16.5k Themen 213.2k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    P
    @arnod Leider ist das Problem immer noch vorhanden. Welchen Hysteresewert muss ich denn bei mir anpassen, damit ich mein Problem abmindern kann? Ich habe gesehen, dass es mehrere Hysteresewerte im Script gibt.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    M
    Ich habe einen zweiten Statuspunkt (Briefkasten_State) dazu genommen, den ich über einen Button immer wieder zurücksetze. [image: 1769854217178-screenshot-2026-01-31-110831.png]
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • Skript HD Speicherbelegung ioBroker auf Linux-Rechnern

    Verschoben
    2
    1
    0 Stimmen
    2 Beiträge
    907 Aufrufe
    ruhr70R
    So… ich habe jetzt ein paar Systemparameter von beiden Ubuntu VMs (1x ioBroker, 1x mySQL) in ioBroker eingebunden. U.a.: HD ioBroker Rechner (gesamt, verwendet, frei, …) HD mySQL Rechner, s.o. Speicher ioBroker Rechner Speicher mySQL Rechner Dateigröße iobroker gesamt und iobroker-data Dateigröße mySQL gesamt und mySQL ioBroker Datenbank Verfügbare Updates für beide Rechner [image: 327_iobroker_systeminfos.jpg] Ist in meiner Umgebung sehr speziell (2x Ubuntu, Datenbank und ioBroker getrennt) und war eine ziemliche Bastelei mit bescheidenen Linux-Kenntnissen. Falls Teile davon trotzdem für jemanden interessant ist, dann kann ich versuchen, den Teil zu beschreiben (Mount von Verzeichnissen mit autofs, cron, bashscript, Ausgabe der Abfragen in eine Datei, ioBroker Javascript Abfragen, …). Eine Nagios-Installation wäre wohl schneller gegangen ;-)
  • Zeitverzögerung zwischen STATES

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    685 Aufrufe
    S
    Okay so einfach war das [emoji79][emoji15][emoji23] das hätte ich auch selbst finden können wenn ich da rein geschaut hätte Asche über mein Haupt [emoji6] Danke Gesendet von meinem iPhone mit Tapatalk
  • Schalten 2 Stunden nach Sonnenuntergang

    Verschoben
    20
    0 Stimmen
    20 Beiträge
    5k Aufrufe
    P
    @Bluefox: Wir brauchen iobroker.holidays adapter. 8-) ` Is da :lol: :lol: http://forum.iobroker.net/viewtopic.php … 754#p24642
  • HM-RC-Key4-2 Abfrage

    Verschoben
    3
    1
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    khgK
    Hallo pix, vielen herzlichen Dank für die Info. Mit dem Workaround kann man leben.
  • Interaktionen zwischen Skripten

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    754 Aufrufe
    T
    Hi, danke für den Tipp, klappt super! Viele Grüße Trident
  • Wo liegen die 'Original'-Scripts

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    paul53P
    @tgirard: Und im Backup sind sie dann schon, nehme ich an ` Ja, sie werden in der Datei "objects.json" gespeichert. @pix: …kopiere alle Skripte aus dem ioBroker Editor in meinen externen Editor bei Änderungen und speichere die Dateien separat ab. ` So halte ich es normalerweise auch.
  • Script best practise

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    T
    Danke wird gleich mal getestet…! Gesendet von iPad mit Tapatalk
  • Zwei-Punkt Regler (Hysterese)

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    2k Aufrufe
    T
    Danke euch für die Tipps! Werde es ausprobieren und berichten :)
  • Tasker TNES

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    1k Aufrufe
    Niemand hat geantwortet
  • Frage - per Script "Adapter Informationen aktualisieren"?

    Verschoben
    12
    0 Stimmen
    12 Beiträge
    2k Aufrufe
    ruhr70R
    @Bluefox: @ruhr70: @Homoran: Viel Glück, da gerät sogar google translate ins schleudern ;-) ` He he, umgekehrt wahrscheinlich auch ;-) ` Ich habe schon fast Schreck bekommen, als ich Antwort von ruhr70 auf russisch gesehen habe. :lol: Ist ein guter Punkt, Muss ich überlegen, wie ich das mache. Weil nämlich Update kann man aus der Konsole auch machen, und dass (besonders wenn direkt über npm) kann ich gar nicht detektieren. Aber ich denke es reicht aus, wenn ich über admin das aktuell halte. ` War das so schlimm? ;-) Ist jetzt nicht lebensnotwendig.Falls es eine Kleinigkeit gewesen wäre, hätte es einfach mit reinrutschen können. Wenn es geht prima. Wenn nicht, muss man halt einen Klick mehr machen ;-)
  • String nach Boolean

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    paul53P
    @blauholsten: Wenn du global z.B. eine function deklarierst function global(){ log('hallo Welt')} Kannst du diese von überall aufrufen. ` Wenn Du eine Funktion innerhalb eines globalen Skriptes (Skript in Gruppe "global") deklarierst, function meine_globale_Funktion(x, y) { mache was mit x und y } kannst Du diese Funktion von überall aufrufen.
  • Frage: RegExp in on()

    Verschoben
    28
    0 Stimmen
    28 Beiträge
    6k Aufrufe
    blauholstenB
    Hi, Danke deine Erklärungen, aber genau hier liegt meine Frage:… @Jey Cee: Was bei mir noch offen ist, ist in on() auf die Änderung zu reagieren das will einfach nicht klappen. `
  • MAX Fensterkontakte Batterieprüfung

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    M
    Hallo, ich habe mal Homegear installiert und verzweifle an der Verbindung. [image: 721_lsusb.jpg] [image: 721_homegear.jpg] [image: 721_homegear2.jpg] Er findet den CUL-Stick nicht. Was muss ich in den physicalinterfaces.conf ändern? Gruß MArco
  • URL aus E-Mail (HTML-Format) in ioBroker Objekt schreiben

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    BluefoxB
    @andre: Hallo, nachdem ich mich jetzt bereits erfolgreich in Javascript versucht habe, habe ich mich gestern einmal ein wenig um Node Red gekümmert und schon das ein oder andere darüber gelesen bzw. gelernt. Trotzdem will mein erster Versuch nicht so recht gelingen. :( Folgende Aufgabe habe ich mir gestellt: Ziel soll es sein, eine URL aus einer automatisch generierten E-Mail (im HTML -Format) in ein ioBroker Objekt zu schreiben. Das "Abrufen" der E-Mail über die E-Mail-Node funktioniert bereits. Die Daten kommen an und werden in den entsprechenden Variablen übergeben. Allerdings bin ich dabei jetzt auf die erste Hürde gestoßen, dich mich schon den ganzen Nachmittag verzweifeln lässt… Die Daten die mir die E-Mail-Node in msg.payload oder msg.html übergibt, werden im Format base64 übergeben (Debug: Content-Transfer-Encoding: base64...). Mein Versuch die Daten mittels einer Funktion in utf8 zu wandeln sind (vermutlich mangels Hintergrundwissen) kläglich gescheitert. Auch der Versuch die Daten mittels base84-Node zu konvertieren hat nicht gefruchtet. Soweit ich das ergründen konnte, waren die Werte anschließend zwar in einem Anderen format (binary???) aber trotzdem für mich nicht zu verwenden.... :) Was kann ich tun um die Daten wieder in ein (für mich) "verarbeitbares" Format zu bekommen? Meine weiteren Schritte wären dann, den HTML-Code der E-Mail mit z.b. der HTML-Node zu analysieren und dann die extrahierte URL an ioBroker zu senden (letzteres habe ich während meiner Tests auch schon geschafft). Gibt es vielleicht sogar einen noch besseren Weg/ einen anderen Ansatz? Vielen Dank. MfG, André ` Eigentlich muss es einfach sein. Kannst du hier einen Beispiel posten?
  • Netzausfall und Akku bei einer S.USV überwachen

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    2k Aufrufe
    Niemand hat geantwortet
  • (gelöst) Buffer-Behandlung?

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    ruhr70R
    @Headroom68: Hallo, ja, ich fürchte nur, dass danach noch etwas zu tun ist. '4c00' it z.b. Apple https://www.bluetooth.com/specification … dentifiers Ich habe mich noch nicht näher damit beschäftigt. Ich hatte versucht eine Anwesenheitserkennung mit btwatch zu machen. Leider nur mit begrenztem Erfolg. Leider wird das iPhone von noble beim scannen nicht erkannt. ` Hi Headroom68, Deine Antwort ist in meinem Urlaub untergegangen. Es ist wirklich einfach Hex. Danke! Unabhängig davon, hatte ich das mittlerweile auch gefunden und eingebaut :-) Zu Deinem Problem: Vorab. Sind das nicht zwei Themen? iPhone und btwatch? Wir die btwatch nicht gefunden? Wenn doch, kannst Du doch schon damit arbeiten. Zum iPhone: Das BLE Skript sucht nur BLE Geräte (Geräte, die dauern Ihre Info per Bluetooth senden, z.B. das Gigaset G-Tag, solange es nicht an der App angemeldet ist). Sehr gut sind da die diversen Fitnesstrecker geeignet. Deine btwatch nicht? Beim iPhone kannst Du es umgekehrt machen. Du benötigst ein Bacon, bzw. ein iBeacon, auf welches Du dann mit Geofency und dem Geofency Adapter reagieren kannst. So nutze ich das bisher schon länger mit einem Raspberry 2 als iBeacon, Geofency und dem Geofency Adapter. Wenn ich mit meinem BLE Skript durch bin, kommt noch ein viel kürzeres Skript, mit dem Du aus dem Raspberry Pi 3 (oder andere kompatible Geräte, wie bei noble) ein Beacon/iBeacon machen kannst, sowie einen Bacon Scanner. Dafür gibt es das node.js Modul bleacon, vom gleichen Entwickler, der auch noble veröffentlicht hat. Ist ganz Simpel zu nutzen. Bei meinem Tests hat der BLE Scanner und das Skript für das iBeacon auch parallel auf einem Pi 3 funktioniert. Vorab die Kurzversion für ein iBeacon Skript (Bluez (wenn es ein Linux Rechner ist) und und das node Modul "bleacon" müssen installiert sein): ! var Bleacon = require('bleacon'); ! var uuid = 'e2c56db5dffb48d2b060d0f5a71096e0'; var major = 0; // 0 - 65535 var minor = 0; // 0 - 65535 var measuredPower = -59; // -128 - 127 (measured RSSI at 1 meter) ! Bleacon.removeAllListeners('discover'); ! Bleacon.startAdvertising(uuid, major, minor, measuredPower); Bleacon.startScanning(); logs("#### START BEACON ####","warn"); ! Bleacon.on('discover', function(bleacon) { logs("uuid: " + bleacon.uuid + ", Major: " + bleacon.major + ", Minor: " + bleacon.minor,"info","darkorange"); }); ! /* setTimeout(function () { Bleacon.stopAdvertising(); logs("#### STOP BEACON ####","warn"); Bleacon.stopScanning(); //Bleacon.removeListener('discover'); Bleacon.removeAllListeners('discover'); }, 100000); ! */ ! Ohne das aaskommentierte Timeout am Ende sendet es dann dauerhaft, bis zum Neustart der Javascript-Instanz. Was man sehr einfach machen kann: kurzes zweites Skript als Watchdog, welches den Listener ausschaltet, wenn das iBeacon Skript gestoppt wird. Die im Skript eingestellt iBeacon Kennung findest Du auch in der iPhone App "Beccon". Dort ist es das Haustier :-) Wenn Du das Skript inkl. dem Timeout am Ende startest, wird das Haustier für 10 Sekunden vom iPhone mit Beecon gefunden. Danach würde ich Geofency probieren. Von mir wird mit der Zeit folgendes kommen: BLE Scanner als Skript in der Aerotouch Version (komplett automatisch, jede Instanz, ohne Eingriffe) BLE Scanner Adapter (hoffentlich g9 iBeacon/Beacon Skript für ein Beaconn und als Scanner und dann der Adapter dafür (mache ich wohl vor den BLE Adapter, da das schneller geht) bleacon findest Du hier: https://github.com/sandeepmistry/node-bleacon
  • MiLight Ansteuerung per node-red

    Verschoben
    1
    1
    0 Stimmen
    1 Beiträge
    3k Aufrufe
    Niemand hat geantwortet
  • Bei Druck eines Tasters Toggeln

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    1k Aufrufe
    paul53P
    @pix: Steht das ! fürs Umkehren des Wertes? ` Ja, ! vor einem Wert (boolean) bedeutet https://wiki.selfhtml.org/wiki/JavaScript/Operatoren/Logische_Operatoren.
  • [gelöst] setStateDelayed

    Verschoben
    16
    0 Stimmen
    16 Beiträge
    7k Aufrufe
    R
    Nach einigem Herumprobieren und testen habe ich jetzt glaube ich eine Lösung die funktioniert. Kann man vielleicht Code-mäßig noch optimieren, aber im Moment bin ich nur froh, dass es so geht, wie ich will :) var temp_switch = 2.5; //über welcher Differenztemperatur die Sonne scheint var timer_ein; var timer_aus; on({id: "hm-rpc.0.LEQ0244813.3.TEMPERATURE"/*Sonnensensor_3.TEMPERATURE*/, change: "any"}, function(dp) { if(dp.state.val >= temp_switch) { log("----------------test sonne_temp true"); setState("javascript.1.Variablen.Sonne_temp"/*Sonne_temp*/, true); } else { log("----------------test sonne_temp false"); setState("javascript.1.Variablen.Sonne_temp"/*Sonne_temp*/, false); } }); on({id: "javascript.1.Variablen.Sonne_temp"/*Sonne_temp*/, change: "any"}, function(dp) { var old = dp.oldState.val; log("------------------ test sonne old: "+old+" new: "+dp.state.val, "info"); if(dp.state.val === true && old === false) { log("-------------------test sonnenvar auf ein"); clearTimeout("hm-rega.0.64510"/*Sonne_ccu*/); setStateDelayed("hm-rega.0.64510"/*Sonne_ccu*/, true, 300000); } if(dp.state.val === false && old === true) { log("-------------------test sonnenvar auf aus"); clearTimeout("hm-rega.0.64510"/*Sonne_ccu*/); setStateDelayed("hm-rega.0.64510"/*Sonne_ccu*/, false, 900000); } }); und so hat der heutige Tag dazu ausgeschaut: [image: 421_unbenannt.jpg]
  • Erste Gehversuche…Hilfe

    Verschoben
    16
    0 Stimmen
    16 Beiträge
    3k Aufrufe
    V
    Hallo, du musst zuerst den Wert holen und kannst ihn dann prüfen: FALSCH: if(obj.newState.val && getState(TAG2 === false).val) RICHTIG: if(obj.newState.val && getState(TAG2).val === false) Mit getState(XXX).val bekommst du den Inhalt der Variable und danach auf Inhalt prüfen. LG Christian

399

Online

32.6k

Benutzer

82.2k

Themen

1.3m

Beiträge