Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.7k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 50k
    3k Themen
    50k Beiträge
    maxclaudiM
    Hier ist der zweite Teil des Archivs zum Download. Bitte denkt daran, diese Datei (zendure_Info.z01) zusammen mit der Hauptdatei aus dem ersten Beitrag in denselben Ordner zu legen, bevor ihr den Entpackvorgang startet. download part 2v2: zendure_Info.z01
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    tiobbT
    @paul53 sagte: @tiobb [sagte]: kamen die Meldungen Für die Prüfung mehrerer Sensoren verwende besser eine Variable und nur einen Telegram-Block. Prinzip: [image: 1784882036727-blockly_temp.jpg] Ich habe dein Blockly etwas angepasst, da ich Fehlmeldungen erhalten habe, wenn sich der Wert mehrere Stunden nicht geändert hat, nun habe ich auf Zeitstempel umgestellt, was sagst Du dazu? [image: 1785400724491-opera-momentaufnahme_2026-07-30_102846_192.168.178.75.png]
  • Hilfe für Skripterstellung mit Node-RED

    962 13k
    962 Themen
    13k Beiträge
    Marc BergM
    @Thomas-Braun sagte: In der Konfigurationsdatei von Node Red, also in der settings.js, kann durch hinzufügen der Zeitzone das Problem behoben werden. Wenn man den Adapter nutzt, werden Änderungen in der settings.js immer wieder überschrieben. Das bringt nichts. @taddy81 Was konkret ist denn das Problem? Lösen die inject Nodes falsch aus? Oder geht es nur um diese Meldung, bei der niemand weiß, woher sie kommt? @Taddy81 sagte: Auszug: 7/26/2026, 11:15:23 AMnode: debug 3msg.payload : string[24]
  • [Script] Fully Kiosk Browser steuern und Informationen in Datenpunkten

    Verschoben
    22
    4
    1 Stimmen
    22 Beiträge
    7k Aufrufe
    A
    Hallo mit dem neuesten Update von JS müsste glaub ich das ACK flack gesetzt werden... ich bekomme nun immer diese Fehlermeldungen: Read-only state "javascript.0.mic.FullyBrowser.Info.appFreeMemory" has been written without ack-flag with value "90088816" javascript.0 2021-10-12 18:06:00.466 warn Read-only state "javascript.0.mic.FullyBrowser.Info.kioskLocked" has been written without ack-flag with value "false" javascript.0 2021-10-12 18:06:00.465 warn Read-only state "javascript.0.mic.FullyBrowser.Info.SSID" has been written without ack-flag with value ""FRITZ!Box 7362 SL"" javascript.0 2021-10-12 18:06:00.463 warn Read-only state "javascript.0.mic.FullyBrowser.Info.screenBrightness" has been written without ack-flag with value "25" javascript.0 2021-10-12 18:06:00.462 warn Read-only state "javascript.0.mic.FullyBrowser.Info.locationProvide" has been written without ack-flag with value "network" javascript.0 2021-10-12 18:06:00.461 warn Read-only state "javascript.0.mic.FullyBrowser.Info.currentTabIndex" has been written without ack-flag with value "0" javascript.0 2021-10-12 18:06:00.460 warn Read-only state "javascript.0.mic.FullyBrowser.Info.displayWidthPixels" has been written without ack-flag with value "1280" javascript.0 2021-10-12 18:06:00.459 warn Read-only state "javascript.0.mic.FullyBrowser.Info.androidSdk" has been written without ack-flag with value "19" javascript.0 2021-10-12 18:06:00.458 warn Read-only state "javascript.0.mic.FullyBrowser.Info.lastAppStart" has been written without ack-flag with value "12.10.2021 02:00:39" javascript.0 2021-10-12 18:06:00.457 warn Read-only state "javascript.0.mic.FullyBrowser.Info.isDeviceAdmin" has been written without ack-flag with value "true" javascript.0 2021-10-12 18:06:00.456 warn Read-only state "javascript.0.mic.FullyBrowser.Info.screenOrientation" has been written without ack-flag with value "90" javascript.0 2021-10-12 18:06:00.454 warn Read-only state "javascript.0.mic.FullyBrowser.Info.isInForcedSleep" has been written without ack-flag with value "false" javascript.0 2021-10-12 18:06:00.453 warn Read-only state "javascript.0.mic.FullyBrowser.Info.isPlugged" has been written without ack-flag with value "true" könnte man das vielleicht anpassen ? Ansonsten ein Super Script viele Grüße Andreas
  • Fehlermeldung: Object.<anonymous>

    2
    2
    0 Stimmen
    2 Beiträge
    331 Aufrufe
    paul53P
    @chrisbie sagte: kleines Script Weshalb gibt es zwei Datenpunkte mit der maximalen Temperatur? Man sollte nie einen Datenpunkt (Vis_Var_MaxTemp) abfragen, der gerade schrieben wird, da setState() asynchron ausgeführt wird. Vorschlag: [image: 1633959949574-bild_2021-10-11_154548.png]
  • Scriptabfrage mit Minuswerte bekomme ich nicht hin

    4
    0 Stimmen
    4 Beiträge
    342 Aufrufe
    R
    @fastfoot natürlich nicht, sorry dachte hier eher an ein Flüchtigkeitsfehler den ein dritter rel. einfach sieht. Deshalb hab ich es nicht mit erwähnt. @paul53 Danke, genau das war es. Mit dem suchen hab ich gefühlte Stunden verbracht und es nicht gesehen...
  • iCal Kalender HTML Description anzeige

    4
    0 Stimmen
    4 Beiträge
    598 Aufrufe
    liv-in-skyL
    @killroy2 Kannst du sowas gebrauchen Anstatt Event. Müsste man halt die description anzeigen https://forum.iobroker.net/topic/40691/html-tabelle-für-ical-adapter-mehrere-instanzen
  • Sprachausgabe Alexa / Blockly

    Verschoben
    20
    1
    0 Stimmen
    20 Beiträge
    12k Aufrufe
    P
    @dslraser ich habe den Adapter aktualisiert auf 3.9.2 war noch die ältere Version drauf. Unter Status am Adaptor sehe ich, dass Verbunden mit Host: falsch , Lebenszeichen: falsch, Verbunden mit alexa2: wahr. Habe den Adaptor mehrmals neu gestartet. Kurz nach dem Start geht alles auf grün dann wieder die beiden oberen Indikatoren auf rot. Hmmm. Vielen Dank für Unterstützung. Ich habe den Adapter gelöscht und neu installiert. Adapter funktioniert wieder und die Sprauchausgabe ebenfalls.
  • skript problem mit BWM und lampen

    12
    4
    0 Stimmen
    12 Beiträge
    624 Aufrufe
    paul53P
    @wurzeldoktor sagte: wie mache ich es dann beim ersten am besten? Genauso mit "wurde geändert". Man kann sich den Umweg über den zusätzlichen Datenpunkt "Bewegung erkannt" sparen: [image: 1633802304267-bild_2021-10-09_195823.png]
  • Datenpunkte für Alexa erstellen

    3
    4
    0 Stimmen
    3 Beiträge
    543 Aufrufe
    C
    @cinimod Danke Funktioniert
  • Tesla Adapter - aufwecken

    1
    0 Stimmen
    1 Beiträge
    156 Aufrufe
    Niemand hat geantwortet
  • Thread-Geräte in ioBroker integrieren

    Gesperrt
    7
    0 Stimmen
    7 Beiträge
    608 Aufrufe
    I
    @homoran Stimmt, da war was, sorry! Leider hat sich allerdings nicht wirklich viel getan. Ich will nicht „meckern“, kann programmiertechnisch leider nichts beisteuern, aber eine Integration von Thread-fähigen Geräten (z.B. von „Eve“) wäre als erster Schritt im „Matter-Thema“ doch nicht verkehrt?
  • Farbwechsel: Script für verschiedene LED Lampen erstellen?

    2
    0 Stimmen
    2 Beiträge
    283 Aufrufe
    CinimodC
    @vocaris klar machbar ist das. erstell dir einen Datenpunkt den du mit Alexa ansprechen kannst, und nimmst den als trigger in wie fern du die farben wechseln willst weiß ich nicht, kenne die Standart Szenen nicht
  • Einschalt-Grund Lampe

    blockly
    3
    0 Stimmen
    3 Beiträge
    367 Aufrufe
    MrDJSageM
    Du könntest dir auch per InfluxDB / Grafana etc. die Uhrzeit und oder das Einschaltverhalten deiner anderen Geräte loggen / visualisieren. Damit kannst du ggf. eine Korrelation feststellen. Zum Beispiel die Terrasse geht immer an, wenn du das Bad Licht an machst etc.
  • Fehlermeldung Javascript in Verbindung mit Wallpanel / MQTT

    3
    1
    0 Stimmen
    3 Beiträge
    362 Aufrufe
    Thomas JansenT
    @paul53 Oh Sorry, betrifft diesen Post: https://forum.iobroker.net/topic/37134/script-wallpanel-mqtt-daten-interpretieren ganz unten ist das Script /* *** MduiUpdateWallpanelMQTT Die Android-App "Wallpanel" bietet, ähnlich wie Fully Kiosk Browser, die Möglichkeit Web-Seiten als Vollbild darstellen zu lassen. Weiterhin kann sie Sensorwerte des Android-Devices via MQTT Client an einen MQTT Broker übertragen. Wenn unter iobroker der Adapter "MQTT Broker/Client" installiert und als Broker (Server) konfiguriert wurde, kann dieser die MQTT Medlungen empfangen und speichert sie z.B. unter mqtt.0.wallpanel.<devicename> ab. Bsp: mqtt.0.wallpanel.<devicename>.sensor.batterie = {"value":51,"unit":"%","charging":false,"acPlugged":false,"usbPlugged":false} mqtt.0.wallpanel.<devicename>.sensor.light = {"value":80,"unit":"lx","id":"EPL_SENSOR ALS\/PS EPL_SENSOR"} . Diese Daten kann man in derForm in der vis nicht direkt weiter verwenden, sondern die JSON Angaben müssen erst in eigene States überführt werden. Diesen Zweck erfüllt dieses Script. Es erzeugt aus dem obigen Beispiel die Struktur/States: . 0_userdata.0.mdui.wallpanel.<devicename>.sensor.batterie.value = 51 0_userdata.0.mdui.wallpanel.<devicename>.sensor.batterie.unit = "%" 0_userdata.0.mdui.wallpanel.<devicename>.sensor.batterie.charging = false 0_userdata.0.mdui.wallpanel.<devicename>.sensor.batterie.acPlugged = false usw. . Diese können in der vis direkt verwendet werden. Weiterhin richtet es einen subscriber auf die MQTT States ein und hält die selbst erzeugten States aktuell. . . **** Voraussetzungen (a) Android Device mit installierter App "Wallpanel" und dort konfiguriertem MQTT Client. (b) Installierter Adapter "MQTT Broker/Client" in IOBroker . **** Installation Einfach als serverseitiges Script installieren und starten. Beim 1.Start werden die notwendigen States erzeugt und es findet automatisch ein erneuter Start nach 10 Sek statt. Erst nach diesem 2.Start instanziiert das Script die Event-Handler und läuft dann. . **** Konfiguration Eigentlich ist keine notwendig. Optional im Absatz KONFIGURATION vornehmen . **** Tipps zur Wallpanel-App * Zum Steuern der Wallpanel-App: iobroker Adapter "Wallpanel" (https://forum.iobroker.net/topic/36438/test-adapter-wallpanel/10) * "Camera on" nur, wenn das Android Device eine Stromversorgung hat * die "Bildschirm-Ausschaltzeit" kann nicht kürzer als die unter Android eingestellte sein; also die auch verringern; wirkt sich auch auf "screenOff" aus * . . **** Lizenz (c) 2020 by UH, MIT License, no warranty, use on your own risc . *** Changelog 2020.09.26 UH * Geburt */ // ------------------------------------------------------------------------------------- // KONFIGURATION // ------------------------------------------------------------------------------------- // state-Pfad unter dem die States angelegt werden sollen const CONFIG_STATE_PATH = '0_userdata.0.mdui.wallpanel'; // zu überwachender MQTT Pfad const CONFIG_MQTT_PATH = 'mqtt.0.wallpanel'; // ------------------------------------------------------------------------------------- // MduiBase // ------------------------------------------------------------------------------------- class MduiBase { constructor() { this.init(); } // init() { // const this.DEBUG = false; this.VERSION = '1.0/2020-01-01'; this.NAME = 'mduiBase'; this.STATE_PATH = '0_userdata.0.mdui.base.'; this.STATE_UNKNOWN = 0; this.STATE_INSTALLING = 10; this.STATE_INSTALLED = 11; this.STATE_STARTING = 20; this.STATE_STARTED = 21; this.STATE_STOPPING = 30; this.STATE_STOPPED = 31; // var this.installed = false; this.states = []; this.state = this.STATE_UNKNOWN; this.subscribers = []; this.schedulers = []; this.doInit(); // init der states this.states.push( { id:'version', common:{name:'installed script-version', write:false, def:this.VERSION} } ); } // // start the script/class // start() { // beim 1.Start nur die States erzeugen if ( !this.existsState("version") || (this.getState('version').val!=this.VERSION) ) { for (let s=0; s<this.states.length; s++) { this.createState( this.states[s].id ); } this.logWarn('first script start, creating states for version '+this.VERSION+', automatic restarting script again in 10 sec ...'); setStateDelayed(this.STATE_PATH + 'version', this.VERSION, 3000); setTimeout( this.start.bind(this), 10000 ); this.state = this.STATE_INSTALLED; return; } switch (this.state) { case this.STATE_UNKNOWN : ; case this.STATE_INSTALLING : ; case this.STATE_INSTALLED : ; case this.STATE_STOPPED : { this.state = this.STATE_STARTING; if (this.doStart()) { this.log('script started'); this.state = this.STATE_STARTED; } break; } case this.STATE_STARTING : ; case this.STATE_STARTED : { this.logWarn('script already starting/started'); break; } case this.STATE_STOPPING : { this.logWarn('script is stopping, pls start later again'); break; } } } // // stop the script/class // stop() { switch (this.state) { case this.STATE_STARTED : { this.state = this.STATE_STOPPING; if (this.doStop()) { for (let i=0; i<this.subscribers.length; i++) if (this.subscribers[i] !== undefined) unsubscribe( this.subscribers[i] ); this.subscribers = []; for (let i=0; i<this.schedulers.length; i++) if (this.schedulers[i] !== undefined) clearSchedule( this.schedulers[i] ); this.schedulers = []; this.state = this.STATE_STOPPED; this.log('script stopped'); } break; } default : { this.log('cant stopp script, because not startet'); } } } // --------------------- virtual functions, overwrite it doInit() { return true; } doStart() { return true; } doStop() { return true; } // --------------------- helper functions logDebug(msg,func='') { if (this.DEBUG) console.log(`[${this.NAME}.${func}] ${msg}`); } log(msg,func='') { console.log(`[${this.NAME}.${func}] ${msg}`); } logWarn(msg,func='') { console.warn(`[${this.NAME}.${func}] ${msg}`); } logError(msg,func='') { console.error(`[${this.NAME}.${func}] ${msg}`); } // einen on-Handler registrieren subscribe( handler ) { this.subscribers.push( handler ); } // einen timer registrieren schedule( handler ) { this.schedulers.push( handler ); } // über den $-Operator nachsehen, ob der state bereits vorhanden ist // getState().notExists geht auch, erzeugt aber Warnmeldungen! existsState(id) { return existsState(this.STATE_PATH + id); // return ( $(this.STATE_PATH+id).length==0?false:true); } // wrapper, adds statepath to state-ID getState(id) { return getState(this.STATE_PATH + id); } // like setState(), but adds statepath to state_ID and checks if state exists, when not, creates it setState(id,value) { if ( !this.existsState(id) ) this.createState(id,value,undefined); else setState( this.STATE_PATH + id, value); } // like cresteState(), but adds statepath to state_ID and checks if state exists, when not, creates it createState(id,value,common) { if ( !this.existsState(id) ) { if (common===undefined) { // id im states-Array suchen for (var i=0; i<this.states.length; i++) { if (this.states[i].id==id) { if (this.states[i].hasOwnProperty('common')) common = this.states[i].common; break; } } } if ( (typeof value === 'undefined') && (typeof common !== 'undefined') && (common.hasOwnProperty('def'))) value = common.def; // unter "0_userdata.0" let obj = {}; obj.type = 'state'; obj.native = {}; obj.common = common; setObject(this.STATE_PATH + id, obj, (err) => { if (err) { this.log(`cant write object for state "${this.STATE_PATH}${id}": ${err}`); } else { this.log(`state "${this.STATE_PATH}${id}" created`); } }); setTimeout( setState, 3000, this.STATE_PATH + id, value ); } } // true, if str contains filter string or regexp fitsFilter(str, filter) { if ( (filter===undefined) || !filter || (filter=='') ) return true; if ( filter instanceof RegExp ) { if (str.match( filter ) != null) return true; } else if (typeof filter == 'string') { if(str.includes(filter)) return true; } return false; } // escapeRegExp(str) { return str.replace(/[.*+?^${}()|[]\]/g, '\\$&'); } } // ------------------------------------------------------------------------------------- // MduiUpdateWallpanelMQTT // ------------------------------------------------------------------------------------- class MduiUpdateWallpanelMQTT extends MduiBase { constructor() { super(); } // init doInit() { super.doInit(); // const this.DEBUG = false; this.VERSION = '1.0/2020-09-26'; this.NAME = 'mduiUpdateWallpanelMQTT'; this.STATE_PATH = CONFIG_STATE_PATH; this.MQTT_PATH = CONFIG_MQTT_PATH; if (this.STATE_PATH.slice(-1)!='.') this.STATE_PATH += '.'; if (this.MQTT_PATH.slice(-1)!='.') this.MQTT_PATH += '.'; return true; } // start the script/class doStart() { super.doStart(); // subscriber erzeugen this.subscribe( on( new RegExp( `${this.MQTT_PATH}*` ), obj => { this.onChangeMQTT(obj.id) } )); this.initMQTT(); return true; } // stop the script/class doStop() { super.doStop(); return true; } onChangeMQTT( id ) { // this.log(id,'onChangeMQTT'); if (id.indexOf(".command")!=-1) return; if ( existsState(id) ) { let state = getState(id); let o = JSON.parse(state.val); for (var prop in o) { let name = id.slice(this.MQTT_PATH.length,1000); name += '.' + prop; // this.log(`${name} = ${o[prop]}`,'onChangeMQTT'); if (this.existsState(name) ) this.setState(name,o[prop]); else this.createState(name, o[prop]); } } } initMQTT() { $(`channel[state.id=${this.MQTT_PATH}*]`).each( (id, i) => { // this.log(id,'initMQTT'); this.onChangeMQTT( id ); }); } } // create instance and start var mduiUpdateWallpanelMQTT = new MduiUpdateWallpanelMQTT( ); mduiUpdateWallpanelMQTT.start(); // on script stop, stop instance too onStop(function () { mduiUpdateWallpanelMQTT.stop(); }, 1000 );
  • Script für USV Wartung

    2
    1
    0 Stimmen
    2 Beiträge
    296 Aufrufe
    G
    @drake Zuerst muss der Trigger im Trigger geändert werden! Pack den 2.Teil einfach darunter. Wird denn die Ladung als String oder als Zahl ausgegeben, da solltest Du auch nochmal gucken! Wenn Du weisst, wie lange Deine Batterie normalerweise braucht bis sie 40 % erreicht hat, kannst Du ja eine Zeit zum wiedereinschalten mit einem "oder" zur battery-charge 40% machen
  • Cronjob auf Slave um VPN Verbindung wieder herzustellen

    security
    5
    0 Stimmen
    5 Beiträge
    378 Aufrufe
    SBorgS
    @myzerat Jepp, fast schon gut. Shell-Skripte müssen aber auch ausführbar sein, nur "lesen" genügt da nicht ;) sudo chmod +x /etc/openvpn/startopenvpn.sh Dannn sollte es "rwxr--r-- root root ..." sein.
  • [gelöst] NodeRed Dashoard mehrere Tabs oder Pages

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    6k Aufrufe
    F
    @garf said in [gelöst] NodeRed Dashoard mehrere Tabs oder Pages: Die Dashboardseiten kann man dann natürlich einzeln im Tab eines Browsers aufrufen. Ich würde das unter Apple mit Floato machen. sieht dann so aus.! Screenshot at Oct 01 23-02-42.png
  • Skript für Bluetooth-Heizkörperthermostat unter IoBroker

    Verschoben
    21
    0 Stimmen
    21 Beiträge
    5k Aufrufe
    A
    @kr4mb3 Hallo Freunde, vielen Dank für den Skript. Funktioniert ganz gut. Meine Frage: hat ihn jemand weiter verbessert? ToDo: Mehrere Thermostate gleichzeitig Sicherheit Zum Punkt "Sicherheit": Es ist ja jedem klar, dass die Thermostate nicht durch Verschlüsselung geschützt sind. Wünschenswert wäre eine Funktion im Skript, die eine Fremdeinwirkung erkennt und gegensteuert. Umsetzbar wäre dies z.B. durch das Speichern des Status und regelmäßigen Vergleich der Strings. Hat da jemand eine Idee?
  • [Gelöst] Javascript.0 "spinnt" - Fehlermeldungen

    javascript
    6
    0 Stimmen
    6 Beiträge
    408 Aufrufe
    qqolliQ
    @guergen Danke für den Tipp, das war es tatsächlich. Hatte ein Skript mit Request() und einem Abfrageintervall von 5s (Danke auch an @paul53 ). Somit, Problem gelöst. Ich liebe dieses Forum! :-)
  • Rolladen script - bitte um Hilfe :)

    7
    3
    0 Stimmen
    7 Beiträge
    713 Aufrufe
    W
    Danke euch, solange ich das teil ned "kalibriert" bekomme, brauch ich auch kein script machen :( Die automatische calibration fahrt macht irwie nix...🤷‍♂️
  • Mittelwertbildung für die Windrichtung mit JavaScript

    1
    2
    2 Stimmen
    1 Beiträge
    722 Aufrufe
    Niemand hat geantwortet
  • [GELÖST] Im Skript eigene ID (Name) ermitteln?

    3
    0 Stimmen
    3 Beiträge
    303 Aufrufe
    NewpicselN
    @paul53 Ja richtig perfekt! Ich danke dir

373

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge