Timer loop assistant

I have a boiler physical switch that also allow me to choose timer manually.
On HA I have a switch that when I press it automatiically start the boiler for 30 minutes.
The boiler is controller via HTTP requests.

My problem start when I start the boiler from the physical button, no matter what timer I select, once automation see that it’s on, I want to replicate this in HA and therefore I switch the switch On.
When this happen, the automation send timer request of 30 minutes again. which means that I’m always getting a 30 min timer.

Is there a way to activate button on HA for visibility but do not trigger the automation after ?

[{"id":"0de77ed859832585","type":"api-call-service","z":"addcb2c7dcc3b0d8","name":"Timer on for Visibility","server":"4e241c75.5aa224","version":5,"debugenabled":false,"domain":"timer","service":"start","areaId":[],"deviceId":[],"entityId":["timer.switcher_left"],"data":"{    \"duration\":  payload.time_left} ","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1080,"y":160,"wires":[[]]},{"id":"fb9b14b15d1ebe23","type":"server-state-changed","z":"addcb2c7dcc3b0d8","name":"Switcher SW","server":"4e241c75.5aa224","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_boolean.boiler","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":150,"y":320,"wires":[["a86b5e59a51ed0fb"]]},{"id":"33138beb73524422","type":"http request","z":"addcb2c7dcc3b0d8","name":"Switcher On","method":"POST","ret":"obj","paytoqs":"ignore","url":"http://172.17.0.1:8000/switcher/turn_on?id=ace95e&ip=192.168.199.152","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"credentials":{},"x":730,"y":260,"wires":[["3f142b463f0dd78b"]]},{"id":"aa1d71c3d07acfdf","type":"change","z":"addcb2c7dcc3b0d8","name":"POST Maker","rules":[{"t":"set","p":"headersobject","pt":"msg","to":"{\"Content-Type\":\"application/json\"}","tot":"json"},{"t":"set","p":"payload","pt":"msg","to":"{\"minutes\":30}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":260,"wires":[["33138beb73524422"]]},{"id":"3f142b463f0dd78b","type":"http request","z":"addcb2c7dcc3b0d8","name":"Get Switcher Status","method":"GET","ret":"obj","paytoqs":"ignore","url":"http://172.17.0.1:8000/switcher/get_state?id=ace95e&ip=192.168.199.152","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":600,"y":160,"wires":[["98a318d5d539bdf1"]]},{"id":"a86b5e59a51ed0fb","type":"switch","z":"addcb2c7dcc3b0d8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":370,"y":320,"wires":[["aa1d71c3d07acfdf"],["df6409eca3aeab2c","ebf55b6ddb542ad3"]]},{"id":"6786bdb51fa59269","type":"http request","z":"addcb2c7dcc3b0d8","name":"Switcher Off","method":"POST","ret":"obj","paytoqs":"ignore","url":"http://172.17.0.1:8000/switcher/turn_off?id=ace95e&ip=192.168.199.152","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"x":730,"y":300,"wires":[[]]},{"id":"df6409eca3aeab2c","type":"change","z":"addcb2c7dcc3b0d8","name":"POST Maker","rules":[{"t":"set","p":"headersobject","pt":"msg","to":"{\"Content-Type\":\"application/json\"}","tot":"json"},{"t":"set","p":"payload","pt":"msg","to":"{\"minutes\":30}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":550,"y":300,"wires":[["6786bdb51fa59269"]]},{"id":"98a318d5d539bdf1","type":"switch","z":"addcb2c7dcc3b0d8","name":"State","property":"payload.state","propertyType":"msg","rules":[{"t":"eq","v":"ON","vt":"str"},{"t":"eq","v":"OFF","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":810,"y":160,"wires":[["05777f7db3365c20"],["ebf55b6ddb542ad3","0373549635127469"]]},{"id":"ebf55b6ddb542ad3","type":"api-call-service","z":"addcb2c7dcc3b0d8","name":"","server":"4e241c75.5aa224","version":5,"debugenabled":false,"domain":"timer","service":"cancel","areaId":[],"deviceId":[],"entityId":["timer.switcher_left"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1050,"y":340,"wires":[[]]},{"id":"d2f12351f06cc7be","type":"api-call-service","z":"addcb2c7dcc3b0d8","name":"Turn Switcher on for Visibility","server":"4e241c75.5aa224","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.boiler"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1100,"y":220,"wires":[[]]},{"id":"0373549635127469","type":"api-call-service","z":"addcb2c7dcc3b0d8","name":"Turn Switcher on for Visibility","server":"4e241c75.5aa224","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_off","areaId":[],"deviceId":[],"entityId":["input_boolean.boiler"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1100,"y":280,"wires":[[]]},{"id":"5da11eacc2f4eadf","type":"inject","z":"addcb2c7dcc3b0d8","name":"1m","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"*/1 6-23 * * *","once":false,"onceDelay":0.1,"topic":"","x":150,"y":160,"wires":[["3f142b463f0dd78b"]]},{"id":"05777f7db3365c20","type":"junction","z":"addcb2c7dcc3b0d8","x":940,"y":160,"wires":[["0de77ed859832585","d2f12351f06cc7be"]]},{"id":"4e241c75.5aa224","type":"server","name":"Local HA","version":2,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30}]

I’ve just solved it 90%, created another helper and conditional card on the lovelace.
the only thing I can’t solve is that when I press the dummy ON entity, it won’t turn off.
So I’ve called service turn_off of the original entity, but since its OFF already nothing happens.
At the moment I’ve changed it to toggle, and I double press :slight_smile:

It looks like you’re trying to use Home Assistant to control a physical switch that turns on your boiler. If I understand your question correctly, you’re saying that when you press the physical switch to turn on the boiler, the automation in Home Assistant also sends a request to start a 30-minute timer. This means that the timer always resets to 30 minutes, even if you select a different time using the physical switch.

To prevent the automation from resetting the timer every time the switch is turned on, you can add a condition to the automation that checks the current state of the switch. If the switch is already on, the automation can be configured to not send the timer request.

Here’s an example of how you could do this:

if (input_boolean.boiler.state == 'on') { // Do not send the timer request } else { // Send the timer request to start the boiler for 30 minutes }

This way, the automation will only send the timer request when the switch is turned off, but not when it’s already on. This should prevent the timer from being reset every time the switch is turned on.

It’s worth noting that the exact implementation of this solution will depend on the specific details of your setup, so you may need to adjust the code slightly to fit your needs.