@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)
Tak wygląda to na smartfonie:

- rb-bbm-batt.jpg (62.71 KiB) Przejrzano 148 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) )
{
}
*/
}