Tienes que acceder para crear publicaciones y debates.

Control persianas con app y server

Páginas:12

Muy buenas, quería haceros una pregunta sobre el control de las persianas, espero que me explique bien para me entendáis.

No es ningún problema, funcionan de maravilla.

Esto lo pongo porque si en el futuro lo controlamos con voz, no dar dos ordenes sobre la misma persiana mientras esta este en movimiento.

Podéis probar estas secuencias y me comentáis como responde.

Tenemos una persiana en posición 100, con la app o con server le decimos que la posicione en el 50, la persiana comienza a bajar, si volvemos a decirle mientras esta bajando que la posicione en el 20 esta baja asta el 20 y en teoría todo correcto.

Tenemos la persiana en la posición 80 y le decimos que la ponga en el 30 y antes de que se pare le decimos que la posicione en el 60, la persiana se detiene pero la posición que nos marca el server y la app no es la correcta y para volver a controlarla tenemos que decirle posición 0 y esperar.

Muchas gracias.

Yo por el sistema de mis persianas, utilizo el código diferente al que genera el configurador, yo tengo que esperar a que finalicen el movimiento.

Si le digo que bajen un 75% y mientras lo hacen, le digo que bajen al 20%, digamos que me hace la suma y las bajan al 95%. Pero si le digo que bajen y luego que suban, ni caso y se descontrolan.

Un saludo.

Gracias Alex_74

Yo tengo modificado el código generado por el configurador para trabajar con RS485.

En principio tendría que funcionar igual que le funciona a los compañeros,  por eso la pregunta para que lo confirmen.

wooow.... eso si que es ilar fino... yo no tenia constancia...ni mis clientes tampoco.

Yo creo que el tema no es subir o bajar,  es mandar un valor ya pasado cuando se esta moviendo... si se cambia la dirección hay que meter protecciones, como ahora no se cambia no eran necesarias...

Esto debe de corregir esa situación.

else if (strncmp(packetBuffer, "SVAL", 4)==0){
     
      if (packetBuffer[4]<=Number_Circuit){
        byte cn=packetBuffer[4]-1;
        if (circuits[cn].Type==Persiana){
           if (circuits[cn].Out1_Value == true){//Gestion persiana moviendo
            GestionMovPersianas(circuits[cn].Device_Number);//Controlar posición actual
            circuits[cn].Value=PosicionPersiana[circuits[cn].Device_Number];GestionMovPersianas(circuits[cn].Device_Number);//Fijar posicion actual
            OutControl();delay(100);//Parada reles prevencion cambio giro rapido           
            }
        }
        circuits[cn].Value=packetBuffer[5]-1;
        OutControl();
       
      }
      EnvioEstadoActual();
      return;
    }   

 

Este se pone en commonfunction, dentro de rececpcion paquete udp

Esto seria el codigo viejo a sustituir.

    else if (strncmp(packetBuffer, "SVAL", 4)==0){
      if (packetBuffer[4]<=Number_Circuit){ circuits[packetBuffer[4]-1].Value=packetBuffer[5]-1;OutControl();}
      EnvioEstadoActual();
      return;
    }   

 

Con es os vale para las versiones viejas del configurador, para meterlo a mano, en la version moderna no ira ese codigo, pues ya que se ha levantado la liebre me vienen a la cabeza algunas otras situaciones muy raras que pueden darse, vamos que si trabajais con el configurador nuevo no toqueis nada a mano que llevara una versión optimizada.

Muchas gracias Juan Ramon... te lo agradezco mucho.

Estado = Overload.

Gracias Juan Ramon y Roberto modificado.

Gracias a ti Roberto.

De momento me quedo parado a la nueva versión del configurador, para hacer yo mis modificaciones.

En cada actualización del configurador tengo que modificar el common_funtion() para adaptarlo a RS485, pero en este caso también tendré que modificar el código a los actuadores y prefiero modificarlo una vez este actualizado el configurador.

 

Cita de Juan Ramon en 21 diciembre, 2018, 7:22 am

Gracias Alex_74

Yo tengo modificado el código generado por el configurador para trabajar con RS485.

En principio tendría que funcionar igual que le funciona a los compañeros,  por eso la pregunta para que lo confirmen.

Por cierto, que se me paso antes... yo creo que eso es mas facil en el server que en el arduino

Estado = Overload.

Gracias Roberto.

En el server desconozco como podria hacerlo.

Yo utilizo el MKR que solo tiene conectado el bus RS485 (bueno memoria y reloj)  como puente entre app, server y resto de instalación.

Las tramas del bus RS485 en el MKR salen desde el procedimiento RecepcionPaqueteUDP() que principalmente es lo que modifico en cada actualización.

 

Muy buenas Roberto.

Hoy al arrancar Arduino automation se ha actualizado a la versión 1.0.0.14

Esta ultima actualización incorpora la modificación sobre lo comentado en este post.

Muchas gracias.

Mirado en el taller y tengo la misma versión con fecha 12/11/2018 con o que entiendo que no había abierto el programa en casa y por eso se ha actualizado.

Ignora el comentario.

Realizo la pregunta en su sitio

Páginas:12