>>21763803 Cześć josemr,
Pracowałem bez przerwy nad tym problemem przez ostatnie 48 godzin i mogę teraz potwierdzić główną przyczynę problemu z dwoma kanałami.
Potwierdzenie architektury sprzętowej:
Po uważnym przeczytaniu tego wątku znalazłem kluczową informację: QS-wifi-S10-CT02 ma dwa układy BL0942 komunikujące się przez JEDEN współdzielony port UART na CB2S - NIE przez oddzielne UART1 i UART2, jak inne konstrukcje z dwoma miernikami. Ta specyficzna architektura sprzętowa jest dokładnie tym, co powoduje nasze problemy.
Co testowałem:
Skompilowałem niestandardowe oprogramowanie układowe OpenBK7231N z:
- ENABLE_BL_TWIN jawnie włączone w obk_config.h
- Zarówno ENABLE_DRIVER_BL0942 jak i ENABLE_DRIVER_BL0942SPI aktywne
- Oprogramowanie układowe skompilowane i pomyślnie sflashowane przez OTA
Wyniki testu (z podłączoną siecią 230V i obciążeniami na obu zaciskach):
- Odczyty napięcia/częstotliwości wyświetlane w interfejsie internetowym (prawdopodobne wartości domyślne/buforowane: 240V, 50Hz)
- Zerowe odczyty prądu/mocy pomimo aktywnych obciążeń podłączonych do obu zacisków
- Stałe błędy sumy kontrolnej zalewające dzienniki:
Warn:EnergyMeter:Failed to read reg 03: bad checksum 00 wanted A4
Warn:EnergyMeter:Failed to read reg 04: bad checksum 00 wanted A3
Warn:EnergyMeter:Failed to read reg 06: bad checksum 00 wanted A1
Warn:EnergyMeter:Failed to read reg 07: bad checksum 00 wanted A0
Warn:EnergyMeter:Failed to read reg 08: bad checksum 00 wanted 9F
Analiza:
Błędy te dowodzą, że:
1. Oba układy BL0942 fizycznie odpowiadają na zapytania
2. Ich ramki danych UART kolidują i nakładają się, gdy są przesyłane jednocześnie na współdzielonej magistrali
3. Sterownik odbiera uszkodzone dane (suma kontrolna 00 = brak poprawnych danych/kolizja)
4. Rejestry 03-08 (prąd, moc, energia) nie mogą być odczytane z powodu ciągłego uszkodzenia ramki
Przyczyna źródłowa:
Flaga ENABLE_BL_TWIN w OpenBK7231N została zaprojektowana dla architektur sprzętowych, w których każdy BL0942 ma własny dedykowany UART (UART1 dla chipu 1, UART2 dla chipu 2).
Nasz QS-wifi-S10-CT02 ma zasadniczo inną konstrukcję: oba BL0942 współdzielą TĘ SAMĄ magistralę UART. Bez odpowiedniego protokołu adresowania/pollingu, gdy oprogramowanie układowe odpytuje rejestr, oba układy odpowiadają jednocześnie → kolizja → nieczytelne dane.
Obecny sterownik OpenBK7231N nie posiada:
- Mechanizmu indywidualnego adresowania chipów
- Wykrywanie/unikanie kolizji
- Sekwencyjnego odpytywania dla współdzielonych konfiguracji UART
Inne opcje oprogramowania układowego:
Zbadałem również alternatywy:
- ESPHome: Ma otwartą kwestię GitHub (#10137) zatytułowaną "komponent bl0942 nie działa z wieloma (2-3-4)" potwierdzającą to samo ograniczenie dla wielu BL0942 na współdzielonym UART
- Tasmota: Obsługa BL0942 istnieje, ale tylko dla konfiguracji jednoukładowych; nie znaleziono obsługi współdzielonego UART dla wielu układów
Wnioski:
Wydaje się, że jest to podstawowe ograniczenie we WSZYSTKICH obecnych opcjach oprogramowania układowego typu open source (OpenBK7231N, ESPHome, Tasmota). Architektura współdzielonego UART dual-BL0942 QS-wifi-S10-CT02 nie jest obsługiwana przez żadne istniejące sterowniki open-source.
Dostępne opcje:
1. Modyfikacja sprzętu: Fizyczne wyłączenie jednego BL0942 (odlutowanie lub przecięcie ścieżki VCC) w celu wyeliminowania kolizji i uzyskania jednego działającego kanału
2. Poczekać na rozwój sterowników: Przesłanie żądań funkcji do projektów oprogramowania układowego w celu obsługi "podwójnego BL0942 na współdzielonym UART" (wymaga znacznego przepisania sterownika z protokołem adresowania)
3. Zaakceptuj ograniczenie: Używaj urządzenia tylko z pojedynczym zaciskiem
Pytanie do społeczności: Czy komuś udało się uzyskać oba kanały działające jednocześnie z tym dokładnym modelem QS-wifi-S10-CT02 przy użyciu dowolnego oprogramowania układowego? Jeśli tak, podziel się szczegółami!
Dokumentuję wszystkie ustalenia i prześlę szczegółowe prośby o funkcje do odpowiednich repozytoriów GitHub.