Ad
Varmvattenberedare från Indol
Bäst online casino i Sverige
Energibutiken.se smarta varor på nätet, leverans till dörren
Annonsera i Värmepumpsforum, klicka här för att ställa e-postfråga och få mer info.
140x140vpforum-11.gif
kontakta oss för pris!
 

Författare Ämne: Kommunicera med Ecodan FTC4 från Arduino  (läst 1292 gånger)

0 medlemmar och 1 gäst tittar på detta ämne.

Utloggad johanch

  • Nybörjare
  • *
  • Antal inlägg: 6
  • Karma +0/-0
  • Värmepump eller värmepumpar?
Kommunicera med Ecodan FTC4 från Arduino
« skrivet: 13 februari 2023, 17:54:51 »
Hejsan.

I julas tog jag tag i ett projekt som jag haft liggandes ett tag, att koppla mig på CN105 porten på min Ecodan med FTC4 styrkort. Jag fick hjälp av en annan medlem på forument att få mitt kort uppdaterat då min enhet installerades för 7-8år sedan, och efter det kunde jag börja får igång kommunikation mellan CN105 porten och en Arduino MEGA.

Jag kör i princip https://github.com/BartGijsbers/CN105Gateway, men några små modifieringar. Vissa parametrar får jag värde på, men det är väldigt många som bara avkodas till ?.

Te.x får jag ut korrekt "Runtime" och "Frequency" men "Water Feed Temp" och "Water Return Temp" returneras bara som ?. Se nedan exempel.

0x0C {"Water_Feed_Temp":" ?","Water_Feed_Temp_Signed":" ?","Water_Return_Temp":" ?","Water_Return_Temp_Signed":" ?","Water_Temperature":" ?"}
0x0D {"Boiler_Flow_Temperature":" ?","Boiler_Return_Temperature":" ?","Unknown1":" ?","Unknown2":" ?"}

Är det någon annan som råkat ur för samma och har hittat någon lösning på det?

Mvh Johan Christensson

Utloggad Ese

  • Nybörjare
  • *
  • Antal inlägg: 7
  • Karma +0/-0
  • Värmepump eller värmepumpar?
SV: Kommunicera med Ecodan FTC4 från Arduino
« Svar #1 skrivet: 14 februari 2023, 17:07:14 »
Jag kör med samma kod men med lite små justeringar för att t.ex. kunna ändra temperaturer med 0.5 steg istället för bara 1.0. Dock på en ESP32 NodeMCU.

Jag aktiverade INPUT_PULLUP (pinMode(RXD2,INPUT_PULLUP);) Vet inte om detta behövdes. Ser ut som du får lite kommunikation att fungera? Är det någon kommando för att göra ett float nummer av det som blir fel kanske?

Jag använder även en level shifter mellan som de visade på projektsidan. Vet inte om detta behövdes eller inte.

Utloggad johanch

  • Nybörjare
  • *
  • Antal inlägg: 6
  • Karma +0/-0
  • Värmepump eller värmepumpar?
SV: Kommunicera med Ecodan FTC4 från Arduino
« Svar #2 skrivet: 07 april 2023, 16:18:57 »
Hejsan och tack för ditt svar.

Nu blev detta liggandes ett tag....men jag testade att lägga ett 10k motstånd mellan RX/TX och 5V, men det gör tyvärr ingen skillnad. Det är onekligen märkligt.

Jag har dock bara haft orginal koden som bas för mitt program, men om jag laddar in orginal programmet, så ser det ju faktiskt ut som om jag inte får tillbaka någon data för de parametrarna som avkodas som ?:

Kodstycke: [Välj]
To WP  : 0xFC 0x42 0x02 0x7A 0x10 0x09 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
From WP: 0xFC 0x62 0x02 0x7A 0x10 0x09 0x04 0xB0 0x07 0xD0 0x05 0x14 0x0D 0xAC 0x17 0x70 0x3C 0x96 0x5A 0x00 0x00
*** Decoded messages: 0x09 {"Zone1_Room_Temp_Setpoint":" ?","Zone2_Room_Temp_Setpoint":" ?","Zone1_Flow_Temp_Setpoint":" ?","Zone2_Flow_Temp_Setpoint":" ?","Legionella_Temp_Setpoint":" ?","Hot_Water_Max_Temp_Drop":"60","Flow_Temp_Range_Max":" ?","Flow_Temp_Range_Min":" ?"}
To WP  : 0xFC 0x42 0x02 0x7A 0x10 0x0B 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
From WP: 0xFC 0x62 0x02 0x7A 0x10 0x0B 0x06 0x40 0xF0 0xC4 0xF0 0xC4 0x0B 0x09 0xC4 0x0B 0x68 0x00 0x00 0x00 0x00
*** Decoded messages: 0x0B {"Zone1_Room_Temp":" ?","Gas_Return_Temp":" ?","Gas_Return_Temp_Signed":" ?","Outside_Temperature":" ?"}
To WP  : 0xFC 0x42 0x02 0x7A 0x10 0x0C 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
From WP: 0xFC 0x62 0x02 0x7A 0x10 0x0C 0x05 0x14 0x67 0x06 0x72 0x68 0x12 0xF2 0xB1 0x00 0x00 0x00 0x00 0x00 0x00
*** Decoded messages: 0x0C {"Water_Feed_Temp":" ?","Water_Feed_Temp_Signed":" ?","Water_Return_Temp":" ?","Water_Return_Temp_Signed":" ?","Water_Temperature":" ?"}
To WP  : 0xFC 0x42 0x02 0x7A 0x10 0x0D 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
From WP: 0xFC 0x62 0x02 0x7A 0x10 0x0D 0x09 0xC4 0x0B 0x09 0xC4 0x0B 0x09 0xC4 0x0B 0x09 0xC4 0x0B 0x00 0x00 0x00
*** Decoded messages: 0x0D {"Boiler_Flow_Temperature":" ?","Boiler_Return_Temperature":" ?","Unknown1":" ?","Unknown2":" ?"}
To WP  : 0xFC 0x42 0x02 0x7A 0x10 0x0E 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
From WP: 0xFC 0x62 0x02 0x7A 0x10 0x0E 0x09 0xC4 0x02 0x09 0xC4 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
*** Decoded messages: 0x0E {"Unknown3":" ?","Unknown4":" ?"}

Min enhet är en EHPT20X-YM9B. Kan det vara att min enhet är för gammal och inte skickar dessa värden? Jag har läst igenom de olika projekten och kan inte se att det skulle vara så att jag missat någon inställning.

Fortsättning följer....

Mvh Johan Christensson

Utloggad Ese

  • Nybörjare
  • *
  • Antal inlägg: 7
  • Karma +0/-0
  • Värmepump eller värmepumpar?
SV: Kommunicera med Ecodan FTC4 från Arduino
« Svar #3 skrivet: 12 april 2023, 10:01:18 »
Ser ut som du får svar?
Följer man detta som står på denna sidan så. https://github.com/m000c400/Mitsubishi-CN105-Protocol-Decode

Första frågan och svaret:
To WP  : 0xFC 0x42 0x02 0x7A 0x10 0x09 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
From WP: 0xFC 0x62 0x02 0x7A 0x10 0x09  >0x04 0xB0<   >0x07 0xD0<   0x05 0x14 0x0D 0xAC    >0x17 0x70<    >0x3C<    0x96 0x5A 0x00 0x00

0x04 0xB0 = 1200 / 100 = 12.0 Har du 12.0 som setpoint i zone 1?
0x07 0xD0 = 2000 / 100 = 20.0 Setpoint zone 2?
0x17 0x70 = 6000 / 100 = 60.0 som Legionella Setpoint?

Du får svaret på Hot_Water_Max_Temp_Drop som bara är 1 byte som svar (0x3C). 
De andra är 2 byte. Känns som du har något fel i funktionen som gör om värderna från 2 byte.

Utloggad johanch

  • Nybörjare
  • *
  • Antal inlägg: 6
  • Karma +0/-0
  • Värmepump eller värmepumpar?
SV: Kommunicera med Ecodan FTC4 från Arduino
« Svar #4 skrivet: 30 september 2023, 22:37:03 »
Hejsan.

Nu blev det åter igen ett bra tag innan jag hade tid att ta tag i detta och det tog också mig ett bra tag att förstå problemet. Det hänger också ihop med att jag inte är direkt ninja på C programering.

Men Ese var helt rätt på spåret, och det tog mig ett tag, och väldigt mycket läsande innan jag hittade problemet och kunde hitta en lösning. Det positiva är å andra sidan att jag lärt mig lite mer om C programmering än jag kunde innan.

Hur som helst så var problemet att i orginal koden så lagras konverteringen till decimal tal i en float variabel. Alla olika värden läggs sedan in i en char variabel med sprintf, och om jag förstått det hela rätt så hanterar inte sprintf i den  generationen av ATMega CPU som MEGA och UNO korten har float värden. Så jag löste detta genom att istället använda dtostrf för att putta in värdet in den samlande variabelen.

Tack för hjälpen på vägen. Fungerar fin fint nu!

Mvh Johan Christensson

Vill du annonsera klicka här! Varmvattenberedare från Indol
 


Annonser

Right Block

Vibrationsdämpare
Besök vår webshop, klicka här!
Energioffert.se
Energibutiken.se smarta varor på nätet, leverans till dörren
luftvärmepumpar, tillbehör, installationsmaterial, vi har allt!
Annonspriser
Ad
Varmvattenberedare från Indol
Bäst online casino i Sverige
Energibutiken.se smarta varor på nätet, leverans till dörren
Annonsera i Värmepumpsforum, klicka här för att ställa e-postfråga och få mer info.
140x140vpforum-11.gif
kontakta oss för pris!