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
Форум по Javascript
1739430397
Anonymous
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.
Подробнее здесь: [url]https://stackoverflow.com/questions/79435316/please-help-me-why-my-arduino-uno-r4-wifi-cant-still-send-data-to-my-firebase[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия