-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
taskSendReport: Failed to send report #1
Comments
Hi, sorry for the delayed response. First of all this project is not finished (for example the PIR sensor and the tensorflow stuff is not working yet) and I am actually working on some other projects right now so there will be no fixes during the next weeks. But I will try to answer your questions.
It is indeed possible to either broadcast to every node or to send messages to specific nodes. As of right now the project sends the message to the node which is specified at the top (so no broadcast). So find out the ID of the receiving node and insert it there (DEST_NODE). You may change this destination ID for each node before uploading. If a node sends a message to itself, it will fail. If a node sends a message to another node which is not currently connected to the mesh, it will also fail.
The logs are only meant to be displayed locally via the serial monitor of each node. They are not transmitted via mesh at all. There are two reasons for that. Firstly, the logs should give you hints if everything is working as expected. If the mesh is not working, the log will not reach other nodes, so it would be useless (in my case). Secondly, this would cause a huge overhead of messages floating around the mesh and I wanted to avoid that. Generally I would suggest that you only send messages that you actually need because the mesh (and the esp32s sending/receiving all kinds of messages) might overload and behave weird or take very long for a simple message to reach its destination.
I guess I kind of already answered this but I wanted to make clear what my code is actually supposed to do. I hope this makes sense to you but feel free to ask again if I missed your point. |
I never used the app, sorry. I can tell you something about the pictures though: I did not manage to actually send pictures via mesh to another node (which is why the picuture is supposed to be evaluated on the esp32 and not on some remote server). This is because pictures are just too big. I read somewhere in the painlessmesh-repo that it should be possible to base64-encode the picture, send it via mesh and decode it on the receiving node. However, it simply did not work and I tried a lot. Please do come back to me if you succeed with this. |
@dkettner |
@dkettner This is where I found out how to send large data through JSON Packets. He seemed to have some trouble with it though. I made some modifications and got it to work. Images are at VGA size with 18 Jpeg_quality. Makes a file about 8600 kb file size. It gets broken up into Chucks of 3000 kb and sent out by mesh.sendBroadcast();. I think we could send larger size files but I think we need to figure out how to space out sending the data. (instead of all at once by a forloop). Maybe by saving all the chunks then putting them in a queue to be sent out over time, or something like that. Here are the relevant parts to the code. Please if you can see what I have done to the code and see if there is something you would do differently, I would love to know how you would clean this up to work better. To take the Picture: `void sendData( String sensorType, long idPacket, int indexPacket, int totalPackets, String dataSensor ) DynamicJsonDocument jsonBuffer( 1024 + dataSensor.length() ); Serial.println( msg ); String encodedString; void takePicture(); fb = esp_camera_fb_get(); if ( !fb )
} if ( res != ESP_OK ) //Camera Settings config.frame_size = FRAMESIZE_VGA; // FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA // Initialize the Camera sensor_t * s = esp_camera_sensor_get(); To Receive the Picture: `void receivedCallback( uint32_t from, String &msg ) { DynamicJsonDocument jsonBufferFrom( 1024 + msg.length() ); if ( rootFrom.containsKey( "type" ) && String( "sensor" ).equals( rootFrom[ "type" ].as< String >() ) )
}` |
Sorry, Still a NOOB at Posting. I hope you can still understand what I'm trying to get across. |
Hello and Thank You for Your Time and Effort.
I am trying to use your "SmartForestMesh" and I get this Error "taskSendReport: Failed to send report 349_249.log!". Currently, I am using 2x ESP32-CAM's with SD Cards in both. I use the Arduino IDE and copied the Main.cpp to a new .ino file and uploaded it to the ESP32-CAM. I am not using the PIR Motion sensor at the moment. I figured that every NODE on the mesh network would be able to receive and broadcast to each other and show the Logs coming from other NODE's in the Serial Monitor. But I don't think that this program works that way. A question to you is how can I set up a receiver NODE, or is there a way to use the Painlessmesh Android APP to display the Log Reports and Pictures when it connects with the mesh by collecting all NODE's SD card data or something like that. But the main question is how to set up a Receiver NODE to receive the Report Logs and display it via the serial monitor.
Thank You again for your time and effort.
The text was updated successfully, but these errors were encountered: