logo elektroda
logo elektroda
X
logo elektroda

Internet module ecoNet 300 and ecoLINK2

jamrjan 142503 605
ADVERTISEMENT
Treść została przetłumaczona polish » english Zobacz oryginalną wersję tematu
  • #31 18093155
    miszko
    Level 15  
    It is soft. Unfortunately, only service technicians have it. At the beginning of the year, I had a service technician. The program itself is available, not even hard, but harder with the soft itself. It is loaded through this program, the module is then connected via USB to the computer. You can also do it in such a way that the flash drive is loaded with soft and from the level of the device (panel) itself, you can update it. The manual provides for this. Unfortunately, my service technician is like saying "very mysterious" and does not really want to share. If I asked someone else, maybe he would give these binaries.

    I will start writing a parser for the data taken from this port. I will probably do python, but I will think about it.
    Of course, I will share the information and this script. I still want to drop it for RRD, because I care about the charts.
  • ADVERTISEMENT
  • #32 18093462
    przemo_ns
    Level 11  
    If someone has an ecoNet, try logging with WireShark, checking for updates, login and ftp password.
  • ADVERTISEMENT
  • #33 18093479
    davidcie
    Level 11  
    Chances are good that Fiddler will do the same thing only easier.
  • #34 18095658
    miszko
    Level 15  
    I wrote (and I'm not a programmer, just a hobby) in python to read "applet". It works, that's enough for me ;)
    I tested on my ecomax 920 and it reads everything nicely. At the moment there are temperatures of: boiler (supply), return, burner and% of flame. I am enclosing it here, you can try to read it, the modifications are as recommended.

    I am now sitting on tracking where the boiler power and the rest of the sensors, such as DHW and weather sensors, come from. It would also be nice to connect (I do not have these) and be able to draw graphs from them. Putting it in RRD will be a lot easier ;)
  • #35 18105339
    przemo_ns
    Level 11  
    For further work, physical access to ecoNet or some firmware loaded with ecoLink is required.
  • #36 18105439
    miszko
    Level 15  
    I figured out where the rest of the data is. I have a full set of data and places where they need to be read for:
    - supply temperature (boiler)
    - return temperature
    - burner temperature
    - boiler power
    - blowing
    - flame sensor
    - number of ignitions
    - number of linear actuator locks
    - working times for 100%, 50% and 33% respectively
    - feeder operation time
    - amount of fuel burned
    - number of ignitions

    I guess that's it. Getting to where the data from the weather sensor and DHW is just a matter of connecting the sensors and capturing the cells in which the values appear. I haven't sat with the idea of how the CRC is calculated yet.

    What do you want to accomplish by pulling out the firmware?
    I was looking for some firmware data. The extension of these binaries is * .pfi and the program to update is ecoUpdater.
    Unfortunately, this is nowhere to be found on the web.
  • #37 18105468
    przemo_ns
    Level 11  
    Well crc, btw a nice site to check if any known encoding is [url=]https://crccalc.com/[/url] Unfortunately, nothing known comes up, besides, in the shipment you have more boxes, and more shipments where you can get everything with the firmware uploaded to the device. Here you can either get it from ecoUpdater owners or extract the login and password for automatic update from ecoNeta and download it yourself from ftp.

    Added after 2 [minutes]:

    Of course, there is a risk that the firmware is encrypted and it will not be possible to break it, but there is always a chance and we will not find out until we have it.
  • #38 18105479
    miszko
    Level 15  
    I have already tracked these blocks, I have added the code and is already logging them. I have already described many places, but there are still places of unknown purpose. You have to bear in mind that it is possible that it is simply left over from something or other data is sent there, such as settings.

    I already log in to RRD and draw a graph from it.
    Such a dump of readings that I throw into the chart. In the plan, I would like to visualize it nicer, but the input data is ;)
    Currently, the stove is standing, doing nothing.
    tempkotla: 23.88;
    feeder temp: 24.03;
    return rate: 22.08;
    flame: 0.0;
    blow: 0.0;
    power: 0.0;
    work100: 1233;
    work50: 2046;
    work33: 368;
    feeder time: 1002;
    Burnoutg: 9341.24;
    firings: 1793;
    motor lock: 593;
  • #39 18120336
    przemo_ns
    Level 11  
    It turned out that the frame has the form not:
    1Byte - STX = 0x68
    2Bytes - flax
    (len -6Bytes) = data
    2Bytes crc
    1Byte - ETX = 0x16
    a:
    1Byte = STX = 0x68
    2Bytes = flax
    (len -5Bytes) = data
    1 byte crc
    1Byte = ETX = 0x16
    where crc is xor of all bytes before byte crc e.g. frame: 68 0a 00 56 45 fc 14 30 a9 16 then crc = 0x68 ^ 0x0A ^ 0x00 ^ 0x56 ^ 0x45 ^ 0xFC ^ 0x14 ^ 0x30 == 0xA9
  • ADVERTISEMENT
  • #40 18120782
    miszko
    Level 15  
    I added the code and tracked down all the values I needed, such as all temperatures (except hot water / weather, but it's a quick matter), all data on operating time, current boiler power, fuel flow and what else is there. I have it tested because I fired the boiler and everything was in line with what was on the screen. I will try to enter the addresses here, I want to rewrite the code so that it reads the entire frame and only takes data from it while counting crc. Unfortunately, I have not found anyone at the moment who wants to share the soft.
  • ADVERTISEMENT
  • #42 18186356
    coorass
    Level 11  
    miszko wrote:
    I wrote (and I'm not a programmer, just a hobby) in python to read "applet". It works, that's enough for me ;)
    I tested on my ecomax 920 and it reads everything nicely.


    It doesn't work for me
    i have ecomax920p1-t
    I watched him today most of the day and it turns out that the string 0x68 0x69 0x01 does not exist for me
    Probably my driver is different.
    The only thing I noticed is that there is something repetitive for 0x69, but I can't read anything from it.

    I enclose what my driver produces, maybe someone will help to catch the beginning of the frame
  • #43 18186792
    miszko
    Level 15  
    It looks a bit like a wrong port speed or a wrongly selected bytesize. In proper communication you should see sometimes just a string with the TIME name, the device name (ecoMax). And I got such data when I incorrectly selected the transmission parameters.

    What are your transmission parameters? At least for me there are these:

    baudrate = 115200,
    bytesize = EIGHTBITS,
    parity = PARITY_NONE,
    stopbits = STOPBITS_ONE,
    timeout = 1,
    xonxoff = False,
    rtscts = False,
    dsrdtr = False

    What I can say is when looking at the "whole" it looks like you are one step away from good data as certain block patterns are repeated.
    It reminds me a bit if you gave 8 bits in bytesize, not 7.
  • #44 18187242
    przemo_ns
    Level 11  
    Hello, could you Miszko do such rips with the description of how you did for the stove, only to do with the Ecotouch, I mean the temperature in the room, how it is sent to the Ecomax, or what else can be controlled.
  • #45 18187265
    coorass
    Level 11  
    miszko wrote:

    What are your transmission parameters? At least for me there are these:


    I have the same as from your script.
    I also tried with bytesize = 7, 6 and 5 - changed the baudrate and even combined with parita.
    unfortunately it does not change anything

    None of the tested combinations in ascii mode showed the text ecoMax - maybe because I do not have a room thermostat.
    what driver version do you have?
    maybe there is a difference here
    I have:
    Internet module ecoNet 300 and ecoLINK2 Internet module ecoNet 300 and ecoLINK2
  • #46 18187461
    przemo_ns
    Level 11  
    What device are you using for this ripping? Maybe you have swapped channels A and B in the RS485 converter, download with some program that will break down the data packets as they are sent, e.g. use what terminal program and HHD Device Studio to time the packets.
  • #47 18187623
    coorass
    Level 11  
    I am using the rs484> USB converter connected to the raspberrypie 3b +
    Well, I had just replaced + with - on the connection to the stove
    until stupid to admit :)

    The data is already flying
    I tweaked the miszka script a bit
    Added CRC enumeration and verification
    It seems to me that most decode from a machine
    See if you also have such an output:
    
    ramka: 680a005045d60b0aa016
    ramkaCRC: a0
    ramkaDATA: 680a005045d60b0a
    wyliczone CRC: 0xa0
    ramka poprawna, dekoduje
    dlugosc ramki: 10
    0a0bd645
    dane:0.0
    
    ramka: 6824000050fb0b8954494d450c231fe307091a040a16
    ramkaCRC: 0a
    ramkaDATA: 6824000050fb0b8954494d450c231fe307091a04
    wyliczone CRC: 0xb3
    
    ramka: 680a005145d60b40eb16
    ramkaCRC: eb
    ramkaDATA: 680a005145d60b40
    wyliczone CRC: 0xeb
    ramka poprawna, dekoduje
    dlugosc ramki: 10
    400bd645
    dane:2.18
    
    ramka: 680a005645d60b309c16
    ramkaCRC: 9c
    ramkaDATA: 680a005645d60b30
    wyliczone CRC: 0x9c
    ramka poprawna, dekoduje
    dlugosc ramki: 10
    300bd645
    dane:0.0
    
    ramka: 680a005545d60b0aa516
    ramkaCRC: a5
    ramkaDATA: 680a005545d60b0a
    wyliczone CRC: 0xa5
    ramka poprawna, dekoduje
    dlugosc ramki: 10
    0a0bd645
    dane:0.0
    
    ramka: 683b010045d60b08626400010855d6455459306112003d8cb236090064090040013056847407880700009e072407e8075c070b059d07ff0fff0ff70bc80300000000000000000000000000000000000000000000000074343542f06a2442588e3b4244082d42484fc5418ca337420000c07f0000c07feaac8241b8a52a420000c07f0000c07f0000c07f0000c07f0000c07f0000c07f0000c07f0000c07f0000c07f0000c07f0000c07f0000c07f41003700143c000000000018180000000018180000001a0000000c0c00000000000808000000000808000000c0fc3f000000000200000100000609000000000078070b1d500100640000000001020000000000000100005300000000000000009002a701ab06c50088003100000000000000000000000000000000000000000000000000000000000000002b16
    ramkaCRC: 2b
    ramkaDATA: 683b010045d60b08626400010855d6455459306112003d8cb236090064090040013056847407880700009e072407e8075c070b059d07ff0fff0ff70bc80300000000000000000000000000000000000000000000000074343542f06a2442588e3b4244082d42484fc5418ca337420000c07f0000c07feaac8241b8a52a420000c07f0000c07f0000c07f0000c07f0000c07f0000c07f0000c07f0000c07f0000c07f0000c07f0000c07f0000c07f41003700143c000000000018180000000018180000001a0000000c0c00000000000808000000000808000000c0fc3f000000000200000100000609000000000078070b1d500100640000000001020000000000000100005300000000000000009002a701ab06c5008800310000000000000000000000000000000000000000000000000000000000000000
    wyliczone CRC: 0x2b
    ramka poprawna, dekoduje
    dlugosc ramki: 315
    00000000 => 0.0
    00000000 => 0.0
    00000000 => 0.0
    00000000 => 0.0
    00000000 => 0.0
    00000000 => 0.0
    00000000 => 0.0
    88003100 => 0.0
    ab06c500 => 0.0
    9002a701 => 0.0
    00000000 => 0.0
    00000000 => 0.0
    01000053 => 5.49755879424e+11
    00000000 => 0.0
    01020000 => 0.0
    00000000 => 0.0
    50010064 => 9.44511126811e+21
    78070b1d => 0.0
    00000000 => 0.0
    00060900 => 0.0
    00000100 => 0.0
    00000002 => 0.0
    c0fc3f00 => 0.0
    08000000 => 0.0
    00000008 => 0.0
    00080800 => 0.0
    00000000 => 0.0
    00000c0c => 0.0
    00001a00 => 0.0
    00181800 => 0.0
    18000000 => 0.0
    00000018 => 0.0
    143c0000 => 0.0
    41003700 => 0.0
    0000c07f => nan
    0000c07f => nan
    0000c07f => nan
    0000c07f => nan
    0000c07f => nan
    0000c07f => nan
    0000c07f => nan
    0000c07f => nan
    0000c07f => nan
    0000c07f => nan
    0000c07f => nan
    0000c07f => nan
    b8a52a42 => 42.66
    eaac8241 => 16.33
    0000c07f => nan
    0000c07f => nan
    8ca33742 => 45.91
    484fc541 => 24.66
    44082d42 => 43.26
    588e3b42 => 46.89
    f06a2442 => 41.1
    74343542 => 45.3
    00000000 => 0.0
    00000000 => 0.0
    00000000 => 0.0
    00000000 => 0.0
    00000000 => 0.0
    00000000 => 0.0
    f70bc803 => 0.0
    ff0fff0f => 0.0
    0b059d07 => 0.0
    e8075c07 => 0.0
    9e072407 => 0.0
    88070000 => 0.0
    56847407 => 0.0
    00400130 => 0.0
    09006409 => 0.0
    3d8cb236 => 0.0
    30611200 => 0.0
    d6455459 => 3.7343425305e+15
    00010855 => 9.34611727155e+12
    0b086264 => 1.66781748705e+22
    010045d6
    
    ramka: 680a005045d60b0aa016
    ramkaCRC: a0
    ramkaDATA: 680a005045d60b0a
    wyliczone CRC: 0xa0
    ramka poprawna, dekoduje
    dlugosc ramki: 10
    0a0bd645
    dane:0.0
    
  • #48 18187635
    przemo_ns
    Level 11  
    In the structure of the data frame from the furnace, not all fields are 4B float, I am waiting for information from Ka ... forum user about econet furnaces, because econet has its own parser and apparently displays all decoded data locally, when we extract it, we will have all the fields .
  • #49 18188194
    coorass
    Level 11  
    I guessed as much as it started dropping only 0.0
    So far I have found the following values:
    Code: Python
    Log in, to see the code


    It would be nice if you could get a tip map. Fingers crossed.

    Miszko - did you find any other values than me?
  • #50 18201197
    miszko
    Level 15  
    Something's not right for me. I did not see that you write. Well that's great with this D + and D- ;) This is the confirmation that it is not only my home.

    Yes, not all values are float, there are also double. All values that are given as integers are presented as double and consist of a pair of bits only. These are, for example, the number of ignitions, the number of jamming of a linear actuator (if any). In the script

    I attach my script in which I have guessed almost all places. I don't have the weather and the DHW temperature readings, but I can see it above that you've already come to where it sits.

    Mi script produces this:
    * tempKotla
    * feeder temp
    * return temp
    *flame
    * blowing
    *power
    * fuel per hour
    * work 100% (working time)
    * work 50%
    * work 33%
    * Feeder Working Time
    * burned KG
    * fires
    * motor lock

    My script is an extension of the previous one, I didn't do CRC, I will look at your file. Generally he has been working for a long time and draws nicely for RRD ;)

    Screenshot from the 1st day of operation of the furnace (ecoMax)

    Internet module ecoNet 300 and ecoLINK2

    Screenshot from the 1st day of Arduino work with DHT22 sensors and measuring the flue gas temperature sensor on the basis of a sensor installed manually in the chimney at the outlet of the furnace. It counts the resistance and on that basis I get the temperature.
    Internet module ecoNet 300 and ecoLINK2


    EDIT: I can see @coorass has corrected the script. I wanted to do it, but it was mostly the POC ;) I will try to remake yours and add the parameters that I found and you. Unless you overtake me yourself.
  • #51 18201439
    przemo_ns
    Level 11  
    It was not better to add the flue gas sensor to the stove regulator, I think it will be some Pt, although there are probably some kty81-xxx for the measurement on the circuits, because I put on kty81-122 for the weather and it's ok.
  • #52 18201455
    miszko
    Level 15  
    This ecoMax 920p that I have has the sensor support cut out (there is even no input on it). I don't know why they gave up on him. I bought their sensor 1000Ohm = 0C, they give Ohm values for given temperatures. I wrote a script and a batch for Arduino. Yes, a little around, but it's about ;)
  • #53 18202555
    SławekSS
    Level 24  
    przemo_ns wrote:
    It was not better to add the flue gas sensor to the stove regulator, I think it will be some Pt, although there are probably some kty81-xxx for measuring on the circuits, because I put on kty81-122 for the weather and it's ok.
    Exactly the PT1000 as a flue gas temperature sensor and as a weather CT6-P. as sensors for circuits and others (including the weather sensor CT4-P) is exactly the KTY81-110.
  • #54 18202663
    maslak
    Level 14  
    Pt1000 as a weather forecast, it was not a decade in ecomax830 and it showed 25 ° C at 1000ohm.

    Added after 1 [minutes]:

    edit ok I see that in my case it should be KTY81-110, thanks for the info.

    Added after 28 [minutes]:

    edit I do not know where this 830 came from, but we have an ecomax850R2 at home and in fact I do not see a place to connect the exhaust temperature sensor.
  • #55 18205545
    miszko
    Level 15  
    Interestingly, in the manual of some of these drivers (Plum is the manufacturer) this sensor is provided. That's why I did it on Arduino at home and it works fine.

    @przemo_ns I made a screenshot when I clicked on the panel. I changed the minimum temperature from 50 to 51C and then back to 50C. Unfortunately, in the package I do not see the point of attachment (I browsed the hex editor), but I will throw it later into something that it groups into packages. I am a bit afraid that in order to "blow" it you would have to stick between the stove and the panel and catch the packages. I listened on the port I read from, but earlier I noticed that these ports produce 1: 1 data. I was hoping to see something here as well, but maybe it's just there, I can't see it.
  • #56 18206010
    przemo_ns
    Level 11  
    Ok, thanks, I will analyze it at home, the only question is, did you see the change on the stove after changing the parameter on the panel? Because maybe, for example, it is sent to the furnace every 10 minutes and has not just logged in.
  • #57 18206025
    miszko
    Level 15  
    The changes are immediate, whether I do it from the panel in the room or from the panel on the stove controller.
  • #58 18209748
    przemo_ns
    Level 11  
    The frame looks like:
    1Byte = STX = 0x68
    2Bytes = flax
    1Byte = Adr dest
    1Byte = Adr src
    (len -7Bytes) = data
    1 byte crc
    1Byte = ETX = 0x16

    where Adr src = 0x45 (Furnace controller) manages all communication
    Adr dst = 0x00 this will probably be an Econet / Broadcast
    Adr dst = 0x50 ??? corresponds to the controller / broadcast
    Adr dst = 0x51 the control panel corresponds to the driver / broadcast
    there are still questions for 0x55,0x56,0x57,0x58 but there is no answer here
    When prompted for a dst device, it can answer the requester (0x45) or broadcast with 0x00.
    Miszko, can you make a few more such files with different temperatures set from the panel?
  • #59 18210550
    miszko
    Level 15  
    I made 3 drops, I tried to be small.
    Change of the maximum boiler temperature from 80C to 85C and return to 80C.
    Change of boiler hysteresis from 4C to 6C and return to 4C.
    Change of the preset boiler temperature from 53C to 60C and return to 53C (unfortunately the boiler turned on here (it entered the cleaning mode) because I increased the preset temperature).

    Unless you asked to change the same parameter only in different ranges.

    All in the attachments.
  • #60 18210857
    maslak
    Level 14  
    Thanks, but I would need a few changes of one same parameter and possibly what temperature in the room is shown by the touch panel (works as a room controller?) Or only remote access to the parameters of the stove?
    Will it be able to save in ASCII format like the previous log?

Topic summary

The discussion revolves around the integration and functionality of the ecoNet 300 internet module and ecoLINK2 cable with various heating systems, particularly focusing on Plum controllers like ecoMAX 860 and ecoSOL 500. Users share experiences regarding connectivity issues, firmware updates, and the compatibility of different RS485 converters. There are insights into the communication protocols used, troubleshooting steps for connection problems, and methods for reading and sending parameters to the heating systems. The conversation also touches on the challenges of using non-original econet modules and the implications of firmware customization by different manufacturers.
Summary generated by the language model.
ADVERTISEMENT