• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопросы по языку и синтаксису.

TRO

Member
Создал это темку чтобы не засорять другие.
Предлагаю обсуждать возникшие вопросы по непоняткам с языком (когда прочтения мануала мало) и когда результат не совпадает с примерами.

Подсмотрел в мануале https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en#nm_readvdd33 такой код:
Код:
Example
    print(node.readvdd33())

output

3345
    v = node.readvdd33() / 1000
    print(v)
    v=nil

output

3.315
Короче делим число на тысячу чтобы получить вольтаж с запятой.

Я значит вставляю это в пример с "кнопкой вебсервера", при этом переменная после деления выводится что на веб страницу, что в компорт без знаков после запятой, т.е. было 1319, а стало 1. Подскажите где там задаются параметры для переменных, а то поиски в мануале по float, format и прочим пришедшим в голову ключевым словам не приблизил меня к решению.
 
Последнее редактирование:

NeoroN

Member
Обновите прошивку - флоат только недавно включили пару дней назад. До этого он был выключен.
 

TRO

Member
Заглянул в прошивки, походу у меня последняя 20150126.bin
Походу все же переменным надо тип указывать, вот только как....
 
Стандартно LUA не имеет ТИПА переменной. Есть операции "/" - деление, "//" - деление без остатка, "%" - модуль (те дробная часть). НОООООООООООООО
В реализации которую имеем - "/" - это деление БЕЗ остатка.
Используйте выражение - (v / 1000).."."..(v % 1000), ну или регулярным выражением...
 
  • Like
Реакции: TRO
ай ай...
2015-01-27
support floating point LUA.

Ну а кто будет переделывать ds18b20, dht22 и наверно есть еще..
Вот в этом весь ESP8266.
 

TRO

Member
Игорь спасибо, я попробовал ваш способ, но он не прокатывает.
Используйте выражение - (v / 1000).."."..(v % 1000), ну или регулярным выражением...
Фокус в том что если взять к примеру число 2055 и таким образом поделить на 1000, то в остатке будет 055, нолик интерпретатор сжирает и на выходе получается 2.55 вместо 2.055. Вот такие пироги. Тут думаю надо или делать как то цепочкой делений на 10, или искать выход по проще.
 

DeXP

New member
Вопрос по той же wifi.sta.getap(function(table)). Как дождаться окончания её выполнения? Может есть что-то типа : on("end"), как в HTTP? Мне нужно собрать все видимые точки в строку, а потом POST-запросом послать на сервер.
 
Последнее редактирование:

sevic

New member
"Как дождаться окончания её выполнения?" - в описании API сказано "function(table): a callback function to receive ap table when scan is done" т.е. она будет вызвана по завершении сканирования . В эту функцию как раз и можно поместить нужный код. Думаю так:

wifi.sta.getap(scanComplete(list))

function scanComplete(
-- do whatever you need...
)
 

Кирилл

New member
код
Код:
print('hello world')
выводит строку в консоли hello world но и ошибку
Код:
Error: wide characters found or printf() bug.
Это серьезно ?
 

JustACat

Moderator
Команда форума
Кирилл, скорее всего что-то не так с кодировками где-то. Либо файл не в той кодировке какой-то создали, либо код скопировали откуда-то, где кодировка какая-то левая была.
Точнее не скажешь, так как вырвано из контекста, и неясно, что и как вы делали.
Еще может кавычки стоит на двойные заменить?.. Не знаю, честно говоря, как в этом LUA должно быть :-Р
 

JustACat

Moderator
Команда форума
Кирилл, попробуйте сделать по чистому: новый полностью файл, либо как вы там пишете.
Взять и руками с клавиатуры ввести по новой эту строку, ничего ниоткуда не копирую, тогда как?
 

Cadil

New member
в зависимости от версии NodeMCU нужно использовать или adc.readvdd33() или node.readvdd33(), а у вас reaDDD33
adc - NodeMCU Documentation
Вводил ту и другую команду, ответы те же -
lua: web_n4.lua:9: attempt to index global 'adc' (a nil value)
Прошу отнестись к моей проблеме серьезно. Дело в том, что некоторые скрипты, которые работают у других - у меня не работают по аналогичной причине: переменная - nil.
У меня -
ESP8266 ESP01.
NodeMCU custom build by frightanic.com
branch: master
commit: c8037568571edb5c568c2f8231e4f8ce0683b883
SSL: false
modules: bit,file,gpio,mqtt,net,node,ow,tmr,uart,wifi
build built on: 2016-02-19 07:23
powered by Lua 5.1.4 on SDK 1.4.0

Какую еще информацию надо предоставить?
 
Последнее редактирование:

Victor

Administrator
Команда форума
Сверху Снизу