Eastron sdm72d-m

@macek
Kwestia jest taka
@Grzegorz_Szmyd
Nie używa HA i chyba nie zamierza, więc ESPHome nie jest dobrym kierunkiem moim zdaniem, ale OK spróbować zawsze można tylko będzie trzeba pokonać inne przeciwności (używanie IDE ESPHome wewnątrz HA jest zdecydowanie najprostsze).

Więc moim zdaniem dociągnięcie tematu Tasmoty do końca jest najlepszym możliwym kierunkiem.


@Grzegorz_Szmyd
Klepanie gotowców metodą “na małpę” nie ma przyszłości, trzeba zrozumieć jak jest zbudowana mapa rejestrów w liczniku, wtedy można też zrozumieć czemu czasem częściowo mapa jednego licznika trochę lub całkiem pasuje do innego, a czemu czasem całkowicie nie pasuje, bo np. inny producent zdecydował mapować inaczej…
Ale trzeba chociaż samodzielnie spróbować porównać mapy rejestrów kilku liczników…

OK, nie było tematu.

Tak dla potomnych zestawienie rejestrów liczników SDM

//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//      REGISTERS LIST FOR SDM DEVICES                                                                                                                                |
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
//      REGISTER NAME                                 REGISTER ADDRESS              UNIT        | SDM630  | SDM230  | SDM220  | SDM120CT| SDM120  | SDM72D  | SDM72 V2|
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------
#define SDM_PHASE_1_VOLTAGE                           0x0000                    //  V           |    1    |    1    |    1    |    1    |    1    |         |    1    |         
#define SDM_PHASE_2_VOLTAGE                           0x0002                    //  V           |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_3_VOLTAGE                           0x0004                    //  V           |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_1_CURRENT                           0x0006                    //  A           |    1    |    1    |    1    |    1    |    1    |         |    1    |
#define SDM_PHASE_2_CURRENT                           0x0008                    //  A           |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_3_CURRENT                           0x000A                    //  A           |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_1_POWER                             0x000C                    //  W           |    1    |    1    |    1    |    1    |    1    |         |    1    |
#define SDM_PHASE_2_POWER                             0x000E                    //  W           |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_3_POWER                             0x0010                    //  W           |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_1_APPARENT_POWER                    0x0012                    //  VA          |    1    |    1    |    1    |    1    |    1    |         |    1    |
#define SDM_PHASE_2_APPARENT_POWER                    0x0014                    //  VA          |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_3_APPARENT_POWER                    0x0016                    //  VA          |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_1_REACTIVE_POWER                    0x0018                    //  VAr         |    1    |    1    |    1    |    1    |    1    |         |    1    |
#define SDM_PHASE_2_REACTIVE_POWER                    0x001A                    //  VAr         |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_3_REACTIVE_POWER                    0x001C                    //  VAr         |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_1_POWER_FACTOR                      0x001E                    //              |    1    |    1    |    1    |    1    |    1    |         |    1    |
#define SDM_PHASE_2_POWER_FACTOR                      0x0020                    //              |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_3_POWER_FACTOR                      0x0022                    //              |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_1_ANGLE                             0x0024                    //  Degrees     |    1    |    1    |    1    |    1    |         |         |         |
#define SDM_PHASE_2_ANGLE                             0x0026                    //  Degrees     |    1    |         |         |         |         |         |         |
#define SDM_PHASE_3_ANGLE                             0x0028                    //  Degrees     |    1    |         |         |         |         |         |         |
#define SDM_AVERAGE_L_TO_N_VOLTS                      0x002A                    //  V           |    1    |         |         |         |         |         |    1    |
#define SDM_AVERAGE_LINE_CURRENT                      0x002E                    //  A           |    1    |         |         |         |         |         |    1    |
#define SDM_SUM_LINE_CURRENT                          0x0030                    //  A           |    1    |         |         |         |         |         |    1    |
#define SDM_TOTAL_SYSTEM_POWER                        0x0034                    //  W           |    1    |         |         |         |         |    1    |    1    |
#define SDM_TOTAL_SYSTEM_APPARENT_POWER               0x0038                    //  VA          |    1    |         |         |         |         |         |    1    |
#define SDM_TOTAL_SYSTEM_REACTIVE_POWER               0x003C                    //  VAr         |    1    |         |         |         |         |         |    1    |
#define SDM_TOTAL_SYSTEM_POWER_FACTOR                 0x003E                    //              |    1    |         |         |         |         |         |    1    |
#define SDM_TOTAL_SYSTEM_PHASE_ANGLE                  0x0042                    //  Degrees     |    1    |         |         |         |         |         |         |
#define SDM_FREQUENCY                                 0x0046                    //  Hz          |    1    |    1    |    1    |    1    |    1    |         |    1    |
#define SDM_IMPORT_ACTIVE_ENERGY                      0x0048                    //  kWh/MWh     |    1    |    1    |    1    |    1    |    1    |    1    |    1    |
#define SDM_EXPORT_ACTIVE_ENERGY                      0x004A                    //  kWh/MWh     |    1    |    1    |    1    |    1    |    1    |    1    |    1    |
#define SDM_IMPORT_REACTIVE_ENERGY                    0x004C                    //  kVArh/MVArh |    1    |    1    |    1    |    1    |    1    |         |         |
#define SDM_EXPORT_REACTIVE_ENERGY                    0x004E                    //  kVArh/MVArh |    1    |    1    |    1    |    1    |    1    |         |         |
#define SDM_VAH_SINCE_LAST_RESET                      0x0050                    //  kVAh/MVAh   |    1    |         |         |         |         |         |         |
#define SDM_AH_SINCE_LAST_RESET                       0x0052                    //  Ah/kAh      |    1    |         |         |         |         |         |         |
#define SDM_TOTAL_SYSTEM_POWER_DEMAND                 0x0054                    //  W           |    1    |    1    |         |         |         |         |         |
#define SDM_MAXIMUM_TOTAL_SYSTEM_POWER_DEMAND         0x0056                    //  W           |    1    |    1    |         |         |         |         |         |
#define SDM_CURRENT_SYSTEM_POSITIVE_POWER_DEMAND      0x0058                    //  W           |         |    1    |         |         |         |         |         |
#define SDM_MAXIMUM_SYSTEM_POSITIVE_POWER_DEMAND      0x005A                    //  W           |         |    1    |         |         |         |         |         |
#define SDM_CURRENT_SYSTEM_REVERSE_POWER_DEMAND       0x005C                    //  W           |         |    1    |         |         |         |         |         |
#define SDM_MAXIMUM_SYSTEM_REVERSE_POWER_DEMAND       0x005E                    //  W           |         |    1    |         |         |         |         |         |
#define SDM_TOTAL_SYSTEM_VA_DEMAND                    0x0064                    //  VA          |    1    |         |         |         |         |         |         |
#define SDM_MAXIMUM_TOTAL_SYSTEM_VA_DEMAND            0x0066                    //  VA          |    1    |         |         |         |         |         |         |
#define SDM_NEUTRAL_CURRENT_DEMAND                    0x0068                    //  A           |    1    |         |         |         |         |         |         |
#define SDM_MAXIMUM_NEUTRAL_CURRENT                   0x006A                    //  A           |    1    |         |         |         |         |         |         |
#define SDM_REACTIVE_POWER_DEMAND                     0x006C                    //  VAr         |    1    |         |         |         |         |         |         |
#define SDM_MAXIMUM_REACTIVE_POWER_DEMAND             0x006E                    //  VAr         |    1    |         |         |         |         |         |         |
#define SDM_LINE_1_TO_LINE_2_VOLTS                    0x00C8                    //  V           |    1    |         |         |         |         |         |    1    |
#define SDM_LINE_2_TO_LINE_3_VOLTS                    0x00CA                    //  V           |    1    |         |         |         |         |         |    1    |
#define SDM_LINE_3_TO_LINE_1_VOLTS                    0x00CC                    //  V           |    1    |         |         |         |         |         |    1    |
#define SDM_AVERAGE_LINE_TO_LINE_VOLTS                0x00CE                    //  V           |    1    |         |         |         |         |         |    1    |
#define SDM_NEUTRAL_CURRENT                           0x00E0                    //  A           |    1    |         |         |         |         |         |    1    |
#define SDM_PHASE_1_LN_VOLTS_THD                      0x00EA                    //  %           |    1    |         |         |         |         |         |         |
#define SDM_PHASE_2_LN_VOLTS_THD                      0x00EC                    //  %           |    1    |         |         |         |         |         |         |
#define SDM_PHASE_3_LN_VOLTS_THD                      0x00EE                    //  %           |    1    |         |         |         |         |         |         |
#define SDM_PHASE_1_CURRENT_THD                       0x00F0                    //  %           |    1    |         |         |         |         |         |         |
#define SDM_PHASE_2_CURRENT_THD                       0x00F2                    //  %           |    1    |         |         |         |         |         |         |
#define SDM_PHASE_3_CURRENT_THD                       0x00F4                    //  %           |    1    |         |         |         |         |         |         |
#define SDM_AVERAGE_LINE_TO_NEUTRAL_VOLTS_THD         0x00F8                    //  %           |    1    |         |         |         |         |         |         |
#define SDM_AVERAGE_LINE_CURRENT_THD                  0x00FA                    //  %           |    1    |         |         |         |         |         |         |
#define SDM_TOTAL_SYSTEM_POWER_FACTOR_INV             0x00FE                    //              |    1    |         |         |         |         |         |         |
#define SDM_PHASE_1_CURRENT_DEMAND                    0x0102                    //  A           |    1    |    1    |         |         |         |         |         |
#define SDM_PHASE_2_CURRENT_DEMAND                    0x0104                    //  A           |    1    |         |         |         |         |         |         |
#define SDM_PHASE_3_CURRENT_DEMAND                    0x0106                    //  A           |    1    |         |         |         |         |         |         |
#define SDM_MAXIMUM_PHASE_1_CURRENT_DEMAND            0x0108                    //  A           |    1    |    1    |         |         |         |         |         |
#define SDM_MAXIMUM_PHASE_2_CURRENT_DEMAND            0x010A                    //  A           |    1    |         |         |         |         |         |         |
#define SDM_MAXIMUM_PHASE_3_CURRENT_DEMAND            0x010C                    //  A           |    1    |         |         |         |         |         |         |
#define SDM_LINE_1_TO_LINE_2_VOLTS_THD                0x014E                    //  %           |    1    |         |         |         |         |         |         |
#define SDM_LINE_2_TO_LINE_3_VOLTS_THD                0x0150                    //  %           |    1    |         |         |         |         |         |         |
#define SDM_LINE_3_TO_LINE_1_VOLTS_THD                0x0152                    //  %           |    1    |         |         |         |         |         |         |
#define SDM_AVERAGE_LINE_TO_LINE_VOLTS_THD            0x0154                    //  %           |    1    |         |         |         |         |         |         |
#define SDM_TOTAL_ACTIVE_ENERGY                       0x0156                    //  kWh         |    1    |    1    |    1    |    1    |    1    |    1    |    1    |
#define SDM_TOTAL_REACTIVE_ENERGY                     0x0158                    //  kVArh       |    1    |    1    |    1    |    1    |    1    |         |    1    |
#define SDM_L1_IMPORT_ACTIVE_ENERGY                   0x015A                    //  kWh         |    1    |         |         |         |         |         |         |
#define SDM_L2_IMPORT_ACTIVE_ENERGY                   0x015C                    //  kWh         |    1    |         |         |         |         |         |         |
#define SDM_L3_IMPORT_ACTIVE_ENERGY                   0x015E                    //  kWh         |    1    |         |         |         |         |         |         |
#define SDM_L1_EXPORT_ACTIVE_ENERGY                   0x0160                    //  kWh         |    1    |         |         |         |         |         |         |
#define SDM_L2_EXPORT_ACTIVE_ENERGY                   0x0162                    //  kWh         |    1    |         |         |         |         |         |         |
#define SDM_L3_EXPORT_ACTIVE_ENERGY                   0x0164                    //  kWh         |    1    |         |         |         |         |         |         |
#define SDM_L1_TOTAL_ACTIVE_ENERGY                    0x0166                    //  kWh         |    1    |         |         |         |         |         |         |
#define SDM_L2_TOTAL_ACTIVE_ENERGY                    0x0168                    //  kWh         |    1    |         |         |         |         |         |         |
#define SDM_L3_TOTAL_ACTIVE_ENERGY                    0x016a                    //  kWh         |    1    |         |         |         |         |         |         |
#define SDM_L1_IMPORT_REACTIVE_ENERGY                 0x016C                    //  kVArh       |    1    |         |         |         |         |         |         |
#define SDM_L2_IMPORT_REACTIVE_ENERGY                 0x016E                    //  kVArh       |    1    |         |         |         |         |         |         |
#define SDM_L3_IMPORT_REACTIVE_ENERGY                 0x0170                    //  kVArh       |    1    |         |         |         |         |         |         |
#define SDM_L1_EXPORT_REACTIVE_ENERGY                 0x0172                    //  kVArh       |    1    |         |         |         |         |         |         |
#define SDM_L2_EXPORT_REACTIVE_ENERGY                 0x0174                    //  kVArh       |    1    |         |         |         |         |         |         |
#define SDM_L3_EXPORT_REACTIVE_ENERGY                 0x0176                    //  kVArh       |    1    |         |         |         |         |         |         |
#define SDM_L1_TOTAL_REACTIVE_ENERGY                  0x0178                    //  kVArh       |    1    |         |         |         |         |         |         |
#define SDM_L2_TOTAL_REACTIVE_ENERGY                  0x017A                    //  kVArh       |    1    |         |         |         |         |         |         |
#define SDM_L3_TOTAL_REACTIVE_ENERGY                  0x017C                    //  kVArh       |    1    |         |         |         |         |         |         |
#define SDM_CURRENT_RESETTABLE_TOTAL_ACTIVE_ENERGY    0x0180                    //  kWh         |         |    1    |         |         |         |    1    |    1    |
#define SDM_CURRENT_RESETTABLE_TOTAL_REACTIVE_ENERGY  0x0182                    //  kVArh       |         |    1    |         |         |         |         |         |
#define SDM_CURRENT_RESETTABLE_IMPORT_ENERGY          0x0184                    //  kWh         |         |         |         |         |         |    1    |    1    |
#define SDM_CURRENT_RESETTABLE_EXPORT_ENERGY          0x0186                    //  kWh         |         |         |         |         |         |    1    |    1    |
#define SDM_CURRENT_RESETTABLE_IMPORT_REACTIVE_ENERGY 0x0188                    //  kVArh       |         |         |         |         |         |    1    |    1    |
#define SDM_CURRENT_RESETTABLE_EXPORT_REACTIVE_ENERGY 0x018A                    //  kVArh       |         |         |         |         |         |    1    |    1    |
#define SDM_NET_KWH                                   0x018C                    //  kWh         |         |         |         |         |         |         |    1    |
#define SDM_NET_KVARH                                 0x018E                    //  kVArh       |         |         |         |         |         |         |    1    |
#define SDM_IMPORT_POWER                              0x0500                    //  W           |         |         |         |         |         |    1    |    1    |
#define SDM_EXPORT_POWER                              0x0502                    //  W           |         |         |         |         |         |    1    |    1    |
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------

Z tego wynika, że gdy wybierze się SDM630 to jest duże prawdopodobieństwo otrzymania w tasmocie właściwych odczytów.
Ze skryptem proponuje ograniczyć się do odczytu jednego rejestru i na macanego posprawdzać.

>D
>B
->sensor53 r
>M 1
+1,25,mN1,0,9600,SDM72D,26,1,0104XXXX   <-------- tu zmieniać adresy rejestrów
1,010404ffffffff@i0:1,_REJESTR,?,voltage_phase1,2

0104XXXX - w tym zapisie ważne są dwie pierwsze cyfry 01 - to jest ID licznika (adres) i musi być zgodny z ustawiony w menu licznika. Można spróbować odczytów na adresie rozgłoszeniowym 00.
Zamiast XXXX podstawiać adresy z tabeli.

Ciekawe co się pokazuje w konsoli.

4 Likes

Podsumowanie…
Działa i to pięknie, ale można popełnić wiele błędów które początkującym mogą się przydarzyć, a nawet średnio-nisko-jakby-zaawansowanym…

Sprzęt: działa poprawnie z ESP32 i 8285.
UWAGA!!! Przeczytaj zanim podłączysz cokolwiek zasilanego z sieci!!!

Próbowałem z Sonoff DualR3 i Sonoff MiniR2. Tyle że programując DualR3 w pełnej wersji tracimy możliwość wykorzystania wbudowanych fabrycznie czujników prądu na oba kanały, więc to trochę zjeść ciasteczko żeby mieć ciasteczko. Można użyć wersji Light - jest tańsza od pełnej, a lutowanie znacznie wygodniejsze nić MiniR2. Ale nie to jest najważniejsze - na zastosowanie urządzenia Sonoff Dual zdecydowałem się w TYLKO w ramach eksperymentu mając świadomość że nie jest to prawidłowe rozwiązanie z uwagi na specyficzny zasilacz w tych urządzeniach, a konkretnie w przypadku Sonoff Dual masa logiki jest zwarta z fazą aby umożliwić poprawną pracę wejść sterowania S1 i S2 (rozwiązanie bardzo, bardzo budżetowe i zupełnie nieodporne na zakłócenia). Udało mi się niczego nie wysadzić w powietrze tylko dlatego że nie połączyłem masy urządzeń oraz zastosowałem izolowany konwerter przemysłowy.

W przypadku Sonoff MiniR2 masy strony wysokonapięciowej i niskonapięciowej (logiki) są rozdzielone.

Drugi element który będzie potrzebny to konwerter RS TTL o napięciu 3,3V na RS485. Tu zwrócić uwagę żeby był dostosowany do napięcia z ESP na poziomie 3,3V a nie tylko 5V. W ten element warto zainwestować kilka złotych więcej, a ciekawym rozwiązaniem są konwertery montowane na szynie - odpada problem dyndających luzem płytek jeśli chcemy wszystko upchnąć w rozdzielni. Podłączamy ESP do konwertera jak na obrazku powyżej zwracając uwagę że RX i TX NIE łączymy na krzyż, ale prosto - RX do RX a TX do TX. Ze sprzętu będą potrzebne jeszcze 2 rezystory po ok.120 Ohm (może być 110, może być 130 - ważne żeby były jednakowe) które zamontujemy na krańcach linii RS485. Przewód - powinna to być skrętka a nie sznur od żelazka - proponuję wykorzystać jedną parę ze zwykłej skrętki komputerowej. Ze względu na marne zasilacze w Sonofach nie podłączamy masy - tylko linie A i B. I tu znów na wprost: A do A i B do B. Koniec elektryki, teraz soft…
ESP32 - wgrywamy noramlny soft ESP32, ewentualnie możemy skopiować odpowiedni szablon dla sprzętu który używamy żeby mieć dostęp do przekaźników i wejść. Oczywiście konfigurujemy WiFi i jeśli chcemy używać w HomeAssistant to jeszcze MQTT nadając jakieś sensowne nazwy. Teraz moment kluczowy - przyporząkdowujemy odpowiednie wejścia: GPIO1 jako SDM630 TX oraz GPIO3 jako SDM630RX ale robimy to w menu MODULE a nie w menu TEMPLATE. Po resecie sprawdzamy czy na konwerterze mrugają nam radośnie diody RX i TX z lekkim przesunięciem i gotowe.
Dla mniejszych sterowniczków niż ESP32 ze strony Tasmota ESP8266 Binaries ściągamy i wgrywamy lokalnie plik Tasmota-sensors.bin lub zdalnie plik Tasmota-sensors.bin.gz. Reszta konfiguracji jak opisana wyżej dla ESP32.
Ach, jeszcze jedno… W menu Configuration/logging warto przestawić parametr Serial log level na 0, a parametr Telemetry period z domyślnych 300 na mniejszy żeby częściej aktualizował Homeassistanta.

1 Like

Czekaj, czekaj - podłączasz konwerter pod GPIO w Sonoff Dual R3, który pracuje na napięciu 230V AC??? Czy ja dobrze zrozumiałem twój opis?
Tych wykrzykników nie widziałeś?

Bezpieczeństwa zdrowia i życia własnego bym nie ryzykował, a tym wpisem narażasz również pośrednio czytających.

Racja… Zapomniałem dodać że mam przemysłowy konwerter Waveshare z izolacją galwaniczną . Mój błąd. Przepraszam i dziękuję za zwrócenie uwagi!

Poprawiam opis…

Jeszcze raz dziękuję za zwrócenie uwagi i cieszę się że trafiłem na Forum gdzie są fachowcy !

Posiadam SDM72D i chce do niego podłączyć Elfin EW11A. Znalazłem podłaczenie że A(+) łacze z A na Elfin i B z B , ale co z tymi wyjsciami Tx+ i Rx- ?

Wrzuć jakieś foto


Elfin EW11A:

SDM72M ma takie wyjścia:

Poszłem za sugestią i nie wiem czy teraz czegoś mi nie brakuje.

Ale i SDM i Elfin komunikują się RS485 wiec chyba powinno byc ok kwestia podlaczenia czy tylko A i B czy cos jeszcze.

No i? na tej grafice (a nie zdjęciach z natury) nie ma żadnego

Wyjście impulsowe (które ma jednak INNE oznaczenia niż pisałeś) zostaw w spokoju.
Opcjonalnie są tam jeszcze złącza uziemienia, ale jeśli nie masz pojęcia co robisz, to też zostaw w spokoju.

Ok już doszedłem czego brakuje zasilacza na szynie DIN :slight_smile:


Muszę domówić .

Zasilacz 12.v 1.25 ampera wystarczy . Wczoraj ten temat przerabiałem .