I also have a fritzbox with a bunch of thermostate, but i'm on FritzOs 7.x
For preparing the upgrade, i made of "fallback" flow, if the fritzbox api node fail. Just too understand a bit more what happen in the fritzapi-node:
[{"id":"get_challenge","type":"http request","z":"fritzbox_login","name":"Get Challenge","method":"GET","ret":"txt","paytoqs":"query","url":"https://192.168.178.1/login_sid.lua","tls":"0a082ef2f887442b","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":360,"y":80,"wires":[["0e68abd928cc7a6a"]]},{"id":"parse_challenge","type":"function","z":"fritzbox_login","name":"Parse Challenge","func":"const xml = msg.payload\nconst challenge = xml.SessionInfo.Challenge[0]\nconst sid = xml.SessionInfo.SID[0]\n\nmsg.challenge = challenge;\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":160,"wires":[["generate_response"]]},{"id":"generate_response","type":"function","z":"fritzbox_login","name":"Generate Response","func":"const username = env.get(\"fritzbox_user\");\nconst password = env.get(\"fritzbox_password\");\n\nconst challengeResponse = `${msg.challenge}-${crypto.createHash(\"md5\").update(`${msg.challenge}-${password}`, \"utf16le\").digest(\"hex\")}`;\nmsg.url = `https://192.168.178.1/login_sid.lua?username=${username}&response=${challengeResponse}`;\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[{"var":"crypto","module":"crypto"}],"x":620,"y":80,"wires":[["get_sid"]]},{"id":"get_sid","type":"http request","z":"fritzbox_login","name":"Get SID","method":"GET","ret":"txt","paytoqs":"ignore","url":"","tls":"0a082ef2f887442b","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":620,"y":120,"wires":[["c83db5062d26beba"]]},{"id":"2871cbdd817f5eae","type":"debug","z":"fritzbox_login","name":"debug 4","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":1360,"y":80,"wires":[]},{"id":"fceded092188dc6a","type":"inject","z":"fritzbox_login","name":"Get session","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":110,"y":80,"wires":[["get_challenge"]]},{"id":"0e68abd928cc7a6a","type":"xml","z":"fritzbox_login","name":"","property":"payload","attr":"","chr":"","x":370,"y":120,"wires":[["parse_challenge"]]},{"id":"49796c958398fbc8","type":"xml","z":"fritzbox_login","name":"","property":"payload","attr":"","chr":"","x":990,"y":80,"wires":[["bead0c2f3ef4bf05"]]},{"id":"bead0c2f3ef4bf05","type":"change","z":"fritzbox_login","name":"","rules":[{"t":"set","p":"session","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1170,"y":80,"wires":[["2871cbdd817f5eae"]]},{"id":"b01fa3f885cda833","type":"http request","z":"fritzbox_login","name":"Fritzbox","method":"GET","ret":"txt","paytoqs":"query","url":"https://192.168.178.1/webservices/homeautoswitch.lua","tls":"0a082ef2f887442b","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":540,"y":440,"wires":[["7012015af001e3bc"]]},{"id":"68e2a7a6e1b03f0a","type":"function","z":"fritzbox_login","name":"getdevicelistinfos","func":"const session = flow.get(\"session\");\nconst sid = session.SessionInfo.SID[0]\nmsg.payload ={\n \"switchcmd\": \"getdevicelistinfos\",\n \"sid\": sid\n }\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":310,"y":440,"wires":[["b01fa3f885cda833"]]},{"id":"7012015af001e3bc","type":"xml","z":"fritzbox_login","name":"","property":"payload","attr":"","chr":"","x":790,"y":440,"wires":[["e4a8193b391912dc"]]},{"id":"97dd6de18b7bab80","type":"function","z":"fritzbox_login","name":"gettemplatelistinfos","func":"const session = flow.get(\"session\");\nconst sid = session.SessionInfo.SID[0]\nmsg.payload ={\n \"switchcmd\": \"gettemplatelistinfos\",\n \"sid\": sid\n }\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":310,"y":480,"wires":[["b01fa3f885cda833"]]},{"id":"efecd5c12f034bd3","type":"function","z":"fritzbox_login","name":"applytemplate","func":"const session = flow.get(\"session\");\nconst sid = session.SessionInfo.SID[0]\nlet ain = msg.ain || \"0000000000\"\nmsg.payload ={\n \"switchcmd\": \"applytemplate\",\n \"sid\": sid,\n \"ain\": ain\n }\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":320,"y":520,"wires":[["b01fa3f885cda833"]]},{"id":"a60a445d68ae3e07","type":"link in","z":"fritzbox_login","name":"applytemplate","links":[],"x":155,"y":520,"wires":[["efecd5c12f034bd3"]]},{"id":"2c9846baadb23e8a","type":"link in","z":"fritzbox_login","name":"gettemplatelistinfos","links":[],"x":155,"y":480,"wires":[["97dd6de18b7bab80"]]},{"id":"e0f2c50e4604fc7b","type":"link in","z":"fritzbox_login","name":"getdevicelistinfos","links":[],"x":155,"y":440,"wires":[["68e2a7a6e1b03f0a"]]},{"id":"e4a8193b391912dc","type":"link out","z":"fritzbox_login","name":"link out 2","mode":"return","links":[],"x":975,"y":440,"wires":[]},{"id":"c83db5062d26beba","type":"switch","z":"fritzbox_login","name":"","property":"statusCode","propertyType":"msg","rules":[{"t":"eq","v":"200","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":850,"y":120,"wires":[["49796c958398fbc8"],["18a1735dbac5f2fd"]]},{"id":"18a1735dbac5f2fd","type":"debug","z":"fritzbox_login","name":"Login Failed","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"true","targetType":"full","statusVal":"payload","statusType":"auto","x":1010,"y":200,"wires":[]},{"id":"ef2fe93d915e4135","type":"inject","z":"fritzbox_login","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":200,"y":660,"wires":[["0c1edd2645a2f5b6"]]},{"id":"0c1edd2645a2f5b6","type":"link call","z":"fritzbox_login","name":"","links":["e0f2c50e4604fc7b"],"linkType":"static","timeout":"30","x":630,"y":660,"wires":[["817cee61282d31d2"]]},{"id":"817cee61282d31d2","type":"debug","z":"fritzbox_login","name":"debug 6","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":900,"y":660,"wires":[]},{"id":"8171a8a0a4197357","type":"inject","z":"fritzbox_login","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":200,"y":700,"wires":[["42dba7912eabe2f9"]]},{"id":"42dba7912eabe2f9","type":"link call","z":"fritzbox_login","name":"","links":["2c9846baadb23e8a"],"linkType":"static","timeout":"30","x":630,"y":700,"wires":[["039087463794c3ab"]]},{"id":"039087463794c3ab","type":"debug","z":"fritzbox_login","name":"debug 7","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":900,"y":700,"wires":[]},{"id":"b48a50e93289f670","type":"inject","z":"fritzbox_login","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":200,"y":740,"wires":[["b87da673d8fefaa9"]]},{"id":"d6cea1cabcce5276","type":"link call","z":"fritzbox_login","name":"","links":["a60a445d68ae3e07"],"linkType":"static","timeout":"30","x":620,"y":740,"wires":[["7ab31fadfd8f7637"]]},{"id":"7ab31fadfd8f7637","type":"debug","z":"fritzbox_login","name":"debug 8","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":900,"y":740,"wires":[]},{"id":"b87da673d8fefaa9","type":"change","z":"fritzbox_login","name":"","rules":[{"t":"set","p":"ain","pt":"msg","to":"PLACEHOLDER","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":740,"wires":[["d6cea1cabcce5276"]]},{"id":"0a082ef2f887442b","type":"tls-config","name":"self-signed","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"","servername":"","verifyservercert":false,"alpnprotocol":""}]