开源改变世界

配置无效。检查 ERR 的引导消息。 #15

推推 grbl 3年前 (2023-02-05) 212次浏览
关闭
ajquick 打开了这个问题 2021 年 9 月 15 日 · 9条评论
关闭

配置无效。检查 ERR 的引导消息。#15

ajquick 打开了这个问题 2021 年 9 月 15 日 · 9条评论

评论

配置无效。检查 ERR 的引导消息。 #15
贡献者

版本 3.1.3 发布

我正在测试最新版本,看看它与 Grbl_Esp32 相比如何工作。我已经根据示例编写了一个 YAML 配置。无论我做什么,配置都是无效的,但它不会向我显示任何ERR消息来确定它们是什么。

我已经将 YAML 减少到最基本的设置,看看我是否能够确定问题出在哪里。我发现即使只有 Wi-Fi 设置它也会失败。

示例 YAML:

name: Wi-Fi Test
board: Wi-Fi Test

comms:
  telnet_enable: true
  telnet_port: 23
  http_enable: true
  http_port: 80
  hostname: fluidnc
  wifi_sta:
    ssid: My Wifi Network

这是发生了什么:

[MSG:INFO: STA SSID FluidNC DHCP]
[MSG:INFO: Connecting.]
[MSG:INFO: Connecting..]
[MSG:INFO: No SSID]
[MSG:INFO: WiFi off]

如您所见,它尝试连接到名为“FluidNC”的 Wi-Fi STA,而不是我指定的 Wi-Fi 网络。

我意识到wifi_ap可能是必需的密钥,所以我将其重新添加并更新 YAML。

name: Wi-Fi Test
board: Wi-Fi Test

comms:
  telnet_enable: true
  telnet_port: 23
  http_enable: true
  http_port: 80
  hostname: fluidnc
  wifi_ap:
    ssid: FluidNC
  wifi_sta:
    ssid: My Wifi Network

然后,我们进行了正确的连接尝试,随后失败并退回到试驾模式下的 AP。

ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5856
entry 0x400806a8

[MSG:INFO: STA SSID My Wifi Network DHCP]
[MSG:INFO: Connecting.]
[MSG:INFO: Connecting..]
[MSG:INFO: Connected - IP is 192.168.0.XX]
[MSG:INFO: WiFi on]
[MSG:INFO: Start mDNS with hostname:http://fluidnc.local/]
[MSG:INFO: SSDP Started]
[MSG:INFO: HTTP Started]
[MSG:INFO: Telnet Started on port 23]

Grbl 3.1 [FluidNC v3.1.3 '$' for help]
[MSG:INFO: Configuration is invalid. Check boot messages for ERR's.]
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC      : 0x400e5443  PS      : 0x00060630  A0      : 0x800e5ebd  A1      : 0x3ffd1280  
A2      : 0x00000000  A3      : 0x3ffc5920  A4      : 0x3ffd12f0  A5      : 0x3ffccc74  
A6      : 0x00000003  A7      : 0x00000000  A8      : 0x3f800000  A9      : 0x3ffd1260  
A10     : 0x3ffd12f0  A11     : 0x3f409a1e  A12     : 0x00000000  A13     : 0x00000000  
A14     : 0x3ffe7194  A15     : 0x00000000  SAR     : 0x0000000a  EXCCAUSE: 0x0000001c  
EXCVADDR: 0x00000010  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xfffffffe  

ELF file SHA256: 0000000000000000

Backtrace: 0x400e5443:0x3ffd1280 0x400e5eba:0x3ffd12c0 0x400e6bff:0x3ffd1320 0x400e52e1:0x3ffd1360 0x400dbde2:0x3ffd1380 0x40108b38:0x3ffd13d0 0x40092d16:0x3ffd13f0

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5856
entry 0x400806a8

[MSG:INFO: Machine Default (Test Drive)]
[MSG:INFO: Board None]
[MSG:INFO: SPI SCK:gpio.18 MOSI:gpio.23 MISO:gpio.19 CS:gpio.5]
[MSG:INFO: Stepping:RMT Pulse:4us Dsbl Delay:0us Dir Delay:0us Idle Delay:255ms]
[MSG:INFO: Axis count 3]
[MSG:INFO: Axis X (-200.000,0.000)]
[MSG:INFO: Axis Y (-200.000,0.000)]
[MSG:INFO: Axis Z (-200.000,0.000)]
[MSG:INFO: No spindle]
[MSG:INFO: Using spindle NoSpindle]
[MSG:INFO: AP SSID FluidNC IP 10.0.0.1 mask 255.255.255.0 channel 1]
[MSG:INFO: AP started]
[MSG:INFO: WiFi on]
[MSG:INFO: Captive Portal Started]
[MSG:INFO: HTTP Started]
[MSG:INFO: Telnet Started on port 23]

Grbl 3.1 [FluidNC v3.1.3 '$' for help]

如您所见,它连接到 YAML 文件中指定的 Wi-Fi 网络。然后它确定配置有问题,因此决定断开 Wi-Fi 并广播接入点。这种情况不会每次都发生,有时它会在 STA 模式下保持连接到 Wi-Fi。

在配置失败后尝试调整设置时会出现问题。

FluidNC 命令和设置使用 $ 格式。它们只能在空闲模式下使用。

配置失败时,会产生以下错误:152: Configuration is invalid。检查 ERR 的引导消息。

但是,有些东西需要在 152 错误期间更改,但尝试进行更改会导致以下错误: 8:命令需要空闲状态。

在 152 错误期间可能需要更改的设置示例:

  • $STA/密码
  • $配置/文件名

可能还有其他人。从这个问题中恢复的唯一方法是使用 $NXV 并彻底清除配置,然后通过进入 AP(试驾)模式重新开始,然后设置 Wi-Fi 密码并更新配置文件并重试。

尝试使用 $X 清除警报不会执行任何操作。它只是重复 152 错误。

有关完整信息,我尝试使用的 YAML 是这样的:

name: Test
board: Test

stepping:
  idle_ms: 250
  engine: I2S_STREAM

axes:
  shared_stepper_disable: gpio.13:low

  x:
    steps_per_mm: 800
    max_rate: 2000
    acceleration: 25
    motor0:
      limit_pos: gpio.18
      stepstick:
        step: i2so.13
        direction: i2so.12

  y:
    steps_per_mm: 800
    max_rate: 2000
    acceleration: 25
    motor0:
      limit_pos: gpio.23
      stepstick:
        step: i2so.10
        direction: i2so.5

  z:
    steps_per_mm: 800
    max_rate: 2000
    acceleration: 25
    motor0:
      limit_pos: gpio.19
      stepstick:
        step: i2so.4
        direction: i2so.3

  a:
    steps_per_mm: 800
    max_rate: 2000
    acceleration: 25
    motor0:
      limit_pos: gpio.22
      stepstick:
        step: i2so.2
        direction: i2so.1

i2so:
  bck: gpio.2
  data: gpio.15
  ws: gpio.14

coolant:
  flood: i2so.11
  mist: i2so.15

comms:
  telnet_enable: true
  telnet_port: 23
  http_enable: true
  http_port: 80
  hostname: fluidnc
  wifi_sta:
    ssid: My Wifi Network
  wifi_ap:
    ssid: FluidNC

verbose_errors: true
NoSpindle:

我应该提一下,其中一个示例配置文件的格式不正确。我最初的配置基于此文件:https ://github.com/bdring/FluidNC/blob/main/example_configs/3axis_v4.yaml

它似乎是基于较旧的模式。

最后,这只是我在努力测试配置几个小时后的看法:

Wi-Fi / AP / Bluetooth 设置应该返回到内存变量中进行配置。将 Wi-Fi 密码专门存储在内存中而所有其他设置都存储在 YAML 中会适得其反。我想看到的是这样的层次结构:

  1. Wi-Fi 设置、模式、密码等应使用以前的 Grbl_Esp32 样式变量在内存中配置。
  2. Wi-Fi、AP 等可以被 YAML 配置取代。
  3. 如果 YAML 未定义。应使用内存中的设置(即使在测试模式下)。
  4. 如果 YAML STA 模式失败,应该回退到 YAML AP(如果已定义),然后是内存变量。

我对此的推理,除了处理 ESP32 连接到 STA 然后在配置失败期间回落到 AP 模式的头痛之外,是我设想在需要 Wi-Fi(或以太网)连接的环境中使用设备并且出于安全考虑,AP 模式是不需要的。是的,我知道接入点可以有一个非常复杂的密码,但我想有些人不希望强制回退到 AP。接入点回退是否可以作为一种选择,而不是默认情况下发生的事情?

YAML 文件是否可以写入内存(例如 Wi-Fi 密码),然后从 YAML 中删除密码并将更新后的文件保存到 SPIFF 文件系统?

示例:如果在 YAML 中找到 Wi-Fi 密码,则复制到内存变量,然后使用 $CD=(current config filename) 或其他方法覆盖 YAML 以删除该行并覆盖文件。

配置无效。检查 ERR 的引导消息。 #15 ajquick 添加了 漏洞 仅供开发者使用标签 2021 年 9 月 15 日
配置无效。检查 ERR 的引导消息。 #15
贡献者作者

修复了示例 YAML 文件“3axis_v4.yaml”。

549337b

配置无效。检查 ERR 的引导消息。 #15
所有者

我们仍在对模式进行细微的更改。一些示例可能已损坏。我们也在努力改进对 yaml 错误的反馈。

我会尽快加载并修复您的文件。

配置无效。检查 ERR 的引导消息。 #15
所有者

我尝试加载它并遇到类似的问题。如果您发送 $CD 来显示加载的配置,它似乎已经加载了所有内容。我不太确定它不高兴的是什么。你能告诉我你加载的是什么版本(wifi、wifibt、bt、noradio)吗?

我有一个正在开发的新版本。它似乎可以很好地加载。不知道为什么。

我可能会在当天结束前向您发送编译后的二进制文件。新版本的设计只是为了让 SD 卡和 SPI 总线更加灵活。

配置无效。检查 ERR 的引导消息。 #15
贡献者作者

你能告诉我你加载的是什么版本(wifi、wifibt、bt、noradio)吗?

我在 Wifi 和 Wifibt 上进行了测试,结果相似。

奇怪地导出默认测试驱动器($CD=test.yaml)然后设置配置($Config/Filename=test.yaml)也会抛出关于配置错误的相同错误。

配置无效。检查 ERR 的引导消息。 #15
所有者

对了,不知道是什么问题。通常这样保存是一件好事,因为您会看到所有默认值供以后参考。

在 Wiki 上搜索 Discord。您可以在那里获得实时帮助,但我们已经在努力了。

配置无效。检查 ERR 的引导消息。 #15
贡献者作者

测试了新的二进制文件。它正在工作,但我确实发现了问题的一部分。

这不起作用:

name: "Wi-Fi Test"
board: "Wi-Fi Test"

comms:
  telnet_enable: true
  telnet_port: 23
  http_enable: true
  http_port: 80
  hostname: fluidnc
  wifi_sta:
    ssid: My Wi-Fi Network
  wifi_ap:
    ssid: FluidNC

但这确实:

name: "Wi-Fi Test"
board: "Wi-Fi Test"

comms:
  telnet_enable: true
  telnet_port: 23
  http_enable: true
  http_port: 80
  hostname: fluidnc
  wifi_sta:
    ssid: My Wi-Fi Network
  wifi_ap:
    ssid: FluidNC

区别纯粹是最后多了一行。这是错误:

[MSG:ERR: 配置解析错误:缺少行尾 @ 13:19 键 …]

我还发现,当 Wi-Fi 连接成功但配置无效时,设备会在尝试连接后立即重置为默认 AP 设置。所以它会成功连接到我的 STA Wi-Fi,然后只要我打开 WebUI,它就会在试驾模式下重置设备。

配置无效。检查 ERR 的引导消息。 #15
所有者

很高兴听到你取得了更大的成功。感谢您的反馈。

  • 我们总是期望所有文件都有一个行结束。我在 wiki 中添加了一些关于它的注释。
  • 目前我们对默认模式无能为力。你对 Wifi 问题提出了一些很好的观点。

我目前正在努力通过更好的信息使配置文件的创建不那么令人沮丧。更多的警告和忽略,更少的失败和回退到默认值。

配置无效。检查 ERR 的引导消息。 #15
贡献者作者

那将是理想的。我正在做一些我相信也会有很大帮助的事情。

这是我为 YAML 文件创建的JSON 架构。

https://gist.github.com/ajquick/d6d3b67b5b8aede986e500d3be40b5ee

基本上,JSON 和 YAML 非常相似。JSON 已经有一个非常广泛采用的验证模式,而 YAML 几乎没有。从 YAML <-> JSON <-> YAML 来回转换非常简单。

我通过创建这个来设想:

  • YAML 配置可以在上传到 ESP32 之前进行验证。(YAML 检查器)
  • 可以从模式创建 YAML 生成程序、GUI 等。
  • 可以从模式生成文档/Wiki 以确保所有密钥都被考虑在内。
  • 可以快速找到必填字段和其他数据验证问题(如拼写错误)并进行报告。

JSON Schema广泛存在于许多不同的语言中,因此希望可以从中创建许多有用的东西。

配置无效。检查 ERR 的引导消息。 #15
所有者

谢谢,

我们已经讨论过制作一个在线工具来完成您正在谈论的事情。我们最终将为本地文件系统提供串行上传协议。这将有助于在建立 Wifi 之前获得稳定的配置。

在一个地方验证、上传、监控会很棒。

你应该加入我们的 Discord。

https://discord.gg/PBsFB63U