toreamun / amshan-homeassistant

Home Assistant integrasjon for strømmålere (AMS/HAN/P1). Integrasjonen støter både streaming (serieport/TCP-IP) og MQTT (Tibber Pulse, energyintelligence.se etc)
MIT License
146 stars 9 forks source link

Wrong values Aidon 6540 #47

Closed olegunnardahle closed 1 year ago

olegunnardahle commented 1 year ago

I get wrong values on power and current, I havn't measured what I use now, but I'm closer to 1700w than 17w Using tibber pulse with MQTT

2022-10-03 15:23:00.486 DEBUG (MainThread) [custom_components.amshan.metercon] Got valid frame of expected length with correct checksum from topic pulse/publish: 7ea10b41088313fa7ce6e7000f4000000000010c020209060101000281ff0a0b4149444f4e5f5630303031020209060000600100ff0a1037333539393932393032303831323036020209060000600107ff0a0436353430020309060100010700ff060000001102020f00161b020309060100020700ff060000000002020f00161b020309060100030700ff060000000002020f00161d020309060100040700ff060000000f02020f00161d0203090601001f0700ff10000002020fff1621020309060100470700ff10000002020fff1621020309060100200700ff12094402020fff1623020309060100340700ff12094102020fff1623020309060100480700ff12094b02020fff16233cda7e
2022-10-03 15:23:00.497 DEBUG (MainThread) [custom_components.amshan.sensor] Decoded meter message: {'meter_manufacturer': 'Aidon', 'list_ver_id': 'AIDON_V0001', 'meter_id': '7359992902081206', 'meter_type': '6540', 'active_power_import': 17, 'active_power_export': 0, 'reactive_power_import': 0, 'reactive_power_export': 15, 'current_l1': 0, 'current_l3': 0, 'voltage_l1': 237.2, 'voltage_l2': 236.9, 'voltage_l3': 237.9}
2022-10-03 15:23:00.497 DEBUG (MainThread) [custom_components.amshan.sensor] Received meter measures: {'meter_manufacturer': 'Aidon', 'list_ver_id': 'AIDON_V0001', 'meter_id': '7359992902081206', 'meter_type': '6540', 'active_power_import': 17, 'active_power_export': 0, 'reactive_power_import': 0, 'reactive_power_export': 15, 'current_l1': 0, 'current_l3': 0, 'voltage_l1': 237.2, 'voltage_l2': 236.9, 'voltage_l3': 237.9}
2022-10-03 15:23:00.498 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-voltage_l2 with state 236.9
2022-10-03 15:23:00.498 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-active_power_export with state 0
2022-10-03 15:23:00.499 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-meter_id with state 7359992902081206
2022-10-03 15:23:00.499 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-reactive_power_export with state 15
2022-10-03 15:23:00.499 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-current_l1 with state 0
2022-10-03 15:23:00.500 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-voltage_l1 with state 237.2
2022-10-03 15:23:00.500 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-meter_type with state 6540
2022-10-03 15:23:00.500 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-current_l3 with state 0
2022-10-03 15:23:00.501 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-reactive_power_import with state 0
2022-10-03 15:23:00.501 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-meter_manufacturer with state Aidon
2022-10-03 15:23:00.501 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-active_power_import with state 17
2022-10-03 15:23:00.501 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-list_ver_id with state AIDON_V0001
2022-10-03 15:23:00.502 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-voltage_l3 with state 237.9
2022-10-03 15:23:02.150 DEBUG (MainThread) [custom_components.amshan.metercon] Message with timestamp 2022-10-03 13:23:02.150718+00:00, QOS 0, retain flagg False, and payload length 44 received from topic pulse/publish from subscription to topic pulse/publish
2022-10-03 15:23:02.151 DEBUG (MainThread) [custom_components.amshan.metercon] Got valid frame of expected length with correct checksum from topic pulse/publish: 7ea02a410883130413e6e7000f40000000000101020309060100010700ff060000001102020f00161bb20d7e
2022-10-03 15:23:02.153 DEBUG (MainThread) [custom_components.amshan.sensor] Decoded meter message: {'meter_manufacturer': 'Aidon', 'active_power_import': 17}
2022-10-03 15:23:02.154 DEBUG (MainThread) [custom_components.amshan.sensor] Received meter measures: {'meter_manufacturer': 'Aidon', 'active_power_import': 17}
2022-10-03 15:23:02.154 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-meter_manufacturer with state Aidon
2022-10-03 15:23:02.154 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-active_power_import with state 17

current power

toreamun commented 1 year ago

Jeg har forsøkt å bryte ned meldingingen fra måleren hentet fra loggen din:

2022-10-03 15:23:00.486 DEBUG (MainThread) [custom_components.amshan.metercon] Got valid frame of expected length with correct checksum from topic pulse/publish: 7ea10b41088313fa7ce6e7000f4000000000010c020209060101000281ff0a0b4149444f4e5f5630303031020209060000600100ff0a1037333539393932393032303831323036020209060000600107ff0a0436353430020309060100010700ff060000001102020f00161b020309060100020700ff060000000002020f00161b020309060100030700ff060000000002020f00161d020309060100040700ff060000000f02020f00161d0203090601001f0700ff10000002020fff1621020309060100470700ff10000002020fff1621020309060100200700ff12094402020fff1623020309060100340700ff12094102020fff1623020309060100480700ff12094b02020fff16233cda7e

Hex cosem data:

7ea10b41088313fa7c
    e6e700 // DSAP
    0f // Tag
    40000000
    00
    01 0c // 12 (0x0c) elements:
      020209060101000281ff0a0b4149444f4e5f5630303031 // 1.1.0.2.129.255 = AIDON_V0001
      020209060000600100ff0a1037333539393932393032303831323036 // 0.0.96.1.0.255 = 7359992902081206
      020209060000600107ff0a0436353430 // 0.0.96.1.7.255
      020309060100010700ff060000001102020f00161b // 1.0.1.7.0.255
      020309060100020700ff060000000002020f00161b // 1.0.2.7.0.255
      020309060100030700ff060000000002020f00161d // 1.0.3.7.0.255'
      020309060100040700ff060000000f02020f00161d // 1.0.4.7.0.255
      0203090601001f0700ff10000002020fff1621 // 1.0.31.7.0.255
      020309060100470700ff10000002020fff1621 // 1.0.71.7.0.255
      020309060100200700ff12094402020fff1623 // 1.0.32.7.0.255
      020309060100340700ff12094102020fff1623 // 1.0.52.7.0.255
      020309060100480700ff12094b02020fff1623 // 1.0.72.7.0.255
3cda7e

Decoded:

dsap = 230
    ssap = 231
    control = 0
    information = Container: 
        Tag = (enum) data_notification 15
        LongInvokeIdAndPriority = Container: 
            invoke_id = 4194304
            self_descriptive = (enum) NotSelfDescriptive 0
            processing_option = (enum) ContinueOnError 0
            service_class = (enum) Unconfirmed 0
            priority = (enum) Normal 0
        DateTime = 0
        notification_body = Container: 
            length = 12
            list_items = ListContainer: 
                Container: 
                    length = 2
                    obis = u'1.1.0.2.129.255' (total 15)
                    content_type = (enum) visible_string 10
                    content = u'AIDON_V0001' (total 11)
                Container: 
                    length = 2
                    obis = u'0.0.96.1.0.255' (total 14)
                    content_type = (enum) visible_string 10
                    content = u'7359992902081206' (total 16)
                Container: 
                    length = 2
                    obis = u'0.0.96.1.7.255' (total 14)
                    content_type = (enum) visible_string 10
                    content = u'6540' (total 4)
                Container: 
                    length = 3
                    obis = u'1.0.1.7.0.255' (total 13)
                    content_type = (enum) double_long_unsigned 6
                    content = Container: 
                        unscaled_value = 17
                        scaler_unit = Container: 
                            scaler = Container: 
                                exponent = 0
                                scale = 1
                            unit = (enum) W 27
                        value = 17
                Container: 
                    length = 3
                    obis = u'1.0.2.7.0.255' (total 13)
                    content_type = (enum) double_long_unsigned 6
                    content = Container: 
                        unscaled_value = 0
                        scaler_unit = Container: 
                            scaler = Container: 
                                exponent = 0
                                scale = 1
                            unit = (enum) W 27
                        value = 0
                Container: 
                    length = 3
                    obis = u'1.0.3.7.0.255' (total 13)
                    content_type = (enum) double_long_unsigned 6
                    content = Container: 
                        unscaled_value = 0
                        scaler_unit = Container: 
                            scaler = Container: 
                                exponent = 0
                                scale = 1
                            unit = (enum) var 29
                        value = 0
                Container: 
                    length = 3
                    obis = u'1.0.4.7.0.255' (total 13)
                    content_type = (enum) double_long_unsigned 6
                    content = Container: 
                        unscaled_value = 15
                        scaler_unit = Container: 
                            scaler = Container: 
                                exponent = 0
                                scale = 1
                            unit = (enum) var 29
                        value = 15
                Container: 
                    length = 3
                    obis = u'1.0.31.7.0.255' (total 14)
                    content_type = (enum) long 16
                    content = Container: 
                        unscaled_value = 0
                        scaler_unit = Container: 
                            scaler = Container: 
                                exponent = -1
                                scale = 0.1
                            unit = (enum) A 33
                        value = 0.0
                Container: 
                    length = 3
                    obis = u'1.0.71.7.0.255' (total 14)
                    content_type = (enum) long 16
                    content = Container: 
                        unscaled_value = 0
                        scaler_unit = Container: 
                            scaler = Container: 
                                exponent = -1
                                scale = 0.1
                            unit = (enum) A 33
                        value = 0.0
                Container: 
                    length = 3
                    obis = u'1.0.32.7.0.255' (total 14)
                    content_type = (enum) long_unsigned 18
                    content = Container: 
                        unscaled_value = 2372
                        scaler_unit = Container: 
                            scaler = Container: 
                                exponent = -1
                                scale = 0.1
                            unit = (enum) V 35
                        value = 237.2
                Container: 
                    length = 3
                    obis = u'1.0.52.7.0.255' (total 14)
                    content_type = (enum) long_unsigned 18
                    content = Container: 
                        unscaled_value = 2369
                        scaler_unit = Container: 
                            scaler = Container: 
                                exponent = -1
                                scale = 0.1
                            unit = (enum) V 35
                        value = 236.9
                Container: 
                    length = 3
                    obis = u'1.0.72.7.0.255' (total 14)
                    content_type = (enum) long_unsigned 18
                    content = Container: 
                        unscaled_value = 2379
                        scaler_unit = Container: 
                            scaler = Container: 
                                exponent = -1
                                scale = 0.1
                            unit = (enum) V 35
                        value = 237.9

Active import (Q1+Q4) logges som: 2022-10-03 15:23:00.501 DEBUG (MainThread) [custom_components.amshan.sensor] Update sensor Aidon-7359992902081206-active_power_import with state 17

Dette er dette elementet: 0203 09060100010700ff 0600000011 02020f00161b er en struktur på 3 elementer.

Dette kan brytes opp som:

02 03: struktur på 3 elementer:
  09 06 01 00 01 07 00 ff: OBIS kode av 6 bytes: 1.0.1.7.0.255
  06 00000011: 32 bit tall (0x11 = 17)
  02 02: struktur av 2 element:
    0f 00: byte med verdi 0, som utgjør eksponent ved desimal skalering.
    16 1b: enhet av type 1b som er W

Dette skulle da gi: 17 W 10^0 = 17 W 1 = 17 W

17 W stemmer også med det som logges.

Jeg finner altså ingenting feil med dekodingen, men er enig i at et forbruk på 17 W høres veldig lavt ut... Får du fremdeles urimelige verdier?

olegunnardahle commented 1 year ago

Får fortsatt rare verdier, det virket fint før jeg gikk bort fra tibber. Skal sjekke dokumentasjon på måleren, for det er ikke en direktemåler. Men den bruker målespoler. Så kanskje den rapporterer andre verdier image image

toreamun commented 1 year ago

Post gjerne dokumentasjon for måleren hvis du har det. Jeg er kjent med at det finnes noen løsninger hvor det benyttes en transformator, og måleren da leverer verdier som må skaleres for å bli riktige. Se https://github.com/toreamun/amshan-homeassistant/issues/1 Du kan endre skalering ved å velger "configure" og legge inn noe annet enn 1.

olegunnardahle commented 1 year ago

Der var løsningen, jeg har samme måler som https://github.com/toreamun/amshan-homeassistant/issues/1. Men en annen transformator

Aidon 6540 og 6550 er strømtransformatormålere. I følge denne dokumentasjonen kan det være skalering på 1 til 900 https://static1.squarespace.com/static/54ec7207e4b0b896afa8664e/t/5a82ae3fc830259134d7c1e9/1518513730027/Produktark+ESD+m%C3%A5ler.pdf

Jeg tittet på trafoen min, der sto det A 200/5 trafo

Satte skalering til 40 (200/5) og det ser tilsynelatende riktig ut. Så tipper det ikke er mulig å sette en fast skalering på disse målerne, hver enkelt må se i skapet sitt eller ringe netteier for å høre hvilke skalering man har.

toreamun commented 1 year ago

Fint at det løste seg og takk for nyttig info.

Vet du hvordan man gjør det når man benytter f.eks Tibber? Hvordan dem finner riktig skalering?

olegunnardahle commented 1 year ago

Var i dialog med elvia nå. Tibber har tilgang til dette som strømleverandør Jeg spurte Elvia om man kan finne ut av dette selv, eller om man må ta kontakt eller regne det ut

Av det jeg er opplyst tror jeg ikke sluttbrukerene kan se dette selv enda :/ men jeg vet at IT avdelingen jobber med å få integrert det inne på MinSide

Større anlegg som har et høyt forbruk, ligger inne med det vi kaller en K-faktor. Dette kan du se på som et omsetningsledd eller en gangefaktor. Er K-faktoren på 40 som den er hos deg, må differansen mellom 2 tellerstander ganges med 40 for å finne reelt forbruk for den valgte perioden. Grunnen til at enkelte anlegg har en K-faktor er simpelthen på grunn av at det er såpass store mengder data som går igjennom måleren, og dermed ville måleren "gått rundt" vesentlig mye fortere og dermed måtte byttes. Hvis man benytter seg av en pulsmåler for å se direkte forbruket for et anlegg med en K-faktor, gjelder samme utregning. Gang forbruket som vises av pulsmåleren med K-faktoren til anlegget for å se det aktuelle forbruket deres anlegg har hatt