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

jaku2k
Posts: 920
Joined: Sun May 24, 2020 8:40 pm
Has thanked: 1 time

Post

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
You do not have the required permissions to view the files attached to this post.
Pozdrawiam
Jakub
User avatar
Robert Błaszczak
Posts: 5222
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra
Has thanked: 37 times
Been thanked: 27 times

Post

@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

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

Code: Select all

//- 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) )
    {

    }
    */
}
You do not have the required permissions to view the files attached to this post.
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
User avatar
Robert Błaszczak
Posts: 5222
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra
Has thanked: 37 times
Been thanked: 27 times

Post

@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


Moja prywatna strona: www.blaszczak.pl
jaku2k
Posts: 920
Joined: Sun May 24, 2020 8:40 pm
Has thanked: 1 time

Post

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
User avatar
Robert Błaszczak
Posts: 5222
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra
Has thanked: 37 times
Been thanked: 27 times

Post

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

Code: Select all

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


Moja prywatna strona: www.blaszczak.pl
Esteta
Posts: 37
Joined: Wed Oct 24, 2018 9:32 pm

Post

jaku2k wrote: Fri Jan 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
Witam,

istnieje może wersja "supla_bbmagic_multi-sensor" zapisująca do pliku stan baterii, czy trzeba negocjować z panami z BBmagic?
Esteta
Posts: 37
Joined: Wed Oct 24, 2018 9:32 pm

Post

No dobra, udało się wymarudzić od BBMagic nowy program do współpracy z "Supla Virtual Device". :D

Program do przetestowania przez chętnych, a BBMagic czeka na uwagi i sugestie.
U mnie działa z czterema modułami ( na RPI Zero W): 2x FLOOD, 1x METEO i 1x BUTTON.

Niestety nie bardzo chce działać równolegle z obsługą czujników Xiaomi LYWSD03MMC i po jakimś czasie przestaje odczytywać dane z modułów. Może ktoś coś wymyśli lub zasugeruje rozwiązanie, bo ja na to za cienki jestem.

Tutaj program:
supla_bbmagic_multi-sensor.7z
W pliku "bbmagic_sensors.cfg" można wpisać MAC czujników które mają być odczytywane, lub wpisać "0" w celu odczytywania wszystkich obecnych modułów.
Pliki dla poszczególnych czujników tworzone są automatycznie.
You do not have the required permissions to view the files attached to this post.

Return to “Projekty użytkowników”