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

  1. ioBroker Community Home
  2. Deutsch
  3. Hardware
  4. Lay-Z-Spa Wifi Control

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

Lay-Z-Spa Wifi Control

Geplant Angeheftet Gesperrt Verschoben Hardware
211 Beiträge 76 Kommentatoren 50.7k Aufrufe 72 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.
  • K kukoratsch

    @wolkenloser Du hast doch das gemacht```

    Hallo,
    ich habe mir vor ein paar Wochen bei ebay ein WifiWHIRL MODUL bei ebay gekauft und wollte das gerne in IOBROKER hinzufügen.

    Da es keinen Adapter dafür gibt, hab ich gesucht und bin auf diesen Threat gestossen.

    Ich habe ein paar Dinge ausprobiert aber ich bekomme keine Daten in IOBROKER.

    Dabei stellt sich mir die Frage ob man ggf mal einmal die Schritte zusammen fassen könnte die bei einer neuinstallation notwenig sind.

    1. Frage (warum) braucht man eine zusätzliche MQTT Instanz ?
    2. Welches Script braucht man für ein LazySpa Miami ?

    Ich habe das Script aus dem Beitrag 54 bei mir eingerichtet.
    Dann legt das Script auch einen Datenenpunkt an.
    Ich verstehe nur nicht wie ich jetzt die verknüpfunge zwischen dem Modul machen damit er die angelegte Instanz aktualisiert.....

    const ID = '0_userdata.0.LazySpa';
    const MQTTINSTANCE = 0;
    const debug = true;

    8a37de70-1989-4e42-9951-f015a82c6936-image.png

    Gruß
    Wolke

    W Offline
    W Offline
    wolkenloser
    schrieb am zuletzt editiert von wolkenloser
    #184

    @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 1 Antwort Letzte Antwort
    0
    • 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
      schrieb am zuletzt editiert von
      #185

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

      W 1 Antwort Letzte Antwort
      0
      • K kukoratsch

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

        W Offline
        W Offline
        wolkenloser
        schrieb am zuletzt editiert von
        #186

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

        K 1 Antwort Letzte Antwort
        0
        • W wolkenloser

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

          K Offline
          K Offline
          kukoratsch
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #188

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

            T 1 Antwort Letzte Antwort
            0
            • W wolkenloser

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

              T Offline
              T Offline
              TimoWald
              schrieb am zuletzt editiert von
              #189

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

              W 1 Antwort Letzte Antwort
              0
              • T TimoWald

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

                W Offline
                W Offline
                wolkenloser
                schrieb am zuletzt editiert von
                #190

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

                1 Antwort Letzte Antwort
                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
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    0
                    • B Offline
                      B Offline
                      BastiBerlin
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      • Der-JetiD Der-Jeti

                        @nonono ja, sind noch 6x da.

                        01.07.24
                        5x vorhanden

                        F Offline
                        F Offline
                        FireSaw
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #196

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

                            Der-JetiD H 2 Antworten Letzte Antwort
                            0
                            • T TimoWald

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

                              Der-JetiD Offline
                              Der-JetiD Offline
                              Der-Jeti
                              schrieb am zuletzt editiert von
                              #197

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

                              T 1 Antwort Letzte Antwort
                              0
                              • Der-JetiD Der-Jeti

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

                                T Offline
                                T Offline
                                TimoWald
                                schrieb am zuletzt editiert von
                                #198

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

                                1 Antwort Letzte Antwort
                                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
                                  schrieb am zuletzt editiert von Bomer
                                  #199

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

                                  1 Antwort Letzte Antwort
                                  0
                                  • C Offline
                                    C Offline
                                    ChristianP
                                    schrieb am zuletzt editiert von
                                    #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 Antwort Letzte Antwort
                                    0
                                    • T TimoWald

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

                                      H Offline
                                      H Offline
                                      hlgamer
                                      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                      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
                                        schrieb am zuletzt editiert von
                                        #202

                                        @hlgamer danke, so probiere ich es mal.

                                        1 Antwort Letzte Antwort
                                        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
                                          schrieb am zuletzt editiert von
                                          #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 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

                                          308

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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