Диод c резистором подсоединен к GPIO26, запускать файлик из под sudo.


import RPi.GPIO as GPIO
import time

def blink(pin):
  GPIO.output(pin,GPIO.HIGH)
  time.sleep(1)
  GPIO.output(pin,GPIO.LOW)
  time.sleep(1)

GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.OUT)

try:
  for i in range(0, 6):
    blink(26)
except Exception as e:
  print(e)
finally:
  GPIO.cleanup()

Мне важно знать погоду, но я никак не могу себя заставить смотреть на градусник при выходе. Я использую Ubuntu и там есть система нотификаций NotifyOSD. Соответственно данное решение будет работать на всех операционных системах где установлена NotifyOSD и Python3.

Статей по этой тематике не так уж много. Я взял за основу статью с хабра "Яндекс.ТвояПогода". В статье указано что я должен узнать id города в котором живу из следующего файла http://weather.yandex.ru/static/cities.xml. Для моего города Первоуральска идентификатор 28437. И соответсвенно прочитать данные о погоде для моего города из файла http://export.yandex.ru/weather-ng/forecasts/28437.xml. Я написал следующий скрипт.


#! /usr/bin/env python3
import subprocess
from lxml import etree

# Конфигурационный параметр.
# Идентификатор города в Яндекс.Погода
# Первоуральск.
city_id = 28437

ns = {'ya': 'http://weather.yandex.ru/forecast'}
tree = etree.parse(r'http://export.yandex.ru/weather-ng/forecasts/{}.xml'.format(city_id))
temp = tree.xpath('ya:fact/ya:temperature', namespaces = ns)[0].text
type = tree.xpath('ya:fact/ya:weather_type', namespaces = ns)[0].text
subprocess.call(['notify-send', 'Погода: {}'.format(temp), type])

Скрипт я записал в файл nano ~/scripts/weather. Сделал файл исполняемым chmod +x ~/scripts/weather и создал следующую задачу для cron.


5,35 * * * * DISPLAY=:0.0 ~/scripts/weather

Каждую 5 и 35 минуту часа мне показывается погода.