Ajusta automaticamente o brilho da tela com base no nascer e no pôr do sol

8

Existem perguntas e respostas semelhantes em Perguntar ao Ubuntu que apontam para estas soluções:

mas eles exigem a entrada manual dos horários do nascer e do pôr do sol ou simplesmente ajustam o equilíbrio de cores e adicionam mais vermelho à noite.

Estou procurando uma solução que obtenha automaticamente os horários do nascer e do pôr do sol todos os dias e ajuste fisicamente o brilho da tela. Além disso, quero um efeito de transição durante um período de 60 a 120 minutos, por isso não percebo a mudança de exibição.

A reconfiguração em dias nublados (escurecimento externo) ou quando o sol se põe entre dois prédios de três andares em vez de seus telhados (mais claros antes do pôr do sol) deve ser um processo rápido e fácil.

    
por WinEunuuchs2Unix 19.03.2017 / 01:10

2 respostas

7

Introdução

Esta é uma solução bash sem necessidade de instalar programas adicionais. É necessária uma ligação à Internet (se estiver a ler isto, tem uma) para obter automaticamente as horas do nascer e do pôr-do-sol todos os dias. Ele fornece uma tela de configuração amigável. Ele é iniciado automaticamente com cron e não requer interação do usuário.

Esta resposta está dividida em várias partes

  • Obter automaticamente as horas do nascer e do pôr do sol todos os dias com cron
  • Definir configurações de brilho e tempo de transição
  • Script principal para ajustar o brilho com base na hora do dia
  • Iniciar o brilho automático de exibição automaticamente a cada inicialização com cron
  • Ajuste de brilho instantâneo / transparente retomado da suspensão
  • Resumo

Obtém automaticamente as horas do nascer e do pôr-do-sol todos os dias com o cron

Existem muitos sites para informar as horas do nascer e do pôr-do-sol da sua localização. Este script usa ( link ) que é um site bem conhecido há muito tempo.

Com o poder sudo, edite o arquivo /usr/local/bin/sun-hours e cole o seguinte:

#!/bin/bash

# Called daily from /etc/cron.daily/sun-hours
while true; do

### "-q"= quiet, "-O-" pipe output
echo $(wget -q -O- https://www.timeanddate.com/sun/canada/edmonton | grep -oE 'Sunrise Today.{35}' | awk -F\> '{print }' | tr --delete "<") > /tmp/sunrise
echo $(wget -q -O- https://www.timeanddate.com/sun/canada/edmonton | grep -oE 'Sunset Today.{35}' | awk -F\> '{print }' | tr --delete "<") > /tmp/sunset

## If network is down files will have one byte size
size1=$(wc -c < /tmp/sunrise)
size2=$(wc -c < /tmp/sunset)

if [ $size1 -gt 1 ] && [ $size2 -gt 1 ] ; then
    cp /tmp/sunrise /usr/local/bin/sunrise
    cp /tmp/sunset  /usr/local/bin/sunset
    chmod 666 /usr/local/bin/sunrise
    chmod 666 /usr/local/bin/sunset
    rm /tmp/sunrise
    rm /tmp/sunset
    exit 0
else
    logger "/etc/cron.daily/sun-hours: Network is down. Waiting 5 minutes to try again."
    sleep 300
fi

done

Antes de salvar o script, substitua as duas ocorrências de /canada/edmonton pelo seu próprio país e cidade. Visite o site www.timeanddate.com para obter o nome ou número exato. Por exemplo, "Paris, EUA" tem dezenas de nomes, então eles contêm um número como /worldclock/@5205082 para "Paris, PA, EUA".

Use o cron para executar o script sun-hours todos os dias

Com o poder sudo, edite o arquivo /etc/cron.daily/sun-hours e cole o seguinte:

#!/bin/sh
#
# Each day /etc/cron.daily/sun-hours will get sunrise and sunset times.

sleep 60 # give time for network to come up.
/usr/local/bin/sun-hours

Marque os dois arquivos como executáveis com sudo chmod a+x ___/sun-hours , em que "

por WinEunuuchs2Unix 19.03.2017 / 02:10
3

Acabei de escrever um programa que quase faz o que você está procurando. Altera o brilho da tela com base nas imagens capturadas pela sua webcam para obter o brilho ao redor. Você pode escolher o intervalo para detectar o brilho e a velocidade de escurecimento sozinho.

link

    
por wandersalamander 18.12.2017 / 00:11