Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. Lay-Z-Spa Wifi Control

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    203

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    7.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Lay-Z-Spa Wifi Control

Lay-Z-Spa Wifi Control

Scheduled Pinned Locked Moved Hardware
211 Posts 76 Posters 50.4k Views 72 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • W wolkenloser

    @kukoratsch
    Ich hatte da was, da alles nicht funktioniert hat, hab ich den Zweig wieder gelöscht. und das Script nochmal gestartet, aber jetzt kommt da nichts mehr.....

    Ich hab nochmal geschaut.
    Ich hatte im dem Script die Zeile mit Const ID geändert, das hatte ich vergessen.
    Hab das wieder so eingestellt :
    const ID = '0_userdata.0.LazySpa';
    const MQTTINSTANCE = 0;
    const debug = true;

    Jetzt habe ich wieder den selben Zustand.
    Die Objekte sind angelegt, aber sie werden nicht aktualisiert, obwohl das Script läuft.

    Muss ich hier noch was ändern ?
    ec796bd3-e825-4466-80f6-a6d7e5d49d8f-image.png

    K Offline
    K Offline
    kukoratsch
    wrote on last edited by
    #185

    @wolkenloser ändere mal Client ID und Basis Topic auf layzspa

    W 1 Reply Last reply
    0
    • K kukoratsch

      @wolkenloser ändere mal Client ID und Basis Topic auf layzspa

      W Offline
      W Offline
      wolkenloser
      wrote on last edited by
      #186

      @kukoratsch
      wo ? Im Script ?
      im WifiWhirl it es ja so eingetragen

      K 1 Reply Last reply
      0
      • W wolkenloser

        @kukoratsch
        wo ? Im Script ?
        im WifiWhirl it es ja so eingetragen

        K Offline
        K Offline
        kukoratsch
        wrote on last edited by
        #187

        @wolkenloser

        Muss ich hier noch was ändern ?
        ec796bd3-e825-4466-80f6-a6d7e5d49d8f-image.png

        Bei dir steht doch lazyspa ändere mal Client ID und Basis Topic auf layzspa

        W 1 Reply Last reply
        0
        • K kukoratsch

          @wolkenloser

          Muss ich hier noch was ändern ?
          ec796bd3-e825-4466-80f6-a6d7e5d49d8f-image.png

          Bei dir steht doch lazyspa ändere mal Client ID und Basis Topic auf layzspa

          W Offline
          W Offline
          wolkenloser
          wrote on last edited by
          #188

          @kukoratsch Ich verstehe nicht was Du meinst, das ist doch lazyspa eingetragen.....

          T 1 Reply Last reply
          0
          • W wolkenloser

            @kukoratsch Ich verstehe nicht was Du meinst, das ist doch lazyspa eingetragen.....

            T Offline
            T Offline
            TimoWald
            wrote on last edited by
            #189

            @wolkenloser Da muss layzspa rein und nicht lazyspa.
            zy tauschen zu yz.

            W 1 Reply Last reply
            0
            • T TimoWald

              @wolkenloser Da muss layzspa rein und nicht lazyspa.
              zy tauschen zu yz.

              W Offline
              W Offline
              wolkenloser
              wrote on last edited by
              #190

              @timowald
              Danke, manchmal sieht man den Wald vor Bäumen nicht.

              1 Reply Last reply
              0
              • Chris685C Chris685

                Update um die Außentemperatur (Umgebungstemperatur) über ioBroker zur Berechnung der virtuellen Temperatur einzubinden.

                const Messages =  
                {
                  "CONTENT": "STATES",
                  "LCK": 0,
                  "PWR": 0,
                  "UNT": 1,
                  "AIR": 0,
                  "GRN": 0,
                  "RED": 0,
                  "FLT": 0,
                  "TGT": 22,
                  "TMP": 13,
                  "CH1": 32,
                  "CH2": 49,
                  "CH3": 51,
                  "HJT": 0,
                  "BRT": 7,
                  "AMBC": 22
                }
                const ID = '0_userdata.0.LazySpa';
                const MQTTINSTANCE = 0;
                const debug = true;
                /*
                {
                  "CONTENT": "TIMES",
                  "TIME": 1650746370,
                  "CLTIME": 1644734714,
                  "FTIME": 1644734719,
                  "UPTIME": 41660,
                  "PUMPTIME": 50,
                  "HEATINGTIME": 24,
                  "AIRTIME": 512,
                  "JETTIME": 4294966,
                  "COST": 0,
                  "FINT": 4294967295,
                  "CLINT": 4294967295,
                  "KWH": null,
                  "TTTT": -74677
                }
                */
                const STATES=[
                    {
                        _id: 'LCK',
                        type: 'state',
                        common: {
                            name: 'lock',
                            type: 'boolean',
                            role: 'switch',
                            read: true,
                            write: false,
                            desc: 'Lazy spa lock'
                        },
                        native: {}
                    },
                    {
                        _id: 'PWR',
                        type: 'state',
                        common: {
                            name: 'power',
                            type: 'boolean',
                            role: 'switch.power',
                            read: true,
                            write: true,
                            desc: 'Lazy spa power'
                        },
                        native: {}
                    },
                    {
                    _id: 'UNT',
                    type: 'state',
                    common: {
                        name: 'unit',
                        type: 'number',
                        role: 'value',
                        read: true,
                        write: true,
                        max: 1,
                        desc: 'Lazy spa unit',
                        states: {
                				0: 'Farenheit',
                				1: 'Celsius'
                			}
                    },
                    native: {}
                    },
                    {
                    _id: 'AIR',
                    type: 'state',
                    common: {
                        name: 'bubbles',
                        type: 'boolean',
                        role: 'switch',
                        read: true,
                        write: true,
                        desc: 'Lazy spa bubbles state'
                    },
                    native: {}
                    },
                    {
                    _id: 'GRN',
                    type: 'state',
                    common: {
                        name: 'Heating green',
                        type: 'boolean',
                        role: 'switch',
                        read: true,
                        write: false,
                        desc: 'reached target temp.'
                    },
                    native: {}
                    },
                    {
                    _id: 'RED',
                    type: 'state',
                    common: {
                        name: 'Heating red',
                        type: 'boolean',
                        role: 'switch',
                        read: true,
                        write: false,
                        desc: 'not reached target temp.'
                    },
                    native: {}
                    },
                    {
                    _id: 'FLT',
                    type: 'state',
                    common: {
                        name: 'pump',
                        type: 'boolean',
                        role: 'switch',
                        read: true,
                        write: true,
                        desc: 'pump state'
                    },    native: {}
                    },
                    {
                    _id: 'HEATER',
                    type: 'state',
                    common: {
                        name: 'heater',
                        type: 'boolean',
                        role: 'switch',
                        read: true,
                        write: true,
                        desc: 'heater state'
                    },
                    native: {}
                    },
                    {
                    _id: 'TGT',
                    type: 'state',
                    common: {
                        name: 'target temp',
                        type: 'number',
                        role: 'level.temperature',
                        min: 20,
                        max: 40,
                        steps: 1,
                        read: true,
                        write: true,
                        desc: 'taget temp.'
                    },
                    native: {}
                    },
                    {
                    _id: 'TMP',
                    type: 'state',
                    common: {
                        name: 'temp',
                        type: 'number',
                        role: 'value.temperature',
                        read: true,
                        write: false,
                        unit: '°C',
                        desc: 'temp.'
                    },
                    native: {}
                    },
                        {
                    _id: 'VTM',
                    type: 'state',
                    common: {
                        name: 'temp',
                        type: 'number',
                        role: 'value.temperature',
                        read: true,
                        write: false,
                        unit: '°C',
                        desc: 'vtemp.'
                    },
                    native: {}
                    },
                    {
                    _id: 'AMBC',
                    type: 'state',
                    common: {
                        name: 'ambient temp',
                        type: 'number',
                        role: 'value.temperature',
                        read: false,
                        write: true,
                        desc: 'Ambienttemp.'
                    },
                    native: {}
                    },
                ]
                 
                 
                init();
                async function stateChange(obj){
                    let id = obj.id
                    let state = id.split('.').pop()
                    let value = obj.state.val
                    log('change Unit' + state)
                    switch (state) {
                        case 'UNT':
                            setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":1,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                            log('change Unit')
                        break;
                        case 'TGT':
                            setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":0,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                            log('change target temp. to '+ value);
                        break;
                        case 'AIR':
                            value = value ? 1: 0 ;
                            setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":2,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                            log('set bubbles to '+ value);
                        break;
                        case 'HEATER':
                            value = value ? 1: 0 ;
                            setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":3,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                            log('set Heater to '+ value);
                        break;
                        case 'FLT':
                            value = value ? 1: 0 ;
                            setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":4,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                            log('set pump to '+ value);
                        break;
                        case 'AMBC':
                            setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":14,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                            log('change ambient temp. to '+ value);
                        break;
                 
                 
                  default:
                    // Anweisungen werden ausgeführt,
                    // falls keine der case-Klauseln mit expression übereinstimmt
                    break;
                }
                 
                 
                 
                }
                async function init(){
                    await asyncForEach(STATES, async (obj, index) => {
                        let id = ID +'.'+ obj._id
                        if (!existsState(id)) {
                            log('create state '+ id)
                            await createStateAsync(id, obj.common)
                        }
                        else {
                            log('skip state '+ id)
                        }
                        //set subscription
                        if(obj.common.write){
                            on({id: id, change:"any"} , function(obj) {
                                if(!obj.state.ack){
                                    log('change state! '+ JSON.stringify(obj))
                                    stateChange(obj)
                                }
                            });
                        }       
                    });
                    log('init done!')
                }
                async function setLazyStates(obj){
                    try{
                            let states = JSON.parse(obj)
                            for (const [key, value] of Object.entries(states)) {
                                let statevalue = value
                                const found = STATES.find(state => state._id === key);
                                if(found){                 
                                    if (found.common.type === 'boolean'){
                                        statevalue = value === 1
                                    }
                                    await setStateAsync(ID +'.'+ key,statevalue,true)
                                }
                            }
                            //set heater state
                            await setStateAsync(ID +'.HEATER',(states.GRN || states.RED) === 1,true)    
                    }
                    catch(e){
                        console.log('Error in setting State '+ e)
                    }
                 
                }
                 
                async function asyncForEach(array, callback) {
                	for (let index = 0; index < array.length; index++) {
                		await callback(array[index], index, array);
                	}
                }
                function log (msg){
                    if(debug) console.log (msg)
                }
                 
                on({id:'mqtt.'+ MQTTINSTANCE+'.layzspa.message', change:"ne"} , function(obj) {
                    log('Lazyspa reached message! '+ JSON.stringify(obj.state))
                    setLazyStates(obj.state.val)
                });
                

                Die Variable AMBC update ich bei Änderung der Außentemperatur. Ich lese die Außentemperatur über Netatmo ein.

                NinjaTurtle85N Offline
                NinjaTurtle85N Offline
                NinjaTurtle85
                wrote on last edited by
                #191

                @chris685
                Hi, wenn ich das richtig verstehe, sollte wenn ich den Datenpunkt AMBC ändere der Wert im Modul für die Außentemperatur stehen?

                NinjaTurtle85N 1 Reply Last reply
                0
                • NinjaTurtle85N NinjaTurtle85

                  @chris685
                  Hi, wenn ich das richtig verstehe, sollte wenn ich den Datenpunkt AMBC ändere der Wert im Modul für die Außentemperatur stehen?

                  NinjaTurtle85N Offline
                  NinjaTurtle85N Offline
                  NinjaTurtle85
                  wrote on last edited by
                  #192

                  @ninjaturtle85 sagte in Lay-Z-Spa Wifi Control:

                  @chris685
                  Hi, wenn ich das richtig verstehe, sollte wenn ich den Datenpunkt AMBC ändere der Wert im Modul für die Außentemperatur stehen?

                  Ich hab den Fehler selbst gefunden:
                  Ich musste in meinem Skript, in dem ich die Außentemperatur in den Datenpunkt schreibe, ändern. Und zwar habe ich den Wert aktualisiert und nicht gesteuert.

                  Aber ich muss ihn in Fahrenheit umrechnen damit er im Datenpunkt und im Modul richtig dargestellt wird.

                  1 Reply Last reply
                  0
                  • B Offline
                    B Offline
                    BastiBerlin
                    wrote on last edited by
                    #193

                    Hi, ich habe das Problem, dass ich das WifiWhirl ab und zu selber einschaltet ich hatte hier mal gelesen das es von dem Skript kommt stimmt das oder liegt das an was anderem ?
                    Kann ich das irgendwie verhindern ?

                    Grüße
                    Basti

                    1 Reply Last reply
                    0
                    • Der-JetiD Der-Jeti

                      @nonono ja, sind noch 6x da.

                      01.07.24
                      5x vorhanden

                      F Offline
                      F Offline
                      FireSaw
                      wrote on last edited by
                      #194

                      @der-jeti sagte in Lay-Z-Spa Wifi Control:

                      @nonono ja, sind noch 6x da.

                      01.07.24
                      5x vorhanden

                      Hast du noch welche über? Würde 3Stk brauchen.

                      Der-JetiD 1 Reply Last reply
                      0
                      • F FireSaw

                        @der-jeti sagte in Lay-Z-Spa Wifi Control:

                        @nonono ja, sind noch 6x da.

                        01.07.24
                        5x vorhanden

                        Hast du noch welche über? Würde 3Stk brauchen.

                        Der-JetiD Offline
                        Der-JetiD Offline
                        Der-Jeti
                        wrote on last edited by
                        #195

                        @firesaw sagte in Lay-Z-Spa Wifi Control:

                        @der-jeti sagte in Lay-Z-Spa Wifi Control:

                        @nonono ja, sind noch 6x da.

                        01.07.24
                        5x vorhanden

                        Hast du noch welche über? Würde 3Stk brauchen.

                        Ja, schreib mir eine PM

                        T 1 Reply Last reply
                        0
                        • Der-JetiD Der-Jeti

                          @firesaw sagte in Lay-Z-Spa Wifi Control:

                          @der-jeti sagte in Lay-Z-Spa Wifi Control:

                          @nonono ja, sind noch 6x da.

                          01.07.24
                          5x vorhanden

                          Hast du noch welche über? Würde 3Stk brauchen.

                          Ja, schreib mir eine PM

                          T Offline
                          T Offline
                          TimoWald
                          wrote on last edited by
                          #196

                          Hallo wo bekomme ich die aktuelle Firmware für WifiWirl LayZSpa?

                          Der-JetiD H 2 Replies Last reply
                          0
                          • T TimoWald

                            Hallo wo bekomme ich die aktuelle Firmware für WifiWirl LayZSpa?

                            Der-JetiD Offline
                            Der-JetiD Offline
                            Der-Jeti
                            wrote on last edited by
                            #197

                            @timowald https://github.com/visualapproach/WiFi-remote-for-Bestway-Lay-Z-SPA

                            T 1 Reply Last reply
                            0
                            • Der-JetiD Der-Jeti

                              @timowald https://github.com/visualapproach/WiFi-remote-for-Bestway-Lay-Z-SPA

                              T Offline
                              T Offline
                              TimoWald
                              wrote on last edited by
                              #198

                              @der-jeti Ja aber mit der Zip kann ich nicht viel anfangen. Gibt es dazu eine Anleitung?

                              1 Reply Last reply
                              0
                              • MeistertrM Meistertr

                                Hallo Leute ich arbeite gerade daran meinen Lay-Z-Spa Smarthome kompatibel zu machen. bin da auf ein tolles Projekt gestoßen mit einem Esp8266 Wollte hierfür die Platinen bestellen hat noch jemand zufällig Interesse? Eine Platine alleine ist ein bisschen zu teuer... würde zwischen 6 und 11 Euro liegen die platine je nachdem wieviele es werden...

                                Platine : https://easyeda.com/editor#id=a1b94bf9fc01407591a9e0fec6a813b3
                                Projekt: https://github.com/visualapproach/WiFi-remote-for-Bestway-Lay-Z-SPA

                                Wollte am Wochenende mal ein Testaufbau machen... und werde berichten...

                                PS: ich selbst habe einen Palm-Springspcb.jpg

                                edit: so ein kleines script habe ich auch dafür:

                                
                                const Messages =  
                                {
                                  "CONTENT": "STATES",
                                  "LCK": 0,
                                  "PWR": 0,
                                  "UNT": 1,
                                  "AIR": 0,
                                  "GRN": 0,
                                  "RED": 0,
                                  "FLT": 0,
                                  "TGT": 22,
                                  "TMP": 13,
                                  "CH1": 32,
                                  "CH2": 49,
                                  "CH3": 51,
                                  "HJT": 0,
                                  "BRT": 7
                                }
                                const ID = '0_userdata.0.LazySpa';
                                const MQTTINSTANCE = 0;
                                const debug = true;
                                /*
                                {
                                  "CONTENT": "TIMES",
                                  "TIME": 1650746370,
                                  "CLTIME": 1644734714,
                                  "FTIME": 1644734719,
                                  "UPTIME": 41660,
                                  "PUMPTIME": 50,
                                  "HEATINGTIME": 24,
                                  "AIRTIME": 512,
                                  "JETTIME": 4294966,
                                  "COST": 0,
                                  "FINT": 4294967295,
                                  "CLINT": 4294967295,
                                  "KWH": null,
                                  "TTTT": -74677
                                }
                                */
                                const STATES=[
                                    {
                                        _id: 'LCK',
                                        type: 'state',
                                        common: {
                                            name: 'lock',
                                            type: 'boolean',
                                            role: 'switch',
                                            read: true,
                                            write: false,
                                            desc: 'Lazy spa lock'
                                        },
                                        native: {}
                                    },
                                    {
                                        _id: 'PWR',
                                        type: 'state',
                                        common: {
                                            name: 'power',
                                            type: 'boolean',
                                            role: 'switch.power',
                                            read: true,
                                            write: true,
                                            desc: 'Lazy spa power'
                                        },
                                        native: {}
                                    },
                                    {
                                    _id: 'UNT',
                                    type: 'state',
                                    common: {
                                        name: 'unit',
                                        type: 'number',
                                        role: 'value',
                                        read: true,
                                        write: true,
                                        max: 1,
                                        desc: 'Lazy spa unit',
                                        states: {
                                				0: 'Farenheit',
                                				1: 'Celsius'
                                			}
                                    },
                                    native: {}
                                    },
                                    {
                                    _id: 'AIR',
                                    type: 'state',
                                    common: {
                                        name: 'bubbles',
                                        type: 'boolean',
                                        role: 'switch',
                                        read: true,
                                        write: true,
                                        desc: 'Lazy spa bubbles state'
                                    },
                                    native: {}
                                    },
                                    {
                                    _id: 'GRN',
                                    type: 'state',
                                    common: {
                                        name: 'Heating green',
                                        type: 'boolean',
                                        role: 'switch',
                                        read: true,
                                        write: false,
                                        desc: 'reached target temp.'
                                    },
                                    native: {}
                                    },
                                    {
                                    _id: 'RED',
                                    type: 'state',
                                    common: {
                                        name: 'Heating red',
                                        type: 'boolean',
                                        role: 'switch',
                                        read: true,
                                        write: false,
                                        desc: 'not reached target temp.'
                                    },
                                    native: {}
                                    },
                                    {
                                    _id: 'FLT',
                                    type: 'state',
                                    common: {
                                        name: 'pump',
                                        type: 'boolean',
                                        role: 'switch',
                                        read: true,
                                        write: true,
                                        desc: 'pump state'
                                    },    native: {}
                                    },
                                    {
                                    _id: 'HEATER',
                                    type: 'state',
                                    common: {
                                        name: 'heater',
                                        type: 'boolean',
                                        role: 'switch',
                                        read: true,
                                        write: true,
                                        desc: 'heater state'
                                    },
                                    native: {}
                                    },
                                    {
                                    _id: 'TGT',
                                    type: 'state',
                                    common: {
                                        name: 'target temp',
                                        type: 'number',
                                        role: 'level.temperature',
                                        min: 20,
                                        max: 40,
                                        steps: 1,
                                        read: true,
                                        write: true,
                                        desc: 'taget temp.'
                                    },
                                    native: {}
                                    },
                                    {
                                    _id: 'TMP',
                                    type: 'state',
                                    common: {
                                        name: 'temp',
                                        type: 'number',
                                        role: 'value.temperature',
                                        read: true,
                                        write: false,
                                        unit: '°C',
                                        desc: 'temp.'
                                    },
                                    native: {}
                                    },
                                ]
                                
                                
                                init();
                                async function stateChange(obj){
                                    let id = obj.id
                                    let state = id.split('.').pop()
                                    let value = obj.state.val
                                    log('change Unit' + state)
                                    switch (state) {
                                        case 'UNT':
                                            setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":1,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                                            log('change Unit')
                                        break;
                                        case 'TGT':
                                            setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":0,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                                            log('change target temp. to '+ value);
                                        break;
                                        case 'AIR':
                                            value = value ? 1: 0 ;
                                            setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":2,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                                            log('set bubbles to '+ value);
                                        break;
                                        case 'HEATER':
                                            value = value ? 1: 0 ;
                                            setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":3,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                                            log('set Heater to '+ value);
                                        break;
                                        case 'FLT':
                                            value = value ? 1: 0 ;
                                            setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":4,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                                            log('set pump to '+ value);
                                        break;
                                
                                
                                  default:
                                    // Anweisungen werden ausgeführt,
                                    // falls keine der case-Klauseln mit expression übereinstimmt
                                    break;
                                }
                                
                                
                                
                                }
                                async function init(){
                                    await asyncForEach(STATES, async (obj, index) => {
                                        let id = ID +'.'+ obj._id
                                        if (!existsState(id)) {
                                            log('create state '+ id)
                                            await createStateAsync(id, obj.common)
                                        }
                                        else {
                                            log('skip state '+ id)
                                        }
                                        //set subscription
                                        if(obj.common.write){
                                            on({id: id, change:"any"} , function(obj) {
                                                if(!obj.state.ack){
                                                    log('change state! '+ JSON.stringify(obj))
                                                    stateChange(obj)
                                                }
                                            });
                                        }       
                                    });
                                    log('init done!')
                                }
                                async function setLazyStates(obj){
                                    try{
                                            let states = JSON.parse(obj)
                                            for (const [key, value] of Object.entries(states)) {
                                                let statevalue = value
                                                const found = STATES.find(state => state._id === key);
                                                if(found){                 
                                                    if (found.common.type === 'boolean'){
                                                        statevalue = value === 1
                                                    }
                                                    await setStateAsync(ID +'.'+ key,statevalue,true)
                                                }
                                            }
                                            //set heater state
                                            await setStateAsync(ID +'.HEATER',(states.GRN || states.RED) === 1,true)    
                                    }
                                    catch(e){
                                        console.log('Error in setting State '+ e)
                                    }
                                
                                }
                                
                                async function asyncForEach(array, callback) {
                                	for (let index = 0; index < array.length; index++) {
                                		await callback(array[index], index, array);
                                	}
                                }
                                function log (msg){
                                    if(debug) console.log (msg)
                                }
                                
                                on({id:'mqtt.'+ MQTTINSTANCE+'.layzspa.message', change:"ne"} , function(obj) {
                                    log('Lazyspa reached message! '+ JSON.stringify(obj.state))
                                    setLazyStates(obj.state.val)
                                });
                                
                                B Offline
                                B Offline
                                Bomer
                                wrote on last edited by Bomer
                                #199

                                Hallo zusammen,
                                ich habe noch 7 Platinen über.IMG_1522.jpeg

                                1 Reply Last reply
                                0
                                • C Offline
                                  C Offline
                                  ChristianP
                                  wrote on last edited by
                                  #200

                                  @bomer
                                  Hallo,
                                  ich bin auf dieses Projekt gestoßen und auch neu hier in diesem Forum. Ich wäre an 2 der Leiterplatten interessiert, wenn die noch zu haben wären.
                                  Ich habe leider nichts gefunden wie man hier private Nachrichten schicken kann, würde mich über ein Feedback freuen.

                                  Gruß
                                  Christian

                                  1 Reply Last reply
                                  0
                                  • T TimoWald

                                    Hallo wo bekomme ich die aktuelle Firmware für WifiWirl LayZSpa?

                                    H Offline
                                    H Offline
                                    hlgamer
                                    wrote on last edited by hlgamer
                                    #201

                                    @timowald die WifiWhirl Software findest du hier:
                                    WifiWhirl-Software
                                    Wenn du ein Modul besitzt geht es alternativ auch als Update: WifiWhirl Update

                                    T 1 Reply Last reply
                                    0
                                    • H hlgamer

                                      @timowald die WifiWhirl Software findest du hier:
                                      WifiWhirl-Software
                                      Wenn du ein Modul besitzt geht es alternativ auch als Update: WifiWhirl Update

                                      T Offline
                                      T Offline
                                      TimoWald
                                      wrote on last edited by
                                      #202

                                      @hlgamer danke, so probiere ich es mal.

                                      1 Reply Last reply
                                      0
                                      • J johobo

                                        So, Ich wollte mal von meiner Umsetzung berichten.

                                        Ich habe den Lay-Z-Spa Miami mit dem >2021er Pumpenmodul.

                                        Die Platinen waren nach ca. 1,5 Wochen aus China bei mir.

                                        Bei einem ersten Testaufbau auf Steckbrett hatte ich schon festgestellt, dass ich für meinen Pool die Kabelbelegung 1:1 aufbauen muss, damit es funktioniert. Bei dem Versuch war kein Low-Pass Filter vorhanden und es kam zu keinem Display-Flickern. Zur Sicherheit baute ich dann im ersten Versuch mit Platine den Filter mit ein. Dies führte aber dazu, dass das Display nicht mehr funktionierte. Also bestückte ich eine zweiter Platine ohne filter und es funktionierte einwandfrei.

                                        Bestway Wifi PCB 3.jpg Bestway Wifi PCB 2.jpg Bestway Wifi PCB 1.jpg

                                        Die Einbindung in IO broker lief soweit auch.

                                        Für den finalen Einbau musste aber noch ein Gehäuse her.
                                        Ich orientierte mich am Design von @Rickman (Vielen Dank!) und einem Case ohne Halterung von thingiverse. Heraus kam dieses Thing: https://www.thingiverse.com/thing:6061047 mit dem ich auch ziemlich zufrieden bin. Evtl. muss ich hier nochmal eine neuere Version aus ABS erstellen. PLA scheint mir hier bei den Temperaturen etwas kritisch…

                                        Bild2.jpg Bild1.jpg

                                        Alles in allem bin ich aber super zufrieden mit dem Projekt und bedanke mich bei euch allen für die Berichte die zu meinem Erfolg beigetragen haben!

                                        E Offline
                                        E Offline
                                        edstobi
                                        wrote on last edited by
                                        #203

                                        @johobo sagte in Lay-Z-Spa Wifi Control:

                                        Thing: https://www.thingiverse.com/thing:6061047 mit dem ich auch ziemlich zufrieden bin.

                                        Hallo
                                        Ich kann leider auf Thingivers das Gehäuse nicht mehr finden. Ich bin an der Befestigung interessiert, da meine Platine jetzt da so lose im Pumpen Gehäuse rumfliegt.
                                        LG EDSTOBI

                                        E 1 Reply Last reply
                                        0
                                        • E edstobi

                                          @johobo sagte in Lay-Z-Spa Wifi Control:

                                          Thing: https://www.thingiverse.com/thing:6061047 mit dem ich auch ziemlich zufrieden bin.

                                          Hallo
                                          Ich kann leider auf Thingivers das Gehäuse nicht mehr finden. Ich bin an der Befestigung interessiert, da meine Platine jetzt da so lose im Pumpen Gehäuse rumfliegt.
                                          LG EDSTOBI

                                          E Offline
                                          E Offline
                                          edstobi
                                          wrote on last edited by
                                          #204

                                          Hallo
                                          Ich benötige einmal eure Hilfe.

                                          ch habe die Original-Platine V2B, eine Poolpumpe mit 4-adrigem Anschluss, Modell 54123 (Air), sowie MQTT eingerichtet.
                                          Im Web-Interface des Lay-Z-Spa-Moduls sehe ich die Pumpe, und auch in MQTT taucht sie auf. Soweit funktioniert alles.

                                          Nun habe ich einige Verständnisfragen:

                                          Wenn ich im Web-Interface "Take Control" aktiviere, wird das Display der Pumpe deaktiviert. Ist das so richtig?
                                          Ich kann diesen Zustand an der Pumpe selbst nicht rückgängig machen, ohne die Pumpe komplett vom Strom zu trennen und neu zu starten.

                                          Im MQTT-Interface sehe ich die Option "Take Control" nicht, bzw. kann sie dort nicht ein- oder ausschalten.
                                          Ist das so vorgesehen oder ist das der SETGODMODE in MQTT "GOD"

                                          Wenn ich "Take Control" nicht aktiviert habe, kann ich im Lay-Z-Spa-Webmodul keine Funktionen schalten.
                                          Ist das der normale Ablauf?

                                          Wenn ich "Take Control" über die Web-Oberfläche aktiviere und dann Pumpe oder Heizung über MQTT steuere, sehe ich keine Änderung an den Buttons im Web-Interface.
                                          Ist das erwartetes Verhalten?

                                          Zusammengefasst:
                                          Ich möchte verstehen, wie die Steuerung zwischen Web-Interface, MQTT und der physischen Pumpe genau funktioniert, insbesondere im Zusammenhang mit der "Take Control"-Funktion.
                                          Ist das Verhalten, wie oben beschrieben, korrekt? Gibt es eine Möglichkeit, "Take Control" auch über MQTT zu steuern sodas es im Webmodule sichtbar ist oder den Zustand an der Pumpe direkt zurückzusetzen, ohne einen Neustart?
                                          Ich möchte die Poolpumpe und den Heizer über ioBroker oder Node-RED automatisch steuern, sodass sie bei PV-Überschuss eingeschaltet werden und die Pumpe zusätzlich nur stundenweise läuft.

                                          Gleichzeitig soll es möglich sein, die Pumpe und die Bubbles direkt am Pool zu bedienen, falls jemand den Pool nutzen möchte – ohne dass man erst ins Haus gehen und dort am Display etwas umstellen muss. Andernfalls wäre die Lösung nicht familienfreundlich und hätte keinen hohen WAF (Wife Acceptance Factor)

                                          Sollte das Verhalten der Steuerung von Visualapproach so korrekt sein, werde ich versuchen, am ESP weitere GPIO-Input-Knöpfe zu konfigurieren, um darüber zum Beispiel die Bubbles anzusteuern.

                                          Ich kenne das PDF „REMOTE CONTROLLED LAY-Z-SPA“ von ihm, jedoch sind solche Verhaltensfragen dort nicht beschrieben.

                                          Ich hoffe, dass hier jemand ein identisches Modell 4-adrigem Anschluss, Modell 54123 hat und mir weiterhelfen kann.
                                          Danke
                                          EDSTOBI

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          121

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe