Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. fred17

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    F
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 6
    • Best 0
    • Groups 0

    fred17

    @fred17

    0
    Reputation
    6
    Profile views
    6
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    fred17 Follow

    Latest posts made by fred17

    • RE: Разные ошибки

      @instalator:

      @fred17:

      Возникли проблемы с установкой и обновлением модулей. При установке или обновление вылетает такая ошибка.

      Пример при установки телеграм

      ! $ ./iobroker add telegram
      ! npm install iobroker.telegram –production --prefix "/opt/iobroker" (System call)
      ! ../src/node_contextify.cc:254: static void node::ContextifyContext::RunInDebugContext(const v8::FunctionCallbackInfov8::value&): Assertion `!debug_context.IsEmpty()' failed.
      ! Aborted
      ! ERROR: host.smarthome Cannot install iobroker.telegram: 134
      ! ERROR: process exited with code 25</v8::value>

      До этого все обновлялось и устанавливалось без проблем из Админки или из консоли.

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

      Куда копать? `

      nodejs какой версии? из админки тоже не обновляет? `

      Версия node 4.7.0 из админки не обновляются. Заметил, что все это перестало работать после того как я обновил сервер с версии 1.2.1 или 1.2.2 (точно не помню какая перед этим стояла) на 1.2.3. До этого случая система работала год без сбоев.

      posted in ioBroker ошибки
      F
      fred17
    • RE: Разные ошибки

      Возникли проблемы с установкой и обновлением модулей. При установке или обновление вылетает такая ошибка.

      Пример при установки телеграм

      ! $ ./iobroker add telegram
      ! npm install iobroker.telegram –production --prefix "/opt/iobroker" (System call)
      ! ../src/node_contextify.cc:254: static void node::ContextifyContext::RunInDebugContext(const v8::FunctionCallbackInfov8::value&): Assertion `!debug_context.IsEmpty()' failed.
      ! Aborted
      ! ERROR: host.smarthome Cannot install iobroker.telegram: 134
      ! ERROR: process exited with code 25</v8::value>

      До этого все обновлялось и устанавливалось без проблем из Админки или из консоли.

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

      Куда копать?

      posted in ioBroker ошибки
      F
      fred17
    • RE: Панель управления на ESP8266 и Nextion

      Добавил пример проект для nextion.

      Большие экраны это хорошо, но не критично :), данный экран считаю справляется со своей задачей, все комплектующие с рамкой обошлись примерно в 2000р. Если поставить блок ac-dc с 220 на 5v то его можно воткнуть вместо выключателя.

      Не использовал родную библиотеку для Nextion?

      posted in Железо
      F
      fred17
    • Панель управления на ESP8266 и Nextion

      Решил сделать панель управления умным домом на ESP8266 и монитор Nextion 3.5"

      Что для этого нужно:

      1)Блок питания с 24-12В на 5В

      2)ESP8266

      3)Sensor temp HTU21D

      4)Nextion 3.5"

      5)Распечатка крышки на 3d принтере

      ESP модуль принимает данные с Nexton и датчика температуры, данные отправляет на сервер по MQTT, пока сделал управление температурой, т.к. управлять в комнате больше нечем.

      Но можно настроить экран на любые функции, например управление светом, тогда выключатели в комнате не нужны будут.

      Ссылка на STL файлы крышки + фото + описание комплектующих с ссылками на них:

      https://www.thingiverse.com/thing:2603232

      Все это управляется по MQTT

      Выкладываю пример код как есть на данный момент для ESP8266, его нужно доделывать, но и так работает уже больше месяца, пока без каких либо проблем 🙂 :

      ! ```
      `#include <nextion.h>
      #include <esp8266wifi.h>
      #include <wificlient.h>
      #include <esp8266webserver.h>
      #include <esp8266mdns.h>
      #include <esp8266httpupdateserver.h>
      #include <eeprom.h>
      #include <mqtt.h>
      #include <wire.h>
      #include "Adafruit_HTU21DF.h"
      ! void SendData(String& topic, String& data);
      void myPublishedCb();
      void myDisconnectedCb();
      void myConnectedCb();
      ! // ------------------------------Определяем псевдонимы топиков------------------------------------------------------------------
      #define CLIENT_ID "kitchen"
      #define TEMPOUT "/kitchen/temp_out" //температура снаружи
      #define TEMPEND "/kitchen/temp_end" //выставленная температура
      #define TIME "/kitchen/time" //время
      // #define PIR D1 // gpio 5
      ! Adafruit_HTU21DF htu = Adafruit_HTU21DF();
      ! //----переменные для сервера MQTT---------------
      const uint32_t& port = 1883;
      const char* ip_adr = "..."; //Введите IP сервера MQTT
      ! //--------переменные для Nextion---------------
      String incStr = ""; // Это будет приемник информации от Nextion
      bool serialReadFlag = false; //Флаг проверки сообщения пришедшего от Nextion
      ! //-------------настройки WEB Server
      String webPage = "";
      String str = "";
      boolean conf = false;

      // char pir = 0; //Для датчика движения
      String iphost = "";
      int count = 0;

      ! IPAddress ip(,,,); //Статический IP адресс
      IPAddress gateway(192,168,1,1);
      IPAddress subnet(255,255,255,0);
      MQTT myMqtt(CLIENT_ID, ip_adr, port);
      MDNSResponder mdns;
      ESP8266WebServer server(80);
      ESP8266HTTPUpdateServer httpUpdater;
      ! //-----------------------------------------------------------------------------------------------------------------------
      void setup(void) {
      ! byte len_ssid, len_pass;

      delay(1000);
      Serial.begin(115200);
      Serial.println();

      EEPROM.begin(98);

      ! len_ssid = EEPROM.read(96);
      len_pass = EEPROM.read(97);
      if(len_pass > 64) len_pass = 0;
      ! pinMode(0, INPUT_PULLUP);
      if((len_ssid < 33) && (len_ssid != 0)){
      // --------------------------------------------------------------Режим STATION-------------------------------------------------------------------------
      WiFi.mode( WIFI_STA);
      unsigned char* buf_ssid = new unsigned char[32];
      unsigned char* buf_pass = new unsigned char[64];
      for(byte i = 0; i < len_ssid; i++) buf_ssid[i] = char(EEPROM.read(i));
      buf_ssid[len_ssid] = '\x0';
      const char ssid = (const char)buf_ssid;
      for(byte i = 0; i < len_pass; i++) buf_pass[i] = char(EEPROM.read(i + 32));
      const char pass = (const char)buf_pass;
      buf_pass[len_pass] = '\x0';
      !
      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);
      WiFi.begin(ssid, pass);
      WiFi.config(ip, gateway, subnet);

      while (WiFi.status() != WL_CONNECTED) {
      delay(1000);
      // count++;
      // if(count<15){
      Serial.print(WiFi.status());}
      // else{
      // EEPROM.write(96,255);
      // EEPROM.commit();
      // EEPROM.end();
      // conf = true;
      // }
      // }

      ! Serial.println("");
      Serial.println("WiFi connected");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());

      if (mdns.begin("esp8266", WiFi.localIP())) {
      Serial.println("MDNS responder started");
      // "Запущен MDNSresponder"
      }
      // pinMode(PIR, INPUT);

      server.on("/", {
      webPage="";
      webPage += "";
      webPage +="";
      webPage +="";
      webPage +="

      ! Температура: "+ String(htu.readTemperature()) +"
      ! "; //-----------------------------------------------------ТЕМПЕРАТУРА
      webPage +="
      ! Влажность: "+ String(htu.readHumidity()) +"
      ! "; //-----------------------------------------------------ТЕМПЕРАТУРА
      server.send(200, "text/html; charset=utf-8", webPage);
      });
      server.on("/setting", {
      webPage="
      ! <form method="POST" action="/saveether" enctype="multipart/form-data">";
      webPage +="<label for="ip">IP адрес:</label>
      ! ";
      webPage +="<label for="gateway">gateway:</label>
      ! ";
      webPage +="<label for="subnet">subnet:</label>
      ! ";
      webPage +="";
      webPage +="</form>
      ! ";
      webPage +="";
      server.send(200, "text/html; charset=utf-8", webPage);
      });
      server.on("/settingmqtt", {
      webPage="
      ! <form method="POST" action="/savemqtt" enctype="multipart/form-data">";
      webPage +="<label for="ip">IP адрес сервера MQTT:</label>
      ! ";
      webPage +="<label for="gateway">Порт сервера MQTT:</label>
      ! ";
      webPage +="";
      webPage +="</form>
      ! ";
      webPage +="";
      server.send(200, "text/html; charset=utf-8", webPage);
      });
      server.on("/savemqtt", saveMqtt);
      server.on("/saveether", saveEther);

      Serial.println("Connecting to MQTT server");

      ! // ---------------------------------- Настройки возврата MQTT----------------------------------------------------------------------
      myMqtt.onConnected(myConnectedCb);
      myMqtt.onDisconnected(myDisconnectedCb);
      myMqtt.onPublished(myPublishedCb);
      myMqtt.onData(SendData);

      Serial.println("connect mqtt...");
      myMqtt.connect();

      ! Serial.println("subscribe to topic...");
      myMqtt.subscribe(TEMPOUT);
      myMqtt.subscribe(TEMPEND);
      myMqtt.subscribe(TIME);
      ! delay(10);

      //--------------------------------------HTTP server подключение------------------------------------------------------------------------
      httpUpdater.setup(&server);
      server.begin();
      Serial.println("HTTP server started");

      ! MDNS.addService("http", "tcp", 80);
      Serial.printf("HTTPUpdateServer ready! Open http://%s.local/update in your browser\n", "8266");
      ! //-------------------------------------------------Проверка датчика температуры-----------------------------------------------------------
      Serial.println("21D-F test");
      if (!htu.begin()) {
      Serial.println("Couldn't find sensor!");
      while (1);
      }
      }

      else // ---------------------------------------------------------Режим SoftAP--------------------------------------------
        {
          const char *ssid_ap = "ESPap";
          iphost = "ESPap";
          WiFi.mode(WIFI_AP);
      
          Serial.print("Configuring access point...");
      /* You can remove the password parameter if you want the AP to be open. */
      WiFi.softAP(ssid_ap);
      
          delay(2000);
      Serial.println("done");
      IPAddress myIP = WiFi.softAPIP();
      Serial.print("AP IP address: ");
      Serial.println(myIP);
      server.on("/", handleRoot);
      server.on("/ok", handleOk);
      server.begin();
      Serial.println("HTTP server started");  
        }
      

      }
      //-------------------------------------------------------Основная функция----------------------------------------------------------------------
      void loop() {
      server.handleClient();

      ! // Перевод модуля в режим конфигурации путем замыкания GPIO0 на массу
      if((digitalRead(0) == LOW) && !conf){
      EEPROM.write(96,255);
      EEPROM.commit();
      EEPROM.end();
      conf = true;
      Serial.println("Please reboot module for coniguration");
      }
      ! //-------------------------------------------------------------------------------------------------
      if(iphost != "ESPap"){
      if (Serial.available()) {
      delay(50);
      uint8_t inn = Serial.read(); // читаем один байт
      if(serialReadFlag) { // Если установлен флаг приема - действуем
      if(inn == 59){ // ASCII : ";" // Находим конец передачи ";"
      if(incStr.length() > 0) { // Проверяем длину сообщения и отправляем в "переработку"
      AnalyseString(incStr); // В этой функции будем парсить сообщение
      }
      serialReadFlag = false; // Сбрасываем флаг приема
      }
      else { // А это нормальный прием
      incStr += (char)inn; // Создаем String от Nextion
      }
      }
      else { // А здесь отлавливается начало передачи от Nextion
      if(inn == 35) { // ASCII : "#"
      serialReadFlag = true; // После # начинаем чтение при следующем заходе
      incStr = ""; // Но до этого очистим стринг приема
      }
      }
      }
      else{
      //getStateParam(digitalRead(PIR),"motionSensor"); //Отправка данных датчика движения в топик
      getStateParam(String(htu.readTemperature()),"Temperature");
      getStateParam(String(htu.readHumidity()),"Humidity");
      SendDataNextioin("temp_in", String(htu.readTemperature()));
      SendDataNextioin("hum_in", String(htu.readHumidity()));
      delay(1000);
      }
      }}
      ! //-------------------------------------------------------Метод отправки топика MQTT на сервер-----------------------------------------------------------------------------
      void getStateParam(String value,String topicval){
      String topic("/");
      topic += CLIENT_ID;
      topic += "/"+topicval;
      // Публикуем
      boolean result = myMqtt.publish(topic, value);
      delay(1000);
      }
      //-------------------------------------------------------------------Nextion----------------------------------------------------------------------------------------------
      void AnalyseString(String incStr) { // Отправка данных
      if (incStr == "btnup") { //При смене значения температура вверх
      getStateParam("1","btnup");
      }
      if (incStr == "btndown") { //При смене значения температура вниз
      getStateParam("1","btndown");
      }
      if (incStr == "gettempend") { //При смене значения температура вниз
      getStateParam("1","gettempend");
      }
      }
      //-----------------------------------------------Метод формирует данные для отпраки на монитор Nextion--------------------------------------------------------------------------
      //--отправка от датчика температуры--------------
      void SendDataNextioin(String dev, String data)
      {
      if(dev=="hum_in"){
      String hum = """ + data + "%"";
      Serial.print(dev+".txt");
      Serial.print("=");
      Serial.print(hum);
      Serial.write(0xff);
      Serial.write(0xff);
      Serial.write(0xff);
      }
      else if(dev=="temp_in"){
      String temp_in = """ + data + "C"";
      Serial.print(dev+".txt");
      Serial.print("=");
      Serial.print(temp_in);
      Serial.write(0xff);
      Serial.write(0xff);
      Serial.write(0xff);
      }
      }
      //--отправка с сервера--------------
      void SendData(String& dev, String& data)
      {
      String per ="";
      for(int i=9;i<dev.length();i++) {per/+="dev[i];}" if(per="="hum_in"){" string/hum="" "/data/"%"";/serial.print(per+".txt");/serial.print("=");
      Serial.print(hum);
      Serial.write(0xff);
      Serial.write(0xff);
      Serial.write(0xff);
      }
      else if(per==" time"){/time="" """;/""/"c"";/connected/to/mqtt/server");/}/void/mydisconnectedcb()/{/serial.println("disconnected./try/reconnect...");/delay(500);/mymqtt.connect();/mypublishedcb()/serial.println("published.");/--------------------------------------------Функции/настройки/wifi------------------------------------------------------------------/handleroot()/str/;/content-type"/content="&quot;text/html;" charset="utf-8&quot;">

      <title>ESP8266 Settings</title>

      ";
      str += "\

      ! <form method="&quot;POST&quot;" action="&quot;ok&quot;">
      WIFI Net

      Password
      !

      </form>
      !

      ";
      server.send ( 200, "text/html", str );
      }

      void handleOk(){
      String ssid_ap;
      String pass_ap;
      unsigned char* buf = new unsigned char[64];

      String str = "";
      str += "


      <title>ESP8266 Settings</title>

      ";
      str += "";

      EEPROM.begin(98);

      ssid_ap = server.arg(0);
      pass_ap = server.arg(1);

      if(ssid_ap != ""){
      EEPROM.write(96,ssid_ap.length());
      EEPROM.write(97,pass_ap.length());
      ssid_ap.getBytes(buf, ssid_ap.length() + 1);
      for(byte i = 0; i < ssid_ap.length(); i++)
      EEPROM.write(i, buf[i]);
      pass_ap.getBytes(buf, pass_ap.length() + 1);
      for(byte i = 0; i < pass_ap.length(); i++)
      EEPROM.write(i + 32, buf[i]);
      EEPROM.commit();
      EEPROM.end();

      str +="Configuration saved in FLASH
      


      Changes applied after reboot

      !
      Return to settings page
      ";
      }
      else {
      str += "No WIFI Net

      Return to settings page
      ";
      }
      str += "";
      server.send ( 200, "text/html", str );
      }
      //--------------------------------------------Сохранение настроек MQTT--------------------------------------------------------------
      void saveMqtt(){

      char ip_serv;
      uint32_t port;
      unsigned char* buf = new unsigned char[64];

      String str = "";
      str += "


      <title>ESP8266 Settings mqtt</title>

      ";
      str += "";

      // EEPROM.begin(98);

       str += "";
      

      server.send ( 200, "text/html", str );
      }
      //--------------------------------------------Сохранение настроек Ethernet--------------------------------------------------------------
      void saveEther(){

      String ip_adr;
      String subnet;
      String gateway;
      unsigned char* buf = new unsigned char[64];

      String str = "";
      str += "


      <title>ESP8266 Settings ethernet</title>

      ";
      str += "";
      str += "";
      server.send ( 200, "text/html", str );
      }
      //----------------------------------------------------------------------------------------------------------------------------------</dev.length();i++)></wire.h></mqtt.h></eeprom.h></esp8266httpupdateserver.h></esp8266mdns.h></esp8266webserver.h></wificlient.h></esp8266wifi.h></nextion.h>`

      ! Пример проекта для Nextion
      ! https://drive.google.com/open?id=1_Y7V- ... jgWCZdzip1
      ! Видео пример работы:
      ! https://youtu.be/fr3qQaji5Vk[/i][/i][/i][/i][/i]

      posted in Железо
      F
      fred17
    • RE: Вопросы по написанию скриптов

      @Bluefox:

      @fred17:

      Здравствуйте! Подскажите возможный ли написать скрипт для Megad на диммирование.

      Пробовал делать так:

      __on({id: 'megad.0.p0_Кнопка_long', change: 'any'}, function (obj) {

      if(getState("megad.0.p0_Кнопка_long").val === true)

      {

      while(true)

      {

      if(getState("megad.0.p0_Кнопка_long").val ===true)

      {

      setState("megad.0.p10_Свет",getState("megad.0.p10_Свет").val+15);

      }

      else break;

      }

      }

      });__

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

      Да верно, пока зажата кнопка увеличивается яркость, может функция готовая есть )?

      posted in ioBroker скрипты
      F
      fred17
    • RE: Вопросы по написанию скриптов

      Здравствуйте! Подскажите возможный ли написать скрипт для Megad на диммирование.

      Пробовал делать так:

      __on({id: 'megad.0.p0_Кнопка_long', change: 'any'}, function (obj) {

      if(getState("megad.0.p0_Кнопка_long").val === true)

      {

      while(true)

      {

      if(getState("megad.0.p0_Кнопка_long").val ===true)

      {

      setState("megad.0.p10_Свет",getState("megad.0.p10_Свет").val+15);

      }

      else break;

      }

      }

      });__

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

      posted in ioBroker скрипты
      F
      fred17
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo