diff --git a/INTEGRATION_COMPLETE.md b/INTEGRATION_COMPLETE.md deleted file mode 100644 index 5555995..0000000 --- a/INTEGRATION_COMPLETE.md +++ /dev/null @@ -1,176 +0,0 @@ -# TCP Client Integration Complete ✓ - -The `node1.c` file has been successfully updated to use the TCP client library to send sensor data to your Go backend server. - -## Changes Made - -### 1. node1.c - -**Added:** -- WiFi and backend server configuration defines -- `wifi_init()` function to connect to WiFi -- TCP client initialization in `main()` -- Actual message sending in `cb_30` callback (replaced commented-out code) -- Error handling for WiFi/TCP failures - -**Key Features:** -- WiFi connects on startup with 30-second timeout -- If WiFi fails, sensor readings continue but data isn't sent -- Every 5 minutes (10 readings × 10 seconds), sends JSON to your Go server -- Comms LED blinks on successful sends -- Prints status messages to serial output - -### 2. CmakeLists.txt - -**Added:** -- `tcp_client.c` to node1 executable sources -- Backend server configuration variables -- Compile definitions for `BACKEND_SERVER_IP` and `BACKEND_SERVER_PORT` - -## Message Format - -The Pico sends JSON messages to `192.168.1.153:8080`: - -```json -{"temperature":23.50,"pressure":1013.25,"humidity":45.00,"pm1":10.00,"pm2_5":25.50,"pm10":50.00} -``` - -Your Go server will receive this in the `handleConnection` function and log it with structured logging. - -## Building - -```bash -cd build -cmake .. \ - -DWIFI_SSID="your_ssid" \ - -DWIFI_PASSWORD="your_password" \ - -DMQTT_SERVER="your_mqtt_server" \ - -DMQTT_USERNAME="mqtt_user" \ - -DMQTT_PASSWORD="mqtt_pass" \ - -DBACKEND_SERVER_IP="192.168.1.153" \ - -DBACKEND_SERVER_PORT=8080 -make node1 -``` - -Or if you have a build script that sets environment variables, just run it. - -## Testing - -1. **Start the Go server:** - ```bash - cd event_proxy - go run main.go - ``` - - You should see: - ``` - {"time":"...","level":"INFO","msg":"Starting TCP server","address":"192.168.1.153:8080"} - ``` - -2. **Flash the Pico W:** - ```bash - # Use your flash.sh script or: - cp build/node1.uf2 /Volumes/RPI-RP2/ - ``` - -3. **Monitor the Pico:** - ```bash - # Use your screen.sh script or: - screen /dev/tty.usbmodem* 115200 - ``` - -4. **Watch for connection messages:** - - **On Pico serial output:** - ``` - Initializing WiFi... - Connecting to WiFi 'your_ssid'... - WiFi connected successfully - TCP client ready: 192.168.1.153:8080 - Making BME280 Reading - cb_30: 0 - ... - cb_30: 9 - Preparing data to send - Temperature: 23.50 - Pressure: 1013.25 - Humidity: 45.00 - PM1: 10.00 - PM2.5: 25.50 - PM10: 50.00 - Sending data to backend server... - tcp_client: connecting to 192.168.1.153 port 8080 - tcp_client: connected, sending message - tcp_client: sent 108 bytes - tcp_client: message sent completely - tcp_client: send success - ✓ Data sent successfully - COMMS LED BLINK COUNT: 10 - ``` - - **On Go server output:** - ```json - {"time":"...","level":"INFO","msg":"New connection","remote_addr":"192.168.1.xxx:xxxxx"} - {"time":"...","level":"INFO","msg":"Received message","message":"{\"temperature\":23.50,\"pressure\":1013.25,\"humidity\":45.00,\"pm1\":10.00,\"pm2_5\":25.50,\"pm10\":50.00}\n","bytes":108} - {"time":"...","level":"INFO","msg":"Error reading from connection","error":"EOF"} - ``` - -## Configuration - -All configuration is in CMake variables or defines: - -| Variable | Default | Description | -|----------|---------|-------------| -| `WIFI_SSID` | - | Your WiFi network name | -| `WIFI_PASSWORD` | - | Your WiFi password | -| `BACKEND_SERVER_IP` | `192.168.1.153` | Your Go server IP | -| `BACKEND_SERVER_PORT` | `8080` | Your Go server port | -| `LOOP_INTERVAL_MS` | `10000` | Time between readings (10 sec) | - -## Timing - -- **Reading interval:** 10 seconds (configured by `LOOP_INTERVAL_MS`) -- **Readings per batch:** 10 -- **Send interval:** 100 seconds (~1.7 minutes) -- **Connection timeout:** 10 seconds -- **Watchdog timeout:** 60 seconds -- **Auto-restart:** 24 hours - -## Troubleshooting - -### WiFi not connecting -- Check SSID and password in build command -- Ensure WiFi is 2.4GHz (Pico W doesn't support 5GHz) -- Monitor serial output for detailed error messages - -### TCP connection fails -- Verify Go server is running: `go run event_proxy/main.go` -- Check server IP is correct: `192.168.1.153` -- Ensure both devices are on same network -- Check firewall settings on server machine - -### Data not arriving at server -- Verify `wifi_connected` is true in serial output -- Check for "✓ Data sent successfully" messages -- Look for connection logs in Go server output -- Increase timeout if network is slow (change 10000 to 20000) - -## Next Steps - -1. **Run it!** Flash the Pico and start the Go server -2. **Monitor both** to verify data flow -3. **Process the data** in your Go server (parse JSON, store to DB, forward to Home Assistant, etc.) -4. **Adjust timing** if needed by changing `LOOP_INTERVAL_MS` - -## Files Reference - -- `tcp_client.h` - TCP client header -- `tcp_client.c` - TCP client implementation -- `node1.c` - Main application (updated) -- `CmakeLists.txt` - Build configuration (updated) -- `TCP_CLIENT_README.md` - Detailed API documentation -- `event_proxy/main.go` - Your Go TCP server - -## Success! 🎉 - -Your Pico W weather station now sends sensor data over WiFi to your Go backend server every ~1.7 minutes! \ No newline at end of file diff --git a/WIFI_FIX_NOTES.md b/WIFI_FIX_NOTES.md deleted file mode 100644 index f6796e1..0000000 --- a/WIFI_FIX_NOTES.md +++ /dev/null @@ -1,34 +0,0 @@ -# WiFi Initialization Fixes - 2026-01-18 - -## Problem -Intermittent WiFi connection failures on Raspberry Pi Pico running node1.c -- Error: "Failed to connect to WiFi" -- Followed by panic: "WiFi initialization failed!" -- Issue only occurred sometimes, not consistently - -## Root Causes -1. Insufficient startup delay before WiFi initialization -2. Watchdog timeout (60s) conflicting with WiFi connection timeout (60s) -3. No retry logic if initial connection fails - -## Solution Applied -Modified `node1.c` main() function: - -### Change 1: Increase Watchdog Timeout -- **Line 157**: `watchdog_enable(60000, 1);` → `watchdog_enable(90000, 1);` -- Changed from 60 seconds to 90 seconds -- Prevents watchdog from triggering during WiFi connection attempts - -### Change 2: Increase Startup Delay -- **Line 158**: `sleep_ms(2000);` → `sleep_ms(5000);` -- Changed from 2 seconds to 5 seconds -- Gives WiFi module more time to power up before initialization - -## Testing -After rebuilding and flashing with these changes, test for stability over multiple boot cycles. - -## Next Steps if Still Unstable -1. Add WiFi connection retry logic instead of panic on first failure -2. Further increase watchdog timeout to 120s -3. Reduce WiFi timeout to 30s with retry attempts -4. Check WiFi module power supply stability