Skip to content
  • Home
  • 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
ioBroker Logo

Community Forum

donate donate
  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.7k

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

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

Lay-Z-Spa Wifi Control

Scheduled Pinned Locked Moved Hardware
211 Posts 76 Posters 51.3k 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 aufgrund deines Screenshots habe ich jetzt auch einen MQTT Adapter installiert.

    Daraufhin erhalte ich Werte, aber ich glaube da ist noch einiges nicht richtig:

    d05f6a5e-0e7e-4a44-b982-f682ae4606f9-image.png

    4f68cae8-f564-41b2-9cd3-c537bab8164b-image.png

    7a1fc29d-5d86-46eb-a023-5815435bbe74-image.png

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

    @kukoratsch ,
    wo finde ich z.B. die Objekte wo man dann die Heizung Ein- oder Ausschalten kann ?
    Ich glaube die fehlen einfach...

    K 1 Reply Last reply
    0
    • W wolkenloser

      @kukoratsch ,
      wo finde ich z.B. die Objekte wo man dann die Heizung Ein- oder Ausschalten kann ?
      Ich glaube die fehlen einfach...

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

      @wolkenloser 0_userdata.0.LazySpa heater

      W 1 Reply Last reply
      0
      • K kukoratsch

        @wolkenloser 0_userdata.0.LazySpa heater

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

        @kukoratsch
        Hi, eben dort ist nichts dergleichen.
        10e37773-b25a-48fa-ac50-aa1c92ce682c-image.png

        1 Reply Last reply
        0
        • W wolkenloser

          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

          008b8c04-7f85-4619-9aa7-d2b99a210a4c-image.png

          Gruß
          Wolke

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

          @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 1 Reply Last reply
          0
          • 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
            wrote on last edited by 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 Reply Last reply
            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
              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 Online
                      T Online
                      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 Online
                                    T Online
                                    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 Online
                                        T Online
                                        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
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          821

                                          Online

                                          32.4k

                                          Users

                                          81.5k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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