[tutorial]Supla i moduły bbmagic (czujnik zalania, zamknięcia itp.)

jaku2k
Posty: 91
Rejestracja: ndz maja 24, 2020 8:40 pm

pt sty 08, 2021 11:00 pm

Dziękuję za słowa uznania :-)
Przesyłam jeszcze program - również autorstwa zespołu BBmagic - obsługujący dowolną liczbę sensorów. Generowane przez niego pliki txt mają (chyba) numer ID modułu jako nazwy. Sam wykorzystałem go do obsługi BBmagic magneto (z kontaktronem) do weryfikacji zaryglowania (tj. zamknięcia na klucz) drzwi.
Pozdrawiam
Jakub
Załączniki
supla_bbmagic_multi-sensor.zip
(53.74 KiB) Pobrany 13 razy
Pozdrawiam
Jakub
Awatar użytkownika
Robert Błaszczak
Posty: 1610
Rejestracja: sob gru 22, 2018 8:55 pm
Lokalizacja: Zielona Góra
Kontaktowanie:

sob sty 09, 2021 3:45 pm

@jaku2k, Supla Virtual Device obsługuje już suplowy protokół w wersji 12. Dzięki temu możemy mieć dodatkowe informacje o danym kanale. Aktualnie jest to poziom baterii (w %) i informacja, że urządzenie jest zasilane bateryjnie.

Informacja o poziomie baterii musi być zapisana w trzecim wierszu pliku tekstowego z danymi dla Supla Virtual Device. Ja w czwartym wierszu zapisuję dodatkowo jeszcze poziom sygnału. Ta informacja nie jest jeszcze w tej wersji Supla Virtual Device przekazywana do Supla Cloud.
Ale to temat do Łukasza (@Beku) :D

Tak wygląda to na smartfonie:
rb-bbm-batt.jpg
rb-bbm-batt.jpg (62.71 KiB) Przejrzano 153 razy

A tak wygląda zmodyfikowany przeze mnie kod /src_actions/magneto_action.c

Kod: Zaznacz cały

//- Ten plik zawiera obsługę zdarzeń wywołanych przez moduły BBMagic MAGNETO
void magneto_action(unsigned char *bbm_buf)
{
    float vcc_f ;
        int batt_level ;
    signed int signal_i ;

    //-sprawdź adres sensora (zastap "111111111111" adresem Twojego sensora BBMagic MAGNETO)
    if( bbm_check_addr("111111111111", bbm_buf) )
    {
                FILE *fp ;
                if ((fp=fopen("test.txt", "w"))==NULL)
                {
                        printf("Nie mogę otworzyć pliku do zapisu\n") ;
                        exit(5) ;
                }
        if(bbm_buf[BBM_MAGNETO_FLAGS] & BBM_MAGNETO_MAGNET_MASK)
        {
            printf("\n --- OKNO ZAMKNIĘTE ---\n") ;
            fprintf(fp, "1") ;
        }else
        {
            printf("\n --- OKNO OTWARTE ---\n") ;
            fprintf(fp, "0") ;
        }

    //- odczyt napięcia zasilania
    vcc_f = (float)bbm_buf[BBM_MAGNETO_V_SUP] ; vcc_f/=BBMAGIC_VCC_DIVIDER ;
    printf("Bateria: %0.2f V\n", vcc_f) ;
        batt_level = fmin((vcc_f - 2.15) * 100, 100) ;
        printf("Poziom baterii: %i\n", batt_level) ;

    //- odczyt poziomu sygnału
    signal_i = bbm_buf[BBMAGIC_DEVICE_RSSI] - 256 ;
    printf("Poziom sygnału: %d dBm\n\n", signal_i) ;
        fprintf(fp, "\n\n%i", batt_level) ;
        fprintf(fp, "\n%i", signal_i) ;
        fclose (fp) ;
    }
	
    //-sprawdź kolejny adres (zastap "222222222222" adresem Twojego kolejnego sensora BBMagic MAGNETO)
    //-----------------------------------------------------------------------------------------------
    //-check next sensor (replace "222222222222" with your next BBMagic MAGNETO address)
    /*
    else if( bbm_check_addr("222222222222", bbm_buf) )
    {

    }
    */
}
Pozdrawiam
Robert Błaszczak

Strona prywatna: https://www.blaszczak.pl
Jakość powietrza: https://robert.aqi.eco
Awatar użytkownika
Robert Błaszczak
Posty: 1610
Rejestracja: sob gru 22, 2018 8:55 pm
Lokalizacja: Zielona Góra
Kontaktowanie:

sob sty 09, 2021 9:44 pm

@jaku2k, masz kontakt mailowy z kimś z ekipy BBMagic? Jeśli możesz, prześlij na priv adres albo zaproś tę osobę na Forum.
Niestety formularz kontaktowy na ich stronie nie działa.
Pozdrawiam
Robert Błaszczak

Strona prywatna: https://www.blaszczak.pl
Jakość powietrza: https://robert.aqi.eco
jaku2k
Posty: 91
Rejestracja: ndz maja 24, 2020 8:40 pm

ndz sty 10, 2021 6:01 pm

Dzień dobry,
dziękuję za przesłanie programu.
Sprawdzanie poziomu baterii to coś, czego mi brakowało.
Co jeśli wykorzystam program dla czujnika podłączonego na stałe do zasilania? Supla będzie pokazywać 100% baterii czy coś innego?
Czy w SuplaScripts można ustawić warunek związany z poziomem baterii? Marzy mi się powiadomienie dotyczące niskiego stanu.
Czy istnieje możliwość wzmocnienia sygnału BLE? Czy zwykły adapter BT z antenką podłączony do RPi spełni do zadanie?
Jakub
Pozdrawiam
Jakub
Awatar użytkownika
Robert Błaszczak
Posty: 1610
Rejestracja: sob gru 22, 2018 8:55 pm
Lokalizacja: Zielona Góra
Kontaktowanie:

ndz sty 10, 2021 6:42 pm

W konfiguracji Supla Virtual Device dla danego kanału ustawiasz parametr

Kod: Zaznacz cały

battery_powered=1
Jeśli urządzenie zasilane jest z sieci, to nie ustawiasz tego parametru (nie sprawdzałem, co będzie jak wartość ustawimy na 0).

W Supla Scripts nie ustawisz warunku dotyczącego poziomu baterii. Ta wartość nie jest przesyłana do Supla Scripts. Z tego co mi wiadomo, to takie powiadomienia znajdą się natywnie w aplikacji Supla. Ale to w przyszłości :D .

W temacie wzmacniacza sygnału BT nie mam żadnej wiedzy.
Pozdrawiam
Robert Błaszczak

Strona prywatna: https://www.blaszczak.pl
Jakość powietrza: https://robert.aqi.eco
ODPOWIEDZ

Wróć do „Projekty użytkowników”