logo elektroda
logo elektroda
X
logo elektroda

Reading IZAR 868 R4PL Water Meter Data for Domoticz on Raspberry Pi

smaboman 11685 15
ADVERTISEMENT
Treść została przetłumaczona polish » english Zobacz oryginalną wersję tematu
  • #1 16157147
    smaboman
    Level 14  
    Welcome,

    I have a question about a radio module (IZAR 868 R4 PL) for remote reading of water meter readings that I have installed at home.
    From what I have read on the Internet, the module operates at a frequency of 868Mhz, nowhere have I found information on the coding of the transmission, but I guess that there is one.
    Do you have any experience of reading the data transmission from such a module? The target would be to transmit data to Domoticz running on the RPi.

    Greetings
  • ADVERTISEMENT
  • #2 16184704
    ser1983
    Level 12  
    M-BUS wireless. Not to be confused with Modbus.
  • ADVERTISEMENT
  • #3 17914645
    zalewma
    Level 2  
    I have a wireless M-BUS modul - such an iM871A-USB dongle - which sees the transmitted signals from the IZAR 868 R4 PL counters, but in no way can I interpret the message - and I care about reading from the counter - e.g. to connect with home automation, leakage alarms, etc.

    Has anyone managed to decode this protocol ?

    Example frames:
    (wmbus) frame "1944304CF8BED640CC01A2011500137EEAC45F17397158677C5D"
    (wmbus) frame "1944304CF8BED640CC01A2511500137EB95630109FEDE6D00155"
  • #4 17918868
    zalewma
    Level 2  
    Hello again, as part of my search for a way to decode this protocol - I have a significant problem. IZAR has used a proprietary frame format that has several additional halves besides the counter - reverse water alarm, checksums, etc....
    The format looks unencrypted because only 4 fields change when the counter is running as shown below a few more frames:
    (wmbus) frame "1944304CF89EF520D401A2213800131A 550D 504E9A14F9F3B08E"
    (wmbus) frame "1944304CF89EF520D401A2213800131A 4B0D 504E9A14F9F3B08E"
    (wmbus) frame "1944304CF89EF520D401A2213800131A B90E 504E9A14F9F3B08E"
    (wmbus) frame "1944304CF89EF520D401A2213800131A AF0E 504E9A14F9F3B08E"

    Unfortunately I can't decode these 4 characters in such a way that each successive one is not lower than the previous one (counter) - counting water pulses. Does anyone have any idea how to convert this to a continuously increasing integer?

    The longer list below has only these 4 fields extracted.
    550D
    4B0D
    B90E
    AF0E
    9D0E
    F30E
    E10E
    D70E
    3B0E
    290E
    1F0E
    0D0E
    630E
    510E
    400E
    B60F
    A40F
    9A0F
    890F
    FF0F
    ED0F
    DC0F
    320F
    210F
    170F
    060F
    740F
    6B0F
    590F
    480F
    BE30
    AD30
  • #5 18459932
    mkolak
    Level 2  
    Have you managed to decode this algorithm ?
  • #6 18467076
    mkolak
    Level 2  
    i purchased such a module iM871A-USB
    How do you read the frames from the IZAR RC 868 I W R4. Please drop some screenshots
    thanks
  • #7 18519204
    zenek_n7
    Level 12  
    Hello,
    I have a similar problem, except that I read MBus by cable correctly (water meters, heat meters), and I still have two left which have only radio interfaces. I use scada for the readings and for the control I invented a long time ago on the internet the free program LorusFree. I wonder how IZAR RC 868 would work with this version. Perhaps you know of a radio to RS485 converter?
  • ADVERTISEMENT
  • #8 18524069
    nuggie
    Level 1  
    This decodes IZAR's "github.com/weetmuts/wmbusmeters" framework correctly

    (izar) log "telegram=|1944304C2E32BA000801A2|01164013A22297AB83B2775790BB4C|+554"
    {"media":"water","meter":"izar","name":"MyWater","id":"00ba322e","total_m3":217.724,"last_month_total_m3":216.528,"timestamp":"2020-03-11T11:00:50Z"}
  • #9 18790709
    willyfog78
    Level 9  
    Can anyone write in points what is needed and how to read and decode it?
  • #10 19499042
    voldek
    Level 11  
    I'm going to bump up the topic as I've also been chiselling away at trying to read data from my water meter recently. For the time being, I'm trying to track my water meter because the radio is collecting data from all around me.

    I have noticed that all frames have the first/last (depends on interpretation) byte 0x21 or 0x20 in the water meter ID number. I read in some post that the ID number is encoded as BCD, but there are quite often A-F characters in these numbers. Theoretically, if on my water meter I have the S/N on the sticker: 11223344, the same number should be in the A-field ID. Even this third number next to the datamatrix does not appear in the collected frames....

    Is there any additional coding of the ID number in the IZAR RC 4 PL overlays or is the number from the sticker not the same as the number transmitted by radio?
  • ADVERTISEMENT
  • #11 19499814
    Anonymous
    Level 1  
  • #12 19499905
    skazi
    Level 2  
    The ID transmitted over the WMBus is the encoded serial number and water meter type data (prefix).

    WMBusmeters in PR#249 gained the ability to decode this data and returns it in transmitted reports.
    Examples of the reports can be found in simulations/simulation_izars.txt (fields "prefix" and "serial_number").
  • #13 19499910
    voldek
    Level 11  
    Erbit wrote:
    Read the colleague two posts above -> #8 ?


    And did the colleague read what I wrote?

    Great, that the code from github parses the string
    Quote:
    (izar) log "telegram=|1944304C 2E32BA00 0801A2|01164013A22297AB83B2775790BB4C|+554"

    at
    Quote:
    {"media": "water", "meter": "isar", "name": "MyWater", "id":" 00ba322e ", "total_m3":217.724,"last_month_total_m3":216.528,"timestamp":"2020-03-11T11:00:50Z"}


    But this is completely unhelpful to me. At the moment I have already decoded the payload from the frames and found my water meter after the frames (I compared the consumption, on the meter and in the frames + controlled consumption ). However, still in no way does the value from the A-ID field indicate the S/N or other number on the sticker on the water meter. I have tried BCD coding, reversing the number etc....

    Hence was my question:
    In IZAR water meters, is the serial number (A-ID) sent in the frames a coded version of the number on the sticker on the side of the water meter? Are these completely independent numbers (one does not derive from the other) and are linked to the subscriber when the water meter is sold/mounted in the system?


    Edit:
    skazi wrote:
    ID sent over WMBus is the coded serial number and water meter type data (prefix).

    WMBusmeters in PR#249 gained the ability to decode this data and returns it in transmitted reports.
    Examples of the reports can be found in simulations/simulation_izars.txt (fields "prefix" and "serial_number").


    Ooo, beautiful! I'll dig around in the sources and suspect how it's encoded, hopefully it's not the three-letter manufacturer's designation (SAP), but the conversion of the 4 bytes of ID to a number from the sticker. So far, lovely thanks, I'll let you know if it worked :)
  • #14 19499925
    skazi
    Level 2  
    Here some more information on how to find your water meter :o)
    weetmuts.github.io/wmbusmeterswiki/IZAR.html
  • #15 19500776
    voldek
    Level 11  
    Thanks skazi, the information was very helpful! I had the whole repo dumped to disk before and was already poking around a bit in that code, I simply didn't pay attention to the operations performed on the water meter ID data.

    So for posterity (maybe someone will find it useful):
    - we take the ID number from the frame, e.g. 55443322 (IZAR water meters usually have 0x20 or 0x21 at the end)
    - we change endianess -> 0x22334455
    - we truncate the 5 oldest bits or simply mask from 0x03FFFFFF -> 0x22334455 & 0x03FFFFFF = 0x02334455
    - convert to inta -> 0x02334455 -> 36914261
    - truncate 2 digits from left -> 914261

    This is our water meter serial number, it is not on the green/yellow sticker on the side, but is visible from the 'front' of the cap. The number above it (e.g. "C19UA", "C15SA", etc.) can also be decoded this way, it just requires a bit more converting.

    Source code doing the conversion (which skazi also pointed out):
    https://github.com/weetmuts/wmbusmeters/blob/master/src/meter_izar.cc
    function void MeterIzar::processContent(Telegram *t)

    Thanks again, cheers!
ADVERTISEMENT