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

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

Community Forum

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

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill lĂ€uft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • MonatsrĂŒckblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

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

Lay-Z-Spa Wifi Control

Geplant Angeheftet Gesperrt Verschoben Hardware
211 BeitrÀge 76 Kommentatoren 51.6k 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.
  • M michisa86888

    @michisa86888
    da niemand eine Platine mehr ĂŒbrig zu haben scheint, wĂŒrde ich mir gerne eine bestellen. Habe so etwas aber noch nie gemacht. So wie ich herauslese muss man eine Mindestmenge abnehmen. HĂ€tte sonst noch jemand an einer Platine Interresse?
    Wo habt ihr bestellt und wie geht man da vor? Wie lange sind die Lieferzeiten ca.?

    Reiner GönnenweinR Offline
    Reiner GönnenweinR Offline
    Reiner Gönnenwein
    schrieb am zuletzt editiert von
    #49

    @michisa86888 Ich hÀtte auch Interesse an einer Platine

    1 Antwort Letzte Antwort
    0
    • Chris 5C Offline
      Chris 5C Offline
      Chris 5
      schrieb am zuletzt editiert von
      #50

      Habe mir inzwischen auf Basis eines Wemos D1 mini das Projekt nachgebaut. Funktioniert tatsĂ€chlich auch ohne level shifter und damit ohne Platine , WiederstĂ€nde usw. . Bauaufwand sind 15 Minuten und in der Bucht bekommt die JST SM 6 pin Stecker+6 pin Buchse fĂŒr unter 3 EUR genau wie den Wemos.
      Die genaue Beschreibung des Aufbaus ist bei github in der Diskussions unter dem Titel "LLC - Why bother... It works fine without..." zu finden. Habe das Ganze so gelöst das der WEMOS, sollte er absterben, einfach ausgetauscht werden kann.
      LĂ€uft seid einer Woche ohne Probleme in meinem MIAMI 2021.
      An der Intergration per MQTT bin ich gerade dran, danke fĂŒr die Vorarbeit!

      1 Antwort Letzte Antwort
      0
      • N Nobody 0

        Hallo Zusammen,

        nach einigen Anlaufproblemen und einer Kalten Lötstelle auf dem NodeMCU habe ich nun endlich das Programm drauf bekommen und alles Verlötet.

        Leider habe ich nun das nÀchste Problem, wenn ich das Modul anschliesse und wieder Strom drauf geben hört man aus dem inneren nur ein leises Klackern, aber nichts geht.

        Beim aufrufen der Webseite des Moduls bekomme ich folgenden Fehler:
        404: File Not Found

        Geht die WeboberflÀche nur wenn das Modul mit der Pumpe verbunden ist?
        Wo könnte das Klappern herkommen?
        Ich habe einen Lay-Z.Spa AirJet Hawaii von 2020.

        Chris 5C Offline
        Chris 5C Offline
        Chris 5
        schrieb am zuletzt editiert von
        #51

        @nobody-0
        die Daten fĂŒr das Webinterface werden im Filesystem des ESPs abgelegt und mĂŒssen daher separat hochgeladen werden.
        Zitat aus der Beschreibung fĂŒr platformio:

        Upload LittleFS Data or you will get a 404! Click platformio icon,
        go to PROJECT TASKS > nodemcuv2 > Platform and build filesystem image, then upload filesystem image.

        Das geht dann auch schon vor integration in der Pumpe.
        Viel Erfolg

        1 Antwort Letzte Antwort
        0
        • B Offline
          B Offline
          BruderBleistift
          schrieb am zuletzt editiert von
          #52

          Habe seit ca. 2 Wochen das Problem, dass sich das Modul scheinbar aufhÀngt.
          Es ist dann nicht mehr möglich den Pool ĂŒber die Tasten zu bedienen und auch ĂŒber das Webinterface ist es nicht mehr erreichbar.

          Beheben lĂ€sst es sich, indem ich kurz den Strom kappe. Dann startet das Modul neu und es funktioniert wieder - fĂŒr 1-2 Tage.

          Hat das Problem noch jemand, oder Ideen woran es liegen könnte? Eventuell ein Überhitzungsproblem? LĂ€sst sich auf dem ESP irgendwie ein KĂŒhlkörper anbringen und wĂŒrde das in dem geschlossenen PumpengehĂ€use ĂŒberhaupt etwas bringen?

          Chris 5C 1 Antwort Letzte Antwort
          0
          • B BruderBleistift

            Habe seit ca. 2 Wochen das Problem, dass sich das Modul scheinbar aufhÀngt.
            Es ist dann nicht mehr möglich den Pool ĂŒber die Tasten zu bedienen und auch ĂŒber das Webinterface ist es nicht mehr erreichbar.

            Beheben lĂ€sst es sich, indem ich kurz den Strom kappe. Dann startet das Modul neu und es funktioniert wieder - fĂŒr 1-2 Tage.

            Hat das Problem noch jemand, oder Ideen woran es liegen könnte? Eventuell ein Überhitzungsproblem? LĂ€sst sich auf dem ESP irgendwie ein KĂŒhlkörper anbringen und wĂŒrde das in dem geschlossenen PumpengehĂ€use ĂŒberhaupt etwas bringen?

            Chris 5C Offline
            Chris 5C Offline
            Chris 5
            schrieb am zuletzt editiert von
            #53

            @bruderbleistift
            bei mir wird nachts die Außensteckdose komplett abgeschaltet, damit das Teil jeden Tag quasi zwangsgebootet. Am besten mal direkt mal bei visualapproach in den discussions nachfragen.
            Ist die WLAN Verbindung gut? Ich musste das Teil nach dem Einbau nochmals verschieben / verdrehen da die WLAN Verbindung verloren ging - konnte dann aber weiterhin ĂŒber die Tasten bedienen.
            Die sauberste Löstung wĂ€re die Intergration eines watchdog timers weiß aber nicht ob das im Code gehen wĂŒrde bzw. zusĂ€tzliche Hardware notwendig macht. Eine Überhitzung kann ich mir aber eigendlich nicht vorstellen eher eine Kontaktproblematik auf der Platine die bei hoheren Temperaturen zu Problemen fĂŒhrt - vielleicht noch mal nachlöten / Kontakte und Kabel prĂŒfen?
            mehr fÀllt mir dazu auch nicht ein - viel Erfolg

            1 Antwort Letzte Antwort
            0
            • Chris685C Offline
              Chris685C Offline
              Chris685
              schrieb am zuletzt editiert von
              #54

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

                Hallo zusammen,

                ich hÀtte mal ne Frage ob das Skript auch mit einem externen MQTT broker funktioniert - bzw. was ich hier Àndern muss?
                Ich habe in IoBroker nur den MQTT Client installiert - broker ist auf einem anderen raspberry (Loxberry) - die Werte vom Modul bekomm ich ĂŒber den client rein (Datenpunkte mit Json werden in der Client Instanz angelegt) wenn ich layzspa/# subscribe - aber da eben nur die Json mit der ich aufgrund fehlenden Kentnissen leider nix anfangen kann ....... Jetzt hab ich das so verstanden dass das Skript die Json in die and in der 0.userdata Werte reingeschrieben wird (und da auch geĂ€ndert/gesteuert werden kann?) - die 0.userdata Objekte hab ich - aber eben ohne Werte....

                MQTT client in IoBroker: Instanzeinstellungen: mqtt-client.0 v1.6.3
                -> muss ich hier etwas bei const MQTTINSTANCE = 0; Àndern?

                edit
                -> hab jetzt bei const MQTTINSTANCE die IP Adresse meines MQTT Brokers (externer Raspberry und alternative die IP des Pool Moduls) eingegeben - leider schreibt er die Werte immer noch nicht .....
                const ID = '0_userdata.0.LazySpa';
                const MQTTINSTANCE = '192.168.2.151';
                const debug = true;

                das log initialisiert (checkt die Objekte in unserdata) aber wenn ich etwas Ă€nder gibt es weder beim log noch bei den Werten Änderungen ... sprich es passiert nichts mehr nach init done!

                17:13:09.805	info	javascript.0 (24696) Start javascript script.js.common.layzspa
                17:13:09.814	info	javascript.0 (24696) script.js.common.layzspa: skip state 0_userdata.0.LazySpa.LCK
                17:13:09.814	info	javascript.0 (24696) script.js.common.layzspa: subscribe: {"pattern":{"id":"mqtt.192.168.2.151.layzspa.message","change":"ne","q":0},"name":"script.js.common.layzspa"}
                17:13:09.815	info	javascript.0 (24696) script.js.common.layzspa: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                17:13:09.815	info	javascript.0 (24696) script.js.common.layzspa: skip state 0_userdata.0.LazySpa.PWR
                17:13:09.815	info	javascript.0 (24696) script.js.common.layzspa: subscribe: {"pattern":{"id":"0_userdata.0.LazySpa.PWR","change":"any","q":0},"name":"script.js.common.layzspa"}
                17:13:09.816	info	javascript.0 (24696) script.js.common.layzspa: skip state 0_userdata.0.LazySpa.UNT
                17:13:09.817	info	javascript.0 (24696) script.js.common.layzspa: subscribe: {"pattern":{"id":"0_userdata.0.LazySpa.UNT","change":"any","q":0},"name":"script.js.common.layzspa"}
                17:13:09.817	info	javascript.0 (24696) script.js.common.layzspa: skip state 0_userdata.0.LazySpa.AIR
                17:13:09.817	info	javascript.0 (24696) script.js.common.layzspa: subscribe: {"pattern":{"id":"0_userdata.0.LazySpa.AIR","change":"any","q":0},"name":"script.js.common.layzspa"}
                17:13:09.818	info	javascript.0 (24696) script.js.common.layzspa: skip state 0_userdata.0.LazySpa.GRN
                17:13:09.818	info	javascript.0 (24696) script.js.common.layzspa: skip state 0_userdata.0.LazySpa.RED
                17:13:09.818	info	javascript.0 (24696) script.js.common.layzspa: skip state 0_userdata.0.LazySpa.FLT
                17:13:09.818	info	javascript.0 (24696) script.js.common.layzspa: subscribe: {"pattern":{"id":"0_userdata.0.LazySpa.FLT","change":"any","q":0},"name":"script.js.common.layzspa"}
                17:13:09.818	info	javascript.0 (24696) script.js.common.layzspa: skip state 0_userdata.0.LazySpa.HEATER
                17:13:09.818	info	javascript.0 (24696) script.js.common.layzspa: subscribe: {"pattern":{"id":"0_userdata.0.LazySpa.HEATER","change":"any","q":0},"name":"script.js.common.layzspa"}
                17:13:09.819	info	javascript.0 (24696) script.js.common.layzspa: skip state 0_userdata.0.LazySpa.TGT
                17:13:09.819	info	javascript.0 (24696) script.js.common.layzspa: subscribe: {"pattern":{"id":"0_userdata.0.LazySpa.TGT","change":"any","q":0},"name":"script.js.common.layzspa"}
                17:13:09.819	info	javascript.0 (24696) script.js.common.layzspa: skip state 0_userdata.0.LazySpa.TMP
                17:13:09.819	info	javascript.0 (24696) script.js.common.layzspa: init done!
                

                Wenn mir hier jemand auf die SprĂŒnge helfen könnte wĂ€re Prima!
                Danke vorab & Gruß
                Tom

                1 Antwort Letzte Antwort
                0
                • Agria4800A Agria4800

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

                  edit: so ein kleines script habe ich auch dafĂŒr:

                  WĂŒrdest du evtl. das Script noch fĂŒr die Hydrojet DĂŒsen erweitern? :grin:

                  Bildschirmfoto 2022-06-26 um 18.49.52.png

                  WĂŒrdest du evtl. noch das Script erweitern auf die Werte aus dem Script und diese auch noch in DB schreiben? :-)
                  Bildschirmfoto 2022-06-26 um 19.05.30.png

                  Agria4800A Offline
                  Agria4800A Offline
                  Agria4800
                  schrieb am zuletzt editiert von Agria4800
                  #56

                  @agria4800 : Anbei das Script fĂŒr die Leute mit dem Layz Hawaii oder Maldives (mit den Hydrojet DĂŒsen) ;-)

                  // https://forum.iobroker.net/topic/51603/lay-z-spa-wifi-control?_=1655490942180&lang=de
                  
                  /*Notes for me
                  
                  Last filter change was 0.00 day(s) ago.  RESET Button gedrĂŒckt!
                  {"CMD":10,"VALUE":0,"XTIME":1658859596,"INTERVAL":0}
                  
                  
                  Last chlorine add was 0.00 day(s) ago.
                  {"CMD":9,"VALUE":0,"XTIME":1658859652,"INTERVAL":0}
                  */
                  
                  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.Layz-Hydro';
                  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: 'HJT',
                     type: 'state',
                     common: {
                         name: 'Hydrojet',
                         type: 'boolean',
                         role: 'switch',
                         read: true,
                         write: true,
                         desc: 'Lazy spa Hydrojets state'
                     },
                        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 'HJT':
                             value = value ? 1: 0 ;
                             setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":11,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                             log('set Hydrojets 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)
                  });
                  
                  

                  Und so siehts dann aus...Bildschirmfoto 2022-08-12 um 21.17.52.png

                  GrĂŒĂŸe

                  Agria4800A S M B T 6 Antworten Letzte Antwort
                  1
                  • Agria4800A Agria4800

                    @agria4800 : Anbei das Script fĂŒr die Leute mit dem Layz Hawaii oder Maldives (mit den Hydrojet DĂŒsen) ;-)

                    // https://forum.iobroker.net/topic/51603/lay-z-spa-wifi-control?_=1655490942180&lang=de
                    
                    /*Notes for me
                    
                    Last filter change was 0.00 day(s) ago.  RESET Button gedrĂŒckt!
                    {"CMD":10,"VALUE":0,"XTIME":1658859596,"INTERVAL":0}
                    
                    
                    Last chlorine add was 0.00 day(s) ago.
                    {"CMD":9,"VALUE":0,"XTIME":1658859652,"INTERVAL":0}
                    */
                    
                    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.Layz-Hydro';
                    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: 'HJT',
                       type: 'state',
                       common: {
                           name: 'Hydrojet',
                           type: 'boolean',
                           role: 'switch',
                           read: true,
                           write: true,
                           desc: 'Lazy spa Hydrojets state'
                       },
                          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 'HJT':
                               value = value ? 1: 0 ;
                               setStateAsync('mqtt.'+ MQTTINSTANCE+'.layzspa.command','{"CMD":11,"VALUE":'+ value +',"XTIME":0,"INTERVAL":0}')
                               log('set Hydrojets 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)
                    });
                    
                    

                    Und so siehts dann aus...Bildschirmfoto 2022-08-12 um 21.17.52.png

                    GrĂŒĂŸe

                    Agria4800A Offline
                    Agria4800A Offline
                    Agria4800
                    schrieb am zuletzt editiert von
                    #57

                    @agria4800
                    Hiermit bekommt man die Zeiten ausgelesen:

                    var Souce_other, Source, RSSI, Times, Chlortime, Filtertime, Uptime, Pumptime, Heating, Airtime, Hydrojet_Time, Costs, Verbrauch;
                    
                    
                    on({id: [].concat(['mqtt.0.layzspa.other']), change: "ne"}, async function (obj) {
                     var value = obj.state.val;
                     var oldValue = obj.oldState.val;
                     Souce_other = getState("mqtt.0.layzspa.other").val;
                     await wait(100);
                     RSSI = getAttr(Souce_other, 'RSSI');
                     setState("0_userdata.0.LazySpa.RSSI-Wifi"/*RSSI-Wifi*/, parseFloat(RSSI), true);
                    });
                    on({id: [].concat(['mqtt.0.layzspa.times']), change: "ne"}, async function (obj) {
                     var value = obj.state.val;
                     var oldValue = obj.oldState.val;
                     Source = getState("mqtt.0.layzspa.times").val;
                     await wait(100);
                     Times = getAttr(Source, 'TIME');
                     setState("0_userdata.0.LazySpa.Times.Time"/*Time*/, parseFloat(Times), true);
                     Chlortime = getAttr(Source, 'CLTIME');
                     setState("0_userdata.0.LazySpa.Times.Chlor_Time"/*Chlor_Time*/, Chlortime, true);
                     Filtertime = getAttr(Source, 'FTIME');
                     setState("0_userdata.0.LazySpa.Times.Filter_Time"/*Filter_Time*/, parseFloat(Filtertime), true);
                     Uptime = getAttr(Source, 'UPTIME');
                     setState("0_userdata.0.LazySpa.Times.Up_Time"/*Up_Time*/, parseFloat(Uptime), true);
                     Pumptime = getAttr(Source, 'PUMPTIME');
                     setState("0_userdata.0.LazySpa.Times.Pump_Time"/*Pump_Time*/, parseFloat(Pumptime), true);
                     Heating = getAttr(Source, 'HEATINGTIME');
                     setState("0_userdata.0.LazySpa.Times.Heating_Time"/*Heating Time*/, parseFloat(Heating), true);
                     Airtime = getAttr(Source, 'AIRTIME');
                     setState("0_userdata.0.LazySpa.Times.Air_Time"/*Air_Time*/, parseFloat(Airtime), true);
                     Hydrojet_Time = getAttr(Source, 'JETTIME');
                     setState("0_userdata.0.LazySpa.Times.Hydrojet_Time"/*Hydrojet_Time*/, parseFloat(Hydrojet_Time), true);
                     Costs = getAttr(Source, 'COST');
                     setState("0_userdata.0.LazySpa.Times.Cost"/*Cost*/, parseFloat(Costs), true);
                     Verbrauch = getAttr(Source, 'KWH');
                     setState("0_userdata.0.LazySpa.Times.Verbrauch"/*Verbrauch*/, parseFloat(Verbrauch), true);
                    });
                    
                    
                    

                    und hiermit werden sie umgeschrieben analog !Bildschirmfoto 2022-08-12 um 21.15.48.png

                    var Dauer, tage, std, min, sec;
                    
                    
                    // https://forum.iobroker.net/topic/13488/vorlage-blockly-umrechnung-von-sekunden-in-stunden-minuten-und-sekunden/11
                    
                    on({id: "0_userdata.0.LazySpa.Times.Up_Time"/*Up_Time*/, change: "ne"}, async function (obj) {
                     var value = obj.state.val;
                     var oldValue = obj.oldState.val;
                     Dauer = getState("0_userdata.0.LazySpa.Times.Up_Time").val;
                     tage = Math.floor(parseFloat(Dauer) / 86400);
                     Dauer = parseFloat(Dauer) - parseFloat(tage) * 86400;
                     std = Math.floor(parseFloat(Dauer) / 3600);
                     Dauer = parseFloat(Dauer) - parseFloat(std) * 3600;
                     min = Math.floor(parseFloat(Dauer) / 60);
                     Dauer = parseFloat(Dauer) - parseFloat(min) * 60;
                     sec = Math.floor(parseFloat(Dauer) / 1);
                     setState("0_userdata.0.LazySpa.Times.Format-Up-Time"/*Format-Up-Time*/, ([tage,'D -  ',std,'h:',min,'min:',sec,'sec'].join('')));
                    });
                    on({id: "0_userdata.0.LazySpa.Times.Air_Time"/*Air_Time*/, change: "ne"}, async function (obj) {
                     var value = obj.state.val;
                     var oldValue = obj.oldState.val;
                     Dauer = getState("0_userdata.0.LazySpa.Times.Air_Time").val;
                     tage = Math.floor(parseFloat(Dauer) / 86400);
                     Dauer = parseFloat(Dauer) - parseFloat(tage) * 86400;
                     std = Math.floor(parseFloat(Dauer) / 3600);
                     Dauer = parseFloat(Dauer) - parseFloat(std) * 3600;
                     min = Math.floor(parseFloat(Dauer) / 60);
                     Dauer = parseFloat(Dauer) - parseFloat(min) * 60;
                     sec = Math.floor(parseFloat(Dauer) / 1);
                     setState("0_userdata.0.LazySpa.Times.Format-Air-Time"/*Format-Air-Time*/, ([tage,'D -  ',std,'h:',min,'min:',sec,'sec'].join('')));
                    });
                    on({id: "0_userdata.0.LazySpa.Times.Heating_Time"/*Heating Time*/, change: "ne"}, async function (obj) {
                     var value = obj.state.val;
                     var oldValue = obj.oldState.val;
                     Dauer = getState("0_userdata.0.LazySpa.Times.Heating_Time").val;
                     tage = Math.floor(parseFloat(Dauer) / 86400);
                     Dauer = parseFloat(Dauer) - parseFloat(tage) * 86400;
                     std = Math.floor(parseFloat(Dauer) / 3600);
                     Dauer = parseFloat(Dauer) - parseFloat(std) * 3600;
                     min = Math.floor(parseFloat(Dauer) / 60);
                     Dauer = parseFloat(Dauer) - parseFloat(min) * 60;
                     sec = Math.floor(parseFloat(Dauer) / 1);
                     setState("0_userdata.0.LazySpa.Times.Format-Heating-Time"/*Format-Heating-Time*/, ([tage,'D -  ',std,'h:',min,'min:',sec,'sec'].join('')));
                    });
                    on({id: "0_userdata.0.LazySpa.Times.Pump_Time"/*Pump_Time*/, change: "ne"}, async function (obj) {
                     var value = obj.state.val;
                     var oldValue = obj.oldState.val;
                     Dauer = getState("0_userdata.0.LazySpa.Times.Pump_Time").val;
                     tage = Math.floor(parseFloat(Dauer) / 86400);
                     Dauer = parseFloat(Dauer) - parseFloat(tage) * 86400;
                     std = Math.floor(parseFloat(Dauer) / 3600);
                     Dauer = parseFloat(Dauer) - parseFloat(std) * 3600;
                     min = Math.floor(parseFloat(Dauer) / 60);
                     Dauer = parseFloat(Dauer) - parseFloat(min) * 60;
                     sec = Math.floor(parseFloat(Dauer) / 1);
                     setState("0_userdata.0.LazySpa.Times.Format-Pump-Time"/*Format-Pump-Time*/, ([tage,'D -  ',std,'h:',min,'min:',sec,'sec'].join('')));
                    });
                    
                    on({id: "0_userdata.0.LazySpa.Times.Hydrojet_Time"/*Hydrojet_Time*/, change: "ne"}, async function (obj) {
                     var value = obj.state.val;
                     var oldValue = obj.oldState.val;
                     Dauer = getState("0_userdata.0.LazySpa.Times.Hydrojet_Time").val;
                     tage = Math.floor(parseFloat(Dauer) / 86400);
                     Dauer = parseFloat(Dauer) - parseFloat(tage) * 86400;
                     std = Math.floor(parseFloat(Dauer) / 3600);
                     Dauer = parseFloat(Dauer) - parseFloat(std) * 3600;
                     min = Math.floor(parseFloat(Dauer) / 60);
                     Dauer = parseFloat(Dauer) - parseFloat(min) * 60;
                     sec = Math.floor(parseFloat(Dauer) / 1);
                     setState("0_userdata.0.LazySpa.Times.Format-Hydrojet-Time"/*Format-Hydrojet-Time*/, ([tage,'D -  ',std,'h:',min,'min:',sec,'sec'].join('')));
                    });
                    

                    Z 1 Antwort Letzte Antwort
                    1
                    • A Offline
                      A Offline
                      anderl
                      schrieb am zuletzt editiert von
                      #58

                      Hallo zusammen, hat irgendjemand noch eine Platine abzugeben? Leider unbedarft, trotzdem neue Herausforderung gesucht 😀 Danke und GrĂŒĂŸe Andy

                      R 1 Antwort Letzte Antwort
                      0
                      • Bjoern WeissB Offline
                        Bjoern WeissB Offline
                        Bjoern Weiss
                        schrieb am zuletzt editiert von
                        #59

                        Hallo zusammen,
                        ich habe ein kleines Problem. Hat jemand eine Idee, warum mir in dem Anzeigefeld keine Temperatur angezeigt wird?
                        Wenn es einen Fehler wie beispielsweise E02 etc gibt, wird dieser dort aber angezeigt.
                        Lazy.jpg

                        Ist ein Vegas (54112), allerdings mit 4-adrigen Verkabelung statt wie angegeben 6 Adern.

                        Hab ĂŒbrigends noch Platinen ĂŒbrig wenn jemand noch eine benötigt.

                        1 Antwort Letzte Antwort
                        0
                        • A anderl

                          Hallo zusammen, hat irgendjemand noch eine Platine abzugeben? Leider unbedarft, trotzdem neue Herausforderung gesucht 😀 Danke und GrĂŒĂŸe Andy

                          R Offline
                          R Offline
                          Rickman
                          schrieb am zuletzt editiert von
                          #60

                          @anderl
                          Ich habe gestern die PCB v2 bestellt. Wollte fĂŒr den Winter auch schon mal was zum basteln haben.
                          Sobald die da sind, kann ich Dir Bescheid geben.

                          Falls noch jemand welche benötigt - habe dann immer noch 3 ĂŒbrig. ;-)

                          Gruß,
                          Richy

                          allesautomatischA 1 Antwort Letzte Antwort
                          0
                          • R Rickman

                            @anderl
                            Ich habe gestern die PCB v2 bestellt. Wollte fĂŒr den Winter auch schon mal was zum basteln haben.
                            Sobald die da sind, kann ich Dir Bescheid geben.

                            Falls noch jemand welche benötigt - habe dann immer noch 3 ĂŒbrig. ;-)

                            Gruß,
                            Richy

                            allesautomatischA Offline
                            allesautomatischA Offline
                            allesautomatisch
                            schrieb am zuletzt editiert von
                            #61

                            @rickman
                            Ich wĂŒrde Dir ein v2 PCB abnehmen.

                            Vielen Dank und Gruß,
                            Michael

                            R 1 Antwort Letzte Antwort
                            0
                            • allesautomatischA allesautomatisch

                              @rickman
                              Ich wĂŒrde Dir ein v2 PCB abnehmen.

                              Vielen Dank und Gruß,
                              Michael

                              R Offline
                              R Offline
                              Rickman
                              schrieb am zuletzt editiert von
                              #62

                              @allesautomatisch
                              Hast ne Chatnachricht... :)

                              1 Antwort Letzte Antwort
                              0
                              • Chris685C Offline
                                Chris685C Offline
                                Chris685
                                schrieb am zuletzt editiert von
                                #63

                                Ich habe noch 4 Platinen V1 da und einen Satz mit 6 poligen JST-SM. Wenn Interesse besteht bitte PN.

                                1 Antwort Letzte Antwort
                                0
                                • R Offline
                                  R Offline
                                  Rickman
                                  schrieb am zuletzt editiert von Rickman
                                  #64

                                  Also... Ich hĂ€tte dann noch 2 fertige Boards fĂŒr das Model S100101, St. Lucia/Rio.
                                  Im Moment drucke ich noch die passenden GehĂ€use dafĂŒr, die wunderbar in die zwei freien Bohrungen neben der Heizung passen.

                                  20220921_183757.jpg

                                  20220923_074047.jpg

                                  20220923_074111.jpg

                                  Bei eBay werden die fĂŒr 83,- Euro vertickt, hier fĂŒr 35,- plus Versand.
                                  Falls es nicht klappen sollte, weil doch wieder was anders in der Elektronik der Pumpe ist, nehme ich den selbstverstĂ€ndlich wieder zurĂŒck. Bei Interesse gerne eine PN an mich.

                                  EDIT:
                                  Keiner mehr da...

                                  Gruß,
                                  Richy

                                  J 1 Antwort Letzte Antwort
                                  0
                                  • M Offline
                                    M Offline
                                    MezzoDO
                                    schrieb am zuletzt editiert von
                                    #65

                                    Guten Abend zusammen!
                                    Gibt's hier fachkundige Leute zu diesem Projekt, die mir bei meinem Problem helfen könnten?

                                    Ich hab die PCB V1 Platine und wollte einen BAHAMAS mit der Pumpe S100101 mit dem Modul ausstatten.
                                    Zusammengebaut mit dem blauen Level Converter, der laut Instructions bestÀtigt funktionieren soll. Zudem habe ich in meiner Verzweiflung auch versucht die 560 Ohm WiderstÀnde an die Datenleitungen 3,4 & 5 zum Display zu löten.

                                    Laut GitProject soll das Modell MIAMI2021 gewÀhlt werden, was ich auch eingestellt und hochgeladen habe (PlatformIO Upload, Build Filesystem und Upload Filesystem).

                                    Die WebUI lÀsst sich soweit auch aufrufen und konfigurieren, allerdings bleibt das Display der Pumpe dunkel und Bedienung ist weder Am Display noch per WebUI möglich.
                                    Alles was ich sehe ist die (vermeintlich korrekte) Temperatur per WebUI.

                                    Habe alles gemĂ€ĂŸ Anleitung mehr als fĂŒnf mal gecheckt. Vielleicht findet sich jemand, der mir helfen kann :(

                                    R tvtotalT R 3 Antworten Letzte Antwort
                                    0
                                    • M MezzoDO

                                      Guten Abend zusammen!
                                      Gibt's hier fachkundige Leute zu diesem Projekt, die mir bei meinem Problem helfen könnten?

                                      Ich hab die PCB V1 Platine und wollte einen BAHAMAS mit der Pumpe S100101 mit dem Modul ausstatten.
                                      Zusammengebaut mit dem blauen Level Converter, der laut Instructions bestÀtigt funktionieren soll. Zudem habe ich in meiner Verzweiflung auch versucht die 560 Ohm WiderstÀnde an die Datenleitungen 3,4 & 5 zum Display zu löten.

                                      Laut GitProject soll das Modell MIAMI2021 gewÀhlt werden, was ich auch eingestellt und hochgeladen habe (PlatformIO Upload, Build Filesystem und Upload Filesystem).

                                      Die WebUI lÀsst sich soweit auch aufrufen und konfigurieren, allerdings bleibt das Display der Pumpe dunkel und Bedienung ist weder Am Display noch per WebUI möglich.
                                      Alles was ich sehe ist die (vermeintlich korrekte) Temperatur per WebUI.

                                      Habe alles gemĂ€ĂŸ Anleitung mehr als fĂŒnf mal gecheckt. Vielleicht findet sich jemand, der mir helfen kann :(

                                      R Offline
                                      R Offline
                                      Rickman
                                      schrieb am zuletzt editiert von
                                      #66

                                      @mezzodo
                                      Schau Dir mal die Bilder bei mir an. Hast Du die Kabel so verlötet? Also in der Reihenfolge am Ein- und Ausgang?
                                      Du hast zwar eine V1- Platine, aber das selbe Pumpenmodell... Vielleicht klappts ja.

                                      Bei mir hat die Standardbelegung nÀmlich auch nicht funktioniert. :wink:

                                      M 1 Antwort Letzte Antwort
                                      0
                                      • R Rickman

                                        @mezzodo
                                        Schau Dir mal die Bilder bei mir an. Hast Du die Kabel so verlötet? Also in der Reihenfolge am Ein- und Ausgang?
                                        Du hast zwar eine V1- Platine, aber das selbe Pumpenmodell... Vielleicht klappts ja.

                                        Bei mir hat die Standardbelegung nÀmlich auch nicht funktioniert. :wink:

                                        M Offline
                                        M Offline
                                        MezzoDO
                                        schrieb am zuletzt editiert von
                                        #67

                                        @rickman
                                        Danke fĂŒr den Tipp, die Belegung hab ich tatsĂ€chlich schonmal gesehen aber nicht berĂŒcksichtigt. Ich teste das mal.

                                        LG

                                        M 1 Antwort Letzte Antwort
                                        0
                                        • M MezzoDO

                                          @rickman
                                          Danke fĂŒr den Tipp, die Belegung hab ich tatsĂ€chlich schonmal gesehen aber nicht berĂŒcksichtigt. Ich teste das mal.

                                          LG

                                          M Offline
                                          M Offline
                                          MezzoDO
                                          schrieb am zuletzt editiert von
                                          #68

                                          @mezzodo said in Lay-Z-Spa Wifi Control:

                                          @rickman
                                          Danke fĂŒr den Tipp, die Belegung hab ich tatsĂ€chlich schonmal gesehen aber nicht berĂŒcksichtigt. Ich teste das mal.

                                          LG

                                          Umverdrahtet, selber Effekt...

                                          Allerdings habe ich aus GrĂŒnden mal einen neuen Level Converter bestellt und jetzt spielt zumindest die Melodie beim starten, dennoch wie vorher bleibt das Display tot. Ich denke ich werde es nun nochmal mit der 1:1 Verdrahtung versuchen und melde mich erneut #justupdating

                                          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

                                          800

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          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