3 Commits

Author SHA1 Message Date
Hunter 4b4fd01600 fix function calls for wifi checks 2024-10-08 10:02:51 -04:00
Hunter b90df4923d add wifi reconnection logic 2024-10-08 09:58:46 -04:00
Hunter David Halloran 79e52ee404 Sheller MQTT 2024-10-01 11:02:47 -04:00
11 changed files with 137 additions and 3058 deletions
-285
View File
@@ -1,285 +0,0 @@
clang
%c -Wno-frame-address -std=gnu99 -Wno-old-style-declaration -Os -mlongcalls -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -MMD
%cpp -Wno-frame-address -std=gnu++11 -fexceptions -fno-rtti -Os -mlongcalls -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -MMD
-I/Users/hdh20267/Documents/pecan_ws/usda-platformio/include
-I/Users/hdh20267/Documents/pecan_ws/usda-platformio/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src
-I/Users/hdh20267/.platformio/lib/ArduinoJson/src
-I/Users/hdh20267/Documents/pecan_ws/usda-platformio/.pio/libdeps/esp32/PubSubClient/src
-I/Users/hdh20267/Documents/pecan_ws/usda-platformio/.pio/libdeps/esp32/FastAccelStepper/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/newlib/platform_include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/include/esp_additions/freertos
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/port/xtensa/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freertos/include/esp_additions
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/include/soc/esp32
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/port/esp32
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hw_support/port/esp32/private_include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/heap/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/log/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/include/apps
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/include/apps/sntp
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/lwip/src/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/port/esp32/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/lwip/port/esp32/include/arch
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/esp32
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/soc/esp32/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/hal/esp32/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/hal/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/hal/platform_port/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rom/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rom/include/esp32
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rom/esp32
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_common/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_system/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_system/port/soc
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_system/port/public_compat
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/xtensa/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/xtensa/esp32/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/driver/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/driver/esp32/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_pm/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_ringbuf/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/efuse/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/efuse/esp32/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/vfs/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_wifi/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_event/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_netif/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_eth/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/tcpip_adapter/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_phy/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_phy/esp32/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_ipc/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/app_trace/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_timer/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/port/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/mbedtls/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mbedtls/esp_crt_bundle/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/app_update/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/spi_flash/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bootloader_support/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/nvs_flash/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/pthread/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_gdbstub/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_gdbstub/xtensa
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_gdbstub/esp32
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espcoredump/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espcoredump/include/port/xtensa
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wpa_supplicant/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wpa_supplicant/port/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wpa_supplicant/esp_supplicant/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/ieee802154/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/console
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/asio/asio/asio/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/asio/port/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/osi/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/include/esp32/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/api/include/api
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/btc/profile/esp/blufi/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/common/btc/profile/esp/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/host/bluedroid/api/include/api
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_common/tinycrypt/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_core/storage
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/btc/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/common/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/client/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/mesh_models/server/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/api/core/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/api/models/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/bt/esp_ble_mesh/api
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/cbor/port/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/unity/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/unity/unity/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/cmock/CMock/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/coap/port/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/coap/libcoap/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/nghttp/port/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/nghttp/nghttp2/lib/includes
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-tls
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-tls/esp-tls-crypto
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_adc_cal/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_hid/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/tcp_transport/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_http_client/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_http_server/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_https_ota/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_https_server/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_lcd/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_lcd/interface
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protobuf-c/protobuf-c
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protocomm/include/common
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protocomm/include/security
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/protocomm/include/transports
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mdns/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_local_ctrl/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/sdmmc/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_serial_slave_link/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_websocket_client/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/expat/expat/expat/lib
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/expat/port/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wear_levelling/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/diskio
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/vfs
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fatfs/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/freemodbus/freemodbus/common/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/idf_test/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/idf_test/include/esp32
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/jsmn/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json/cJSON
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/libsodium/libsodium/src/libsodium/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/libsodium/port_include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/mqtt/esp-mqtt/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/openssl/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/perfmon/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/spiffs/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/ulp/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/wifi_provisioning/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/rmaker_common/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_diagnostics/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/rtc_store/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_insights/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json_parser/upstream/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json_parser/upstream
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/json_generator/upstream
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_schedule/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp_secure_cert_mgr/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_rainmaker/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/gpio_button/button/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/qrcode/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/ws2812_led
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp_littlefs/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/tool
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/typedef
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/image
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/math
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/nn
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/layer
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/detect
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp-dl/include/model_zoo
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/driver/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/esp32-camera/conversions/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/dotprod/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/support/mem/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/hann/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_harris/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/blackman_nuttall/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/nuttall/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/windows/flat_top/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/iir/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/fir/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/add/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sub/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mul/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/addc/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/mulc/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/math/sqrt/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/matrix/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/fft/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/dct/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/conv/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/common/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/espressif__esp-dsp/modules/kalman/ekf_imu13states/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/include/fb_gfx/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/dio_qspi/include
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/cores/esp32
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/variants/esp32
-I/Users/hdh20267/.platformio/lib/AsyncMqttClient-esphome/src
-I/Users/hdh20267/.platformio/lib/AsyncTCP-esphome/src
-I/Users/hdh20267/.platformio/lib/Crypto
-I/Users/hdh20267/.platformio/lib/Dsmr/src
-I/Users/hdh20267/.platformio/lib/ESP32-audioI2S/src
-I/Users/hdh20267/.platformio/lib/ESPAsyncWebServer-esphome/src
-I/Users/hdh20267/.platformio/lib/FastLED
-I/Users/hdh20267/.platformio/lib/HaierProtocol/include
-I/Users/hdh20267/.platformio/lib/HaierProtocol/src
-I/Users/hdh20267/.platformio/lib/HeatpumpIR
-I/Users/hdh20267/.platformio/lib/IRremoteESP8266/src
-I/Users/hdh20267/.platformio/lib/Improv/src
-I/Users/hdh20267/.platformio/lib/MideaUART/include
-I/Users/hdh20267/.platformio/lib/MideaUART/src
-I/Users/hdh20267/.platformio/lib/NeoPixelBus/src
-I/Users/hdh20267/.platformio/lib/TM1651
-I/Users/hdh20267/.platformio/lib/TinyGPSPlus/src
-I/Users/hdh20267/.platformio/lib/arduino-MLX90393
-I/Users/hdh20267/.platformio/lib/esp_wireguard/include
-I/Users/hdh20267/.platformio/lib/esp_wireguard/src
-I/Users/hdh20267/.platformio/lib/libsodium/libsodium/src/libsodium/include
-I/Users/hdh20267/.platformio/lib/libsodium/libsodium/src/libsodium
-I/Users/hdh20267/.platformio/lib/libsodium/libsodium/src/libsodium/include/sodium
-I/Users/hdh20267/.platformio/lib/libsodium/port_include
-I/Users/hdh20267/.platformio/lib/noise-c/include
-I/Users/hdh20267/.platformio/lib/noise-c/src
-I/Users/hdh20267/.platformio/lib/noise-c@0.1.1/include
-I/Users/hdh20267/.platformio/lib/noise-c@0.1.1/src
-I/Users/hdh20267/.platformio/lib/qr-code-generator-library/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/ArduinoOTA/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/AsyncUDP/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/BluetoothSerial/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/DNSServer/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/EEPROM/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/ESP32/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/ESPmDNS/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/Ethernet/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/FFat/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/FS/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdate/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdateServer/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/I2S/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/Insights/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/LittleFS/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/NetBIOS/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/Preferences/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/RainMaker/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/SD/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/SD_MMC/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/SPI/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/SimpleBLE/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/Ticker/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/USB/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/Update/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/WiFiProv/src
-I/Users/hdh20267/.platformio/packages/framework-arduinoespressif32/libraries/Wire/src
-I/Users/hdh20267/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0
-I/Users/hdh20267/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/xtensa-esp32-elf
-I/Users/hdh20267/.platformio/packages/toolchain-xtensa-esp32/lib/gcc/xtensa-esp32-elf/8.4.0/include
-I/Users/hdh20267/.platformio/packages/toolchain-xtensa-esp32/lib/gcc/xtensa-esp32-elf/8.4.0/include-fixed
-I/Users/hdh20267/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include
-DPLATFORMIO=60116
-DARDUINO_ESP32_DEV
-DHAVE_CONFIG_H
-DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h"
-DUNITY_INCLUDE_CONFIG_H
-DWITH_POSIX
-D_GNU_SOURCE
-DIDF_VER="v4.4.6-dirty"
-DESP_PLATFORM
-D_POSIX_READER_WRITER_LOCKS
-DARDUINO_ARCH_ESP32
-DESP32
-DF_CPU=240000000L
-DARDUINO=10812
-DARDUINO_VARIANT="esp32"
-DARDUINO_BOARD="Espressif ESP32 Dev Module"
-DARDUINO_PARTITION_default
-19
View File
@@ -1,19 +0,0 @@
CompileFlags:
Add:
[
-mlong-calls,
-DSSIZE_MAX,
-DLWIP_NO_UNISTD_H=1,
-Dssize_t=long,
-D_SSIZE_T_DECLARED,
]
Remove:
[
-fno-tree-switch-conversion,
-f*,
-mtext-section-literals,
-mlongcalls,
-fstrict-volatile-bitfields,
-free,
-fipa-pta,
]
+1 -3
View File
@@ -1,7 +1,5 @@
.pio/
.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch
build/
.cache/
-3
View File
@@ -1,3 +0,0 @@
cmake_minimum_required(VERSION 3.16.0)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(usda-platformio)
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -2,7 +2,7 @@
This directory is intended for project specific (private) libraries.
PlatformIO will compile them to static libraries and link into executable file.
The source code of each library should be placed in a an own separate directory
The source code of each library should be placed in an own separate directory
("lib/your_library_name/[here are source files]").
For example, see a structure of the following two libraries `Foo` and `Bar`:
+4 -11
View File
@@ -8,15 +8,8 @@
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:esp32]
platform = espressif32 @ ^6.10.0
board = esp32dev
[env:opta]
platform = ststm32
board = opta
framework = arduino
lib_deps =
FastAccelStepper
PubSubClient
ArduinoJson
RotaryEncoder
ArduinoOTA
ESPmDNS
lib_extra_dirs = ~/Documents/Arduino/libraries
-1866
View File
File diff suppressed because it is too large Load Diff
-6
View File
@@ -1,6 +0,0 @@
# This file was automatically generated for projects
# without default 'CMakeLists.txt' file.
FILE(GLOB_RECURSE app_sources ${CMAKE_SOURCE_DIR}/src/*.*)
idf_component_register(SRCS ${app_sources})
-424
View File
@@ -1,424 +0,0 @@
#include <Arduino.h>
#include <FastAccelStepper.h>
#include <WiFi.h>
#include <PubSubClient.h>
#include <RotaryEncoder.h>
#include <EEPROM.h>
const uint8_t bottom_dir_pin = 5, top_dir_pin = 18;
const uint8_t bottom_step_pin = 4, top_step_pin = 17;
const uint8_t bottom_en_pin = 12, top_en_pin = 16;
const uint8_t encoder_a = 19, encoder_b = 21;
#define EEPROM_SIZE 18
#define EEPROM_BOTTOM_POS_ADDR 0 // 0..3
#define EEPROM_TOP_POS_ADDR 4 // 4..7
#define EEPROM_FLAG_ADDR 8
#define EEPROM_BOTTOM_MOVING_FLAG_ADDR 9
#define EEPROM_TOP_MOVING_FLAG_ADDR 10
#define EEPROM_TOP_BOTTOM_DIFF_ADDR 11 // 11..14 (4 bytes)
#define HOMING_FLAG 0x01
#define NORMAL_FLAG 0x00
#define MOVING_FLAG_SET 0xAA
#define MOVING_FLAG_CLEAR 0x00
const char *ssid = "IOT-pecan";
const char *password = "aaaaaaaa";
const char *mqttServer = "192.168.1.110";
const int mqttPort = 1883;
const char *mqttHeightTopic = "/jc/height";
const char *mqttAngleTopic = "/jc/angle";
const char *mqttStopTopic = "/jc/stop";
const char *mqttHomingFlagTopic = "/jc/homing_mode";
const char *mqttDebugTopic = "/jc/debug";
const char *mqttStatusTopic = "/jc/status";
const char *mqttHeightLogTopic = "/jc/height/log";
const char *mqttAngleLogTopic = "/jc/angle/log";
const char *mqttRPMLogTopic = "/jc/rpm/log";
const int steps_per_thou = 22;
// Mechanical limits in steps (negative = more closed)
static const long POS_MAX_STEPS = 0;
static const long POS_MIN_STEPS = -1665L * steps_per_thou;
FastAccelStepperEngine engine = FastAccelStepperEngine();
FastAccelStepper *bottom_stepper = nullptr;
FastAccelStepper *top_stepper = nullptr;
RotaryEncoder encoder(encoder_a, encoder_b);
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
// Commanded goals
volatile long bottom_step_goal = 0, top_step_goal = 0;
// Commanded "crush" meaning: MIN(bottom, top) == crush_min_steps
volatile long crush_min_steps = 0;
// Angle difference (top - bottom) in steps
volatile long top_angle_difference_steps = 0;
volatile bool bottom_step_done = true, top_step_done = true;
volatile bool bottom_step_sent = false, top_step_sent = false;
volatile bool stop = false;
bool system_locked = false;
static void mqttDebugf(const char *fmt, long v) {
char buf[128];
snprintf(buf, sizeof(buf), fmt, v);
mqttClient.publish(mqttDebugTopic, buf);
}
static void writePositionToEEPROM(int addr, long pos)
{
EEPROM.write(addr, (pos >> 24) & 0xFF);
EEPROM.write(addr + 1, (pos >> 16) & 0xFF);
EEPROM.write(addr + 2, (pos >> 8) & 0xFF);
EEPROM.write(addr + 3, (pos ) & 0xFF);
}
static long readPositionFromEEPROM(int addr)
{
long pos = ((long)EEPROM.read(addr) << 24) |
((long)EEPROM.read(addr + 1) << 16) |
((long)EEPROM.read(addr + 2) << 8) |
((long)EEPROM.read(addr + 3));
return pos;
}
static inline long clampLong(long v, long lo, long hi) {
if (v < lo) return lo;
if (v > hi) return hi;
return v;
}
// Recompute bottom_step_goal and top_step_goal so that:
// min(bottom, top) == crush_min_steps
// top - bottom == top_angle_difference_steps (as much as limits allow)
//
// After clamping, we update crush_min_steps to the achieved min so later angle
// changes don't "resurrect" an impossible crush target.
static void recomputeGoalsFromCrushAndDiff()
{
long diff = top_angle_difference_steps;
long bottomGoal, topGoal;
// Ensure crush_min_steps is within physical limits first.
crush_min_steps = clampLong(crush_min_steps, POS_MIN_STEPS, POS_MAX_STEPS);
if (diff >= 0) {
// bottom is the min (more crushed)
bottomGoal = crush_min_steps;
topGoal = crush_min_steps + diff;
} else {
// top is the min (more crushed)
topGoal = crush_min_steps;
bottomGoal = crush_min_steps - diff; // subtract negative => add magnitude
}
// Clamp both to physical limits (this can distort diff near bounds).
bottomGoal = clampLong(bottomGoal, POS_MIN_STEPS, POS_MAX_STEPS);
topGoal = clampLong(topGoal, POS_MIN_STEPS, POS_MAX_STEPS);
bottom_step_goal = bottomGoal;
top_step_goal = topGoal;
// Update crush_min_steps to what we can actually achieve.
crush_min_steps = (bottomGoal < topGoal) ? bottomGoal : topGoal;
bottom_step_done = false; bottom_step_sent = false;
top_step_done = false; top_step_sent = false;
}
void callback(char *topic, byte *payload, unsigned int length)
{
String topic_str(topic);
String payload_str;
payload_str.reserve(length);
for (unsigned int i = 0; i < length; i++) payload_str += (char)payload[i];
long value = payload_str.toInt();
if (topic_str == mqttHeightTopic && !system_locked)
{
// Convert incoming "height" into steps. Keeping your original offset logic.
// (If this is wrong, it's wrong consistently, at least.)
value -= (1875 - 210);
value *= steps_per_thou;
stop = false;
crush_min_steps = value;
recomputeGoalsFromCrushAndDiff();
}
else if (topic_str == mqttAngleTopic && !system_locked)
{
stop = false;
// value is in thou, convert to steps
top_angle_difference_steps = value * steps_per_thou;
recomputeGoalsFromCrushAndDiff();
}
else if (topic_str == mqttStopTopic && !system_locked)
{
stop = true;
}
else if (topic_str == mqttHomingFlagTopic)
{
if (payload_str != "0")
{
EEPROM.write(EEPROM_FLAG_ADDR, HOMING_FLAG);
mqttClient.publish(mqttDebugTopic, "Startup flag set to HOMING");
}
else
{
EEPROM.write(EEPROM_FLAG_ADDR, NORMAL_FLAG);
mqttClient.publish(mqttDebugTopic, "Startup flag set to NORMAL");
}
EEPROM.commit();
}
}
void reconnect()
{
while (!mqttClient.connected())
{
if (WiFi.status() != WL_CONNECTED) WiFi.reconnect();
Serial.println("Attempting MQTT connection...");
if (mqttClient.connect("ESP32Client"))
{
Serial.println("connected");
mqttClient.subscribe(mqttHeightTopic);
mqttClient.subscribe(mqttAngleTopic);
mqttClient.subscribe(mqttStopTopic);
mqttClient.subscribe(mqttHomingFlagTopic);
}
else
{
Serial.print("failed, rc=");
Serial.print(mqttClient.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}
long last_publish_time = 0;
void setup()
{
Serial.begin(9600);
EEPROM.begin(EEPROM_SIZE);
engine.init();
// Now it's legal to read EEPROM-backed values.
top_angle_difference_steps = readPositionFromEEPROM(EEPROM_TOP_BOTTOM_DIFF_ADDR);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
mqttClient.setServer(mqttServer, mqttPort);
mqttClient.setCallback(callback);
// Establish MQTT connection before any publish attempts.
reconnect();
uint8_t startupFlag = EEPROM.read(EEPROM_FLAG_ADDR);
Serial.print("Startup flag: ");
Serial.println(startupFlag);
if (startupFlag == HOMING_FLAG) {
top_angle_difference_steps = 0;
writePositionToEEPROM(EEPROM_TOP_BOTTOM_DIFF_ADDR, 0);
EEPROM.commit();
mqttClient.publish(mqttDebugTopic, "HOMING: angle diff reset to 0");
}
uint8_t bottomMovingFlag = EEPROM.read(EEPROM_BOTTOM_MOVING_FLAG_ADDR);
uint8_t topMovingFlag = EEPROM.read(EEPROM_TOP_MOVING_FLAG_ADDR);
if (startupFlag != HOMING_FLAG &&
(bottomMovingFlag != MOVING_FLAG_CLEAR || topMovingFlag != MOVING_FLAG_CLEAR))
{
system_locked = true;
mqttClient.publish(mqttDebugTopic, "FAULT: NEEDS HOMING RESET");
Serial.println("System locked: Improper shutdown detected. Awaiting homing reset.");
EEPROM.write(EEPROM_FLAG_ADDR, HOMING_FLAG);
EEPROM.commit();
}
bottom_stepper = engine.stepperConnectToPin(bottom_step_pin);
if (bottom_stepper)
{
bottom_stepper->setDirectionPin(bottom_dir_pin);
bottom_stepper->setEnablePin(bottom_en_pin, false);
bottom_stepper->setSpeedInHz(1000);
bottom_stepper->setAcceleration(250);
if (startupFlag == HOMING_FLAG)
{
Serial.println("Starting in homing mode (bottom)");
bottom_stepper->setCurrentPosition(0);
writePositionToEEPROM(EEPROM_BOTTOM_POS_ADDR, bottom_stepper->getCurrentPosition());
EEPROM.write(EEPROM_FLAG_ADDR, NORMAL_FLAG);
EEPROM.write(EEPROM_BOTTOM_MOVING_FLAG_ADDR, MOVING_FLAG_CLEAR);
EEPROM.commit();
mqttClient.publish(mqttDebugTopic, "Started in HOMING mode, flag cleared");
}
else
{
bottom_stepper->setCurrentPosition(readPositionFromEEPROM(EEPROM_BOTTOM_POS_ADDR));
mqttClient.publish(mqttDebugTopic, "Started in NORMAL mode");
mqttDebugf("Bottom stepper loaded %ld position from EEPROM", bottom_stepper->getCurrentPosition());
}
}
else
{
mqttClient.publish(mqttDebugTopic, "ERROR: bottom_stepper init failed");
}
top_stepper = engine.stepperConnectToPin(top_step_pin);
if (top_stepper)
{
top_stepper->setDirectionPin(top_dir_pin);
top_stepper->setEnablePin(top_en_pin, false);
top_stepper->setSpeedInHz(1000);
top_stepper->setAcceleration(250);
if (startupFlag == HOMING_FLAG)
{
Serial.println("Starting in homing mode (top)");
top_stepper->setCurrentPosition(0);
writePositionToEEPROM(EEPROM_TOP_POS_ADDR, top_stepper->getCurrentPosition());
EEPROM.write(EEPROM_TOP_MOVING_FLAG_ADDR, MOVING_FLAG_CLEAR);
EEPROM.commit();
}
else
{
top_stepper->setCurrentPosition(readPositionFromEEPROM(EEPROM_TOP_POS_ADDR));
mqttDebugf("Top stepper loaded %ld position from EEPROM", top_stepper->getCurrentPosition());
}
}
else
{
mqttClient.publish(mqttDebugTopic, "ERROR: top_stepper init failed");
}
// Initialize crush_min_steps to current achieved minimum so angle changes don't jump.
if (bottom_stepper && top_stepper) {
long b = bottom_stepper->getCurrentPosition();
long t = top_stepper->getCurrentPosition();
crush_min_steps = (b < t) ? b : t;
} else {
crush_min_steps = 0;
}
// Ensure goals are consistent with stored diff at startup.
recomputeGoalsFromCrushAndDiff();
}
void loop()
{
if (!mqttClient.connected()) reconnect();
mqttClient.loop();
encoder.tick();
if (millis() - last_publish_time > 1000)
{
last_publish_time = millis();
if (bottom_stepper && top_stepper) {
mqttClient.publish(mqttHeightLogTopic,
String(1665 + bottom_stepper->getCurrentPosition() / steps_per_thou).c_str());
mqttClient.publish(mqttAngleLogTopic,
String((top_stepper->getCurrentPosition() - bottom_stepper->getCurrentPosition()) / steps_per_thou).c_str());
}
mqttClient.publish(mqttRPMLogTopic, String(encoder.getRPM()).c_str());
}
if (!bottom_stepper || !top_stepper) {
// If steppers didn't init, don't crash the MCU trying anyway.
return;
}
if (system_locked)
{
bottom_stepper->disableOutputs();
top_stepper->disableOutputs();
return;
}
if (stop)
{
bottom_stepper->disableOutputs();
top_stepper->disableOutputs();
}
else
{
bottom_stepper->enableOutputs();
top_stepper->enableOutputs();
}
if (bottom_stepper->getCurrentPosition() != bottom_step_goal &&
!bottom_step_done && !bottom_step_sent)
{
bottom_stepper->moveTo(bottom_step_goal);
bottom_step_sent = true;
EEPROM.write(EEPROM_BOTTOM_MOVING_FLAG_ADDR, MOVING_FLAG_SET);
EEPROM.commit();
Serial.println("Moving bottom stepper");
}
if (top_stepper->getCurrentPosition() != top_step_goal &&
!top_step_done && !top_step_sent)
{
top_stepper->moveTo(top_step_goal);
top_step_sent = true;
EEPROM.write(EEPROM_TOP_MOVING_FLAG_ADDR, MOVING_FLAG_SET);
EEPROM.commit();
Serial.println("Moving top stepper");
}
if (bottom_stepper->getCurrentPosition() == bottom_step_goal &&
!bottom_step_done && bottom_step_sent)
{
bottom_step_done = true;
bottom_step_sent = false;
writePositionToEEPROM(EEPROM_BOTTOM_POS_ADDR, bottom_stepper->getCurrentPosition());
writePositionToEEPROM(EEPROM_TOP_BOTTOM_DIFF_ADDR, top_angle_difference_steps);
EEPROM.write(EEPROM_BOTTOM_MOVING_FLAG_ADDR, MOVING_FLAG_CLEAR);
EEPROM.commit();
Serial.println("Bottom stepper done");
}
if (top_stepper->getCurrentPosition() == top_step_goal &&
!top_step_done && top_step_sent)
{
top_step_done = true;
top_step_sent = false;
writePositionToEEPROM(EEPROM_TOP_POS_ADDR, top_stepper->getCurrentPosition());
writePositionToEEPROM(EEPROM_TOP_BOTTOM_DIFF_ADDR, top_angle_difference_steps);
EEPROM.write(EEPROM_TOP_MOVING_FLAG_ADDR, MOVING_FLAG_CLEAR);
EEPROM.commit();
Serial.println("Top stepper done");
}
}
+131
View File
@@ -0,0 +1,131 @@
#include <WiFi.h>
#include <PubSubClient.h>
#undef DEBUG
const char* ssid = "IOT-pecan";
const char* password = "aaaaaaaa";
const char* mqttServer = "192.168.1.110";
const int mqttPort = 1883;
const char* mqttTopic = "/sheller/angle";
WiFiClient wifiClient;
PubSubClient client(wifiClient);
String inputString = "";
const float homeAngle = 2.5;
const unsigned long fullRetractTime = 14000;
const unsigned long homeTime = 4030;
const float maxAngle = 5.5;
const float minAngle = 2.5;
const unsigned long timeTo5Degrees = 8200;
void setup() {
#ifdef DEBUG
Serial.begin(9600);
#endif
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
#ifdef DEBUG
Serial.println("Connecting to WiFi...");
#endif
}
#ifdef DEBUG
Serial.println("Connected to WiFi");
#endif
client.setServer(mqttServer, mqttPort);
client.setCallback(callback);
digitalWrite(LED_BUILTIN, HIGH);
pinMode(RELAY3, OUTPUT);
pinMode(RELAY4, OUTPUT);
}
void loop() {
unsigned int wifiRetryCount = 0;
if (WiFi.status() != WL_CONNECTED){
WiFi.disconnect();
WiFi.reconnect();
while (WiFi.status() != WL_CONNECTED){
if (wifiRetryCount++ > 5) return;
delay(1000);
}
}
if (!client.connected()) {
reconnect();
}
client.loop();
#ifdef DEBUG
while (Serial.available() > 0) {
char inChar = Serial.read();
if (inChar == '\n') {
handleInput(inputString);
inputString = "";
} else {
inputString += inChar;
}
}
#endif
}
void callback(char* topic, byte* payload, unsigned int length) {
String input;
for (int i = 0; i < length; i++) {
input += (char)payload[i];
}
handleInput(input);
}
void handleInput(String input) {
float desiredAngle = input.toFloat();
if(desiredAngle == 0) {
// Fully retract without homing
digitalWrite(RELAY3, HIGH);
delay(fullRetractTime);
digitalWrite(RELAY3, LOW);
}
else if (desiredAngle >= minAngle && desiredAngle <= maxAngle) {
// Fully retract
digitalWrite(RELAY3, HIGH);
delay(fullRetractTime);
digitalWrite(RELAY3, LOW);
// Home
digitalWrite(RELAY3, HIGH);
digitalWrite(RELAY4, HIGH);
delay(homeTime);
digitalWrite(RELAY3, LOW);
digitalWrite(RELAY4, LOW);
unsigned long timeToDesiredAngle = ((desiredAngle - homeAngle) / (maxAngle - homeAngle)) * timeTo5Degrees;
// Move to desired angle
digitalWrite(RELAY3, HIGH);
digitalWrite(RELAY4, HIGH);
delay(timeToDesiredAngle);
digitalWrite(RELAY3, LOW);
digitalWrite(RELAY4, LOW);
}
}
void reconnect() {
while (!client.connected()) {
if (client.connect("ArduinoClient")) {
client.subscribe(mqttTopic);
} else {
delay(5000);
}
}
}