Modern styrning av värmepump

Värmepumpar styrs normalt med en väggdisplay och ev. en fjärrkontroll till denna. Displayen är normalt kopplad direkt till värmepumpen - via en lite längre kabel.
Det fungerar - upp till en viss nivå. Kanske allra tydligast vad gäller integration i ett modernt flexibelt styrsystem. Värmepumpen "pratar" inte med något - displayen pratar med pumpen - det är allt. Och än mindre kan den fjärrstyras. (Undantag - värmepumpar med inbyggt GSM/3G modem. Men de har ju numera inte något nät att kommunicera med).
Önskemål
Vi önskar att kunna koppla värmepumpen mot ett modernt, IP baserat styrsystem. I vårt fall blir det "Home Assistant" - men tekniken är generisk (man kan koppla mot annat fastighetssystem - eller Alexa, Gooogle Home, ...).
Önskemål i detalj
- Kunna se i reatid om värmepumpen körs - och dess temperaturdata då.
- Kunna starta / stoppa värmepump via nätet.
- Kunna få ut eventuella felkoder - och larmas om de uppstår.
- Stöd vid felsökning - vid behov
Arbetssätt
Den värmepump jag arbetade på är en luft/vatten med 11 kW max effekt (märke: Sfinx Solar, modell VP11). Tekniken nedanför är dock generell.
Det finns två nycklar i detta:
- Att läsa in och korrekt tolka den kommunikation som sker mellan värmepump och display (d.v.s. att lyssna och förstå vad som sägs på den seriella kabeln mellan de två.
- Att kunna styra displayen på avstånd (d.v.s. generera knapptryckningar).


Att tolka kommunikation och protokoll
Det första jag såg på oscilloskopet var att signalen inte alls hoppade mellan 0 och 5V (eller 12 V) - som förväntat på en seriell signal.
Den hoppade mellan runt 2.7V och 4.3V - ett mycket mindre spann. Normala seriella adaptrar reagerar ej på detta.
Så första åtgärd var att göra en krets som gick mitt i detta intervall ( (2.7 + 4.3)/2 = 3.5V ) . och forcera utsignal till 0V om lägre än 3.5V och till 5V - om högre. Det var inte så svårt (ett par transistorer och några fixa spänningsreferenser).
Efter att detta var utfört återstod att tolka signalen. Hur jag än ändrade seriella parametrar (hastighet, stopp-bitar, ...) - så kom inget förnuftigt fram.

I en seriell signal är varje bit lika lång. I bilden ovan syns ett distinkt mönster - men det är av en annan typ. Den "låga" delen av signalen är alltid kort - medan den "höga delen" är ibland kort, men ibland mycket lång.
Där låg nyckeln - en 0:a och en 1:a kodas med olika tidslängd i protokollet. D.v.s. inte ett seriellt protokoll. (Ett pulslängdsmodulerat protokoll i gruppen "Manchester encodings". Det används i brusiga miljöer.).
Till slut kunde jag koda av kommunikationen - och förstå vad värmepump och displayen "sade till varandra":


Att styra pumpen på avstånd
Jag valde det enklaste sättet att styra pumpen på avstånd - genom att löda på en kabel på kretskortet under på/av knappen.
Då kan jag elektroniskt generera knapptryckningar utan att vara där och trycka på knappen - d.v.s. via mjukvara.
Plattform (hårdvara, mjukvara)
- Hårdvara:
- ESP32S - microcontroller
- Egen enkel PCB med tre funktioner:
- Anpassning av seriell nivå - med filtrering av brus
- Styrning av hela värmepump med externt skapad "knapp tryckning".
- Styrning av värmecylel - med externt styrt "NTC motstånd"
- Mjukvara:
- EspHome på microkontrollern
- Det ger flexibilitet och en gott om färdig funktionalitet att koppla ihop.
- Home Assistant för visualisering via webinterface
- Man kan välja annat system här - som plockar upp vad EspHome säger (via API).
- EspHome på microkontrollern
Resultat
Via Home Assistant kan man i realtid följa och styra värmepumpen:

Diskussion
På det här sättet kan en värmepump "moderniseras" och flexibelt integreras i en modern styr®ler miljö. Den väl fungerande maskinen - men tidigare oflexibla - har fått en nytt liv - och kan tjäna ut sin normala livslängd, på det sätt vi önskar.
Detta kan naturligtvis utföras för andra värmepumpar - eller helt andra maskiner enligt uppställning "Kontrollpanel via kabel".
Det kan finnas andra sätt att samla data / styra utrustningen från - som t.ex ett Modbus interface. Den enskilda tekniska utrustningen avgör på vilket sätt det bäst moderniseras.
Om ni har en ide om en maskin ni vill modernisera / styra på detta (eller liknande sätt) - finns jag här för dialog.