Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change to auto tele update #9

Merged
merged 1 commit into from
Nov 8, 2023

Conversation

curzon01
Copy link
Collaborator

@curzon01 curzon01 commented Nov 8, 2023

Makes the Backlog <cmnd>;Delay 30;Teleperiod obsolete.

This PR only works with the appened Tasmota FW. It implements a new cmnd NPTelePeriod to enable auto sending SENSOR topic on system value changes, NPTelePeriod 0 disable this - this is always the default after Tamota starts.

Short desc:

NPTelePeriod {time}
           enables the auto reporting on system value changes (<time> = 0..TelePeriod)
           <time> is the minimum of seconds between two reportings or 0 to switch off the function
           <time> only applies to changes for measured values, status changes such as filtration
           light, pH setpoint etc. always trigger an immediate report if this function is enabled
           (<time> != 0)

The NPTelePeriod setting will not be permanently stored, so it must be set by RULE during Tasmota start so I add a ON System#Init NPTeleperiod 5 ENDON to the default rule.

NPTeleperiod 5 for example means:

  • auto sending SENSOR is enabled
  • the trigger for sending is if a SENSOR related value within the system changes (some with delay of 5 sec)
  • state value changes like relay, light etc. are triggering immediately
  • values which are measured (temperature, redox etc.) are triggered earliest after 5 sec after the change - the 5 is a delay prevent flooding SENSOR topic sends. I'd use 5 for start, but you can use every value from 1 to TelePeriod setting.

You will the the changes are visibile more or less immediatley - it still takes 1-3 seconds e.g. when switching the filtration but this depends on the processing time of the SV system

Here the Tasmota FW with debug enabled - use Weblog 3 or Weblog 4 to see the sensor debug values. Weblog 2 get's back to normal logging:

tasmota32-neopool-dev.zip

If you aprove it, I will create a Tasmota PR

Copy link
Owner

@alexdelprete alexdelprete left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks ok. I'll make some small optimizations after it's merged.

@alexdelprete alexdelprete merged commit 358ed8f into alexdelprete:main Nov 8, 2023
@alexdelprete
Copy link
Owner

If you aprove it, I will create a Tasmota PR

Let me test it, then I'll give you a feedback so you can make the Tasmota PR.

Thanks.

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 8, 2023

@curzon01 Norbert, made some changes to package and updated the repo. I flashed the new fw. Created the updated Rule and set NPTeleperiod manually to 5.

Strange thing: after the command, I see SENSOR two times in 20ms.

Overall consideration: reaction times are good, and the status of sensors (the right section) etc. is finally in sync with the status of the switches (the ones on the left). Previously, I turned on a switch, its status would update after 3s, but the relevant sensor updated much after. So it looks good. :)

See below for other comments...

20:27:10.262 CMD: NPTeleperiod 5
20:27:10.276 MQT: stat/SmartPool/NPTELEPERIOD = {"NPTelePeriod":5}
20:27:10.788 MQT: tele/SmartPool/STATE = {"Time":"2023-11-08T20:27:10","Uptime":"0T00:20:05","UptimeSec":1205,"Heap":132,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Berry":{"HeapUsed":16,"Objects":229},"Wifi":{"AP":1,"SSId":"NetStumbling?","BSSId":"2C:3A:FD:EF:1E:67","Channel":1,"Mode":"11n","RSSI":100,"Signal":-35,"LinkCount":1,"Downtime":"0T00:00:13"}}
20:27:10.806 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:27:10","NeoPool":{"Time":"2023-11-08T20:27:08","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.7,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":595,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T04:16:43","Part":"51T04:16:43","Pol1":"25T21:26:46","Pol2":"25T06:49:57","Changes":464},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}},"TempUnit":"C"} (retained)
20:27:10.827 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:27:10","NeoPool":{"Time":"2023-11-08T20:27:08","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.7,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":595,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T04:16:43","Part":"51T04:16:43","Pol1":"25T21:26:46","Pol2":"25T06:49:57","Changes":464},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)

Then I tested the NPLight: the strange thing is that it gets repeated, I thought I clicked it two times but that was not the case, I always find the same double entry in the console.

NPLight on

20:29:33.086 MQT: stat/SmartPool/NPLIGHT = {"NPLight":"ON"}
20:29:35.814 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:29:35","NeoPool":{"Time":"2023-11-08T20:29:34","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.7,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":15,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":596,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T04:16:43","Part":"51T04:16:43","Pol1":"25T21:26:46","Pol2":"25T06:49:57","Changes":464},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}},"TempUnit":"C"} (retained)
20:29:36.810 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:29:36","NeoPool":{"Time":"2023-11-08T20:29:34","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.7,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":15,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":596,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T04:16:43","Part":"51T04:16:43","Pol1":"25T21:26:46","Pol2":"25T06:49:57","Changes":464},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,0,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
20:29:36.983 MQT: stat/SmartPool/NPLIGHT = {"NPLight":"ON"}
20:29:50.836 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:29:50","NeoPool":{"Time":"2023-11-08T20:29:49","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.7,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":596,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T04:16:43","Part":"51T04:16:43","Pol1":"25T21:26:46","Pol2":"25T06:49:57","Changes":464},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,0,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}},"TempUnit":"C"} (retained)
20:29:59.834 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:29:59","NeoPool":{"Time":"2023-11-08T20:29:57","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.7,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":33,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":596,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T04:16:43","Part":"51T04:16:43","Pol1":"25T21:26:46","Pol2":"25T06:49:57","Changes":464},"State":"Pol1","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,0,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)

NPLight off

20:32:04.666 MQT: stat/SmartPool/NPLIGHT = {"NPLight":"OFF"}
20:32:05.829 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:32:05","NeoPool":{"Time":"2023-11-08T20:32:03","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.9,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":15,"24-30V":33,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":2,"FL1":0,"Tank":1},"Redox":{"Data":633,"Setpoint":720},"Hydrolysis":{"Data":18.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":54,"Setpoint":54},"Runtime":{"Total":"51T04:18:38","Part":"51T04:18:38","Pol1":"25T21:28:41","Pol2":"25T06:49:57","Changes":464},"State":"Pol1","Cover":0,"Boost":0,"Low":1},"Filtration":{"State":1,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,1,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}},"TempUnit":"C"} (retained)
20:32:07.806 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:32:07","NeoPool":{"Time":"2023-11-08T20:32:06","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.9,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":2,"FL1":0,"Tank":1},"Redox":{"Data":633,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T04:18:40","Part":"51T04:18:40","Pol1":"25T21:28:43","Pol2":"25T06:49:57","Changes":464},"State":"Pol1","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":1,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,1,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
20:32:08.228 MQT: stat/SmartPool/NPLIGHT = {"NPLight":"OFF"}
20:32:14.811 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:32:14","NeoPool":{"Time":"2023-11-08T20:32:12","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.9,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":33,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":2,"FL1":0,"Tank":1},"Redox":{"Data":634,"Setpoint":720},"Hydrolysis":{"Data":3.2,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":9,"Setpoint":54},"Runtime":{"Total":"51T04:18:42","Part":"51T04:18:42","Pol1":"25T21:28:45","Pol2":"25T06:49:57","Changes":464},"State":"Pol1","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":1,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,1,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
20:32:20.840 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:32:20","NeoPool":{"Time":"2023-11-08T20:32:19","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.9,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":32,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":2,"FL1":0,"Tank":1},"Redox":{"Data":635,"Setpoint":720},"Hydrolysis":{"Data":14.3,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":43,"Setpoint":54},"Runtime":{"Total":"51T04:18:46","Part":"51T04:18:46","Pol1":"25T21:28:49","Pol2":"25T06:49:57","Changes":464},"State":"Pol1","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":1,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,1,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}},"TempUnit":"C"} (retained)
20:32:22.806 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:32:22","NeoPool":{"Time":"2023-11-08T20:32:21","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.9,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":30,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":2,"FL1":0,"Tank":1},"Redox":{"Data":635,"Setpoint":720},"Hydrolysis":{"Data":18.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":54,"Setpoint":54},"Runtime":{"Total":"51T04:18:50","Part":"51T04:18:50","Pol1":"25T21:28:53","Pol2":"25T06:49:57","Changes":464},"State":"Pol1","Cover":0,"Boost":0,"Low":1},"Filtration":{"State":1,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,1,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)

Then I tested NPFiltration: here I don't see the duplicate command, looks good.

NPFiltration on

20:30:05.657 MQT: stat/SmartPool/NPFILTRATION = {"NPFiltration":"ON","Speed":"1"}
20:30:05.802 MQT: tele/SmartPool/STATE = {"Time":"2023-11-08T20:30:05","Uptime":"0T00:23:00","UptimeSec":1380,"Heap":130,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":27,"MqttCount":1,"Berry":{"HeapUsed":16,"Objects":229},"Wifi":{"AP":1,"SSId":"NetStumbling?","BSSId":"2C:3A:FD:EF:1E:67","Channel":1,"Mode":"11n","RSSI":100,"Signal":-38,"LinkCount":1,"Downtime":"0T00:00:13"}}
20:30:05.819 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:30:05","NeoPool":{"Time":"2023-11-08T20:30:03","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.7,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":33,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":603,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T04:16:43","Part":"51T04:16:43","Pol1":"25T21:26:46","Pol2":"25T06:49:57","Changes":464},"State":"Pol1","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,0,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}},"TempUnit":"C"} (retained)
20:30:09.804 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:30:09","NeoPool":{"Time":"2023-11-08T20:30:08","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.7,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":33,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":2,"FL1":0,"Tank":1},"Redox":{"Data":606,"Setpoint":720},"Hydrolysis":{"Data":1.9,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":5,"Setpoint":54},"Runtime":{"Total":"51T04:16:44","Part":"51T04:16:44","Pol1":"25T21:26:47","Pol2":"25T06:49:57","Changes":464},"State":"Pol1","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":1,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,1,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
20:30:15.870 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:30:15","NeoPool":{"Time":"2023-11-08T20:30:14","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.7,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":32,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":2,"FL1":0,"Tank":1},"Redox":{"Data":609,"Setpoint":720},"Hydrolysis":{"Data":9.6,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":29,"Setpoint":54},"Runtime":{"Total":"51T04:16:50","Part":"51T04:16:50","Pol1":"25T21:26:53","Pol2":"25T06:49:57","Changes":464},"State":"Pol1","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":1,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,1,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
20:30:18.792 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-08T20:30:18","NeoPool":{"Time":"2023-11-08T20:30:14","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.8,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":31,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":2,"FL1":0,"Tank":1},"Redox":{"Data":610,"Setpoint":720},"Hydrolysis":{"Data":18.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":54,"Setpoint":54},"Runtime":{"Total":"51T04:16:53","Part":"51T04:16:53","Pol1":"25T21:26:56","Pol2":"25T06:49:57","Changes":464},"State":"Pol1","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":1,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,1,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)

@curzon01
Copy link
Collaborator Author

curzon01 commented Nov 8, 2023

Enable sensor debug using Weblog 3 or Weblog 4 to see the reason

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 8, 2023

I see MQTT before the commands two times, that means HA is sending it two times, correct?

Weblog 3 + NPLight off

00:06:03.786 NEO: NeopoolCheckChanges() false
00:06:04.801 NEO: NeopoolCheckChanges() false
00:06:05.831 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T00:06:05","NeoPool":{"Time":"2023-11-09T00:06:03","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":14.4,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":15,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":601,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T05:21:03","Part":"51T05:21:03","Pol1":"25T21:32:20","Pol2":"25T07:48:43","Changes":465},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,0,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}},"TempUnit":"C"} (retained)
00:06:05.839 NEO: NeopoolCheckChanges() false
00:06:06.819 NEO: NeopoolCheckChanges() false
00:06:07.778 NEO: NeopoolCheckChanges() false
00:06:08.801 NEO: NeopoolCheckChanges() false
00:06:09.811 NEO: NeopoolCheckChanges() false
00:06:10.620 SRC: MQTT
00:06:10.622 CMD: Grp 0, Cmd 'NPLIGHT', Idx 1, Len 1, Pld 0, Data '0'
00:06:10.711 MQT: stat/SmartPool/NPLIGHT = {"NPLight":"OFF"}
00:06:10.784 NEO: NeopoolCheckChanges() false
00:06:11.799 NEO: NeopoolCheckChanges() false
00:06:12.808 NEO: NeopoolCheckChanges() false
00:06:13.773 NEO: NeopoolCheckChanges() addr 0x010E data changed from 4 (0x0004) to 0 (0x0000)
00:06:13.774 NEO: NeopoolCheckChanges() true
00:06:13.789 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T00:06:13","NeoPool":{"Time":"2023-11-09T00:06:13","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":14.4,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":601,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T05:21:03","Part":"51T05:21:03","Pol1":"25T21:32:20","Pol2":"25T07:48:43","Changes":465},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
00:06:14.077 SRC: MQTT
00:06:14.079 CMD: Grp 0, Cmd 'NPLIGHT', Idx 1, Len 1, Pld 0, Data '0'
00:06:14.166 MQT: stat/SmartPool/NPLIGHT = {"NPLight":"OFF"}
00:06:14.803 NEO: NeopoolCheckChanges() false
00:06:15.815 NEO: NeopoolCheckChanges() false
00:06:16.782 NEO: NeopoolCheckChanges() false
00:06:17.794 NEO: NeopoolCheckChanges() false
00:06:18.806 NEO: NeopoolCheckChanges() false
00:06:19.817 NEO: NeopoolCheckChanges() false
00:06:20.810 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T00:06:20","NeoPool":{"Time":"2023-11-09T00:06:18","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":14.5,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":13,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":601,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T05:21:03","Part":"51T05:21:03","Pol1":"25T21:32:20","Pol2":"25T07:48:43","Changes":465},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}},"TempUnit":"C"} (retained)
00:06:20.819 NEO: NeopoolCheckChanges() addr 0x0106 data changed from 144 (0x0090) to 145 (0x0091)
00:06:20.821 NEO: NeopoolCheckChanges() false
00:06:21.798 NEO: NeopoolCheckChanges() false
00:06:22.817 NEO: NeopoolCheckChanges() addr 0x0106 data changed from 145 (0x0091) to 144 (0x0090)
00:06:22.818 NEO: NeopoolCheckChanges() false
00:06:23.799 NEO: NeopoolCheckChanges() false
00:06:24.792 NEO: NeopoolCheckChanges() false
00:06:25.801 NEO: NeopoolCheckChanges() false
00:06:26.810 NEO: NeopoolCheckChanges() false
00:06:27.820 NEO: NeopoolCheckChanges() false
00:06:28.785 NEO: NeopoolCheckChanges() addr 0x0103 data changed from 601 (0x0259) to 600 (0x0258)
00:06:28.786 NEO: NeopoolCheckChanges() true
00:06:28.800 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T00:06:28","NeoPool":{"Time":"2023-11-09T00:06:26","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":14.4,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":15,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":600,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T05:21:03","Part":"51T05:21:03","Pol1":"25T21:32:20","Pol2":"25T07:48:43","Changes":465},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)

NPLight on

00:11:01.335 SRC: MQTT
00:11:01.337 CMD: Grp 0, Cmd 'NPLIGHT', Idx 1, Len 1, Pld 1, Data '1'
00:11:01.425 MQT: stat/SmartPool/NPLIGHT = {"NPLight":"ON"}
00:11:01.821 NEO: NeopoolCheckChanges() false
00:11:02.812 NEO: NeopoolCheckChanges() false
00:11:03.824 NEO: NeopoolCheckChanges() false
00:11:04.787 NEO: NeopoolCheckChanges() addr 0x010E data changed from 0 (0x0000) to 4 (0x0004)
00:11:04.788 NEO: NeopoolCheckChanges() true
00:11:04.804 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T00:11:04","NeoPool":{"Time":"2023-11-09T00:11:02","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":14.4,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":33,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":599,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T05:21:03","Part":"51T05:21:03","Pol1":"25T21:32:20","Pol2":"25T07:48:43","Changes":465},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,0,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
00:11:04.885 SRC: MQTT
00:11:04.887 CMD: Grp 0, Cmd 'NPLIGHT', Idx 1, Len 1, Pld 1, Data '1'
00:11:04.978 MQT: stat/SmartPool/NPLIGHT = {"NPLight":"ON"}
00:11:05.861 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T00:11:05","NeoPool":{"Time":"2023-11-09T00:11:02","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":14.4,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":33,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":0,"Tank":1},"Redox":{"Data":599,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T05:21:03","Part":"51T05:21:03","Pol1":"25T21:32:20","Pol2":"25T07:48:43","Changes":465},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,0,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}},"TempUnit":"C"} (retained)
00:11:05.872 NEO: NeopoolCheckChanges() false
00:11:06.783 NEO: NeopoolCheckChanges() false

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 8, 2023

For the NPFiltration command I don't see a duplicate command, weird...

00:26:45.991 SRC: MQTT
00:26:45.994 CMD: Grp 0, Cmd 'NPFILTRATION', Idx 1, Len 1, Pld 1, Data '1'
00:26:46.068 MQT: stat/SmartPool/NPFILTRATION = {"NPFiltration":"ON","Speed":"1"}
00:26:46.811 NEO: NeopoolCheckChanges() false
00:26:47.821 NEO: NeopoolCheckChanges() addr 0x010D data changed from 16928 (0x4220) to 16992 (0x4260)
00:26:47.823 NEO: NeopoolCheckChanges() addr 0x0107 data changed from 50432 (0xC500) to 57600 (0xE100)
00:26:47.825 NEO: NeopoolCheckChanges() addr 0x010E data changed from 0 (0x0000) to 258 (0x0102)
00:26:47.827 NEO: NeopoolCheckChanges() true
00:26:47.842 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T00:26:47","NeoPool":{"Time":"2023-11-09T00:26:44","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":14.3,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":15,"24-30V":34,"4-20mA":0.050},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":2,"FL1":1,"Tank":1},"Redox":{"Data":593,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T05:21:03","Part":"51T05:21:03","Pol1":"25T21:32:20","Pol2":"25T07:48:43","Changes":465},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":1,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,1,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
00:26:48.779 NEO: NeopoolCheckChanges() false
00:26:49.782 NEO: NeopoolCheckChanges() false
00:26:50.826 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T00:26:50","NeoPool":{"Time":"2023-11-09T00:26:49","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":14.3,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":15,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":2,"FL1":1,"Tank":1},"Redox":{"Data":593,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T05:21:03","Part":"51T05:21:03","Pol1":"25T21:32:20","Pol2":"25T07:48:43","Changes":465},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":1,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,1,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}},"TempUnit":"C"} (retained)
00:26:50.840 NEO: NeopoolCheckChanges() false
00:26:51.812 NEO: NeopoolCheckChanges() addr 0x0102 data changed from 730 (0x02DA) to 729 (0x02D9)
00:26:51.814 NEO: NeopoolCheckChanges() false
00:26:52.806 NEO: NeopoolCheckChanges() false
00:26:53.818 NEO: NeopoolCheckChanges() false
00:26:54.780 NEO: NeopoolCheckChanges() false
00:26:55.792 NEO: NeopoolCheckChanges() false
00:26:56.804 NEO: NeopoolCheckChanges() false
00:26:57.814 NEO: NeopoolCheckChanges() addr 0x0102 data changed from 729 (0x02D9) to 730 (0x02DA)
00:26:57.835 NEO: NeopoolCheckChanges() true
00:26:57.851 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T00:26:57","NeoPool":{"Time":"2023-11-09T00:26:55","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":14.3,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":13,"24-30V":33,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":2,"FL1":1,"Tank":1},"Redox":{"Data":593,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T05:21:03","Part":"51T05:21:03","Pol1":"25T21:32:20","Pol2":"25T07:48:43","Changes":465},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":1,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,1,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
00:26:58.825 NEO: NeopoolCheckChanges() false
00:26:59.794 NEO: NeopoolCheckChanges() false

@curzon01
Copy link
Collaborator Author

curzon01 commented Nov 9, 2023

that is all correct - you have now different sources for SENSOR trigger, some after a few second after a command comes from a sensor change (e.g 0x0103 is the Rx level and 0x0102 the pH) and it seems you also didn't reset your standard TelePeriod time - use TelePeriod 300 because your short Teleperiod time comes now on top

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 9, 2023

Got it. But why the double command only for NPLight? And...should we recommend in readme notes to use TelePeriod 300 as default?

Anyway, from my test, this is working fine and it's quick and stable enough that I don't think a custom component is really necessary anymore.

Could you kindly let me know when it's merged in Tasmota dev? I hope next official release we'll have this final version of NeoPool. Can't wait. :)

@curzon01
Copy link
Collaborator Author

curzon01 commented Nov 9, 2023

But why the double command only for NPLight?

This is due to the slow implementation within the SV:
A few NeoPool commands must change more than one Modbus register of the SV in order to achieve a function. To switch the light relay, several registers must be changed in the correct order.
If the process within SV results in this register change only being valid after 1-3 seconds, this leads to changes within a very short time for these registers (which always trigger immediately).

And...should we recommend in readme notes to use TelePeriod 300 as default?

don't think so, that's the Tasmata default -
this would only be for the few people who have tested the first versions and I suggest to keep the docs as short as possible - tl;dr .-)

Could you kindly let me know when it's merged in Tasmota dev?

Yes, but still under dev at the moment. I have rare crashes on the ESP82xx, I have to fix it first...

@alexdelprete
Copy link
Owner

This is due to the slow implementation within the SV:

So when I read SRC: MQTT that doesn't mean the source of the command is actually MQTT. That misled me. :)

still under dev at the moment. I have rare crashes on the ESP82xx, I have to fix it first.

If the target would only be ESP32, there would still be memory constraints to host ALL NP commands in the firmware?

@curzon01
Copy link
Collaborator Author

curzon01 commented Nov 9, 2023

So when I read SRC: MQTT that doesn't mean the source of the command is actually MQTT. That misled me. :)

don't really understand the background of your question, would you specify what exactly you mean?
log outputs with "MQTT" comes from Tasmota, that's driver independent - NeoPool driver is a gateway between SV and Tasmota and internal things are labeled with NEO and only visible when using DEBUG_TASMOTA_SENSOR and Weblog 3-4. That's the Tasmota design.

If the target would only be ESP32, there would still be memory constraints to host ALL NP commands in the firmware?

there will not be an ESP32 only version - BTW, the cause of the crashes are not based by lack of memory

Which NP cmnd do you mean by ALL?
The only cmnd you could hardcoded would be NPBoost. I won't include NPAux in the firmware because 1. it doesn't work everywhere and 2. even in Berry it's still incompletely implemented.

The game goes on with wishes of other users who want to set the times in the filtration, change the names of the aux, set the parameters of the pH pump control... - I have enough requests, but when you ask people to make a simple few NPReads on their system, there is silence...

@curzon01
Copy link
Collaborator Author

curzon01 commented Nov 9, 2023

aah, now I got it, example:

00:11:04.885 SRC: MQTT
00:11:04.887 CMD: Grp 0, Cmd 'NPLIGHT', Idx 1, Len 1, Pld 1, Data '1'

mean there is a command (CMD module) "NPLIGHT" received with parameter "1"

the source of this command is "SRC: MQTT" so the command comes via MQTT
if you type it in the console, it looks like "SRC: WebConsole from ...."

@alexdelprete
Copy link
Owner

there will not be an ESP32 only version - BTW, the cause of the crashes are not based by lack of memory

I didn't ask you to make an ESP32 version. It was purely a technical question, that you answered in the second part of the answer. :)

Which NP cmnd do you mean by ALL?

The firmware ones + the Berry script ones.

The only cmnd you could hardcoded would be NPBoost.

That would be the one I would include, because it's an embedded function of the cell, and I think widely used.

I won't include NPAux in the firmware

That is understandable, it makes sense.

The game goes on with wishes of other users who want to set the times in the filtration, change the names of the aux, set the parameters of the pH pump control... - I have enough requests, but when you ask people to make a simple few NPReads on their system, there is silence...

With respect, I want to be very clear and sincere about this: I didn't request anything, and I don't particularly like generalizations. If I make a request it's always for what I think a valid reason for most users, not just me, and most importantly, if I collaborate with someone, I put in the time/work to help/test/implement what I can (I think you can acknowledge this). So please don't treat me like the ones who make constant selfish requests on the repo without even bothering to help test things etc. :)

If I tell you about the berry script it's because:

  • the NPBoost command is available only in Berry, so only for ESP32.
  • some users struggle with Tasmota, let alone telling them to create Berry files in the internal filesystem, etc.
  • I had friends for which I spent an afternoon debugging issues and it was because the Berry script.

Since we're talking about a functionality that all pool owners use (Boost) I logically think it should be part of the firmware. And if there's resource constraints, I see some commands included far less important than NPBoost that is available only to ESP32 users.

Anyway, this is the last time I will discuss this. It's your driver, it's your decision, I'm just giving you my respectful and honest opinion based on my experience and my tests.

Thanks as always.

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 9, 2023

the source of this command is "SRC: MQTT" so the command comes via MQTT

So back on my previous comment: if the source IS mqtt, like I suspected, it means HA sent the command two times, correct? But I don't see why it happens only for the NPLight command. The code of the switch for NPLight and NPFiltration is the same:

  switch:
    - unique_id: "neopool_mqtt_filtration_switch"
      name: "NeoPool MQTT Filtration Switch"
      device_class: switch
      command_topic: "cmnd/SmartPool/NPFiltration"
      state_topic: "tele/SmartPool/SENSOR"
      value_template: "{{ value_json.NeoPool.Filtration.State }}"
      optimistic: false
      retain: false
      payload_on: "1"
      payload_off: "0"
      state_on: "1"
      state_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

    - unique_id: "neopool_mqtt_light_switch"
      name: "NeoPool MQTT Light Switch"
      device_class: switch
      command_topic: "cmnd/SmartPool/NPLight"
      state_topic: "tele/SmartPool/SENSOR"
      optimistic: false
      retain: false
      value_template: "{{ value_json.NeoPool.Light }}"
      payload_on: "1"
      payload_off: "0"
      state_on: "1"
      state_off: "0"
      availability_topic: "tele/SmartPool/LWT"
      payload_available: "Online"
      payload_not_available: "Offline"

@curzon01
Copy link
Collaborator Author

curzon01 commented Nov 9, 2023

this is probably a result of the fact that you defined the commands once before retain (can you remember?)

Did you explicitly delete your retain topics afterwards?

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 9, 2023

Did you explicitly delete your retain topics afterwards?

Thanks. I deleted them, but NPLight was still there...can't understand why...anyway, problem solved. :)

UPDATE: Talked too soon...I still see double commands. :(

@curzon01
Copy link
Collaborator Author

curzon01 commented Nov 9, 2023

how did you delete it?

@alexdelprete
Copy link
Owner

how did you delete it?

MQTT Explorer. Then toggled the switch again.

@curzon01
Copy link
Collaborator Author

curzon01 commented Nov 9, 2023

Stop ha, recoonect explorer and see if the topic is realy gone. MQTT explorer sometimes wrong displaying retains

@alexdelprete
Copy link
Owner

Stop ha, recoonect explorer and see if the topic is realy gone. MQTT explorer sometimes wrong displaying retains

problem is not MQTT Explorer: when you modify retain flag, all sessions still active don't see the change, you have to reconnect. I tried reloading the MQTT integration in HA, hoping it would reconnect, but I still see two commands in Tasmota console.

The topic is definitely without the retain flag:

image

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 9, 2023

It was all a log thing I believe...I sent the command through Tasmo console, look at the log: I always see SRC: MQTT and the second command, even if I only used the console.

20:35:22.688 CMD: NPLight 1
20:35:22.690 SRC: WebConsole from 10.1.10.45
20:35:22.692 CMD: Grp 0, Cmd 'NPLIGHT', Idx 1, Len 1, Pld 1, Data '1'
20:35:22.784 MQT: stat/SmartPool/NPLIGHT = {"NPLight":"ON"}
20:35:22.835 NEO: NeopoolCheckChanges() false
20:35:23.805 NEO: NeopoolCheckChanges() false
20:35:24.783 NEO: NeopoolCheckChanges() false
20:35:25.775 NEO: NeopoolCheckChanges() addr 0x010E data changed from 0 (0x0000) to 4 (0x0004)
20:35:25.777 NEO: NeopoolCheckChanges() true
20:35:25.795 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T20:35:25","NeoPool":{"Time":"2023-11-09T20:35:21","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.5,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":15,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":1,"Tank":1},"Redox":{"Data":544,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T14:54:49","Part":"51T14:54:49","Pol1":"26T02:25:02","Pol2":"25T12:29:47","Changes":470},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,0,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
20:35:25.871 SRC: MQTT
20:35:25.873 CMD: Grp 0, Cmd 'NPLIGHT', Idx 1, Len 1, Pld 1, Data '1'
20:35:25.961 MQT: stat/SmartPool/NPLIGHT = {"NPLight":"ON"}
20:35:26.792 NEO: NeopoolCheckChanges() false
20:35:27.862 NEO: NeopoolCheckChanges() false
20:35:28.784 NEO: NeopoolCheckChanges() false

This doesn't happen with NPFiltration though:

20:38:20.444 CMD: NPFiltration 1
20:38:20.447 SRC: WebConsole from 10.1.10.45
20:38:20.449 CMD: Grp 0, Cmd 'NPFILTRATION', Idx 1, Len 1, Pld 1, Data '1'
20:38:20.519 MQT: stat/SmartPool/NPFILTRATION = {"NPFiltration":"ON","Speed":"1"}
20:38:20.775 NEO: NeopoolCheckChanges() false
20:38:21.784 NEO: NeopoolCheckChanges() false
20:38:22.795 NEO: NeopoolCheckChanges() addr 0x010D data changed from 8736 (0x2220) to 8800 (0x2260)
20:38:22.797 NEO: NeopoolCheckChanges() addr 0x0107 data changed from 49408 (0xC100) to 57600 (0xE100)
20:38:22.798 NEO: NeopoolCheckChanges() addr 0x010E data changed from 4 (0x0004) to 262 (0x0106)
20:38:22.799 NEO: NeopoolCheckChanges() true
20:38:22.815 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T20:38:22","NeoPool":{"Time":"2023-11-09T20:38:18","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.5,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":15,"24-30V":33,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":2,"FL1":1,"Tank":1},"Redox":{"Data":544,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T14:54:49","Part":"51T14:54:49","Pol1":"26T02:25:02","Pol2":"25T12:29:47","Changes":470},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":1,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,1,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
20:38:23.819 NEO: NeopoolCheckChanges() false
20:38:24.785 NEO: NeopoolCheckChanges() false
20:38:25.796 NEO: NeopoolCheckChanges() false

Maybe something related to Berry scripts?

@curzon01
Copy link
Collaborator Author

curzon01 commented Nov 9, 2023

The topic is definitely without the retain flag:

Your screenshot shows what I mean, I observed that exporer sometimes shows no retain flag even the topic is retained, thats a bug. This can be verifyied when no other Publisher isn9nline, you reconnect explorer and when you see this topic without anyone has sent its still retained.

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 9, 2023

Your screenshot shows what I mean, I observed that exporer sometimes shows no retain flag even the topic is retained

I don't agree. That happens when you set retain AFTER MQTT Explorer is already connected (it's also documented). When you reconnect you see the flag. It's the spec, it's not explorer. MQTT is a strange (and old) beast. :)

Anyway, I checked with the broker, and the topic has no retain flag. MQTT Explorer is fine.

BTW: I rebooted the device and System#Init has not triggered the NPTelePeriod.

The rule in readme had a bug, a missing DO before the command, and with no NPTelePeriod saved, nothing works. :)

Rule1
  ON Time#Initialized DO NPTime 0 ENDON
  ON Time#Set DO NPTime 0 ENDON
  ON System#Init NPTeleperiod 5 ENDON
Backlog Rule1 4;Rule1 1

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 9, 2023

It's not the retain flag, I deleted ALL topics, reconnected HA, rebooted Tasmota, and I still have the duplicate NPLight command. When you can, test with your Atom...would like to know if it's just me...

21:12:01.413 CMD: Weblog 3
21:12:01.420 MQT: stat/SmartPool/RESULT = {"WebLog":3}
21:12:01.829 NEO: NeopoolCheckChanges() false
21:12:02.349 CFG: Saved, Count 543, Bytes 4096
21:12:02.820 NEO: NeopoolCheckChanges() false
21:12:03.830 NEO: NeopoolCheckChanges() false
21:12:04.840 NEO: NeopoolCheckChanges() false
21:12:05.293 SRC: MQTT
21:12:05.295 CMD: Grp 0, Cmd 'NPLIGHT', Idx 1, Len 1, Pld 0, Data '0'
21:12:05.382 MQT: stat/SmartPool/RESULT = {"NPLight":"OFF"}
21:12:05.856 NEO: NeopoolCheckChanges() false
21:12:06.814 NEO: NeopoolCheckChanges() false
21:12:07.826 NEO: NeopoolCheckChanges() false
21:12:08.836 NEO: NeopoolCheckChanges() addr 0x0102 data changed from 727 (0x02D7) to 726 (0x02D6)
21:12:08.838 NEO: NeopoolCheckChanges() addr 0x010E data changed from 4 (0x0004) to 0 (0x0000)
21:12:08.839 NEO: NeopoolCheckChanges() true
21:12:08.855 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T21:12:08","NeoPool":{"Time":"2023-11-09T21:12:06","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.4,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":33,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":1,"Tank":1},"Redox":{"Data":541,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T14:54:49","Part":"51T14:54:49","Pol1":"26T02:25:02","Pol2":"25T12:29:47","Changes":470},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
21:12:08.943 SRC: MQTT
21:12:08.945 CMD: Grp 0, Cmd 'NPLIGHT', Idx 1, Len 1, Pld 0, Data '0'
21:12:09.036 MQT: stat/SmartPool/RESULT = {"NPLight":"OFF"}
21:12:09.819 NEO: NeopoolCheckChanges() false
21:12:10.833 NEO: NeopoolCheckChanges() false
21:12:11.841 NEO: NeopoolCheckChanges() false

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 9, 2023

Can NPTelePeriod have a default value of 5 instead of 0?

@curzon01
Copy link
Collaborator Author

curzon01 commented Nov 9, 2023

missing DO

Yep, its my default fault

I have only single NPLight shots, switching using HA - just wonder why yours has a gap of 3,x sec each time.

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 9, 2023

just wonder why yours has a gap of 3,x sec each time.

I noticed...that confirms it's not the retain...something else going on...

HA is not playing a role, it also happens when I send NPLight from tasmo console.

Don't know what else to check...

@curzon01
Copy link
Collaborator Author

curzon01 commented Nov 9, 2023

also happens when I send NPLight from tasmo console.

How does this look with weblog 4? First cmd src must be webconsole and the second?

@alexdelprete
Copy link
Owner

22:08:30.801 CMD: NPLight 0
22:08:30.803 SRC: WebConsole from 10.1.10.45
22:08:30.805 CMD: Grp 0, Cmd 'NPLIGHT', Idx 1, Len 1, Pld 0, Data '0'
22:08:30.830 NEO: NeoPoolReadRegister(0x0410, 1) = [0x0003]
22:08:30.849 NEO: NeoPoolReadRegister(0x010E, 1) = [0x0004]
22:08:30.850 NEO: NeoPoolWriteRegister(0x0470, 1) = [0x0004]
22:08:30.871 NEO: NeoPoolWriteRegister(0x02F5, 1) = [0x0001]
22:08:30.901 MQT: stat/SmartPool/RESULT = {"NPLight":"OFF"}
22:08:30.967 NEO: NeopoolCheckChanges() false
22:08:31.835 NEO: NeopoolCheckChanges() false
22:08:32.186 NEO: modbus send(1, 4, 0x006A, 9)
22:08:32.442 NEO: modbus send(1, 4, 0x0100, 17)
22:08:32.696 NEO: modbus send(1, 4, 0x0206, 20)
22:08:32.847 NEO: NeopoolCheckChanges() false
22:08:32.949 NEO: modbus send(1, 4, 0x0300, 7)
22:08:33.202 NEO: modbus send(1, 4, 0x0408, 14)
22:08:33.442 NEO: modbus send(1, 4, 0x0500, 16)
22:08:33.713 NEO: modbus send(1, 4, 0x0600, 8)
22:08:33.810 NEO: NeopoolCheckChanges() false
22:08:33.966 NEO: modbus send(1, 4, 0x0022, 2)
22:08:34.221 NEO: modbus send(1, 4, 0x006A, 9)
22:08:34.472 NEO: modbus send(1, 4, 0x0100, 17)
22:08:34.728 NEO: modbus send(1, 4, 0x0206, 20)
22:08:34.827 NEO: NeopoolCheckChanges() addr 0x010E data changed from 4 (0x0004) to 0 (0x0000)
22:08:34.829 NEO: NeopoolCheckChanges() true
22:08:34.845 MQT: tele/SmartPool/SENSOR = {"Time":"2023-11-09T22:08:34","NeoPool":{"Time":"2023-11-09T22:08:32","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.3,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":1,"Tank":1},"Redox":{"Data":530,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T14:54:49","Part":"51T14:54:49","Pol1":"26T02:25:02","Pol2":"25T12:29:47","Changes":470},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":0,"Relay":{"State":[0,0,0,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}} (retained)
22:08:34.977 NEO: modbus send(1, 4, 0x0300, 7)
22:08:35.025 SRC: MQTT
22:08:35.027 CMD: Grp 0, Cmd 'NPLIGHT', Idx 1, Len 1, Pld 0, Data '0'
22:08:35.053 NEO: NeoPoolReadRegister(0x0410, 1) = [0x0003]
22:08:35.073 NEO: NeoPoolReadRegister(0x010E, 1) = [0x0000]
22:08:35.075 NEO: NeoPoolWriteRegister(0x0470, 1) = [0x0004]
22:08:35.097 NEO: NeoPoolWriteRegister(0x02F5, 1) = [0x0001]
22:08:35.124 MQT: stat/SmartPool/RESULT = {"NPLight":"OFF"}
22:08:35.850 NEO: NeopoolCheckChanges() false

@curzon01
Copy link
Collaborator Author

curzon01 commented Nov 9, 2023

another test, because it looks like the second cmnd is a reaction of the SENSOR tele (MQTT cmnd comes 0.2 sec after SENSOR):

do the same but with tasmo disconnect to mqtt (disable mqtt or better, let it enabled and use a wrong mqtt pw)

@alexdelprete
Copy link
Owner

I banned the client from the broker:

image

Then in console:

22:51:04.213 MQT: Attempting connection...
22:51:04.261 MQT: Connect failed to 10.1.10.36:1883, rc 5. Retry in 10 sec
22:51:05.845 RSL: SENSOR = {"Time":"2023-11-09T22:51:05","NeoPool":{"Time":"2023-11-09T22:51:03","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.1,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":15,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":1,"Tank":1},"Redox":{"Data":521,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T14:54:49","Part":"51T14:54:49","Pol1":"26T02:25:02","Pol2":"25T12:29:47","Changes":470},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,0,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}}
22:51:15.228 MQT: Attempting connection...
22:51:15.276 MQT: Connect failed to 10.1.10.36:1883, rc 5. Retry in 20 sec
22:51:46.031 CMD: NPLight 1
22:51:46.033 SRC: WebConsole from 10.1.10.45
22:51:46.034 CMD: Grp 0, Cmd 'NPLIGHT', Idx 1, Len 1, Pld 1, Data '1'
22:51:46.059 NEO: NeoPoolReadRegister(0x0410, 1) = [0x0003]
22:51:46.078 NEO: NeoPoolReadRegister(0x010E, 1) = [0x0000]
22:51:46.079 NEO: NeoPoolWriteRegister(0x0470, 1) = [0x0003]
22:51:46.100 NEO: NeoPoolWriteRegister(0x02F5, 1) = [0x0001]
22:51:46.124 RSL: RESULT = {"NPLight":"ON"}
22:51:46.840 NEO: NeopoolCheckChanges() false
22:51:47.445 NEO: modbus send(1, 4, 0x0022, 2)
22:51:47.695 NEO: modbus send(1, 4, 0x006A, 9)
22:51:47.865 NEO: NeoPoolReadRegister(0x04EA, 1) = [0x0000]
22:51:47.884 NEO: NeoPoolReadRegister(0x0429, 1) = [0x0000]
22:51:47.885 NEO: NeopoolCheckChanges() false
22:51:47.944 WIF: Checking connection...
22:51:48.852 NEO: NeopoolCheckChanges() false
22:51:49.201 NEO: modbus send(1, 4, 0x006A, 9)
22:51:49.454 NEO: modbus send(1, 4, 0x0100, 17)
22:51:49.706 NEO: modbus send(1, 4, 0x0206, 20)
22:51:49.856 NEO: NeopoolCheckChanges() addr 0x010E data changed from 0 (0x0000) to 4 (0x0004)
22:51:49.857 NEO: NeopoolCheckChanges() true
22:51:49.866 RSL: SENSOR = {"Time":"2023-11-09T22:51:49","NeoPool":{"Time":"2023-11-09T22:51:44","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.2,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":1,"Tank":1},"Redox":{"Data":521,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T14:54:49","Part":"51T14:54:49","Pol1":"26T02:25:02","Pol2":"25T12:29:47","Changes":470},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,0,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}}}
22:51:49.958 NEO: modbus send(1, 4, 0x0300, 7)
22:51:50.211 NEO: modbus send(1, 4, 0x0408, 14)
22:51:50.465 NEO: modbus send(1, 4, 0x0500, 16)
22:51:50.718 NEO: modbus send(1, 4, 0x0600, 8)
22:51:50.815 NEO: NeopoolCheckChanges() false
22:51:50.969 NEO: modbus send(1, 4, 0x0022, 2)
22:51:51.217 NEO: modbus send(1, 4, 0x006A, 9)
22:51:51.480 NEO: modbus send(1, 4, 0x0100, 17)
22:51:51.736 NEO: modbus send(1, 4, 0x0206, 20)
22:51:51.834 NEO: NeopoolCheckChanges() false
22:51:51.936 NEO: modbus send(1, 4, 0x0300, 7)
22:51:52.186 NEO: modbus send(1, 4, 0x0408, 14)
22:51:52.439 NEO: modbus send(1, 4, 0x0500, 16)
22:51:52.691 NEO: modbus send(1, 4, 0x0600, 8)
22:51:52.842 BRY: GC from 19960 to 16592 bytes, objects freed 10/229 (in 1 ms) - slots from 195/274 to 181/274
22:51:52.848 RSL: STATE = {"Time":"2023-11-09T22:51:52","Uptime":"0T01:45:18","UptimeSec":6318,"Heap":134,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"Berry":{"HeapUsed":16,"Objects":229},"Wifi":{"AP":1,"SSId":"NetStumbling?","BSSId":"2C:3A:FD:EF:1E:67","Channel":1,"Mode":"11n","RSSI":100,"Signal":-36,"LinkCount":1,"Downtime":"0T00:00:13"}}
22:51:52.864 RSL: SENSOR = {"Time":"2023-11-09T22:51:52","NeoPool":{"Time":"2023-11-09T22:51:51","Type":"Hay","Modules":{"pH":1,"Redox":1,"Hydrolysis":1,"Chlorine":0,"Conductivity":0,"Ionization":0},"Temperature":15.2,"Powerunit":{"Version":"V5.0","NodeID":"XXXX XXXX XXXX XXXX XXXX 3435","5V":5,"12V":14,"24-30V":34,"4-20mA":0.060},"pH":{"Data":7.3,"Min":7.2,"Max":7.4,"State":0,"Pump":0,"FL1":1,"Tank":1},"Redox":{"Data":521,"Setpoint":720},"Hydrolysis":{"Data":0.0,"Unit":"g/h","Setpoint":18.0,"Max":33.0,"Percent":{"Data":0,"Setpoint":54},"Runtime":{"Total":"51T14:54:49","Part":"51T14:54:49","Pol1":"26T02:25:02","Pol2":"25T12:29:47","Changes":470},"State":"Flow","Cover":0,"Boost":0,"Low":0},"Filtration":{"State":0,"Speed":1,"Mode":0},"Light":1,"Relay":{"State":[0,0,1,0,0,0,0],"Aux":[0,0,0,0],"Acid":0}},"TempUnit":"C"}

@curzon01
Copy link
Collaborator Author

so you have to find the mqtt client which possibly react on SENSOR

@alexdelprete
Copy link
Owner

no client is aware of SmartPool, apart HA.

Is there a way to see the ip of the client sending a command through mqtt?

@alexdelprete
Copy link
Owner

Mistery solved: I had defined an entity group for the light switch and the shelly relay I'm actually using to turn on the pool light (I can't connect the lights to the Aquarite because of specific requirements of the lights transformer used). So basically the NeoPool Light switch is acting as a trigger to turn on the shelly. What happens is that when I send the NPLight command, the automation sends the switch on command to the group, so to both entities, the NeoPool Light and the Shelly. :)

Case closed. Sorry for wasting your time.

  - id: automation_switchgroup_luce_piscina
    alias: Automazione SwitchGroup Luce Piscina
    description: Gestione Switch Luce Piscina
    trigger:
      - platform: state
        entity_id: group.luce_piscina
        from: 'off'
        to: 'on'
      - platform: template
        value_template: "{{ expand('group.luce_piscina') | selectattr('state', '==', 'off') | list != [] }}"
    action:
      - service: "homeassistant.turn_{{ iif(trigger.platform == 'state', 'on', 'off') }}"
        target:
          entity_id: group.luce_piscina_pippo
    mode: single 

@alexdelprete
Copy link
Owner

I guess we're good now, the dev fw has been running for some days without issues. Hope you solved the problem on the ESP82xx.

@curzon01
Copy link
Collaborator Author

Case closed. Sorry for wasting your time.

great, no problem, such things just happen

solved the problem on the ESP82xx

was a wrong mem access to flash, will make PR today

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 11, 2023

Norbert, you implemented NPBoost in the fw!!! So happy about that. Thank you. :D

One thing I still don't understand: why NPTelePeriod 0 as default? Can't see the reason why it shouldn't be NPTelePeriod 5, since without that we go back to old issues/problems. But I'm surely missing something...I'm tired, was a long day. :)

@curzon01
Copy link
Collaborator Author

why NPTelePeriod 0 as default?

I see your focus at HA, but's it's 'cause backward usage compatiblity (user without HA and without HA ambitions), the default 0 is imho no issue (setup needed anyway)

since without that we go back to old issues/problems

you need to setup Tasmota anyway (Topic, Rule, imho, SensorRetain 1 is no longer necessary), append a NPTeleperiod 30 which is realy enough
NPTeleperiod 5 is a far inflated value that was used for testing. For normal operation, it only unnecessarily inflates the HA history or do you really need temperature values and the redox mV in 5 second intervals which only fluctuate minimally around their own value?

Do you know if you set NPTeleperiod above TelePeriod time (e.g. TelePeriod 60 and NPTeleperiod 300) it works just as well with your integration? Try it out and only measured values are reported every 60 sec. via TelePeriod timing.

BTW: The startup setup of NPTeleperiod within the rule is only neccessary for ESP82xx user (without unified file system, that's the default), ESP32 stores now this (and others) value permantly.

@alexdelprete
Copy link
Owner

You gave me some food for thought there, let's see if I can synthesize correctly what I understood so you can confirm:

Topic, Rule, imho, SensorRetain 1 is no longer necessary

It's necessary to have the retain flag on SENSOR topic otherwise on HA startup all sensors are unknown. Unless NPTeleperiod enables it automatically, but I don't think that's the case.

Topic is just to avoid users edit the file, advanced users know that they can change that and the package file.

Rule is necessary mainly for time sync. All devices on my network are time synced, I have a historical obsession for time synchronization because of my past professional experience. I have a Stratum-1 miniserver installed in my homelab. :)

NPTeleperiod 5 is a far inflated value that was used for testing. For normal operation, it only unnecessarily inflates the HA history or do you really need temperature values and the redox mV in 5 second intervals which only fluctuate minimally around their own value?

I agree that probably NPTeleperiod 5 is too much, since there's the automatic send trigger for switches/relays, so we don't need measurements that frequent. I'll modify readme with a 30s value.

Do you know if you set NPTeleperiod above TelePeriod time (e.g. TelePeriod 60 and NPTeleperiod 300) it works just as well

I didn't know because in your OP you wrote that limits were: (<time> = 0..TelePeriod)

The startup setup of NPTeleperiod within the rule is only neccessary for ESP82xx user (without unified file system, that's the default), ESP32 stores now this (and others) value permantly.

This is a very important info: I specified that the integration was only for ESP32 because of the NPBoost / Berry prerequirement. Since NPBoost is now in the fw, the integration works 100% for both chipsets, with the exception of NPTeleperiod that is not permanently saved for ESP82xx.

So if all this is confirmed by you, I will update readme like this:

  • change NPTeleperiod to 30s
  • specify that the integration works fine both on ESP32 and ESP82xx
  • a note regarding the fact that NPTeleperiod in RULE is needed only for ESP82xx

Let me know your feedbacks and I'll proceed. Thanks. :)

@curzon01
Copy link
Collaborator Author

  • change NPTeleperiod to 30s
  • specify that the integration works fine both on ESP32 and ESP82xx
  • a note regarding the fact that NPTeleperiod in RULE is needed only for ESP82xx

make it so

@alexdelprete
Copy link
Owner

alexdelprete commented Nov 11, 2023

make it so

I updated readme:

  • added Discover 0 to tasmota configuration (tested and it works beautifully)
  • NPTeleperiod 60 in rule (60s is a good value from what we've discussed)
  • Removed notes specifying it was only for ESP32
  • minor things and cosmetics

I didn't want to specify that the NPTeleperiod 60 in Rule1 is not needed for ESP32, I prefer to have a single configuration for both chipsets.

@curzon01 curzon01 deleted the npteleperiod branch April 12, 2024 14:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants