Witam
Pytam, bo nie umie znaleźć jak to zrobić:
Moja historia wygląda tak: parę tygodni temu kupiłem SONOFF TH16.
Od razu wrzuciłem do środka odpowiedni plik wygenerowany za pomocą narzędzi z SUPLA-IoT_SDK.
Po wgraniu w Supli pokazały się dwa kanały: przekaźnik i czujnik (wilgotność + temperatura).
Przekaźnik działał, czujnik niestety NIE.
Po konsultacjach z doktorem Google okazało się, że w środku mam czujnik Si7021+ mały procesorek a nie obiecany TH22.
Po kolejnych konsultacja z w/w doktorem udało mi się zmodyfikować plik src/driver/dht22.c i wygenerować nowe wsady tak, żeby to wszystko zaczęło działać. Musiałem zmodyfikować pare stałych czasowych.
No i teraz moje pytanie:
Poświęciłem temu parę godzin. Mam w miarę uporządkowany kod. Zmiany fajnie widać spod git-a. Chętnie się podzielę swoją pracą.
Jak mogę przesłać to do projektu Supli ?
Takie małe poprawki
Wow !!!
Było by super.
A tak na już mógłbyś to tu:
viewtopic.php?f=17&t=4735
udostepnić ???
Ps.
Żeby wszystko było w jednym miejscu.
Chętnie bym to potestowal.
A z wrzuceniem, Ci nie pomogę, bo jestem za słaby jeszcze w tym temacie.
Było by super.
A tak na już mógłbyś to tu:
viewtopic.php?f=17&t=4735
udostepnić ???
Ps.
Żeby wszystko było w jednym miejscu.
Chętnie bym to potestowal.
A z wrzuceniem, Ci nie pomogę, bo jestem za słaby jeszcze w tym temacie.
Wrzucasz Pull Request na githubie. W między czasie ustalasz ze mną Twoje wynagrodzenie za tą pracę. Jeśli PR nadaje się do zaakceptowania to się rozliczamy i wtedy Twój kod jest włączamy do głównego repo.
Od razu zaznaczę. Nie akceptuje PR-ów do głównego repo bez zapłaty autorowi za jego pracę.
Od razu zaznaczę. Nie akceptuje PR-ów do głównego repo bez zapłaty autorowi za jego pracę.
Wrzucone do PR.
Dla ciekawych wrzucę od razu tutaj (skoro tu zacząłem).
Trzeba zmodyfikować dwa plik:
/include/driver/dht22.h
/driver/dht22.c
Mam jeszcze SONOFF-POW z pomiarem prądu. Ale pomiar mi nie działa, bo działać nie może. Nie ma obsług przetwornika ADC. Czy ktoś już może coś z tym robił ?
Dla ciekawych wrzucę od razu tutaj (skoro tu zacząłem).
Trzeba zmodyfikować dwa plik:
/include/driver/dht22.h
Kod: Zaznacz cały
#define DEV_TH22 1
#define DEV_SI7021 2
#define DEV_TYPE DEV_SI7021
Kod: Zaznacz cały
bool DHTRead(DHT_Sensor *sensor, DHT_Sensor_Data* output)
{
int counter = 0;
int laststate = 1;
int i = 0;
int j = 0;
int checksum = 0;
int data[100];
data[0] = data[1] = data[2] = data[3] = data[4] = 0;
uint8_t pin = GPIO_ID_PIN(sensor->port);
// Wake up device, 250ms of high
GPIO_OUTPUT_SET(pin, 1);
sleepms(250);
#if (DEV_TYPE == DEV_SI7021)
// Hold low for 500us
GPIO_OUTPUT_SET(pin, 0);
os_delay_us(500);
// High for 40us
GPIO_OUTPUT_SET(pin, 1);
os_delay_us(50);
// Set DHT_PIN pin as an input
GPIO_DIS_OUTPUT(pin);
#elif (DEV_TYPE == DEV_TH22)
// Hold low for 20ms
GPIO_OUTPUT_SET(pin, 0);
sleepms(20);
// High for 40ns
GPIO_OUTPUT_SET(pin, 1);
os_delay_us(40);
// Set DHT_PIN pin as an input
GPIO_DIS_OUTPUT(pin);
#endif
Dzięki.
Wybacz (może) za proste pytanie.( Nie jestem informatykiem ).
Jak to teraz wykorzystać w "praktyce".
Konkretnie w przykładzie sonoff_th.
Co trzeba dodać w plikach sonoff_th.c oraz sonoff_th.h , żeby ten czujnik był "obsługiwany".
Ps.
Myślałem, że przykład znajdę u Ciebie na github-ie ( zmodyfikowany kod dla sonoff-a th ), ale tam jest "oryginalny".
Cześć
To jest ma moim githubie, z tym że zmiany zostały zrobione w plikach drivera czyli:
supla-espressif-esp/src/driver/dht22.c
supla-espressif-esp/src/include/driver/dht22.h
Zrobiłem tak, żeby była możliwość kompilacji dla czujnika TH22 i SI7021 wszystko zależy od tego jaką wartość przyjmie zmienna DEV_TYPE w pliku .../dht22.h.
W sumie można było przerzucić definicję zmiennej DEV_TYPE do pliku
supla-espressif-esp/src/include/board/sonoff_th.h
Wtedy przełącznik musiałby się nazywać trochę "mądrzej", np.SENSOR_DEV_TYPE, ale to już zależy od "architektów" tego systemu
Puki co, zaglądnij do tych dwóch pierwszych plików.
Swoją drogą to sonoff_th.h definiuje aż trzy kanały - dodatkowo definiowany jest kanał dla termometru DS18B20. Chyba nie potrzebny.
Pozdrawiam
To jest ma moim githubie, z tym że zmiany zostały zrobione w plikach drivera czyli:
supla-espressif-esp/src/driver/dht22.c
supla-espressif-esp/src/include/driver/dht22.h
Zrobiłem tak, żeby była możliwość kompilacji dla czujnika TH22 i SI7021 wszystko zależy od tego jaką wartość przyjmie zmienna DEV_TYPE w pliku .../dht22.h.
W sumie można było przerzucić definicję zmiennej DEV_TYPE do pliku
supla-espressif-esp/src/include/board/sonoff_th.h
Wtedy przełącznik musiałby się nazywać trochę "mądrzej", np.SENSOR_DEV_TYPE, ale to już zależy od "architektów" tego systemu
Puki co, zaglądnij do tych dwóch pierwszych plików.
Swoją drogą to sonoff_th.h definiuje aż trzy kanały - dodatkowo definiowany jest kanał dla termometru DS18B20. Chyba nie potrzebny.
Pozdrawiam
Dzięki za info.
Zmiany widzę w plikach drivera.
Może tak zadam pytanie - czy moduł sam wykryje jaki ma typ czujnika podłączony ( DHT22 lub SI7021 ) , czy trzeba go dopiero "jakoś" zdefiniować w plikach ( sonoff_th.c i sonoff_th.h ).
Dosyć dziwnym mi się wydaje, że obsługę czujnika SI7021 definiuje się w pliku o nazwie dht22
Widzimy się na Supla Offline Party vol. 2