Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Hardware
    4. Lay-Z-Spa Wifi Control

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Lay-Z-Spa Wifi Control

    This topic has been deleted. Only users with topic management privileges can see it.
    • NinjaTurtle85
      NinjaTurtle85 @Chris685 last edited by

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

      NinjaTurtle85 1 Reply Last reply Reply Quote 0
      • NinjaTurtle85
        NinjaTurtle85 @NinjaTurtle85 last edited by

        @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 Reply Quote 0
        • B
          BastiBerlin last edited by

          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 Reply Quote 0
          • F
            FireSaw @Der-Jeti last edited by

            @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-Jeti 1 Reply Last reply Reply Quote 0
            • Der-Jeti
              Der-Jeti @FireSaw last edited by

              @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 Reply Quote 0
              • T
                TimoWald @Der-Jeti last edited by

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

                Der-Jeti H 2 Replies Last reply Reply Quote 0
                • Der-Jeti
                  Der-Jeti @TimoWald last edited by

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

                  T 1 Reply Last reply Reply Quote 0
                  • T
                    TimoWald @Der-Jeti last edited by

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

                    1 Reply Last reply Reply Quote 0
                    • B
                      Bomer @Meistertr last edited by Bomer

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

                      1 Reply Last reply Reply Quote 0
                      • C
                        ChristianP last edited by

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

                        Gruß
                        Christian

                        1 Reply Last reply Reply Quote 0
                        • H
                          hlgamer @TimoWald last edited by hlgamer

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

                          T 1 Reply Last reply Reply Quote 0
                          • T
                            TimoWald @hlgamer last edited by

                            @hlgamer danke, so probiere ich es mal.

                            1 Reply Last reply Reply Quote 0
                            • E
                              edstobi @johobo last edited by

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

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

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

                              E 1 Reply Last reply Reply Quote 0
                              • E
                                edstobi @edstobi last edited by

                                Hallo
                                Ich benötige einmal eure Hilfe.

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

                                Nun habe ich einige Verständnisfragen:

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

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

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

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

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

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

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

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

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

                                1 Reply Last reply Reply Quote 0
                                • Nebojsa Cekic
                                  Nebojsa Cekic last edited by Samson71

                                  Hallo zusammen

                                  Ich habe dieses interessante Projekt gefunden:
                                  https://github.com/visualapproach/WiFi-remote-for-Bestway-Lay-Z-SPA

                                  Ich selber habe einen s100101 modul und würde es gerne wlan fähig machen. Dazu habe ich mir folgendes ausgesucht und würde gerne wissen von Leuten die das bereits umgesetzt haben ob das passt?

                                  Ich würde gerne wissen ob es hier jemanden gibt der sich sein eigenes DIY WLAN Modul für Lazy Spa Miami oder andere gebaut hat die eine 6polige Leitung an der Bedieneinheit haben?Und anhand dessen wollte ich das nun mal testen.

                                  Meine BOM Liste.

                                  1. ESP8266:
                                    https://www.berrybase.de/nodemcu-v3-esp8266-development-board-ch340g
                                  2. Level Shifter TXS0108E 8Kanal bidirectional:
                                    https://www.berrybase.de/en/sparkfun-level-shifter-8-channels-txs0108e
                                  3. JST-SM DuPont Crimp Kit:
                                    https://www.berrybase.de/berrybase-200-teiliges-jumper-wire-connector-kit-jst-sm-dupont-2.54mm-2-5-pin-stecker-buchse
                                  4. Kupferlitze (wird auch als Datenkabel verwendet), 10m, 0,14mm:
                                    https://www.berrybase.de/detail/019234a3b2957268a6a46501bfeb056e
                                  5. Schrumpfschläuche:
                                    https://www.berrybase.de/schrumpfschlauch-sortiment-100-teilig-schwarz-in-kunststoffbox
                                  6. Stiftleiste, 6polig:
                                    https://www.berrybase.de/stiftleiste-1x-6-polig-rm-2-54-gerade
                                  7. Lochrasterplatine:
                                    https://www.berrybase.de/en/perforated-grid-board-double-sided-5x7cm-10-pieces
                                  8. DHT22 Temperatursensor:
                                    https://www.berrybase.de/am2302-dht22-digitaler-temperatur-und-luftfeuchtesensor-mit-kabelanschluss
                                  9. Widerstand 10kohm für DHT22:
                                    https://www.berrybase.de/metallschichtwiderstand-10-0-kohm-0-6w-1-0207-axial-durchsteckmontage
                                  10. Jumper Kabel Kit:
                                    https://www.berrybase.de/jumper-kabel-kit-set-mit-65-kabeln-in-4-laengen-fuer-breadboards

                                  Über Erfahrungsbericht oder Hilfe wäre ich dankbar:-) vor allem bei der Einkaufsliste:-)

                                  Samson71 1 Reply Last reply Reply Quote 0
                                  • Samson71
                                    Samson71 Global Moderator @Nebojsa Cekic last edited by Samson71

                                    @nebojsa-cekic
                                    Da scheinbar die Suche bei Dir nicht funktioniert, haben wir das Thema mal an "Lay-Z-Spa Wifi Control" drangehängt. Das "interessante Projekt" das Du aktuell gefunden hast, wurde vom TO auf Seite 1 im ersten Beitrag bereits Anfang 2022 gefunden und darauf verwiesen. Ob hier jedermann Lust hat jeden Widerstand und jeden Schrumpfschlauch Deiner Einkaufliste durchzuklicken vermag ich nicht zu sagen. Liest sicher eher wie ne Werbeliste für den Shop, wobei der an sich ok ist.

                                    C 1 Reply Last reply Reply Quote 1
                                    • C
                                      Christoph 4 @Samson71 last edited by

                                      Hallo zusammen gibt es auch für die Pumpe S100201 eine Möglichkeit Werte per mqtt zu bekommen?

                                      Danke Christoph

                                      C 1 Reply Last reply Reply Quote 0
                                      • caco3000
                                        caco3000 last edited by Samson71

                                        Bei mir kommt jetzt im Script folgender Fehler

                                        javascript.0	18:55:30.845	error	script.js.Lay_Z_Spa: script.js.Lay_Z_Spa:1
                                        javascript.0	18:55:30.845	error	at script.js.Lay_Z_Spa:1:1
                                        

                                        und in Log von IO Broker kommt folgendes:

                                        javascript.0
                                        2025-08-06 18:52:04.102	error	at Script.runInContext (node:vm:149:12)
                                        
                                        javascript.0
                                        2025-08-06 18:52:04.102	error	at script.js.Lay_Z_Spa:1:1
                                        
                                        javascript.0
                                        2025-08-06 18:52:04.102	error	SyntaxError: Identifier 'log' has already been declared
                                        
                                        javascript.0
                                        2025-08-06 18:52:04.102	error	script.js.Lay_Z_Spa: script.js.Lay_Z_Spa:1
                                        

                                        Screenshot 2025-08-06 185250.png Screenshot 2025-08-06 185417.png

                                        Wer kann mir sagen was mt einmal nicht mehr stimmt bis jetzt lief alles

                                        Mod-Edit
                                        Code-Tags gesetzt

                                        1 Reply Last reply Reply Quote 0
                                        • caco3000
                                          caco3000 last edited by

                                          AI machts möglich habe mir den Code reparieren lassen.```

                                          const ID = '0_userdata.0.LazySpa';
                                          const MQTTINSTANCE = 0;
                                          const debug = true;
                                          
                                          // Definition der zu erstellenden Datenpunkte
                                          const STATES = [
                                              {
                                                  _id: 'LCK',
                                                  type: 'state',
                                                  common: { name: 'lock', type: 'boolean', role: 'indicator.lock', 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.light', read: true, write: true, desc: 'Lazy spa bubbles state' },
                                                  native: {}
                                              },
                                              {
                                                  _id: 'GRN',
                                                  type: 'state',
                                                  common: { name: 'Heating green', type: 'boolean', role: 'indicator', read: true, write: false, desc: 'Reached target temp.' },
                                                  native: {}
                                              },
                                              {
                                                  _id: 'RED',
                                                  type: 'state',
                                                  common: { name: 'Heating red', type: 'boolean', role: 'indicator', read: true, write: false, desc: 'Not reached target temp.' },
                                                  native: {}
                                              },
                                              {
                                                  _id: 'FLT',
                                                  type: 'state',
                                                  common: { name: 'pump', type: 'boolean', role: 'switch.pump', read: true, write: true, desc: 'Pump state' },
                                                  native: {}
                                              },
                                              {
                                                  _id: 'HEATER',
                                                  type: 'state',
                                                  common: { name: 'heater', type: 'boolean', role: 'switch.heater', 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, step: 1, read: true, write: true, desc: 'Target temp.' },
                                                  native: {}
                                              },
                                              {
                                                  _id: 'TMP',
                                                  type: 'state',
                                                  common: { name: 'temp', type: 'number', role: 'value.temperature', read: true, write: false, unit: '°C', desc: 'Current temp.' },
                                                  native: {}
                                              },
                                          ];
                                          
                                          /**
                                           * Sendet Befehle an den Spa via MQTT.
                                           * @param {object} obj Das Objekt vom "on"-Trigger.
                                           */
                                          async function stateChange(obj) {
                                              const state = obj.id.split('.').pop();
                                              let value = obj.state.val;
                                              if (debug) log(`Change detected for '${state}'. Sending command.`);
                                          
                                              let cmd, val;
                                          
                                              switch (state) {
                                                  case 'UNT': cmd = 1; val = value; break;
                                                  case 'TGT': cmd = 0; val = value; break;
                                                  case 'AIR': cmd = 2; val = value ? 1 : 0; break;
                                                  case 'HEATER': cmd = 3; val = value ? 1 : 0; break;
                                                  case 'FLT': cmd = 4; val = value ? 1 : 0; break;
                                                  default:
                                                      if (debug) log(`No action defined for state change of: ${state}`, 'warn');
                                                      return;
                                              }
                                          
                                              const mqttCommand = `{"CMD":${cmd},"VALUE":${val},"XTIME":0,"INTERVAL":0}`;
                                              await setStateAsync(`mqtt.${MQTTINSTANCE}.layzspa.command`, mqttCommand, false);
                                              if (debug) log(`Sent command for '${state}': ${mqttCommand}`);
                                          }
                                          
                                          /**
                                           * Verarbeitet eingehende Status-Updates vom Spa.
                                           * @param {string} jsonString Der JSON-String von der MQTT-Nachricht.
                                           */
                                          async function setLazyStates(jsonString) {
                                              let states;
                                              try {
                                                  states = JSON.parse(jsonString);
                                              } catch (e) {
                                                  log(`Error parsing JSON from MQTT: ${jsonString}. Error: ${e.stack}`, 'error');
                                                  return;
                                              }
                                          
                                              for (const [key, value] of Object.entries(states)) {
                                                  const stateDef = STATES.find(s => s._id === key);
                                                  if (stateDef) {
                                                      let stateValue = (stateDef.common.type === 'boolean') ? (value === 1) : value;
                                                      await setStateAsync(`${ID}.${key}`, stateValue, true);
                                                  }
                                              }
                                          
                                              const isHeaterOn = (states.GRN === 1 || states.RED === 1);
                                              await setStateAsync(`${ID}.HEATER`, isHeaterOn, true);
                                          }
                                          
                                          /**
                                           * Hauptfunktion zur Initialisierung des Skripts.
                                           */
                                          async function main() {
                                              // 1. Datenpunkte erstellen oder sicherstellen, dass sie existieren
                                              for (const stateObject of STATES) {
                                                  const id = `${ID}.${stateObject._id}`;
                                                  if (!(await getObjectAsync(id))) {
                                                      if (debug) log(`Creating state: ${id}`);
                                                      await createStateAsync(id, stateObject.common);
                                                  }
                                          
                                                  // 2. Trigger für schreibbare Datenpunkte erstellen
                                                  if (stateObject.common.write) {
                                                      on({ id: id, change: "any", ack: false }, async (obj) => {
                                                          try {
                                                              if (obj.state) {
                                                                  await stateChange(obj);
                                                              }
                                                          } catch (e) {
                                                              log(`Error in stateChange trigger for ${id}: ${e.stack}`, 'error');
                                                          }
                                                      });
                                                  }
                                              }
                                          
                                              // 3. Trigger für eingehende MQTT-Nachrichten
                                              on({ id: `mqtt.${MQTTINSTANCE}.layzspa.message`, change: "ne" }, async (obj) => {
                                                  try {
                                                      if (obj.state && obj.state.val) {
                                                          if (debug) log(`Received MQTT message: ${obj.state.val}`);
                                                          await setLazyStates(obj.state.val);
                                                      }
                                                  } catch (e) {
                                                      log(`Error in MQTT message handler: ${e.stack}`, 'error');
                                                  }
                                              });
                                          
                                              log("LazySpa script started and all triggers are active.");
                                          }
                                          
                                          // Skriptausführung starten und alle Fehler abfangen.
                                          try {
                                              main();
                                          } catch (e) {
                                              log(`A critical error occurred during script initialization: ${e.stack}`, 'error');
                                          }
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • C
                                            Christoph 4 @Christoph 4 last edited by

                                            @christoph-4 sagte in Lay-Z-Spa Wifi Control:

                                            Hallo zusammen gibt es auch für die Pumpe S100201 eine Möglichkeit Werte per mqtt zu bekommen?

                                            Danke Christoph

                                            Hat niemand eine Idee?
                                            Gruß Christoph

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            875
                                            Online

                                            32.0k
                                            Users

                                            80.4k
                                            Topics

                                            1.3m
                                            Posts

                                            75
                                            210
                                            37744
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo