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

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

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 98 razy
Pozdrawiam
Jakub

PS. Czekam na Supla Offline Party 2024
Awatar użytkownika
Robert Błaszczak
Posty: 3945
Rejestracja: sob gru 22, 2018 8:55 pm
Lokalizacja: Zielona Góra
Kontakt:

@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 1978 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


Moja prywatna strona: www.blaszczak.pl
Awatar użytkownika
Robert Błaszczak
Posty: 3945
Rejestracja: sob gru 22, 2018 8:55 pm
Lokalizacja: Zielona Góra
Kontakt:

@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
Posty: 830
Rejestracja: ndz maja 24, 2020 8:40 pm
Kontakt:

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

PS. Czekam na Supla Offline Party 2024
Awatar użytkownika
Robert Błaszczak
Posty: 3945
Rejestracja: sob gru 22, 2018 8:55 pm
Lokalizacja: Zielona Góra
Kontakt:

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


Moja prywatna strona: www.blaszczak.pl
Esteta
Posty: 32
Rejestracja: śr paź 24, 2018 9:32 pm

jaku2k pisze: 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
Witam,

istnieje może wersja "supla_bbmagic_multi-sensor" zapisująca do pliku stan baterii, czy trzeba negocjować z panami z BBmagic?
Esteta
Posty: 32
Rejestracja: śr paź 24, 2018 9:32 pm

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
(41.8 KiB) Pobrany 20 razy
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.
ODPOWIEDZ

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