1
+ float read_sensor ()
2
+ {
3
+ return 42.0 ;
4
+ }
5
+
6
+ void push_data ()
7
+ {
8
+ printf ("Pushing...\n" );
9
+ char ssid [33 ];
10
+ char password [65 ];
11
+ printf ("DEBUG1\n" );
12
+ read_str_from_nvs ("ssid" , ssid , 32 );
13
+ printf ("DEBUG2\n" );
14
+ read_str_from_nvs ("password" , password , 64 );
15
+ printf ("DEBUG3\n" );
16
+ save_bool_to_nvs ("wifi_enabled" , true);
17
+ printf ("DEBUG4\n" );
18
+ connect_wifi (ssid , password );
19
+
20
+ bool wifi_connected = false;
21
+ read_bool_from_nvs ("wifi_connected" , & wifi_connected );
22
+ while (!wifi_connected )
23
+ {
24
+ read_bool_from_nvs ("wifi_connected" , & wifi_connected );
25
+ printf ("Waiting for wifi...\n" );
26
+ vTaskDelay (pdMS_TO_TICKS (1000 ));
27
+ }
28
+ printf ("Connected!\n" );
29
+
30
+ char existing_data [1000 ];
31
+ read_str_from_fs (existing_data , 1000 );
32
+
33
+ int suc = send_message (existing_data );
34
+ if (!suc )
35
+ {
36
+ printf ("Failed to push!\n" );
37
+ save_bool_to_nvs ("wifi_enabled" , false);
38
+ disconnect_wifi ();
39
+ return ;
40
+ }
41
+ save_str_to_fs ("" );
42
+ printf ("Pushed!\n" );
43
+ save_bool_to_nvs ("wifi_enabled" , false);
44
+ disconnect_wifi ();
45
+ }
46
+
47
+ void read_loop ()
48
+ {
49
+ int reading_interval = 1000 ;
50
+ int push_interval = 7 ;
51
+ int counter = 0 ;
52
+ while (1 )
53
+ {
54
+ if (exists_in_nvs ("reading_interval" ))
55
+ {
56
+ read_int_from_nvs ("reading_interval" , & reading_interval );
57
+ }
58
+ if (exists_in_nvs ("push_interval" ))
59
+ {
60
+ read_int_from_nvs ("push_interval" , & push_interval );
61
+ }
62
+
63
+ float reading = read_sensor ();
64
+ printf ("Reading: %f\n" , reading );
65
+
66
+ char existing_data [1000 ];
67
+
68
+ read_str_from_fs (existing_data , 1000 );
69
+ char * new_data = malloc (2000 );
70
+ sprintf (new_data , "%s%f\n" , existing_data , reading );
71
+ save_str_to_fs (new_data );
72
+
73
+ if (counter >= push_interval )
74
+ {
75
+ counter = 0 ;
76
+ xTaskCreate (push_data , "push_data" , 2048 , NULL , 10 , NULL );
77
+ }
78
+
79
+ counter ++ ;
80
+ vTaskDelay (pdMS_TO_TICKS (reading_interval ));
81
+ }
82
+ }
83
+
84
+ void run ()
85
+ {
86
+ if (exists_in_nvs ("ssid" ))
87
+ {
88
+ read_loop ();
89
+ }
90
+ else
91
+ {
92
+ start_bluetooth ();
93
+ }
94
+ }
0 commit comments