Heru/ Östbergs fjärrkontroll / Modbus

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
tso
Inlägg: 11
Blev medlem: 4 december 2018, 14:52:10
Ort: Falun

Heru/ Östbergs fjärrkontroll / Modbus

Inlägg av tso »

2021-01-26
OBS, detta är nu löst. Kolla i slutet av tråden för information!


Skapar en ny tråd för mitt utforskande av Heru/Östbergs trådlösa fjärrkontroller till deras FTX ventilationsaggregat.

Då modbus inte är aktiverat som standard i dessa väcktes iden att den kanske går att aktivera utan att köpa en ny fjärrkontroll för 2000kr
Började således att undersöka vad som finns i fjärrkontrollen, där finns:
- En MC9S08GT60 processor med tillhörande BDM port och även en serieport på kortet.
- En NRF905 kopplad mot processorn med en SPI bus krets som sköter om kommunikationen till fläktaggregatet
- Ett eeprom 24512

Min första tanke är att kanske aktiveras modbus beroende på om något speciell bit i fjärrkontrollens address är satt. Denna address kan ses via servicemenyn-manöverenhet.
För mitt aggregat står det:
RC: 04F8
Heru: 7D99

Ovan addresser finns lagrade i eepromet och det första processorn läser ur eepromet är just dessa addresser.

Finns det någon mer på forumet som har denna fjärr så kolla gärna vilka addresser ni har och skriv i tråden :)

Nästa steg är att se om processorn är lässkyddad, och om inte läsa ur programvaran.
Steget efter detta blir nog att analysera SPI bussen för att se vad som skickas till/från aggregatet. Den denna kunskap så skulle det gå att via en annan NRF905 kopplad mot t.ex en arduino styra aggregatet

Om någon annan har samma intresse som mig så skriv gärna :) Uppdaterar tråden efterhand
Senast redigerad av tso 26 januari 2021, 11:45:30, redigerad totalt 1 gång.
Användarvisningsbild
PeterH
Inlägg: 8612
Blev medlem: 15 mars 2006, 15:57:10
Ort: Gävle/Valbo

Re: Heru/ Östbergs fjärrkontroll / Modbus

Inlägg av PeterH »

Bokmärker och bevakar tråden... Har ett Heru100 aggregat och är nyfiken på vad du vill göra om du lyckas koda av protokollet? Vill du bygga en egen styrning eller koppla upp dig mot ditt smarta hem?
tso
Inlägg: 11
Blev medlem: 4 december 2018, 14:52:10
Ort: Falun

Re: Heru/ Östbergs fjärrkontroll / Modbus

Inlägg av tso »

Har också ett Heru 100 T EC.
Jag vill ha in det i mitt hemautomationssystem som bygger på KNX men har en schneider homelynk KNX som visualiseringsserver. Denna har bland annat möjlighet att aggera brygga mellan modbus och KNX bussen så därför ville jag ha igång modbus på aggregatet.

Nu är det mest nyfikenheten som driver mig att fortsätta ta reda på vad fjärrkontrollen gör, men det skulle ju vara kul att bygga en egen RF fjärrkontroll av en arduino t.ex.

Har loggar SPI busseni fjärren och kommit fram till en hel del. Bland annat att de idnummer som syns i fjärrens servicemeny är ett id som används för kommunikationen mellan fjärr och aggregat, det är inte samma TX address som NRF905 använder/ se nedan). De id som syns i fjärren ändras vid synkronisering av fjärr mot aggregat

Config registret i NRF905 ställs alltid in enligt nedan:
0x76, 0x0A, 0x44, 0x20, 0x20, 0x6C, 0xD3, 0x5A, 0xE2, 0xD0

TX address i NRF905(instruktion 0x22) är alltid denna:
0x6C, 0xD3, 0x5A, 0xE2

När ovan ställts in skickas information fram och tillbaka mellan fjärr och aggregat. Återkommer när jag förstår lite mer vad som händer :)
tso
Inlägg: 11
Blev medlem: 4 december 2018, 14:52:10
Ort: Falun

Re: Heru/ Östbergs fjärrkontroll / Modbus

Inlägg av tso »

Mera info,
Detta händer på SPI bussen när en knapp på fjärren trycks ned(fjärren "vaknar" ur powersave)

Som ni ser skickar fjärren en trolig begäran om att läsa några register i aggregatet och aggregatet svarar. Detta pågår så länge fjärren inte går i powersave läge. Gör man någon inställning med fjärren skickas annan trafik

Set config NRF905(inkl RX address, lika som TX addressen nedan)
0x00 0x76 0x0A 0x44 0x20 0x20 0x6C 0xD3 0x5A 0xE2 0xD0
TX address NRF905
0x22 0x6C 0xD3 0x5A 0xE2

Send to FTX
0x20 0x0B 0xCC 0x64 0x4A 0x7D 0x99 0x04 0xF8 0x01 0x9A 0x89 0xA0 0xA0
Recieve from FTX
0x24 0x1F 0xCC 0x64 0x8A 0x04 0xF8 0x7D 0x99 0x15 0x9A 0x00 0x00 0x00 0x00 0x64 0x00 0x00 0x20 0x24 0x00 0xFF 0x01 0x02 0x14 0x33 0x3B 0x07 0xBC 0x08 0xE8 0xE8 0xBF
Send to FTX
0x20 0x0B 0xCC 0x64 0x4A 0x7D 0x99 0x04 0xF8 0x01 0x9B 0x99 0x81 0xA0
Recieve from FTX
0x24 0x1F 0xCC 0x64 0x8A 0x04 0xF8 0x7D 0x99 0x15 0x9B 0x00 0x27 0x00 0xC3 0x00 0xAE 0x00 0x46 0x02 0x4A 0x02 0x44 0x00 0xBF 0x00 0x00 0x00 0x00 0x00 0x60 0xAF 0x5F
Send to FTX
0x20 0x0B 0xCC 0x64 0x4A 0x7D 0x99 0x04 0xF8 0x01 0x9A 0x89 0xA0 0xA0
Recieve from FTX
0x24 0x1F 0xCC 0x64 0x8A 0x04 0xF8 0x7D 0x99 0x15 0x9A 0x00 0x00 0x00 0x00 0x64 0x00 0x00 0x20 0x24 0x00 0xFF 0x01 0x02 0x14 0x33 0x3B 0x07 0xD0 0x08 0xE8 0x06 0xB5
Send to FTX
0x20 0x0B 0xCC 0x64 0x4A 0x7D 0x99 0x04 0xF8 0x01 0x9B 0x99 0x81 0xA0
Recieve from FTX
0x24 0x1F 0xCC 0x64 0x8A 0x04 0xF8 0x7D 0x99 0x15 0x9B 0x00 0x27 0x00 0xC3 0x00 0xAE 0x00 0x47 0x02 0x4A 0x02 0x44 0x00 0xBF 0x00 0x00 0x00 0x00 0x00 0x60 0xEA 0x3C
Send to FTX
0x20 0x0B 0xCC 0x64 0x4A 0x7D 0x99 0x04 0xF8 0x01 0x9A 0x89 0xA0 0xA0
Recieve from FTX
0x24 0x1F 0xCC 0x64 0x8A 0x04 0xF8 0x7D 0x99 0x15 0x9A 0x00 0x00 0x00 0x00 0x64 0x00 0x00
tso
Inlägg: 11
Blev medlem: 4 december 2018, 14:52:10
Ort: Falun

Re: Heru/ Östbergs fjärrkontroll / Modbus

Inlägg av tso »

Uppdaterar ytterligare, nedan är första paketet som skickas från fjärren till aggregatet beskrivet, vad instruktionen betyder vet jag dock inte(än).
Med informationen som nu finns i tråden kan den som vill och har en NRF905 modul simulera fjärrkontrollen och kommunicera med aggregatet.
Om någon vill hjälpa till med att ta reda på vad de olika instruktionerna som skickas fram och tillbaka betyder så får ni gärna skriva här i tråden :)

Instruktion TX payload(0x20) till NRF905:
0x20
Antal bytes
0x0D

Alltid samma:
0xCC, 0x64, 0x4A

Ids(mottagare(7D99)-sändare(04F8))
0x7D 0x99 0x04 0xF8

Instruktion:
0x01, 0x9A

Checksumma(CRC-16 Poly: 0x1021 initial: d20c final xor: 0x0) Från 0xCC till 0x9A(alltså ej antal bytes):
0x89, 0xA0
SX3
Inlägg: 40
Blev medlem: 29 maj 2013, 18:56:49

Re: Heru/ Östbergs fjärrkontroll / Modbus

Inlägg av SX3 »

Hej,

Hittade denna tråd efter lite googlesökningar.
Har ett Heru 130 + Modbusfjärren + Schneider Homelynk för KNX.

Har kört migg aggregat mot modbus under ett par år, allt fungerar utom en lite detalj. Modbusregistret för att återställa filtertimern verkar vara fel på, det går inte att nolla timern. Östberg är medvetna om felet, men det är inte åtgärdat och dom verkar inte ha planer på det heller.

Det går ju dock att nolla via fjärren, funderar på om det går att översätta registren som fjärren skickar, se om dom jobbar mot samma register eller hur det fungerar?

Tänkte att jag kan bidra till tråden.

RC: 3.08
Heru: 3.04


Hur fick du fram dom i HEX?
tso
Inlägg: 11
Blev medlem: 4 december 2018, 14:52:10
Ort: Falun

Re: Heru/ Östbergs fjärrkontroll / Modbus

Inlägg av tso »

Hej!

Jo kör nu en arduino med en nrf905 för att prata med aggregatet. Arduinon översätter radiosignalerna till modbus tcp. Tyvärr finns ingen logisk koppling mellan radion och modbus, men det borde absolut gå att nolla filtertimern via min arduino. Återkommer i nästa vecka då jag har mer tid, kan lägga ut lite mer info i tråden
tso
Inlägg: 11
Blev medlem: 4 december 2018, 14:52:10
Ort: Falun

Re: Heru/ Östbergs fjärrkontroll / Modbus

Inlägg av tso »

Hej

Här kommer källkoden till de programmen jag använder för att kommunicera med mitt Heru aggregat. Det är bland det värsta och rörigaste jag någonsin skrivit och är inte alls stolt över den, p.g.a tidsbrist så har jag inte hunnit städa upp
Stora delar är klippt och klistrade från andra program så endel av funktionerna används inte. Finns även rent felaktiga kommentarer i koden :)
Två filer finns bifogade den ena har jag använt för att logga trafiken mellan Fjärren och aggregatet, den andra är för att kommunicera med aggregatet via modbus tcp. För att förenkla det hela har jag helt enkelt kollat vilka kommandon fjärren sänder och sen sänder jag samma sak med arduinon, då behöver man inte tänka på crc korrigering. Svaret från aggregatet kodas sen upp och kan läsas via modbus. Dethär gör att programmet inte kommer att funka på något annat aggregat än mitt utan ändringar eftersom fjärrens och aggregatets id hela tiden skickas med i paketen som är hårdkodade i programmet. Ni som kan lite om programmering kan nog förstå hur det funkar, fråga annars så ska jag försöka förklara :)

Jag kör dessa på en Wemos D1 R2(så egentligen inte en arduino) som är kopplad till en NRF905(https://www.dx.com/p/nrf905-wireless-re ... JslKSjHguU)
Dessa kinatillverkade NRF905:or verkar vara designade för en annan frekvens än den som används så räckvidden blir tyvärr begränsad till några meter.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
tso
Inlägg: 11
Blev medlem: 4 december 2018, 14:52:10
Ort: Falun

Re: Heru/ Östbergs fjärrkontroll / Modbus

Inlägg av tso »

Längesen jag skrev i denna tråd nu men lägger till lite information för den som vill koppla ihop och testa
Alla dessa pinnar måste kopplas mellan Wemos D1(ESP8266) och NRF905 modulen:

DR=D0;
TRX_CE=D1;
TXEN=D2;
PWR=D3;
CSN=D8;
SCK= SCK/D5
MISO=MISO/D6
MOSI=MOSI/D7

Om du råkar ha en modbus fjärr och dessutom äga en ESP8266 och en NRF905 modul skulle det vara kul om du ville hjälpa till.
Ja skulle behöva ha en logg på datat som skickas mellan fjärr och aggregat då fjärrkontrollen synkroniseras(aktiveras) mot aggregatet.
Skulle jag få en sådan tror jag att jag skulle kunna skriva ihop ett program som aktiverar modbus via en ESP8266 och en NRF905 utan att ha en modbus fjärr
encmac
Inlägg: 6
Blev medlem: 30 mars 2020, 10:04:25

Re: Heru/ Östbergs fjärrkontroll / Modbus

Inlägg av encmac »

Intressant tråd. Snubblade in här av en slump när jag såg titeln. Jag har en Heru 130.
Jag har varit inne på dessa banor tidigare. Jag ska nog sätta mig in lite i detta. Jag kan ev. låna en fjärr med modbus och testa med, för min för det inte.
Vart köper man transceivers snabbt och billigt?
tso
Inlägg: 11
Blev medlem: 4 december 2018, 14:52:10
Ort: Falun

Re: Heru/ Östbergs fjärrkontroll / Modbus

Inlägg av tso »

Okej, gammal tråd och jag borde lagt upp denhär infon för länge sen.
Jag och en annan medlem här på forumet löste problemet och har lyckats aktivera modus i våra aggregat utan modbus fjärr.

Bifogar källkoden som vi använt för att aktivera modbus med den hårdvara som är beskrivet tidigare i tråden

Det finns dock en hake, modbus aktiveras i samband med att man parar ihop en fjärr med aggregatet och när man väl aktiverat modbus byter aggregatet id nummer och tappar därför kontakten med den befintliga fjärren, men det går att lösa genom att programera in aggregatets nya id i fjärrens eeprom

Aktivera modbus
Gången är såhär:
0. Synka din icke modbusfjärr mot aggregatet, kolla vilket id den fått(Denna address kan ses via servicemenyn-manöverenhet. För mitt aggregat står det: RC: D9A9 Heru: 7D99)
0.5 Ändra transmitter_id i programkoden till det id som din fjärr har fått ovan, i bifogare programkoden hade min fjärr id D9A9(0x02 är antalet bytes som följer, ändra inte)
1. Starta upp ESP8266:an med NRF905:an och programmet laddat
2. Tryck synk knappen på aggregatet
3. Skicka något till ESP8266:an via seriekonsollen(typ mellanslag), då skickar den sina synk kommandon. Du ska få aggregatid:t i seriekonsollen. Om något går fel får du istället "Pairing Failed"
4. Uppdatera fjärrens EEPROM med aggregatid:t du fick i seriekonsollen m.h.a instruktionen nedan
5. Klart

Uppdaterea eeprom i fjärr:
Jag programerade om eepromet i fjärren utan att plocka ur det:

Finns en checksumma som måste korrigeras efter att fjärr och aggregat id ändrats i fjärrens eeprom.
Checksumman ligger på address FFF8, FFF9. Den beräknas med CRC16-CCITT-FALSE(0xFFFF) m.h.a datan på Address FFF0-FFF7
Checksumman sparas omkastat(om checksumman är 0x2049 sparas 0x20 i FFF9 och 49 i FFF8)

Fjärr id ligger på address 0xFFF1-0xFFF2
Agg.id ligger på address 0xFFF3-0xFFF4

Hoppas någon har nytta av informationen, jag kan försöka svara om någon har frågor men kan inte lova eftersom tiden inte riktigt räcker till
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av tso 26 januari 2021, 11:47:02, redigerad totalt 1 gång.
tso
Inlägg: 11
Blev medlem: 4 december 2018, 14:52:10
Ort: Falun

Re: Heru/ Östbergs fjärrkontroll / Modbus

Inlägg av tso »

En uppdatering till ovan info, det finns ett enklare sätt ifall man inte vill använda nrf905 till radiokommunikationen.
Genom att utföra en så kallad "man in the middle" attack på informationen som går mellan aggregatets mottagare och aggregatet skulle man kunna lura aggregatet att en modbusfjärr paras fast det egentligen är en vanlig fjärr.
Datan som går mellan aggregat och mottagare är om jag minns rätt RS485 baserad och 9600 baud.
Den data som skickas via rs485 är i princip lika som den som skickas trådlöst via fjärren, saknas dock någon header om jag minns rätt.

I vilket fall, vid synkning av en modbus fjärr skickas bland annat 0x02 0xAF 0x01 och det är modbus-aktivering.
Har man en icke modbus fjärr så skickas istället 0x02 0xAF 0x00

Så genom att lyssna efter 0x02 0xAF 0x00 och istället skicka 0x02 0xAF 0x01 lurar man aggregatet att en modbusfjärr synkas.

Om jag minns rätt finns en checksumma med även här. Denna måste förståss korrigeras. Info hur det går till finns i tråden ovan och även i källkoden i förra inlägget

Dethär är lite teoretiskt och jag överlåter till någon med tid och lust att prova om det funkar, skriv gärna i tråden hur det går :)
Skriv svar