Czujnik odległości i sygnalizator świetlny

Masz pomysł na funkcjonalność lub koncepcję na rozwój projektu. Opisz wszystko tutaj.
Awatar użytkownika
Lector
Posty: 1400
Rejestracja: pt lis 17, 2017 2:26 pm
Lokalizacja: Poznań
Kontakt:

Jeżeli sterowanie przekaźnikiem jest na stałe, to super sprawa dla mnie :)
Po zmostkowaniu wyjścia na przekaźnik i wejścia czujnika otwarcia (pin 4), dodałem ikonki.

Można by dopisać kolejny kanał, który by wykrywał pojazd który stoi dalej niż te 20cm (które ja mam ustawione), na maksymalną przy jakiej pojazd mieści się w garażu.
Załączniki
Screenshot_2019-06-18-09-15-28-739_org.supla.android.jpg
Screenshot_2019-06-18-09-15-28-739_org.supla.android.jpg (207.19 KiB) Przejrzano 3741 razy
Screenshot_2019-06-18-09-15-19-121_org.supla.android.jpg
Screenshot_2019-06-18-09-15-19-121_org.supla.android.jpg (206.17 KiB) Przejrzano 3741 razy
Niespełniony automatyk. :mrgreen:
https://3d-lamp.photos/
Awatar użytkownika
pilcu
Posty: 203
Rejestracja: pt sty 11, 2019 9:49 am
Lokalizacja: Wrocław

Można i tak to sobie rozwiązać z czujnikiem obecności auta w garażu. Możliwe, że też ten kanał wykorzystam.
A co to dopisania kolejnego kanału to nie pomogę, bo ja tego softu nie pisałem tylko kolega, który udostępnił go na 1 stronie.
Nie potrafię tego zrobić, żaden ze mnie programista...
Awatar użytkownika
Lector
Posty: 1400
Rejestracja: pt lis 17, 2017 2:26 pm
Lokalizacja: Poznań
Kontakt:

Tu przerobiłem kod i pod GPIO16 - D0 w Wemos D1 Mini jest wyjście obecności pojazdu w garażu, które należy zmostkować z GPIO4 czyli D2.
W kodzie poniżej jeżeli odległość jest mniejsza niż 20 cm załącza przekaźnik, a jeżeli odległość jest mniejsza niż 50 cm wskazuje ze pojazd jest w garażu.

Kod: Zaznacz cały

#include <FS.h>       // ---- esp board manager 2.4.2 --- iwip Variant V2 higher Bandwidth
#include <EEPROM.h>
#include <ESP8266WiFi.h>
#define SUPLADEVICE_CPP
#include <SuplaDevice.h>
#include <DNSServer.h>
#include <WiFiManager.h> 
#include <ArduinoJson.h>     //--------- https://github.com/bblanchon/ArduinoJson/tree/v5.13.2 ------
#include <Ticker.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <ESPEFC.h>  // modification of ESP8266HTTPUpdateServer that includes erases flash and wifi credentials 
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#define ONE_WIRE 2

// Setup a oneWire instance
OneWire oneWire(ONE_WIRE); // Deklaracja pinu 2 jako magistrala OneWire dla czujnika temperatury

// Pass oneWire reference to Dallas Temperature
DallasTemperature sensors(&oneWire);

extern "C"
{
#include "user_interface.h"
}
#define onboard_led 2      //D4           status led
#define TRIGGER_PIN 0      // D3     wifi configuration pin --------pin konfiguracji wifi

//********czujnik odleglosci******
int Trig = 12; //D6 Numer pinu wyzwolenia dla czujnika odległości HC-SR04
int Echo = 13; //D7 Numer pinu odpowiedzi dla czujnika odległości HC-SR04
int Buzzer = 14; //D5 Numer pinu do podłązenia buzera, który wlaczy sie przy poziomie mizszym niz 20cm
int Car = 16; //D0 Numer pinu do do sensora, który sygnalizuje obecność pojazdu przy poziomie mizszym niz 50cm
long EchoTime; // Czas trwania sygnału ECHO
int odleglosc;
int glebokosc;

WiFiClient client;
ESP8266WebServer httpServer(81);
ESPEFC httpUpdater;
const char* host = "supla";
Ticker ticker;
unsigned long wifi_checkDelay = 30000;
unsigned long wifimilis; 
int C_W_state = HIGH; 
int last_C_W_state = HIGH;
unsigned long time_last_C_W_change = 0; 
long C_W_delay = 5000;               // config delay 5 seconds           ----------        opóźnienie konfiguracji 5 sekund
//int glebokosc_podajnika =0;
double rssi = 0;
double rssi_last = 0;


int s;                   //             ---------------- Status ------------------
int timeout           = 120;
char Supla_server[40];
char Location_id[15];
char Location_Pass[34];
//char glebokosc_podajnika[5];
char Supla_name[51];
char update_path[21];
char update_username[21];
char update_password[21];
byte mac[6];
bool pr_wifi = true;
bool shouldSaveConfig = false;
bool initialConfig = false;


void tick(){
  int state = digitalRead(onboard_led);  
  digitalWrite(onboard_led, !state);  
}
void saveConfigCallback () {
  Serial.println("Should save config");
  shouldSaveConfig = true;
}
void ondemandwifiCallback () {
  ticker.attach(0.2, tick);
  WiFiManagerParameter custom_Supla_server("server", "supla server", Supla_server, 40);
  WiFiManagerParameter custom_Location_id("ID", "Location_id", Location_id, 15);
  WiFiManagerParameter custom_Location_Pass("Password", "Location_Pass", Location_Pass, 34 );
  //WiFiManagerParameter custom_glebokosc_podajnika("Box_depth", "Box depth in cm", glebokosc_podajnika, 5);
  WiFiManagerParameter custom_Supla_name("name", "Supla Device Name", Supla_name, 51,"required");
 WiFiManagerParameter custom_update_path("updatePath", "/xxxx update path", update_path, 21,"required");
 WiFiManagerParameter custom_update_username("updateUsername", "update username", update_username, 21,"required");
 WiFiManagerParameter custom_update_password("updatePassword", "update password", update_password, 21,"required");


  WiFiManager wifiManager;
  wifiManager.setBreakAfterConfig(true);
  wifiManager.setSaveConfigCallback(saveConfigCallback);

  wifiManager.addParameter(&custom_Supla_server);
  wifiManager.addParameter(&custom_Location_id);
  wifiManager.addParameter(&custom_Location_Pass);
  //wifiManager.addParameter(&custom_glebokosc_podajnika);
  wifiManager.addParameter(&custom_Supla_name);
  wifiManager.addParameter(&custom_update_path);
  wifiManager.addParameter(&custom_update_username);
  wifiManager.addParameter(&custom_update_password);

  wifiManager.setCustomHeadElement("<style>html{ background-color: #01DF3A;}</style><div class='s'><svg version='1.1' id='l' x='0' y='0' viewBox='0 0 200 200' xml:space='preserve'><path d='M59.3,2.5c18.1,0.6,31.8,8,40.2,23.5c3.1,5.7,4.3,11.9,4.1,18.3c-0.1,3.6-0.7,7.1-1.9,10.6c-0.2,0.7-0.1,1.1,0.6,1.5c12.8,7.7,25.5,15.4,38.3,23c2.9,1.7,5.8,3.4,8.7,5.3c1,0.6,1.6,0.6,2.5-0.1c4.5-3.6,9.8-5.3,15.7-5.4c12.5-0.1,22.9,7.9,25.2,19c1.9,9.2-2.9,19.2-11.8,23.9c-8.4,4.5-16.9,4.5-25.5,0.2c-0.7-0.3-1-0.2-1.5,0.3c-4.8,4.9-9.7,9.8-14.5,14.6c-5.3,5.3-10.6,10.7-15.9,16c-1.8,1.8-3.6,3.7-5.4,5.4c-0.7,0.6-0.6,1,0,1.6c3.6,3.4,5.8,7.5,6.2,12.2c0.7,7.7-2.2,14-8.8,18.5c-12.3,8.6-30.3,3.5-35-10.4c-2.8-8.4,0.6-17.7,8.6-22.8c0.9-0.6,1.1-1,0.8-2c-2-6.2-4.4-12.4-6.6-18.6c-6.3-17.6-12.7-35.1-19-52.7c-0.2-0.7-0.5-1-1.4-0.9c-12.5,0.7-23.6-2.6-33-10.4c-8-6.6-12.9-15-14.2-25c-1.5-11.5,1.7-21.9,9.6-30.7C32.5,8.9,42.2,4.2,53.7,2.7c0.7-0.1,1.5-0.2,2.2-0.2C57,2.4,58.2,2.5,59.3,2.5z M76.5,81c0,0.1,0.1,0.3,0.1,0.6c1.6,6.3,3.2,12.6,4.7,18.9c4.5,17.7,8.9,35.5,13.3,53.2c0.2,0.9,0.6,1.1,1.6,0.9c5.4-1.2,10.7-0.8,15.7,1.6c0.8,0.4,1.2,0.3,1.7-0.4c11.2-12.9,22.5-25.7,33.4-38.7c0.5-0.6,0.4-1,0-1.6c-5.6-7.9-6.1-16.1-1.3-24.5c0.5-0.8,0.3-1.1-0.5-1.6c-9.1-4.7-18.1-9.3-27.2-14c-6.8-3.5-13.5-7-20.3-10.5c-0.7-0.4-1.1-0.3-1.6,0.4c-1.3,1.8-2.7,3.5-4.3,5.1c-4.2,4.2-9.1,7.4-14.7,9.7C76.9,80.3,76.4,80.3,76.5,81z M89,42.6c0.1-2.5-0.4-5.4-1.5-8.1C83,23.1,74.2,16.9,61.7,15.8c-10-0.9-18.6,2.4-25.3,9.7c-8.4,9-9.3,22.4-2.2,32.4c6.8,9.6,19.1,14.2,31.4,11.9C79.2,67.1,89,55.9,89,42.6z M102.1,188.6c0.6,0.1,1.5-0.1,2.4-0.2c9.5-1.4,15.3-10.9,11.6-19.2c-2.6-5.9-9.4-9.6-16.8-8.6c-8.3,1.2-14.1,8.9-12.4,16.6C88.2,183.9,94.4,188.6,102.1,188.6z M167.7,88.5c-1,0-2.1,0.1-3.1,0.3c-9,1.7-14.2,10.6-10.8,18.6c2.9,6.8,11.4,10.3,19,7.8c7.1-2.3,11.1-9.1,9.6-15.9C180.9,93,174.8,88.5,167.7,88.5z'/></svg>");

  wifiManager.setMinimumSignalQuality();

    wifiManager.setConfigPortalTimeout(timeout);

    if (!wifiManager.startConfigPortal("SuplaCino")) {   //    ----wifi configuration ap name---
      Serial.println("Not connected to WiFi but continuing anyway.");
    } else {
      
      Serial.println("connected...yeey :)");    //if you get here you have connected to the WiFi
    }
    strcpy(Supla_server, custom_Supla_server.getValue());
    strcpy(Location_id, custom_Location_id.getValue());
    strcpy(Location_Pass, custom_Location_Pass.getValue());
    //strcpy(glebokosc_podajnika, custom_glebokosc_podajnika.getValue());
    strcpy(Supla_name, custom_Supla_name.getValue());
    strcpy(update_path, custom_update_path.getValue());
    strcpy(update_username, custom_update_username.getValue());
    strcpy(update_password, custom_update_password.getValue());
}

 /*double get_temperature(int channelNumber, double rssi_last) {   //   --------------------------- New -----------------------------
         
         rssi = WiFi.RSSI();  // ---------------------Twój kod daje 
        delay(10);
         if (rssi != rssi_last){ 
          rssi_last = rssi;
          return rssi_last;
         }          
    }
    */

    // Obsługa czujnika DS18B20 i odczyt parametrów modułu ESP
double get_temperature(int channelNumber, double last_val) {
   double t = -275;

          switch(channelNumber)
          {
      case 0:  {
         sensors.requestTemperatures();
         t = sensors.getTempCByIndex(0);
          Serial.print("DS Temp 1 : ");
          Serial.println(t);
//          Serial.println("*******************");
        break;  }

       case 1:
         t = WiFi.RSSI();
        break;
      };

    return t;  
}


//******************czujnik odległości HC-SR04 *********************************
double get_distance(int channelNumber, double distance) {

// Ustawiamy TRIG w stan niski na 2us
digitalWrite(Trig, LOW);
delayMicroseconds(2);

// Ustawiamy TRIG w stan wysoki na 10us
digitalWrite(Trig, HIGH);
delayMicroseconds(10);

// Ustawiamy TRIG w stan niski - rozpoczynamy pomiar
digitalWrite(Trig, LOW);

// Odczytujamy czas trwania stanu wysokiego na pinie ECHO
EchoTime = pulseIn(Echo, HIGH);


// Obliczamy odległość
distance = EchoTime / 58; // Odległość w metrach
distance = distance / 100;// Odległość w centymetrach
if (distance <= 0 ) {
  distance = 2;
}

if ((distance > 0) && (distance < 0.20)) { // przy jakiej odleglosci ma się właczyć buzzer
  digitalWrite(Buzzer, LOW); //wlacza buzzer przy dystansie mniejszym niz 20cm
} else {
  digitalWrite(Buzzer, HIGH); //wylacz buzzer przy dystansie większym niż 20cm
} 

if ((distance > 0) && (distance < 0.50)) { // przy jakiej odleglosci ma się właczyć buzzer
  digitalWrite(Car, LOW); //włącza sygnalizacje obecności pojazdu przy dystansie mniejszym niz 50cm
} else {
  digitalWrite(Car, HIGH); //wyłącz sygnalizacje obecności pojazdu przy dystansie mniejszym niz 50cm
} 

Serial.println(distance); 

return distance;
}


void setup() {    //    ------------------------ Setup --------------------------

  wifi_set_sleep_type(NONE_SLEEP_T);

  Serial.begin(115200);
  EEPROM.begin(128);  
  pinMode(TRIGGER_PIN, INPUT_PULLUP);

  pinMode(onboard_led, OUTPUT);
  
  if (WiFi.SSID()==""){
    initialConfig = true;
  }
  ticker.attach(0.8, tick);
  
  Serial.println("mounting FS...");
  
  if (SPIFFS.begin()) {
    Serial.println("mounted file system");
    if (SPIFFS.exists("/config.json")) {
      //file exists, reading and loading
      Serial.println("reading config file");
      File configFile = SPIFFS.open("/config.json", "r");
      if (configFile) {
        Serial.println("opened config file");
        size_t size = configFile.size();
        // Allocate a buffer to store contents of the file.
        std::unique_ptr<char[]> buf(new char[size]);

        configFile.readBytes(buf.get(), size);
        DynamicJsonBuffer jsonBuffer;         
        JsonObject& json = jsonBuffer.parseObject(buf.get());
        Serial.println(jsonBuffer.size());
        json.printTo(Serial);
        if (json.success()) {
          Serial.println("\nparsed json");

          strcpy(Supla_server, json["Supla_server"]);
          strcpy(Location_id, json["Location_id"]);
          strcpy(Location_Pass, json["Location_Pass"]);
          //strcpy(glebokosc_podajnika, json["glebokosc_podajnika"]);
          strcpy(Supla_name, json["Supla_name"]);         
          strcpy(update_path, json["update_path"]);
          strcpy(update_username, json["update_username"]);
          strcpy(update_password, json["update_password"]);
     
  }

 // Init DS18B20 library 
  sensors.begin();
  
  // Set temperature callback
  SuplaDevice.setTemperatureCallback(&get_temperature);

  // Set Distance callback
  pinMode(Trig, OUTPUT);
  pinMode(Echo, INPUT);
  pinMode(Buzzer, OUTPUT);
  digitalWrite(Buzzer, HIGH);
  pinMode(Car, OUTPUT);
  digitalWrite(Car, HIGH);
  SuplaDevice.setDistanceCallback(&get_distance);

  uint8_t mac[WL_MAC_ADDR_LENGTH];
  WiFi.macAddress(mac);
  char GUID[SUPLA_GUID_SIZE] = {mac[WL_MAC_ADDR_LENGTH - 6], mac[WL_MAC_ADDR_LENGTH - 5], mac[WL_MAC_ADDR_LENGTH - 4], mac[WL_MAC_ADDR_LENGTH - 3],                                
                                mac[WL_MAC_ADDR_LENGTH - 2], mac[WL_MAC_ADDR_LENGTH - 1], mac[WL_MAC_ADDR_LENGTH - 1], mac[WL_MAC_ADDR_LENGTH - 2], 
                                mac[WL_MAC_ADDR_LENGTH - 3], mac[WL_MAC_ADDR_LENGTH - 4], mac[WL_MAC_ADDR_LENGTH - 5], mac[WL_MAC_ADDR_LENGTH - 6]};
  
 
  SuplaDevice.addDS18B20Thermometer();   // DS na  GPIO2  D4
  SuplaDevice.addDS18B20Thermometer();   

  SuplaDevice.addDistanceSensor();
  SuplaDevice.addRelay(5); // D1
  SuplaDevice.addSensorNO(4);
 
  SuplaDevice.setName(Supla_name);    // Supla device name
  wifi_station_set_hostname(Supla_name);  //nazwa w sieci lokalnej
  

  int LocationID = atoi(Location_id);
  SuplaDevice.begin(GUID,              // Global Unique Identifier 
                    mac,               // Ethernet MAC address
                    Supla_server,      // SUPLA server address
                    LocationID,        // Location ID 
                    Location_Pass);    // Location Password
 WiFi.mode(WIFI_STA);
}
    }
  }
}
void loop() {
  
  if (WiFi.status() == WL_CONNECTED) 
  {    
    httpServer.handleClient();
  }
  
  


  
  int C_W_read = digitalRead(TRIGGER_PIN);{  
   if (C_W_read != last_C_W_state) {       
     
     time_last_C_W_change = millis();
   }
   if ((millis() - time_last_C_W_change) > C_W_delay) {
     
     if (C_W_read != C_W_state) {     
       Serial.println("Triger sate changed");
       C_W_state = C_W_read;
       
       if (C_W_state == LOW) {
        ondemandwifiCallback () ;
       }
     }
    }
   last_C_W_state = C_W_read;            
   }

  if  (initialConfig)  {     
    ondemandwifiCallback () ;
    initialConfig = false; 
  }

  if (shouldSaveConfig) {
    Serial.println("saving config");
    DynamicJsonBuffer jsonBuffer;
    JsonObject& json = jsonBuffer.createObject();
    json["Supla_server"] = Supla_server;
    json["Location_id"] = Location_id;
    json["Location_Pass"] = Location_Pass;
   // json["glebokosc_podajnika"] = glebokosc_podajnika;
    json["Supla_name"] = Supla_name;
    json["update_path"] = update_path;
    json["update_username"] = update_username;
    json["update_password"] = update_password;

    File configFile = SPIFFS.open("/config.json", "w");
    if (!configFile) {
      Serial.println("failed to open config file for writing");
    }
    json.prettyPrintTo(Serial);
    json.printTo(configFile);
    configFile.close();
    Serial.println("config saved");
    shouldSaveConfig = false;
    WiFi.mode(WIFI_STA);
    ticker.detach();
    digitalWrite(onboard_led, HIGH);
    ESP.restart();
      delay(5000);
  }
  
  if (WiFi.status() != WL_CONNECTED) 
  {
    ticker.attach(0.8, tick);
    WiFi_up();
  }
  if (WiFi.status() != WL_CONNECTED) { 
    ticker.attach(0.8, tick);
    WiFi_up();
    pr_wifi = true;
  }
  else if ((WiFi.status() == WL_CONNECTED)  && (pr_wifi)){
    Serial.println("");
    Serial.println("CONNECTED");
    Serial.print("local IP: ");
    Serial.println(WiFi.localIP());
    Serial.print("subnetMask: ");
    Serial.println(WiFi.subnetMask());
    Serial.print("gatewayIP: ");
    Serial.println(WiFi.gatewayIP());
    long rssi = WiFi.RSSI();
    Serial.print("Signal Strength (RSSI): ");
    Serial.print(rssi);
    Serial.println(" dBm");
    ticker.detach();
    digitalWrite(onboard_led, HIGH); 
    pr_wifi = false;
    MDNS.begin(host);
    httpUpdater.setup(&httpServer, update_path, update_username, update_password);
    httpServer.begin();
    MDNS.addService("http", "tcp", 81);
    Serial.printf("HTTPUpdateServer ready! Open http://%s.local:81%s in your browser and login with username '%s' and password '%s'\n", host, update_path, update_username, update_password);      
   }
  SuplaDevice.iterate();
}

// Supla.org ethernet layer
    int supla_arduino_tcp_read(void *buf, int count) {
        _supla_int_t size = client.available();
       
        if ( size > 0 ) {
            if ( size > count ) size = count;
            return client.read((uint8_t *)buf, size);
        };
    
        return -1;
    };
    
    int supla_arduino_tcp_write(void *buf, int count) {
        return client.write((const uint8_t *)buf, count);
    };
    
    bool supla_arduino_svr_connect(const char *server, int port) {
          return client.connect(server, 2015);
    }
    
    bool supla_arduino_svr_connected(void) {
          return client.connected();
    }
    
    void supla_arduino_svr_disconnect(void) {
         client.stop();
    }
    
    void supla_arduino_eth_setup(uint8_t mac[6], IPAddress *ip) {

       WiFi_up();
    }

SuplaDeviceCallbacks supla_arduino_get_callbacks(void) {
          SuplaDeviceCallbacks cb;
          
          cb.tcp_read = &supla_arduino_tcp_read;
          cb.tcp_write = &supla_arduino_tcp_write;
          cb.eth_setup = &supla_arduino_eth_setup;
          cb.svr_connected = &supla_arduino_svr_connected;
          cb.svr_connect = &supla_arduino_svr_connect;
          cb.svr_disconnect = &supla_arduino_svr_disconnect;
          cb.get_temperature = &get_temperature;  // --------------------------- New ------------------------
          cb.get_temperature_and_humidity = NULL;
          cb.get_distance = &get_distance;
          return cb;
}

void WiFi_up(){ // conect to wifi
 
  if (millis() > wifimilis)  {
  WiFi.begin();
  Serial.println("CONNECTING WIFI"); 
  }
  wifimilis = (millis() + wifi_checkDelay) ;
}
Dla siebie będe jeszcze go przerabiał i wywale czujniki temperatur - o ile mi sie uda :P
Niespełniony automatyk. :mrgreen:
https://3d-lamp.photos/
Awatar użytkownika
pilcu
Posty: 203
Rejestracja: pt sty 11, 2019 9:49 am
Lokalizacja: Wrocław

Oooo Super. To jak uda Ci się usunąć te 2 kanały temp to poproszę o kod. Też to chciałem zrobić ale coś mi wywalała kompilacja.
Awatar użytkownika
Lector
Posty: 1400
Rejestracja: pt lis 17, 2017 2:26 pm
Lokalizacja: Poznań
Kontakt:

A jakby dodać jakiś fotorezystor/fotodiodę która by wyłączała sterowanie przekaźnikiem programowo w if ((distance > 0) && (distance < 0.20)) dodać kolejną zależność jak jest ciemno. Bo przecież do garażu się wjeżdża to jest jasno (oświetlenie garażu lub z samochodu).
Niespełniony automatyk. :mrgreen:
https://3d-lamp.photos/
Awatar użytkownika
Gang
Posty: 622
Rejestracja: pt lis 09, 2018 12:44 pm

Robert Błaszczak pisze: śr cze 12, 2019 11:36 am Ok, dzięki za wyjaśnienie. Taki "alarm" z tego zrobiłeś.
Mam jeszcze dodatkowe zastosowanie - kto zaparkuje najbliżej ściany. Pomiar masz :D
plus jeszcze mierzenie czasu na parkowanie!
Gorzej jak ktoś będzie miał wynik: minus 10cm ;)

A co do pomysłu fajny bajer! Jak z czułością tego czujnika jest?
Bo ja bym osobiście połączył ten pomysł z pomysłem z piłeczką i wolałbym zamontować to na suficie, np. w miejscu gdzie przy idealnym parkowaniu zaczyna się dach, kończy szyba. ustawił odległość tak aby pokazywało, że jest ok jak czujnik "widzi" dach a nie maskę.

Zdaję sobie sprawę, że to nie tak dokładny pomiar. Ale ja przed maską mam pierdolnik i taki czujnik prędzej czy później by się uszkodził.
Zamel: MEW-01, ROW-02, THW-01, RNW-01, SLW-02, ROW-07, mROW-02, PNW-01. DIY: Supla Device RPI + 10 xiaomi mija2, Sonoff: basic + 7 DS18B20, basic x2, touch, mini x3, - Nodemcu x2, - ElectroDragon ESP8266 - Gosund SP111 x3
Gucio2607.
Posty: 508
Rejestracja: wt sie 22, 2017 1:56 pm

Lector pisze: wt cze 18, 2019 7:24 am Jeżeli sterowanie przekaźnikiem jest na stałe, to super sprawa dla mnie :)
Po zmostkowaniu wyjścia na przekaźnik i wejścia czujnika otwarcia (pin 4), dodałem ikonki.

Można by dopisać kolejny kanał, który by wykrywał pojazd który stoi dalej niż te 20cm (które ja mam ustawione), na maksymalną przy jakiej pojazd mieści się w garażu.
kolego podrzucisz ikonki?
Zainstalowane:
11x sonoff basic, 1x sonoff gate, 1x Yunshan, 2x H801, 7x sonoff touch(1,2,3 gang), 1x sonoff 4ch PRO
Awatar użytkownika
Lector
Posty: 1400
Rejestracja: pt lis 17, 2017 2:26 pm
Lokalizacja: Poznań
Kontakt:

W załączeniu.
Załączniki
car_yes.png
car_yes.png (3.46 KiB) Przejrzano 3419 razy
car_no.png
car_no.png (1.53 KiB) Przejrzano 3419 razy
Niespełniony automatyk. :mrgreen:
https://3d-lamp.photos/
Gucio2607.
Posty: 508
Rejestracja: wt sie 22, 2017 1:56 pm

Co robię nie tak?
Wgrałem soft z takimi parametrami:
IMG_20190830_215852.jpg
IMG_20190830_215852.jpg (5.45 MiB) Przejrzano 3409 razy
Wemos rozsyła sieć ale nie mogę wejść na stronę konfiguracji. Dioda na wemosie nie mruga a świeci ciągle.
Zainstalowane:
11x sonoff basic, 1x sonoff gate, 1x Yunshan, 2x H801, 7x sonoff touch(1,2,3 gang), 1x sonoff 4ch PRO
Awatar użytkownika
makrz
Posty: 395
Rejestracja: wt lis 27, 2018 1:43 pm
Lokalizacja: Opole

Gucio2607. pisze: pt sie 30, 2019 9:07 pm Co robię nie tak?
Wgrałem soft z takimi parametrami:
IMG_20190830_215852.jpg
Wemos rozsyła sieć ale nie mogę wejść na stronę konfiguracji. Dioda na wemosie nie mruga a świeci ciągle.
Proponuję zainstalować nowa wersję ESP Flash download... https://www.espressif.com/sites/default ... .6.7_1.zip

Przed wgranie wyczyścić pamięć przyciskiem "erase".

I wgrać tylko "Czujnik_parkowania.bin" 0x00000
ODPOWIEDZ

Wróć do „Pomysły i koncepcje”