onAuthStateChanged(auth, async (user) => {
if (user) {
try {
const idToken = await user.getIdToken(true);
console.log("User Auth Token:", idToken);
sendTokenToArduino(idToken);
const userRef = ref(db, `users/${user.uid}`);
const response = await get(userRef);
if (response.exists()) {
const data = response.val();
console.log('User Data:', data);
document.getElementById('userNameText').innerText = data.name;
async function fetchData() {
try {
const fetchResponse = await fetch(
`I remove my database URL for security purposes`
);
const fetchData = await fetchResponse.json();
console.log("Fetched Data:", fetchData);
} catch (fetchError) {
console.error("Error fetching external data:", fetchError);
}
}
onValue(ref(db, `users/${user.uid}/wasteData`), (snapshot) => {
if (snapshot.exists()) {
const wasteData = snapshot.val();
console.log('Real-time waste data:', wasteData);
if (wasteData.dryWaste !== undefined && wasteData.wetWaste !== undefined) {
updateCharts(wasteData.dryWaste, wasteData.wetWaste);
} else {
console.log("Incomplete waste data. Check Firebase structure.");
}
} else {
console.log("No waste data available.");
}
});
listenForNotifications(user.uid);
onValue(ref(db, `users/${user.uid}`), async (snapshot) => {
if (snapshot.exists()) {
console.log("User data updated, fetching new data...");
await fetchData();
}
});
} else {
console.log('No data available for this user');
}
} catch (error) {
console.error("Error getting user token or data:", error);
}
} else {
window.location.href = 'index.html';
}
});
document.getElementById("sendTokenButton").addEventListener("click", async () => {
const user = auth.currentUser;
if (user) {
const idToken = await user.getIdToken(true);
console.log("User clicked send token, sending:", idToken);
await sendTokenToArduino(idToken);
} else {
console.error("No authenticated user found.");
}
});
async function sendTokenToArduino(idToken) {
try {
const port = await navigator.serial.requestPort();
await port.open({ baudRate: 9600 });
const writer = port.writable.getWriter();
const token = "";
await writer.write(new TextEncoder().encode(idToken + "\n" ));
writer.releaseLock();
console.log("Token sent successfully!");
} catch (error) {
console.error("Error sending token:", error);
}
}
void sendDataToFirebase(int dryWaste, int wetWaste) {
if (WiFi.status() == WL_CONNECTED && idToken.length() > 0) {
String url = "/users/" + uid + "/wasteData.json?auth=" + idToken;
DynamicJsonDocument doc(1024);
doc["dryWaste"] = dryWaste;
doc["wetWaste"] = wetWaste;
String jsonData;
serializeJson(doc, jsonData);
Serial.println("Sending data to Firebase...");
http.beginRequest();
http.post(url);
http.sendHeader("Content-Type", "application/json");
http.sendHeader("Content-Length", jsonData.length());
http.beginBody();
http.print(jsonData);
http.endRequest();
int statusCode = http.responseStatusCode();
String response = http.responseBody();
if (statusCode == 200) {
Serial.println("Data sent successfully");
Serial.println(response);
} else {
Serial.print("Error on HTTP request: ");
Serial.println(statusCode);
}
} else {
Serial.println("WiFi not connected or Token missing. Cannot send data.");
}
}
< /code>
В приведенном выше коде это указывает на мой код веб -приложения, где это тот, кто несет ответственность за получение данных, которые поступили из моего arduino uno r4 wifi. Я внедряю токен ключ как для кода веб -приложения, так и для кода Arduino, а также использую метод POST при отправке данных из моей Arduino в мою базу данных Firebas случается с моей базой данных. Мой ожидаемый результат - датчики, которые я использовал, отправят данные в мою базу данных Firebase, и если в моей базе данных есть изменения в данных, мое веб -приложение автоматически покажет, что изменения, поскольку я использую функцию Onathchange.
Подробнее здесь: https://stackoverflow.com/questions/794 ... y-firebase
Пожалуйста, помогите мне, почему мой Arduino Uno R4 Wi -Fi все еще не может отправить данные в мою базу данных Firebase? ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Возникли проблемы с настройкой CIPSERVER с модемом SIM7000 на Arduino Uno.
Anonymous » » в форуме C++ - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Возникли проблемы с настройкой CIPSERVER с модемом SIM7000 на Arduino Uno.
Anonymous » » в форуме C++ - 0 Ответы
- 34 Просмотры
-
Последнее сообщение Anonymous
-
-
-
PN532 + подключение UART напрямую к телефону Android без Arduino Uno или Raspberry Pi
Anonymous » » в форуме Android - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-
-
-
PN532 + подключение UART напрямую к телефону Android без Arduino Uno или Raspberry Pi
Anonymous » » в форуме Android - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-