#26 Re: Апаратні питання » Выбор масштабируемой платформы для умного дома » 2016-08-23 00:59:55

сходу разделил бы на уровни:
1й мощные реле после/до вводных автоматов (как правильно?), чтобы вырубать нагрузку сразу по зонам, туда в щиток 1 девайс с нужным количеством пинов, которые зависят от кол-ва автоматов.
2й уровень розетки и удлиннители, если нужно их вырубать по каким-то причинам. Например, если там неуправляемые приборы, которые постоянно включены (светильники, вытяжки хз что еще). 1шт реле и что-то совсем маленькое с одним пином
3й уровень приборы и датчики (температура, дым и т.д.), управление умными приборами (ик, bt и проч сигналы), в зависимости от места расположения группируем на минимальное количество девайсов.

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

#27 Re: Програмування Arduino » Помогите с esp-14 » 2016-08-22 22:27:11

поменяю на 12e или подарю, но с вас тогда детальній пример с реализацией какого-нибудь тригера с wifi.
Моя задача сейчас это девайс , который отслеживает открытие ворот больше заданного времени и включает ревун + отправляет запрос на http с параметрами. Если что-то такое на esp-14 можно реализовать, то я потом еще куплю. Там, я так понял, основная радость в том, что конструкция может потреблять чертовски мало электричества, если wifi отправить в сон и не будить без надобности. Я в Днепре

#28 Re: Програмування Arduino » Помогите с esp-14 » 2016-08-22 12:56:44

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

#29 Re: Програмування Arduino » Помогите с esp-14 » 2016-08-22 09:45:56

почти угадали ) про сборку проекта помню статью на хабре, где чудак купил списанный светофор в беларуси )))
нравятся мне светофоры. Этот дублирует ошибки мониторинга в корпоративной среде. Мониторинг сам по себе присылает смс, а потом еще через несколько минут техподдержка звонит с алярмом, но ноччу можно прослушать и то и другое, а бывает смс прочитал ночью и уснул, потом просыпаешь и не помнишь было это на самом деле или приснилось, нужно идти комп включать, подключаться впн-ом, смотреть в монитор все ли там ок. Или просто на светоофр глянуть и если зеленая дрыхнуть дальше.

#30 Re: Програмування Arduino » Помогите с esp-14 » 2016-08-21 18:06:40

ого, ну, 110 это только в китае. Думаю еще одну взять. Как выпаять esp чтоб не похерить весь модуль?

#31 Re: Програмування Arduino » Помогите с esp-14 » 2016-08-21 17:46:17

я забил напрочь на esp-14 , не думаю, что у меня вообще теперь желание с ним разбираться появится в ближайшее время.
Меньше чем за сутки, впервые имея дело с микрюками, написал что хотел на nodemcu v3, купленном в этом самом магазине. И JSON, парсит и лампочками моргает и в пьезу пищит. Одна радость в отличии от...  roll

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <ArduinoJson.h>

#define USE_SERIAL Serial

#define RED_LED_PIN     14
#define YELLOW_LED_PIN	12
#define GREEN_LED_PIN   13

#define PIEZO           15

#define STATE_ERROR     RED_LED_PIN
#define STATE_WARNING   YELLOW_LED_PIN
#define STATE_OK        GREEN_LED_PIN

#define CHECK_INTERVAL  30000

#define STA_SSID        "bear_n_fox"
#define STA_PASS        ""

ESP8266WiFiMulti WiFiMulti;

int lastState = 0;

void setup() {
  
  USE_SERIAL.begin(115200);
  //USE_SERIAL.setDebugOutput(true);

  USE_SERIAL.println();
  USE_SERIAL.println();
  USE_SERIAL.println();

  for(uint8_t t = 4; t > 0; t--) {
    
    USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
    USE_SERIAL.flush();
    
    delay(1000);
  }

  pinMode(RED_LED_PIN, OUTPUT);
  pinMode(YELLOW_LED_PIN, OUTPUT);
  pinMode(GREEN_LED_PIN, OUTPUT);
  pinMode(PIEZO, OUTPUT);

  ledReset(NULL);
  
  WiFiMulti.addAP(STA_SSID, STA_PASS);
}

void loop() {
  
  USE_SERIAL.print("\n[loop] new loop starts at: ");  
  USE_SERIAL.println(millis());
  
  USE_SERIAL.print("[loop] WiFiMulti status: "); 
  USE_SERIAL.println(WiFiMulti.run());
  
  // wait for WiFi connection
  if((WiFiMulti.run() == WL_CONNECTED)) {
    
    USE_SERIAL.print("[loop] WL_CONNECTED is true at: ");  
    USE_SERIAL.println(millis());
    
    HTTPClient http;

    USE_SERIAL.print("[HTTP] begin...\n");
    
    //http.begin("https://192.168.1.12/test.html", "7a 9c f4 db 40 d3 62 5a 6e 21 bc 5c cc 66 c8 3e a1 45 59 38"); //HTTPS
    http.begin("http://lib.lomokid.com/errors.json"); //HTTP configure traged server and url
    
    USE_SERIAL.print("[HTTP] GET...\n");
    
    int httpCode = http.GET(); // start connection and send HTTP header

    if(httpCode > 0) { // httpCode will be negative on error
      
      USE_SERIAL.printf("[HTTP] GET response code: %d\n", httpCode); // HTTP header has been send and Server response header has been handled

      if(httpCode < 400) { // file found at server
        String payload = http.getString();
        char json[199] = {' '};
        strcpy (json, payload.c_str());
        
        //USE_SERIAL.println(payload);
        
        StaticJsonBuffer<200> jsonBuffer;
        JsonArray& root = jsonBuffer.parseArray(json);
        if (!root.success())
        {
          
          USE_SERIAL.println("[JSON] parseObject() failed");
          
          ledReset(NULL);
          ledFade(YELLOW_LED_PIN, CHECK_INTERVAL);
          return;
        }
        int error = {root[0]["error"]};
        
        USE_SERIAL.print("[JSON] error: ");
        USE_SERIAL.printf(root[0]["error"]);
        USE_SERIAL.printf("\n");
        
        if(error == 1){
          ledReset(NULL);
          ledFade(RED_LED_PIN, CHECK_INTERVAL);
          return;
        }
        else{
          ledReset(NULL);
          ledShine(GREEN_LED_PIN, CHECK_INTERVAL);
          return;
        }       
        
        delay(CHECK_INTERVAL);
      }
      else {/*what if file was not found*/
      
        USE_SERIAL.println("[HTTP] http status NOT OK");
        
        ledReset(NULL);
        ledFade(YELLOW_LED_PIN,CHECK_INTERVAL);
        return;
      }
      
    } else {
      
      USE_SERIAL.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
      
      ledReset(NULL);
      ledFade(YELLOW_LED_PIN,CHECK_INTERVAL);
      return;
    }

    http.end();
  }
}

void ledReset(int led){
  if(led == NULL){
    
    USE_SERIAL.println("[ledReset] flushing leds");
    
    analogWrite(RED_LED_PIN, 0);
    analogWrite(YELLOW_LED_PIN, 0);
    analogWrite(GREEN_LED_PIN, 0);
  }  
  else{
    
    USE_SERIAL.print("[ledReset] flushing led: ");
    USE_SERIAL.println(led);
    
    analogWrite(led, 0);
  }
}

void ledFade(int led, int nextCheckDelay) {
  
  USE_SERIAL.print("[ledFade] start at: ");  
  USE_SERIAL.println(millis());
  
  beepOnStateChange(led);
  long unsigned int start = millis();
  while(millis() < start + nextCheckDelay)
  {
    for(int i=0;i<PWMRANGE ;i++){
      analogWrite(led, i);
      delay(1);
    }
    for(int i=PWMRANGE ;i>-1;i--){
      analogWrite(led, i);
      delay(1);
    }
    delay(0);
  }
  
  USE_SERIAL.print("[ledFade] end at: ");  
  USE_SERIAL.println(millis());  
}

void ledShine(int led, int nextCheckDelay) {
  
  USE_SERIAL.print("[ledShine] start at: ");  
  USE_SERIAL.println(millis());
  
  beepOnStateChange(led);
  analogWrite(led, PWMRANGE);
  delay(CHECK_INTERVAL);
  
  USE_SERIAL.print("[ledShine] end at: ");  
  USE_SERIAL.println(millis());
}

void beepOnStateChange(int state) {
  
  USE_SERIAL.print("[beepOnStateChange] start at: ");  
  USE_SERIAL.println(millis());
  USE_SERIAL.printf("[beepOnStateChange] lastState : %d\n", lastState);  
  USE_SERIAL.printf("[beepOnStateChange] current state : %d\n", state);
  
  if (lastState != state){
    switch(state){
      case STATE_ERROR:
        for(int i=0;i<3;i++) {
          analogWrite(PIEZO, 500);
          delay(500);
          analogWrite(PIEZO, 0);
          delay(100);
        }
        break;
      case STATE_WARNING:
        for(int i=0;i<2;i++) {
          analogWrite(PIEZO, 500);
          delay(50);
          analogWrite(PIEZO, 0);
          delay(50);
        }
        break;
      case STATE_OK:
        analogWrite(PIEZO, 500);
        delay(20);
        analogWrite(PIEZO, 0);
        break;
    }
  }
  lastState = state;
  
  USE_SERIAL.print("[beepOnStateChange] end at: ");  
  USE_SERIAL.println(millis());
}

P60821-174023.jpeg

#32 Re: Програмування Arduino » Помогите с esp-14 » 2016-08-21 16:50:17

я предположил, что он там должен быть. Зачем иначе вешать на железку dhcp сервер?
Можно было бы и повесить свитчеры хотя бы, чтобы можно было, не устанавливая ide, подключить лампочку и пощелкать мышкой. Но нету там ничего  smile

#33 Re: Програмування Arduino » Помогите с esp-14 » 2016-08-19 16:28:54

поскольку я нуб и к тому же еще и слоупок, то только сейчас понял почему ничего не работает. Мой ttl to usb работает только на 5v. Нужен другой модем или доработка для этого
а я то думаю как так получается, что у меня после стабилизатора на 3,3 на esp-шку 4 вольта заходит  neutral

#34 Re: Програмування Arduino » Помогите с esp-14 » 2016-08-19 14:33:15

по этой самой картинке и собрал - в консоли тишина. Заказал st-link, хотя это не входило в планы, если не пойдет у меня с ним дальнейшая дружба с удовольствием продам.
На всякий случай заказал девборд с 12e, надеюсь, что там приятнее. А что за история с глючным шим от esp8266?

#35 Програмування Arduino » Помогите с esp-14 » 2016-08-19 10:26:40

gera_b
відповідей: 28

Сплошная попаболь с модулем. Очень мало документации.  Веб интерфейс на стандартном 192.168.4.1 отсутствует. Достучаться через UART к esp не получается. По взаимодействию с stm ничего не нашел. Есть у кого-нибудь опыт успешного использования? Поделитесь хоть чем-то, пожалуйста.

Підвал форуму