ESP-8266/ESP32 NodeMCU Lua: азы программирования.

Тема в разделе "ESP8266, ESP32", создана пользователем ИгорьК, 25 июл 2017.

  1. SergeiL

    SergeiL Оракул Модератор

    Читаем правила, вставляем код правильно!
     
    NikitOS нравится это.
  2. Valeriy_esp

    Valeriy_esp Нерд

    Почему вы решили, что вы с профессором у меня не в милости, я не знаю. Я про вас
    и про профессора ни чего плохого не писал. Наоборот, вам лично я благодарен, за ваш труд.
    А кто у меня не в милости, так это Atmel, который расслабился почивая на лаврах, и дал себя обойти.
    Да и весь мир кудо-то катится. Когда создавали язык высокого уровня, его создавали так, чтобы операционная
    система понимала простые словарные выражения и переводила их в машинные коды, что бы машина
    могла реализовать желание человека.
    А к чему пришли сейчас? Я должен разложить по полочкам, что и как, в какой последовательности
    должен делать процессор (контроллер), что бы на выходе получить то, что мне нужно. Это о кальбаке.
    К стати в C# там тоже, всякие делегаты и кальбаки. Я считаю, что эти делегаты и кальбаки, должны были
    реализовать системщики.
    Китайцы произвели модуль. Но подобраться к нему не просто. Предлагаете Ардуино. Я его не люблю.
    Объёмный и непонятный. Для меня проще написать код для АVR на ассемблере, чем на ардуино.
    Вспоминаю Sincler, линейное программирование на бейсике или на ассемблере, озу 48кбайт.
    У NodeMCU 256kb и всё равно нужны прерывания и освобождение памяти от переменных. Интересно, а как
    на ассемблере выглядел бы код, когда система переменную под значение не выделяет, а подразумевает
    что значение существует(как то так?).
    Модуль ds18b20m можно загрузить только с 3-го или с 4-го раза. Загрузку и конфигурацию
    операционной системы (nodemcu-firmware) сделали через сайт. не догадались сделать загрузку модулей так же, как мы загружаем
    драйвера на компьютер. Docker? Но у меня Win7, а ему нужен Win10 или Linux. Сплошные препоны. Зато дёшево.
    Прошу прощения за дерзкую критику. С уважением к вам.
     
  3. ИгорьК

    ИгорьК Гуру

    Тут меня куда как круче во всех грехах обвиняют. Дело не в этом.

    Я делаю на ESP-8266 и Lua все что мне надо.

    Ну вот объясню вам я, что функция unpack в версии 5.1 отсутствует, книга Иерусалимски о версии 5.2 или 5.3, уж не помню точно. И точно я указывал на это (версии) в пункте о книге.

    А что там в моем примере не работает - фиг поймёшь, потому что вы код вставить нормально не научились. (Судя по реакции интерпретатора в коде не хватает завершающего end, но точно не скажешь с таким вашим оформлением).

    И что, мне дальше работать с вами - вы не в себе проблему видите, а во всем остальном.
     
    Последнее редактирование: 9 июл 2020
    SergeiL нравится это.
  4. SergeiL

    SergeiL Оракул Модератор

     
    ИгорьК нравится это.
  5. Valeriy_esp

    Valeriy_esp Нерд

    "вы не в себе проблему видите, а во всем остальном" - я почему-то думаю, что если я не могу, то найдётся и ещё много таких как я, которые не смогут разобраться. Получается Lua + ESP-8266 не для "средних" умов.
    О вашем примере:
    print(string.format("%d", data))
    ...
    sum = sum + 1
    я переделал две строчки, код стал выполняться, а смысл (сущность) примера не потерялся.
    Вот и мне хочется сделать: измерить температуру в трёх точках и влажность в двух. Каждый час, эти значения заносить в таблицу и передавать на FTP сервер роутера. К роутеру подключен жесткий диск, на него и писать данные за последние сутки. На компьютере читать файл с FTP и выводить графики.

    А вот интересно, система и библиотеки в ардуино учитывают, что код должен работать асинхронно и с прерываниями? Или же, библиотеки написаны так же как и модуль ds18b20. Не спроста же его исключили из nodemcu-firmware, в то время как OW оставили. В своём примере вы применяете math, это то ли модуль или библиотека?
     
    Последнее редактирование модератором: 16 июл 2020
  6. ИгорьК

    ИгорьК Гуру

    Я не знаю и не умею отвечать на абстракции.
    По unpack я ответил, по своему "неработающему" коду, который вы так и не привели - не знаю. У меня здесь чуть больше одного сообщения с кодом, чтобы понимать о чем идет речь.
     
  7. ИгорьК

    ИгорьК Гуру



    Что еще?
     
  8. Valeriy_esp

    Valeriy_esp Нерд

    Вам интересен ваш код? пожалуйста:
    Только меня не это сейчас волнует. Почему я не могу получить температуру с датчика ds18b20. Библиотеку я использую вашу ds18b20m. Когда я подключил её в первый раз, мне удалось считать температуру, но только один раз. Затем ESP ушёл в бесконечную перезагрузку. Тогда у меня был создан коннект по wIFI и сервер HTTP на сокетах. Сейчас я перешил ESP, не создавал коннекта и сервера. Загружены два файла: init.lua и ds18b20m.lua. Запуск произвожу через функцию
    Код (C++):
    do
    temp = {}
    pin = 4
    del = 750
      function myWork()
        print("Got DS18b20: "..#temp)
        table.foreach(temp, print)
        ds = nil
        package.loaded["ds18b20m"]=nil
      end
       ds = require('ds18b20m')
       ds.getTemp(temp, myWork, pin, del )
    end
     
    но удаётся получить только адрес датчика.
    В init.lua у меня одна строчка: print("OK")
    C уважением.
     

    Вложения:

    • Callback.jpg
      Callback.jpg
      Размер файла:
      147,6 КБ
      Просмотров:
      21
  9. ИгорьК

    ИгорьК Гуру

    Видео я сделал персонально для вас, там все работает. Код один в один как на скриншоте.

    Могу сделать и с датчиком DS18b20. Там тоже все будет работать.

    Да, я приблизительно понимаю почему у вас это не работает. Для точного выяснения причины мне надо плотнее заняться вашими действиями, но, поймите - хочется ли мне это делать после первого же вашего поста? Мы взрослые люди.
     
    Последнее редактирование: 9 июл 2020
  10. swc

    swc Нерд

    Где-то прочитал, цитата: - "Что бы вы не делали на ESP - получается очередная метеостанция". Чтобы получилось что-то другое, надо кроме Lua читать матчасть по датчикам, интерфейсам и прочему, что бы понимать, как все взаимодействует. Тогда проблем не будет.
     
  11. ИгорьК

    ИгорьК Гуру

    ESP идеально под это заточена. Но тезис этот как раз от чувака, который публиковал на Хабре стопятьсотую метеостанцию :)
    С другой стороны, часто контроль ряда параметров температуры, в первую очередь, а иногда и влажности просто критически необходим в частных домах.
     
  12. alp69

    alp69 Форумчанин

    Может светодиодиком с помощью callback'a помигать, да таймеры освоить, прежде чем измерениями заниматься?
     
    NikitOS и SergeiL нравится это.