Проблема с преобразованием данных

Здравствуй форум, столкнулся с незнакомым мне типом данных или еще чего, честно не знаю
балуюсь Blynk, есть 2 устройства, первое счетчик PZEM-004t, второе типа главное устройство, узнал я про вебхуки и решил попробовать, строчка из кода

BLYNK_WRITE(V20){String volt = param.asStr(); Serial.print(" Напряжение - "); Serial.println(volt);}

в порту вот такое
[10222] Connecting to 192.168.1.250
[10466] Ready (ping: 2ms).
-Сервер вижу-
192.168.1.5
Напряжение - [“235.300”]
Напряжение - [“235.900”]
Напряжение - [“236.100”]
Напряжение - [“235.400”]
Напряжение - [“235.700”]
Напряжение - [“237.000”]

честно не понимаю почему переменная volt в квадратных скобках еще и с кавычками и как вытащить из нее данные в тип Float (на первом устройстве они в этом типе хранятся)

P.S. пробовал яндексить, куда то меня не туда увело

Что просите, то и получаете !
param.asFloat()

пробовал, ругается компилятор

Compilation error: conversion from 'float' to non-scalar type 'String' requested

Без кода говорить не о чем …

это и есть весь код, получаем данные, печатаем, вопрос почему печатается так, это какой то тип данных, который я не знаю

это тип String
float volt = param.asFloat() - у вас так же при ошибке ???

если делаю так то в порту

[10466] Ready (ping: 2ms).
-Сервер вижу-
192.168.1.5
 Напряжение - 0.00
 Напряжение - 0.00

Теперь разбирайтесь с передатчиком.

по концепции мне туда и лезть не надо, я могу сделать запрос на любой сервер, нужно только разобрать ответ

Тогда в первом варианте отделяйте по два символа с начала и конца строки.
string .substring(from, to)

1 лайк

Как данные видны в пакете ?

пробую

Такое чувство, что данные “пакуются” в строку с этими самыми кавычками и скобками на стороне сервера, поэтому и ноль при преобразовании во float. Не?

1 лайк
BLYNK_WRITE(V20){  String volt = param.asFloat(); volt.substring(2,9); Serial.print(" Напряжение - "); Serial.println(volt);}

ответ компилятора
Compilation error: conversion from ‘float’ to non-scalar type ‘String’ requested

попробую, может это не строка, а массив символов и их как то по индексу оттуда выковыривать

Смотри на:

да я заметил, не успел исправить

BLYNK_WRITE(V20){  String volt = param.asStr();  Serial.print(" Напряжение - "); Serial.println(volt.substring(2,9));}

вот такой строчкой удалось получить вот такой ответ
[10474] Ready (ping: 1ms).
-Сервер вижу-
192.168.1.5
Напряжение - 234.100
Напряжение - 233.400

Опять ошибка на горизонте !!! 9 надо заменить на (volt.length()-2)

1 лайк

да вы правы , по вашему правильней, просто там данные фиксированной длины,
помог ваш совет, заработало так

volt=(volt.substring(2,8));
float Volt=volt.toFloat();

спасибо огромное