Rolety - sterowanie

Awatar użytkownika
pzygmunt
Posty: 18279
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

W wersji 2.3.26
andrzejano
Posty: 339
Rejestracja: śr sie 30, 2017 8:47 am

a kiedy wersja ta wyjdzie?
jachu
Posty: 1
Rejestracja: ndz paź 24, 2021 4:34 pm

czy dałoby się w cloud.supla dodać opcję zasłoń częściowo? Odsłoń częściowo jest, więc chyba nie jest to duży problem?
Awatar użytkownika
pzygmunt
Posty: 18279
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

Odsłon częściowo na 30% jest tożsame z zasłon częściowo na 70% ale w kolejnej wersji to dodamy
photoworldpl
Posty: 13
Rejestracja: pn mar 08, 2021 6:07 pm

jachu pisze: ndz paź 24, 2021 4:37 pm czy dałoby się w cloud.supla dodać opcję zasłoń częściowo? Odsłoń częściowo jest, więc chyba nie jest to duży problem?
Tu masz trochę więcej o tym:
viewtopic.php?f=9&t=8878
home
Posty: 47
Rejestracja: pn gru 28, 2020 12:36 pm

Witam, mam pytanie. Mam silnik krokowy nema 17 i sterownik A4988 czy jest możliwość sterowania silnikiem z aplikacji supla ? może ktoś ma kod chętnie sprawdzę , do celowo chciałbym uruchomić roletę dzień/noc za pomocą tego silnika z góry dzięki
Une enquГЄte terminГ©e sans affecter la qualitГ© de vie propriГ©tГ©s musculaires cardiaques, pulmonaires et sanguines..
radzik_r
Posty: 390
Rejestracja: ndz sie 11, 2019 5:32 pm

home pisze: wt mar 22, 2022 7:44 am Witam, mam pytanie. Mam silnik krokowy nema 17 i sterownik A4988 czy jest możliwość sterowania silnikiem z aplikacji supla ? może ktoś ma kod chętnie sprawdzę , do celowo chciałbym uruchomić roletę dzień/noc za pomocą tego silnika z góry dzięki
home pisze: wt mar 22, 2022 8:16 am Witam jak podłączyć silnik krokowy nema17 do supli? w w/w wymienionych kodach?
Nie znajdziesz na forum gotowego softu pod ten silnik bo jak kojarzę to nikt na nim nic nie robił.
Być może było by to łatwe albo trudne, bez zabawy tym silnikiem raczej ciężko będzie stworzyć coś do niego.
Sterowanie samego silnika bezpośrednio nie wiem czy jest dobre bo rolety zazwyczaj potrzebują hamulca, a ten silnik nie ma hamulca ani przekładni która by hamowała roletę.
home
Posty: 47
Rejestracja: pn gru 28, 2020 12:36 pm

radzik_r pisze: wt mar 22, 2022 7:14 pm
home pisze: wt mar 22, 2022 7:44 am Witam, mam pytanie. Mam silnik krokowy nema 17 i sterownik A4988 czy jest możliwość sterowania silnikiem z aplikacji supla ? może ktoś ma kod chętnie sprawdzę , do celowo chciałbym uruchomić roletę dzień/noc za pomocą tego silnika z góry dzięki
home pisze: wt mar 22, 2022 8:16 am Witam jak podłączyć silnik krokowy nema17 do supli? w w/w wymienionych kodach?
Nie znajdziesz na forum gotowego softu pod ten silnik bo jak kojarzę to nikt na nim nic nie robił.
Być może było by to łatwe albo trudne, bez zabawy tym silnikiem raczej ciężko będzie stworzyć coś do niego.
Sterowanie samego silnika bezpośrednio nie wiem czy jest dobre bo rolety zazwyczaj potrzebują hamulca, a ten silnik nie ma hamulca ani przekładni która by hamowała roletę.
trochę się bawiłem tym silnikiem i wiem ze i jak ustawić kroki o ile roleta ma się otworzyć lub zamknąć wiec hamulec jest nie potrzebny, mam soft ale bez warstwy supla i mam prośbę czy by ktoś mi to nie przejrzał i połączył tak by działało pod suple, jeden soft to roleta pod supla - działająca a drugi to soft pod silnik i www tez działający wstawiam kody:

Kod: Zaznacz cały

#include <srpc.h>
#include <log.h>
#include <eh.h>
#include <proto.h>
#include <IEEE754tools.h>

// We define our own ethernet layer
#define SUPLADEVICE_CPP
#include <SuplaDevice.h>
#include <lck.h>

#include <WiFiClient.h>
#include <ESP8266WiFiType.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiScan.h>
#include <ESP8266WiFiMulti.h>
#include <WiFiServer.h>
#include <ESP8266WiFiGeneric.h>
#include <WiFiClientSecure.h>
#include <ESP8266WiFiAP.h>
#include <ESP8266WiFiSTA.h>
#include <WiFiUdp.h>
#include "Stepper_28BYJ_48.h"

extern "C" {
#include "user_interface.h"
}

WiFiClient client;
ADC_MODE(ADC_VCC);

int Step = 0; //GPIO0---D3 of Nodemcu--Step of stepper motor driver
int Dir  = 2; //GPIO2---D4 of Nodemcu--Direction of stepper motor driver

Stepper_28BYJ_48 stepper(1,2,3,0);    // wyjście silnika

// Setup Supla connection
const char* ssid     = "xxx";
const char* password = "xxx";

/*
// DS18B20 Sensor read implementation
double get_temperature(int channelNumber, double last_val) {

    double t = -275;
    
      switch(channelNumber) {
        
        case 2:
               t = WiFi.RSSI();
               break;
        case 3: 
               t = ESP.getVcc() / 1000.0;
               break;
       };

    return t;  
}
*/

void setup() {
  Serial.begin(115200);
  delay(10);
  SuplaDevice.setName("Roleta");                       // zmiana nazwy mdułu w supla
//  wifi_station_set_hostname("Roleta");               // lub tak jeżeli górna nie zadziała
  WiFi.softAPdisconnect(true);                         // wyłączenie rozgłaszania sieci ESP
//  WiFi.setOutputPower(10);                           //Ograniczanie mocy wyjściowej (0 - 20.5)

  pinMode(Step,INPUT_PULLUP);
  pinMode(Dir,INPUT_PULLUP);


   // Replace the falowing GUID
  uint8_t mac[WL_MAC_ADDR_LENGTH];
  WiFi.macAddress(mac);
  char GUID[SUPLA_GUID_SIZE] = {0x20,0x19,0x05,0x10, 
                                        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],
                                        0x02,0x12,0x34,0x56,0x78,0x90};

  // lub pobieramy identyfikator urządzenia ze strony https://www.supla.org/arduino/get-guid i wprowadzamy wiersz wyżej

 
  SuplaDevice.addRollerShutterRelays(0,2, true);  // 0 roleta dwa przekaźniki  
  //SuplaDevice.addSensorNO(2);                   // 1 czujnik krańcowy  Call SuplaDevice.addSensorNO(A0, true)
  //SuplaDevice.addDS18B20Thermometer();          // 2 rssi
  //SuplaDevice.addDS18B20Thermometer();          // 3 zasilanie


  SuplaDevice.begin(GUID,                       // Global Unique Identifier
                    mac,                        // Ethernet MAC address
                    "svrxx.supla.org",          // SUPLA server address
                    xxxx,                       // Location ID
                    "xxxxxxxx");                // Location Password

  SuplaDevice.setName("roleta salon");          // zmiana nazwy mdułu w supla

}


void loop() {
  SuplaDevice.iterate();
  Roletka();
}

// 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) {

       // Serial.println("WiFi init");
        WiFi.begin(ssid, password);

        while (WiFi.status() != WL_CONNECTED) {
            delay(500);
        //    Serial.print(".");
        }

        Serial.print("\nlocalIP: ");
        Serial.println(WiFi.localIP());
        Serial.print("subnetMask: ");
        Serial.println(WiFi.subnetMask());
        Serial.print("gatewayIP: ");
        Serial.println(WiFi.gatewayIP());
    }

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;
          //cb.get_temperature_and_humidity = NULL;
          cb.get_rgbw_value = NULL;
          cb.set_rgbw_value = NULL;
          
          return cb;
}

void Roletka() {
  
      if ( digitalRead(Step) == LOW ) {
                stepper.step(-1);
        }

      if ( digitalRead(Dir) == LOW ) {
                stepper.step(1);
        }
 }
 
drugi to silnik:

#include <ESP8266WiFi.h>
 
const char* ssid = "xxx";
const char* password = "xxx";

int Step = 0; //GPIO0---D3 of Nodemcu--Step of stepper motor driver
int Dir  = 2; //GPIO2---D4 of Nodemcu--Direction of stepper motor driver

WiFiServer server(80);
 
void setup() {
  Serial.begin(115200);
  delay(10);
 pinMode(Step, OUTPUT); //Step pin as output
 pinMode(Dir,  OUTPUT); //Direcction pin as output
 digitalWrite(Step, LOW); // Currently no stepper motor movement
 digitalWrite(Dir, LOW);  
 
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the server
  server.begin();
  Serial.println("Server started");
 
  // Print the IP address on serial monitor
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");    //URL IP to be typed in mobile/desktop browser
  Serial.print(WiFi.localIP());
  Serial.println("/");
 
}
 
void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
 
  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
 
  // Match the request
  int i=0;
  int value = LOW;
  
  if (request.indexOf("/Command=forward") != -1)  { //Move 50 steps forward
    digitalWrite(Dir, HIGH); //Rotate stepper motor in clock wise direction
          for( i=1;i<=200;i++){
          digitalWrite(Step, HIGH);
          delay(10);
          digitalWrite(Step, LOW);
          delay(10);}
    value = HIGH;
  }
  
  if (request.indexOf("/Command=backward") != -1)  { //Move 50 steps backwards
    digitalWrite(Dir, LOW); //Rotate stepper motor in anti clock wise direction
          for( i=1;i<=200;i++){
          digitalWrite(Step, HIGH);
          delay(10);
          digitalWrite(Step, LOW);
          delay(10);}
    value = LOW;
  }

  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.println("<h1 align=center>Stepper motor controlled over WiFi</h1><br><br>");
  client.print("Stepper motor moving= ");
 
  if(value == HIGH) {
    client.print("Forward");
  } else {
    client.print("Backward");
  }
  client.println("<br><br>");
  client.println("<a href=\"/Command=forward\"\"><button>Forward </button></a>");
  client.println("<a href=\"/Command=backward\"\"><button>Backward </button></a><br />");  
  client.println("</html>");
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
 
}

PS-myślę ze dla umiejących pisać w "C" do drobnostka.
serdeczne dzięki
Une enquГЄte terminГ©e sans affecter la qualitГ© de vie propriГ©tГ©s musculaires cardiaques, pulmonaires et sanguines..
Mac
Posty: 10
Rejestracja: ndz kwie 10, 2022 7:05 pm

Posiadam pewne rolety z funkcją żaluzji. Oryginalnie w pilocie sa 3 przyciski góra dół i specjalny-uchylający lamele. Wszystko dzieje sie po czasie. Roleta pamieta ze przycisk w doł zamyka rolete i zamyka dopływ prądu. dopiero nacisniecie tego przycisku specjalnego podaje napiecie i wykonuje dalszy ruch odchyaljac lamele czyli klawisz w dół daje dół rolety do konca a kalwisz specjalny ponowny dół az do uchylenia lameli. Jesli mam otwarte rolety to nacisniecie specjalnego robi automatycznie cykl zamkniecia i uchylenia.
Jesli bym suplą nacisnal manualnie dol i trzymal caly czas to najpierw mi sie zamknie a potem uchyli.
Supla nie widzi wlasciwego stanu zamkniecia rolet, poniewaz nie wie ze jest funkcja uchalania lameli. Sprawa sie tez kompikuje kiedy z pilota uchylam, wtedy supla calkowicie gubi stan.

Nie wiem czy dobrze to opisalem. Dodaje tez link o jaka rolete mi chodzi https://www.youtube.com/watch?v=sseYOut_sos

Czy jest na to jakis pomysl?
Awatar użytkownika
klew
Posty: 8184
Rejestracja: czw cze 27, 2019 12:16 pm
Lokalizacja: Wrocław

Mac pisze: ndz maja 29, 2022 9:35 pm Posiadam pewne rolety z funkcją żaluzji. Oryginalnie w pilocie sa 3 przyciski góra dół i specjalny-uchylający lamele. Wszystko dzieje sie po czasie. Roleta pamieta ze przycisk w doł zamyka rolete i zamyka dopływ prądu. dopiero nacisniecie tego przycisku specjalnego podaje napiecie i wykonuje dalszy ruch odchyaljac lamele czyli klawisz w dół daje dół rolety do konca a kalwisz specjalny ponowny dół az do uchylenia lameli. Jesli mam otwarte rolety to nacisniecie specjalnego robi automatycznie cykl zamkniecia i uchylenia.
Jesli bym suplą nacisnal manualnie dol i trzymal caly czas to najpierw mi sie zamknie a potem uchyli.
Supla nie widzi wlasciwego stanu zamkniecia rolet, poniewaz nie wie ze jest funkcja uchalania lameli. Sprawa sie tez kompikuje kiedy z pilota uchylam, wtedy supla calkowicie gubi stan.

Nie wiem czy dobrze to opisalem. Dodaje tez link o jaka rolete mi chodzi https://www.youtube.com/watch?v=sseYOut_sos

Czy jest na to jakis pomysl?
Jedyne co mi tutaj przychodzi do głowy, to korzystanie z funkcji "dolnego domknięcia" (do ustawienia w Cloud). Wtedy w apce możesz wizulanie na obrazku okna zamknąć roletę na 100%, a potem dosuwając jeszcze w dół ustawić domknięcie. Tylko ta funkcja jest przystosowana do tradycyjnych rolet. U Ciebie będzie to działało na odwrót, bo tradycyjne rolety po tym jak dojadą do parapetu, domykają się, a u Ciebie zaczyna się odchylanie od dołu.

Nawet w przygotowanym częściowo wsparciu dla żaluzji fasadowych, tego typu rolet nie mamy przewidzianego. Bo w fasadówkach dodajemy sterowanie nachyleniem lamelek, a u Ciebie w zasadzie nie da się zmienić nachylenia lamelek (są dwie dostępne pozycje), a steruje się ilością lamelek odchyloną od pionu.

Co do sterowania z pilota - na to nie ma rozwiązania. Ogólnie sterowanie roletami/żaluzjami nie działa dobrze, gdy miesza się dwa różne sterowniki. Stan zawsze będzie się w Supli rozjeżdżał.
Widzimy się na Supla Offline Party vol. 2 :!:
ODPOWIEDZ

Wróć do „Zagadnienia ogólne”