Página 2 de 3

Re: Proyecto de automatización con raspberry pi (DIY)

NotaPublicado: 22 Feb 2016, 14:03
por segalion
Nueva actualización...

Como seguro sabéis, una raspberry pi es un mini-ordenador del tamaño de una tarjera de credito, y por tanto sus posibilidades son prácticamente las mismas que cualquier PC de sobremesa (o incluso más). Por ello había pensado en que sería realmente sencillo instalar una webcam por el puerto usb.

Además, el programa "pilight" tiene directamente un modulo de webcam, que unido al programa "motion" (otro servicio de linux que crea de forma sencilla un servidor web con las imagenes capturadas de cualquier camara...), nos da como resultado una sencilla herramienta web (todo en uno) accesible desde internet y desde cualquier movil.

Os mando un nuevo pantallazo desde mi movil, con nuevos controles añadidos (incluidos la webcam).

Actualmente he conectado una webcam barata que tenía por ahi, pero mi idea es utilizar alguna de las utilizadas como endoscopio para tuberías con 10 metros del motón que se pueden encontrar en internet y (ojo, que puedan enfocar al infinito)....

http://www.ebay.com/itm/Mini-5-5mm-HD-720p-Borescope-USB-Endoscope-6LED-Inspection-Camera-in-10M-Cable-/171496439241?hash=item27edfbfdc9:g:rUkAAOSw8cNUONld

Con esto, además de iniciar o parar el filtrado, podría ver si realmente lo está haciendo, y ver el estado real de la piscina...

Re: Proyecto de automatización con raspberry pi (DIY)

NotaPublicado: 09 Jul 2016, 20:09
por segalion
Hola a todos nuevamente.

Despues de un tiempo con el proyecto abandonado he comenzado a ponerlo en marcha hace un mes.

Por ahora solo tengo en marcha el filtrtrado con arranque inteligente incluido, la webcam y la sonda de temperatura, y todo el material comprado para el montaje de sondas en recirculación.

Despues de diversas incidencias (conseguir llevar internet por cable a la zona de la depuradora, estropeado de la tapa del filtro, enorme dificultad en recuperar el agua de la piscina, etc.) he conseguido poner en marcha todos estos elementos.

Como voy a disponer de algunos dias de relax (aunque estoy fuera), podré responder a las consultas que querais hacer aquí.

Muchas gracias y un saludo.

Re: Proyecto de automatización con raspberry pi (DIY)

NotaPublicado: 09 Ago 2016, 14:46
por segalion
Buenos días.
Anexo aqui el archivo de configuacion del pilight, que es el programa que tiene el interfaz web y permite controla los GPIOs de la raspberry (entro otras muchas cosas).

Es una configuración un poco larga, pero puede ayudar a entender el funcionamiento del sistema a gente que quiera realizar algo parecido.

Código: Seleccionar todo
pi@rpi1:/var/log $ sudo cat /etc/pilight/config.json
{
        "devices": {
                "sw1_filt": {
                        "protocol": [ "relay" ],
                        "id": [{
                                "gpio": 3
                        }],
                        "state": "off",
                        "default-state": "off"
                },
                "sw2_filt_speed": {
                        "protocol": [ "relay" ],
                        "id": [{
                                "gpio": 4
                        }],
                        "state": "off",
                        "default-state": "off"
                },
                "switch3": {
                        "protocol": [ "relay" ],
                        "id": [{
                                "gpio": 5
                        }],
                        "state": "off",
                        "default-state": "off"
                },
                "switch4": {
                        "protocol": [ "relay" ],
                        "id": [{
                                "gpio": 6
                        }],
                        "state": "off",
                        "default-state": "off"
                },
                "temp1": {
                        "protocol": [ "ds18b20" ],
                        "id": [{
                                "id": "011564b87cff"
                        }],
                        "temperature": 19.562
                },
                "label_ph": {
                        "protocol": [ "generic_label" ],
                        "id": [{
                                "id": 100
                        }],
                        "label": "pH=10.415",
                        "color": "red"
                },
                "label_orp": {
                        "protocol": [ "generic_label" ],
                        "id": [{
                                "id": 101
                        }],
                        "label": "ORP=0.929",
                        "color": "green"
                },
                "arranque_bomba": {
                        "protocol": [ "generic_switch" ],
                        "id": [{
                                "id": 103
                        }],
                        "state": "off"
                },
                "sunrise_set": {
                        "protocol": [ "sunriseset" ],
                        "id": [{
                                "longitude": -3.70256,
                                "latitude": 40.4165
                        }],
                        "sunrise": 7.21,
                        "sunset": 21.21,
                        "sun": "rise"
                },
                "outside": {
                        "protocol": [ "openweathermap" ],
                        "id": [{
                                "country": "es",
                                "location": "madrid"
                        }],
                        "humidity": 26.60,
                        "temperature": 25.75,
                        "sunrise": 7.20,
                        "sunset": 21.19,
                        "sun": "set",
                        "update": 1
                },
                "webcam": {
                        "protocol": [ "generic_webcam" ],
                        "id": [{
                                "id": 112
                        }],
                        "url": "http://192.168.1.7:8081",
                        "poll-interval": 30
                },
                "webcam_dimmer": {
                        "protocol": [ "generic_dimmer" ],
                        "id": [{
                                "id": 113
                        }],
                        "state": "off",
                        "dimlevel": 1,
                        "dimlevel-minimum": 0,
                        "dimlevel-maximum": 15
                },
                "webcam_on": {
                        "protocol": [ "generic_switch" ],
                        "id": [{
                                "id": 111
                        }],
                        "state": "on"
                },
                "raspberry": {
                        "protocol": [ "program" ],
                        "id": [{
                                "name": "rpi"
                        }],
                        "program": "/usr/local/sbin/pilight-daemon",
                        "arguments": "",
                        "stop-command": "shutdown -r now",
                        "start-command": "",
                        "state": "running",
                        "pid": 547
                },
                "rpi_cpu_temp": {
                        "protocol": [ "cpu_temp" ],
                        "id": [{
                                "id": 1
                        }],
                        "temperature": 52.458,
                        "poll-interval": 10
                },
                "motion": {
                        "protocol": [ "program" ],
                        "id": [{
                                "name": "motion"
                        }],
                        "program": "/usr/bin/motion",
                        "arguments": "",
                        "stop-command": "service motion stop",
                        "start-command": "service motion start",
                        "state": "running",
                        "pid": 434
                },
                "motion_framerate": {
                        "protocol": [ "program" ],
                        "id": [{
                                "name": "motion_framerate"
                        }],
                        "program": "/usr/bin/motion",
                        "arguments": "",
                        "stop-command": "/home/pi/bin/motion_framerate_change.py",
                        "start-command": "",
                        "state": "running",
                        "pid": 434
                },
                "read_ph": {
                        "protocol": [ "program" ],
                        "id": [{
                                "name": "read_ph"
                        }],
                        "program": "/usr/local/sbin/pilight-daemon",
                        "arguments": "",
                        "stop-command": "/home/pi/bin/read_ph.py",
                        "start-command": "",
                        "state": "running",
                        "pid": 547
                },
                "kodi": {
                        "protocol": [ "program" ],
                        "id": [{
                                "name": "kodi"
                        }],
                        "program": "/usr/local/lib/kodi/kodi.bin",
                        "arguments": "",
                        "stop-command": "service kodi stop",
                        "start-command": "service kodi start",
                        "state": "stopped",
                        "pid": 0
                }
        },
        "rules": {
                "filtrado_off": {
                        "rule": "IF sw1_filt.state IS off THEN switch DEVICE switch3 AND switch4 TO off",
                        "active": 1
                },
                "filtrado_off_s3": {
                        "rule": "IF switch3.state IS on AND sw1_filt.state IS off THEN switch DEVICE switch3 TO off",
                        "active": 1
                },
                "filtrado_off_s4": {
                        "rule": "IF switch4.state IS on AND sw1_filt.state IS off THEN switch DEVICE switch4 TO off",
                        "active": 1
                },
                "arranque_on": {
                        "rule": "IF arranque_bomba.state IS off AND sw1_filt.state IS on THEN switch DEVICE sw2_filt_speed TO on FOR 1 SECOND AND switch DEVICE arranque_bomba TO on",
                        "active": 1
                },
                "arranque_off": {
                        "rule": "IF sw1_filt.state IS off THEN switch DEVICE arranque_bomba TO off",
                        "active": 1
                },
                "webcam_framerate": {
                        "rule": "IF webcam_dimmer.state IS on THEN switch DEVICE webcam_dimmer TO off AND switch DEVICE motion_framerate TO stopped",
                        "active": 1
                }
        },
        "gui": {
                "outside": {
                        "name": "Ext.",
                        "group": [ "Piscina" ],
                        "media": [ "all" ]
                },
                "sw1_filt": {
                        "name": "Filtrado",
                        "group": [ "Piscina" ],
                        "media": [ "all" ]
                },
                "sw2_filt_speed": {
                        "name": "Alta velocidad",
                        "group": [ "Piscina" ],
                        "media": [ "all" ]
                },
                "switch3": {
                        "name": "Inyección cloro",
                        "group": [ "Piscina" ],
                        "media": [ "all" ]
                },
                "switch4": {
                        "name": "Inyección pH-",
                        "group": [ "Piscina" ],
                        "media": [ "all" ]
                },
                "label_ph": {
                        "name": "Lectura pH",
                        "group": [ "Piscina" ],
                        "media": [ "all" ]
                },
                "label_orp": {
                        "name": "Lectura ORP",
                        "group": [ "Piscina" ],
                        "media": [ "all" ]
                },
                "temp1": {
                        "name": "Temperatura agua",
                        "group": [ "Piscina" ],
                        "media": [ "all" ]
                },
                "webcam_dimmer": {
                        "name": "0=off, 1-10=seg,11-20=fps",
                        "group": [ "Camara" ],
                        "media": [ "all" ]
                },
                "webcam": {
                        "name": "Webcam",
                        "group": [ "Camara" ],
                        "image-height": 480
                },
                "webcam_on": {
                        "name": "Webcam",
                        "group": [ "Camara" ],
                        "media": [ "all" ]
                },
                "rpi_cpu_temp": {
                        "name": "Raspberry CPU Temp",
                        "group": [ "Raspberry" ],
                        "media": [ "all" ]
                },
                "raspberry": {
                        "name": "Rasperry reboot",
                        "group": [ "Raspberry" ],
                        "media": [ "all" ]
                },
                "kodi": {
                        "name": "Kodi",
                        "group": [ "Raspberry" ],
                        "media": [ "all" ]
                },
                "motion": {
                        "name": "Motion",
                        "group": [ "Camara" ],
                        "media": [ "all" ]
                },
                "read_ph": {
                        "name": "Leer pH",
                        "group": [ "Piscina" ],
                        "media": [ "all" ]
                }
        },
        "settings": {
                "port": 5000,
                "standalone": 0,
                "log-level": 6,
                "pid-file": "/var/run/pilight.pid",
                "log-file": "/var/log/pilight.log",
                "webserver-enable": 1,
                "webserver-root": "/usr/local/share/pilight/",
                "webserver-http-port": 5001,
                "webserver-cache": 1
        },
        "hardware": {
                "433gpio": {
                        "sender": 0,
                        "receiver": 1
                }
        },
        "registry": {
                "webgui": {
                        "tabs": 1
                },
                "pilight": {
                        "version": {
                                "current": "7.0"
                        }
                }
        }
}


Notar que la regla (rule) de arranque_on es la que me garantiza que el motor siempre va a arrancar en alta velocidad al menos por 1 segundo.

Re: Proyecto de automatización con raspberry pi (DIY)

NotaPublicado: 09 Ago 2016, 14:56
por segalion
La webcam tambien va formidable. Es totalmente waterproof y muy estable. La única pega es que no tiene la resolución que indica: máximo 640x480. Me permite ver más o menos el estado del agua, el nivel y si está o no filtrando.

Le he puesto un dimmer (el control superior) que permite apagar la webcam y controlar los frames/segundo (desde 1 frame cada 10 segundos hasta 10 frames/segundo).

Por cierto, el sistema se está comportando bastante estable dentro de la caja. La raspberry pi se mantiene bastante fria no llegando nunca a los 57ºC.

Tambien le he configurado un watchdog que me resetearía la raspberry si esta se cuelga. No sabía que la raspberry traia un watchdog Hardware "de serie".

Re: Proyecto de automatización con raspberry pi (DIY)

NotaPublicado: 09 Ago 2016, 15:20
por segalion
Otra cosa con la que estoy jugando son los ciclos de filtrado. Como sabeis tengo un motor de doble velocidad: 1.500 rpm y 0,25CV a baja y 3.000rpm y 1CV a alta.

Actualmente estoy probando a ciclos de 15 minutos (con los primeros 1,5 minutos a alta) cada 30 min de 12 a 19 horas, y cada 60 min de 8 a 12 y de 19 a 23, que da un total de 6,5 horas de ciclo (quizás se quede corto, pero de momento está aguantando decentemente bien).

Lo que no sé es cómo es de efectivo filtrar con tantos ciclos tan cortos, ni si tanto rearranque de la bomba puede afectar a su durabilidad. Pido consejos a los expertos.

Lo que sí he calculado es el ahorro que voy a tener respecto del año pasado con la bomba vieja de 0,75CV. Los consumos que tengo son:
- Baja velocidad: 263 W-h por 0,25CV
- Alta velocidad: 1.171 W-h por 1CV
Como veis la eficiencia del motor es más bien baja, pero aun así es mejor que la antigua que ya se pasaba de pésima: 990 W-h por 0,75CV, y requería filtrar 8 horas diarias.

Con este ciclo de filtrado, y un coste de 18,15 cent€/KW-H y una media de 165 días/año me sale que voy a ahorra más de 200€ al año!!!. Iré viendo como evoluciona y qué resultado da, pero de ser así voy a recomendar el cambio de bomba todo el mundo, porque el ahorro energético amortizaría el coste en nada.

Re: Proyecto de automatización con raspberry pi (DIY)

NotaPublicado: 10 Ago 2016, 15:51
por PisciDoc
segalion escribió:Lo que no sé es cómo es de efectivo filtrar con tantos ciclos tan cortos.

No es recomendable ese metodo de filtracion con ciclos tan cortos :no:
Incluso aunque tuvieras una piscina con una hidrodinamica del vaso super-cojonuda con impulsores de fondo y todo: viewtopic.php?f=6&t=184

Si haces ciclos tan cortos habrá muchas zonas d ela piscina que el agua no se "renueve" con la suficiente frecuencia y se queda estancada sin pasar por el filtro y "renovarse".
segalion escribió:Como sabeis tengo un motor de doble velocidad: 1.500 rpm y 0,25CV a baja y 3.000rpm y 1CV a alta.

si encima los ciclos cortos los estas haciendo a baja velocidad el nivel de renovacion del agua es muy, muy, muy deficiente ....

segalion escribió: ni si tanto rearranque de la bomba puede afectar a su durabilidad. Pido consejos a los expertos.

Los momentos en los que mas sufre una bomba es sobre todo en los arranques y (algo menos), en las paradas; por lo que me temo que estas envejeciendo tu bomba (que no es nada barata...) a pasos agigantados. :face:

Resumiendo, no se recomiendan ciclos de filtrado de duracion menor que 0,5 veces el periodo de recirculacion. :sabio:

Saludos

Re: Proyecto de automatización con raspberry pi (DIY)

NotaPublicado: 11 Ago 2016, 11:50
por segalion
Muchas gracias como siempre Piscidoc.

Seguiré tus recomendaciones para alargar la vida del motor.

No he sido capaz de encontrar ninguna referencia acerca de la incidencia de los arranques en la vida util de motores monofásicos, pero de todas formas sospecho que arrancar 24 veces al día a la larga no debe ser nada bueno.

Y la verdad es que no tengo ni idea de cual es el periodo de recirculación de mi pisicna con la bomba a baja velocidad.

Para calcularlo se me ha ocurrido el siguiente método, que no sé como será de fiable (no se me ocurre otra forma). No he visto ninguna referencia en el foro, por lo que es posible que sirva a otros a calcular.

METODO PARA MEDIR EL CAUDAL Y VELOCIDAD DE FILTRACIÓN DE NUESTRA PISCINA:

1. Vaciar un poco la piscina hasta que queden descubiertos todos los tubos superiores de retorno (tratar de hacer la medición cuando el nivel de la piscina haya bajado por sus propias pérdidas hasta el límite en que necesite rellenado).
2. Cerrar los impulsores de fondo si es que se tienen. Si no se pueden cerrar, taponarlos para hacer la medición.
3. Poner un cubo de entre 10 y 15 litros recogiendo el agua que sale de cada uno de los tubos de retorno y contar los segundos que tarda en llenarse. Para minimizar errores y ajustar la medida al máximo, hacer varias mediciones y sacar la media de cada tubo. Sumar el total de segundos para todos los impulsores abiertos.
4. Calcular el caudal Q en m3/h y el periodo de filtración según la siguiente fórmula:
- Q (Caudal en m3/hora) =('p' litros del cubo x 'q' nº de cubos / suma del total de 'm' segundos) x 3,6
- PR (Periodo Recirculación en horas) = V (Volumen de piscina en m3) / Q

Por ejemplo, en mi caso, tengo dos tubos de retorno: uno de los tubos llena un cubo de 10 litros en algo menos de 7 segundos y el otro en algo más ( calculándolo lo más apróxiamado unos 6,75 segundos y el otro en unos 7,25 segundos) así que en total tengo 14 segundos.
- Q=(10x2/14)x3,6=5,14 m3/hora
Dado que mi piscina tiene unos 28 m3 (6,5x3x1,45), tengo un periodo de recirculación de:
- PR=28/5,14=5,45 horas

Para el cálculo de la Velodidad de Filtración:
Mi filtro es de 550 mm de diametro (el radio r=550/2 =275 milimetro)
VF=Q/PI*r^2= 5,14 / (3,1416*(550/2/1000)^2) = 21,65 m3/h/m2, que es una velocidad de filtrado realmente baja.

Así que se me ocurre que inicialmente dividiré el filtrado en 3 periodos durante el día de 1/2 PR (2,5 horas) , 1PR (5 horas) y 1/2 PR (2,5 horas), iniciando cada uno de los mismos con un 12-15% del tiempo a alta velocidad. Si veo que sobre esta base va bien haré los corresponcientes ajustes dinámicos segun temperatura del agua (que actualmente está manteniendose entre 27 y 29ºC)

Muchas gracias.

Re: Proyecto de automatización con raspberry pi (DIY)

NotaPublicado: 10 Oct 2017, 06:48
por germansantos
Impresionante el detalle de la información. ¿Sería posible el uso de reductores de velocidad para el motor? Muchas gracias!

Re: Proyecto de automatización con raspberry pi (DIY)

NotaPublicado: 04 Dic 2017, 13:04
por Nacymar
Un post muy interesante. Precisamente estaba pensando meterme en el mundo de las raspberry pi despues de un curso de domotica que hice. Gracias por compartir.

Re: Proyecto de automatización con raspberry pi (DIY)

NotaPublicado: 08 Dic 2017, 10:39
por natiruiz
Es muy bueno! gracias por la información!