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.
Licznik wody MBUS
-
- Posts: 1644
- Joined: Fri Nov 17, 2017 2:26 pm
- Location: Poznań
Niespełniony automatyk.
https://www.youtube.com/@3D_Lamp.Photos
https://www.youtube.com/@3D_Lamp.Photos
-
- Posts: 48
- Joined: Mon Aug 16, 2021 7:59 pm
W ciągu dnia, bodajże 7-17 dość często - co ok 15-30s, w godzinach późniejszych co ok 30min
-
- Posts: 1644
- Joined: Fri Nov 17, 2017 2:26 pm
- Location: Poznań
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.
https://www.youtube.com/@3D_Lamp.Photos
https://www.youtube.com/@3D_Lamp.Photos
-
- Posts: 666
- Joined: Mon Feb 06, 2023 8:56 am
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:
3. stworzyc w głównym katalogu plik secrets.ini o zawartości jak poniżej, oczywiście wpisując swoje dane do Supli
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...
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
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)
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
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());
}
-
- Posts: 1644
- Joined: Fri Nov 17, 2017 2:26 pm
- Location: Poznań
a napisz jeszcze co gdzie dodać aby w supla pojawiły się dwa liczniki.
Niespełniony automatyk.
https://www.youtube.com/@3D_Lamp.Photos
https://www.youtube.com/@3D_Lamp.Photos
-
- Posts: 666
- Joined: Mon Feb 06, 2023 8:56 am
To już wyższa akrobatyka w c++, który nie jest moim ulubionym językiem programowania
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"
-
- Posts: 1644
- Joined: Fri Nov 17, 2017 2:26 pm
- Location: Poznań
Jak nie odbiera poprawnie
To oznacza ze za daleko czy ze sygnał może być kodowany?
Code: Select all
wMBus-lib: Processing T1 A frame
wMBus-lib: Error during decoding '3 out of 6'
Niespełniony automatyk.
https://www.youtube.com/@3D_Lamp.Photos
https://www.youtube.com/@3D_Lamp.Photos
-
- Posts: 666
- Joined: Mon Feb 06, 2023 8:56 am
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
-
- Posts: 1644
- Joined: Fri Nov 17, 2017 2:26 pm
- Location: Poznań
Tak dostałem ten moduł z olx. Ustawiłem piny i łapie.
Sprawdzałem wczoraj wieczorem, dziś podejdę bliżej z laptopem.
Sprawdzałem wczoraj wieczorem, dziś podejdę bliżej z laptopem.
Niespełniony automatyk.
https://www.youtube.com/@3D_Lamp.Photos
https://www.youtube.com/@3D_Lamp.Photos
-
- Posts: 1644
- Joined: Fri Nov 17, 2017 2:26 pm
- Location: Poznań
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.
Wgrywam dwoma metodami ale i tak nie jestem pewien ze czegoś nie skopałem.
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
Niespełniony automatyk.
https://www.youtube.com/@3D_Lamp.Photos
https://www.youtube.com/@3D_Lamp.Photos