Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Fehlermeldung Javascript in Verbindung mit Wallpanel / MQTT

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    221

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

Fehlermeldung Javascript in Verbindung mit Wallpanel / MQTT

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 282 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Thomas JansenT Offline
    Thomas JansenT Offline
    Thomas Jansen
    schrieb am zuletzt editiert von
    #1

    Re: [Script] Wallpanel MQTT Daten interpretieren

    Hallo zusammen, habe das Script von Uhula 1:1 übernommen. Die Datenpunkte werden auch angelegt, jedoch wird mein Log überflutet:

    c8a4f83c-fe47-4f8e-aa2f-de1b14e3815e-grafik.png

    Kann hier jemand helfen? Bin etwas ratlos..

    LG

    paul53P 1 Antwort Letzte Antwort
    0
    • Thomas JansenT Thomas Jansen

      Re: [Script] Wallpanel MQTT Daten interpretieren

      Hallo zusammen, habe das Script von Uhula 1:1 übernommen. Die Datenpunkte werden auch angelegt, jedoch wird mein Log überflutet:

      c8a4f83c-fe47-4f8e-aa2f-de1b14e3815e-grafik.png

      Kann hier jemand helfen? Bin etwas ratlos..

      LG

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @thomas-jansen sagte: das Script von Uhula 1:1 übernommen.

      Skript / Link?

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      Thomas JansenT 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @thomas-jansen sagte: das Script von Uhula 1:1 übernommen.

        Skript / Link?

        Thomas JansenT Offline
        Thomas JansenT Offline
        Thomas Jansen
        schrieb am zuletzt editiert von
        #3

        @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 );
        
         
        
         
        
         
        
        
        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        541

        Online

        32.7k

        Benutzer

        82.5k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe