Licznik wody MBUS

User avatar
Lector
Posts: 1656
Joined: Fri Nov 17, 2017 2:26 pm
Location: Poznań

Post

A wiesz jak dokładnie wysyłają dane liczniki Aquanetu? W jakich odstępach czasowych w jakich porach dnia.

W BIN można zmienić MAC - temat przerabiałem.
Niespełniony automatyk. :mrgreen:
https://www.youtube.com/@3D_Lamp.Photos
sixkiller
Posts: 48
Joined: Mon Aug 16, 2021 7:59 pm

Post

W ciągu dnia, bodajże 7-17 dość często - co ok 15-30s, w godzinach późniejszych co ok 30min
User avatar
Lector
Posts: 1656
Joined: Fri Nov 17, 2017 2:26 pm
Location: Poznań

Post

sixkiller wrote: Fri Sep 01, 2023 7:19 pm W ciągu dnia, bodajże 7-17 dość często - co ok 15-30s, w godzinach późniejszych co ok 30min
Czyli ewidentnie u mnie coś jest nie tak.
Nie odczytuje, nawet pod samym licznikiem, może coś z pinologią mam nie tak.
Niespełniony automatyk. :mrgreen:
https://www.youtube.com/@3D_Lamp.Photos
rafalekkalwak@wp.pl
Posts: 676
Joined: Mon Feb 06, 2023 8:56 am

Post

Kilka osób mnie pytało jak odpalić komunikację przez CC1101:

Części:
CC1101 868MHz - większość liczników używa 868MHz
ESP32 - co kto lubi

Można się wzorować na mojej implementacji : https://github.com/rkalwak/cc1101_platf ... sp32_newer
, aczkolwiek chylę czoła przed @SzczepanLeon który ogarnął komunikację z CC1101 i parsowanie ramek wmBus, gdzie ja to zrozumiałem w inny sposób i walczyłem kilka tygodni... Tak więc kod w repozytorium to jest mix z jego repozytoriów z Supla, byle działało. Wiem, że będzie chciał to zrobić dobrze tak aby każdy licznik dało się odczytywać na wzór z wmbusmeters.com i może wtedy będzie można to zintegrować np. z GUI-Generic.

Kabelkologia, piny zgadzają się z ESP32 DevKit, ale dostosujcie sobie.
mosi = 23,
miso = 19,
clk = 18,
cs = 5,
gdo0 = 4,
gdo2 = 2

Obrazkowo opis pinów na CC1101: https://community.home-assistant.io/t/i ... 101/529079

UWAGA! Projekt używa VS Code z rozszerzeniem PlatformIO

Przed uruchomieniem kodu trzeba:
1. zmienić w pliku arduino_cc1101_wmbus.ino linijki zawierające poniższe zmienne, one są specyficzne dla każdego urządzenia.
Można je wygerować:
https://www.supla.org/pl/arduino/get-guid

char GUID[SUPLA_GUID_SIZE] = {...};
https://www.supla.org/arduino/get-authkey
char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {...};
2. Można zmienić używane piny podając je w konstruktorze:

Code: Select all

new Supla::Sensor::WaterMeter();

gdzie domyślnie jest tak:
WaterMeter(uint8_t mosi = 23, uint8_t miso = 19, uint8_t clk = 18, uint8_t cs = 5, uint8_t gdo0 = 4, uint8_t gdo2 = 2)
3. stworzyc w głównym katalogu plik secrets.ini o zawartości jak poniżej, oczywiście wpisując swoje dane do Supli

Code: Select all

[env:esp32]
build_flags = 
    -D emailVariable='"supla email"'
    -D serverVariable='"supla serwer"'


4. W pliku platformio.ini (albo przez PlatformIO) dostosować uzywaną płytkę i wersję frameworka Arduino, użyłem starszej bo nie umiałem skompilować tego na nowszej...

Code: Select all

platform = espressif32@^6.0.0
platform_packages =
    framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#2.0.9
    ;https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json @^2.0.11
board = esp32dev
framework = arduino
monitor_speed = 115200
Powinno się zbudować a po wgraniu na ESP32 w cloud powinien się pojawić Licznik impulsów.
W cloud należy sobie ustawić w polu: Impulsy 1000000/ m³ (małe oszustwo w celu przeliczenia m3 na litry na ESP32 i potem powrotnie na m3 gdyż kanał licznika impulsów akceptuje tylko liczby całkowite), jak wartości się nie mieszczą można dołożyć zero i tak samo w kodzie.

Jeśli odczytujesz wiecej niz jeden licznik możesz użyć metody "extractMeterId" w celu pobrania z wiaodmosci ID licznika - logikę zostawiam Tobie ;)

Code: Select all

 if (myDecoder.decrypt_telegram(frame))
          {
            readValue = myDecoder.extractValue(frame);
            Serial.print(readValue);
            Serial.println("m3");
            channel.setNewValue((int)(readValue*1000000));
            std::string meterId= myDecoder.extractMeterId(frame);
            Serial.print("Meter id: ");
            Serial.println(meterId.c_str());
           
          }
 
User avatar
Lector
Posts: 1656
Joined: Fri Nov 17, 2017 2:26 pm
Location: Poznań

Post

a napisz jeszcze co gdzie dodać aby w supla pojawiły się dwa liczniki.
Niespełniony automatyk. :mrgreen:
https://www.youtube.com/@3D_Lamp.Photos
rafalekkalwak@wp.pl
Posts: 676
Joined: Mon Feb 06, 2023 8:56 am

Post

Lector wrote: Mon Sep 04, 2023 9:03 am a napisz jeszcze co gdzie dodać aby w supla pojawiły się dwa liczniki.
To już wyższa akrobatyka w c++, który nie jest moim ulubionym językiem programowania :P
Od ręki nie odpowiem, bo wymagało by to napisania kodu obsługującego komunikację z Supla od nowa a na to póki co nie mam czasu.
Tak jak pisałem gdzieś wcześniej trzeba by trochę pożonglować obiektami, oddzielić ten od parsowania ramek od tego wysyłającego do Supli stan. I na bank stworzyć dwa razy obiekt dziedziczący po klasie "ChannelElement"
User avatar
Lector
Posts: 1656
Joined: Fri Nov 17, 2017 2:26 pm
Location: Poznań

Post

Jak nie odbiera poprawnie

Code: Select all

wMBus-lib: Processing T1 A frame
wMBus-lib:  Error during decoding '3 out of 6'
To oznacza ze za daleko czy ze sygnał może być kodowany?
Niespełniony automatyk. :mrgreen:
https://www.youtube.com/@3D_Lamp.Photos
rafalekkalwak@wp.pl
Posts: 676
Joined: Mon Feb 06, 2023 8:56 am

Post

Za daleko, przyszło Ci to co kupiłeś? U mnie leży w jednym miejscu a czasem i tak ma ten problem co u Ciebie 🤔
User avatar
Lector
Posts: 1656
Joined: Fri Nov 17, 2017 2:26 pm
Location: Poznań

Post

Tak dostałem ten moduł z olx. Ustawiłem piny i łapie.
Sprawdzałem wczoraj wieczorem, dziś podejdę bliżej z laptopem.
Niespełniony automatyk. :mrgreen:
https://www.youtube.com/@3D_Lamp.Photos
User avatar
Lector
Posts: 1656
Joined: Fri Nov 17, 2017 2:26 pm
Location: Poznań

Post

Nowa wersja od Szczepana
https://forum.arturhome.pl/t/bramka-wm- ... 6?u=lector

Jakby ktoś mógł sprawdzić bo u mnie nie działa.

Code: Select all

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
invalid header: 0x45553141
invalid header: 0x45553141
invalid header: 0x45553141
invalid header: 0x45553141
invalid header: 0x45553141
invalid header: 0x45553141
invalid header: 0x45553141
invalid header: 0x45553141
ets Jul 29 2019 12:21:46
Wgrywam dwoma metodami ale i tak nie jestem pewien ze czegoś nie skopałem.
Niespełniony automatyk. :mrgreen:
https://www.youtube.com/@3D_Lamp.Photos

Return to “Projekty użytkowników”