Skocz do zawartości

YWeather


TomTelos

Rekomendowane odpowiedzi

YWeather

 

YWeather jest to pogoda bazująca na pogodzie od yahoo! Plusem tej pogody jest że może być w infobarach wykorzystana tak jak WeatherPlugin (który ostatnio coraz gorzej działa, api zagrożone).

Spolszczona i dostosowana do lokalizacji.

Miasto konfiguruje się we wtyczce pogody klawisz setup.

Ikonki pogody można zmieniać w OPKG.

 

Uwagi:

Wyświetlane Ciśnienie "mb" jest dokładnie takie same jak "hpa" (ten sam przelicznik).

U mnie temperatura odczuwalna zawsze jest ta sama co aktualna. Na stronie yahoo weather tak samo. Może kiedyś zacznie yahoo prawidłowo to pokazywać.

 

W piątym screenie przykładowy InfoBar wykorzystany w skórce infinityHD-GOS.

screenshot_2015-08-13_08-49-16.png.d7d15b3e305327b20031fe69690c07ad.png

ywether_skin1.png.43991a2fe3efa1810fe623fbacd5e1e3.png

ywether_skin2.png.c869e728182503739f19a2711126cf71.png

ywether_setup.png.74a9793b04091826eb05eb8cc196dd2f.png

ywether_infobar.png.da36e48522c67e4b8b717d838c5ba1dc.png

Odnośnik do komentarza
Udostępnij na innych stronach

Graterlii próbowałem już w wersji GOS 2.0, zainstalowałem na pendrive, odpaliła pooglądałem co tam w PPanel ciekawego (chyba tak to się nazywało) tylko po restarcie pokazało się coś na wyświetlaczu (nie pamiętam ale chyba miało jakiś związek z dyskiem) i tak trwało chyba z pół godziny.Dałem sobie spokój i wróciłem do walki z Freeboxem (po drodze walka z wszystkimi Hyperionami które mają tendencję do dziwnego zamulania po odtworzeniu kilku filmów przez sieć).

 

Dzisiaj używam Freeboxa bo opanowałem błąd który występował przy odtwarzaniu filmów przez sieć (po ponad godzinie crash a w logu zawsze ten sam fragment z błędem aktualizacji czasu).Okazało się że błąd powoduje wyświetlanie ikon pogody w infobarze.Zmieniłem na postać tekstową i jak ręką odjął.

 

Skina zrobiłem sobie na wzór starego Connicity by crash który mi się spodobał.Żeby działał na Graterlii wystarczy zmienić renderer z Label na ChannelNumber przy wyświetlaniu numeru kanału.Jeżeli się komuś spodoba to mogę tego skina tu wrzucić, nie ma żadnego problemu.

 

Kilka screenów:

 

 

15.jpg.8d82d89508ff02a07537ca78a808d5d8.jpg

16.jpg.defa75c167bdffde4c02529ab6932388.jpg

17.jpg.93f04b5136bdaf651d11a78dfcacf849.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

  • 5 miesięcy temu...
  • 3 tygodnie później...

Przy zmianie kanału zawiesza dekoder (skórka infinityHD-GOS)

<151613.868708> [eDVBPESReader] Created. Opening demux
<151613.868788> [eDVBDemux] open demux /dev/dvb/adapter0/demux0
<151613.869087> [eDVBTeletextParser] starting PES reader on pid=ffffffff
<151614.185499> [eDVBFrontend] FE_GET_PROPERTY failed: Invalid argument
<151614.480743> [eDVBFrontend] FE_GET_PROPERTY failed: Invalid argument
<151614.832767> [eDVBFrontend] FE_GET_PROPERTY failed: Invalid argument
Traceback (most recent call last):
  File "/usr/lib/enigma2/python/Navigation.py", line 59, in dispatchEvent
  File "/usr/lib/enigma2/python/Components/PerServiceDisplay.py", line 17, in event
  File "/usr/lib/enigma2/python/Components/Sources/CurrentService.py", line 26, in serviceEvent
  File "/usr/lib/enigma2/python/Components/Element.py", line 86, in changed
  File "/usr/lib/enigma2/python/Tools/CList.py", line 7, in __call__
  File "./Components/Converter/YWeather.py", line 630, in changed
  File "/usr/lib/enigma2/python/Components/Element.py", line 86, in changed
  File "/usr/lib/enigma2/python/Tools/CList.py", line 7, in __call__
  File "/usr/lib/enigma2/python/Components/Renderer/Label.py", line 21, in changed
  File "/usr/lib/enigma2/python/Components/Element.py", line 15, in wrapper
  File "./Components/Converter/YWeather.py", line 449, in getText
IndexError: list index out of range
<151614.899936> [ePyObject] (CallObject(<bound method Navigation.dispatchEvent of <Navigation.Navigation instance at 0x2c73e5ac>>,(6,)) failed)
]]>

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem czy ma to związek ... mam (./Components/Converter/YWeather.py") używam go do wyświetlenia pogody w skinie...

Również mam problemy z tym componentem

log podobny

Traceback (most recent call last):
  File "/usr/lib/enigma2/python/Navigation.py", line 59, in dispatchEvent
  File "/usr/lib/enigma2/python/Components/PerServiceDisplay.py", line 17, in event
  File "/usr/lib/enigma2/python/Components/Sources/CurrentService.py", line 26, in serviceEvent
  File "/usr/lib/enigma2/python/Components/Element.py", line 86, in changed
  File "/usr/lib/enigma2/python/Tools/CList.py", line 7, in __call__
  File "/usr/lib/enigma2/python/Components/Converter/YWeather.py", line 205, in changed
  File "/usr/lib/enigma2/python/Components/Element.py", line 86, in changed
  File "/usr/lib/enigma2/python/Tools/CList.py", line 7, in __call__
  File "/usr/lib/enigma2/python/Components/Renderer/Label.py", line 21, in changed
  File "/usr/lib/enigma2/python/Components/Element.py", line 15, in wrapper
  File "/usr/lib/enigma2/python/Components/Converter/YWeather.py", line 102, in getText
ValueError: could not convert string to float: 
<  7288.189570> [ePyObject] (CallObject(<bound method Navigation.dispatchEvent of <Navigation.Navigation instance at 0x2cb66aac>>,(1,)) failed)
<  7291.368276> [gRC] main thread is non-idle! display spinner!

 

Odnośnik do komentarza
Udostępnij na innych stronach

U mnie to nie ma związku mam dość stary i lekko przerobiony YWeather.py

from Components.Converter.Converter import Converter
from enigma import iServiceInformation, iPlayableService
from Components.Element import cached
from Tools.Directories import fileExists
from Poll import Poll
import time
import os
import subprocess
weather_city = '509401'
time_update = 10
time_update_ms = 30000

class YWeather(Poll, Converter, object):
    city = 0
    country = 1
    direction = 2
    speed = 3
    humidity = 4
    visibility = 5
    pressure = 6
    pressurenm = 7
    wtext = 8
    temp = 9
    chill = 10
    picon = 11
    ipaddr = 12

    def __init__(self, type):
        Converter.__init__(self, type)
        Poll.__init__(self)
        if type == 'city':
            self.type = self.city
        elif type == 'country':
            self.type = self.country
        elif type == 'direction':
            self.type = self.direction
        elif type == 'speed':
            self.type = self.speed
        elif type == 'humidity':
            self.type = self.humidity
        elif type == 'visibility':
            self.type = self.visibility
        elif type == 'pressure':
            self.type = self.pressure
        elif type == 'pressurenm':
            self.type = self.pressurenm
        elif type == 'text':
            self.type = self.wtext
        elif type == 'temp':
            self.type = self.temp
        elif type == 'chill':
            self.type = self.chill
        elif type == 'picon':
            self.type = self.picon
        elif type == 'ipaddr':
            self.type = self.ipaddr
        self.poll_interval = time_update_ms
        self.poll_enabled = True

    @cached
    def getText(self):
        xweather = {'ycity': 'N/A',
         'ycountry': 'N/A',
         'ydirection': 'N/A',
         'yspeed': 'N/A',
         'yhumidity': 'N/A',
         'yvisibility': 'N/A',
         'ypressure': 'N/A',
         'ytext': 'N/A',
         'ytemp': 'N/A',
         'ychill': 'N/A',
         'ypicon': '3200'}
        direct = 0
        info = ''
        if not fileExists('/tmp/yweather.xml'):
            os.system("/bin/echo -e 'None' > /tmp/yweather.xml")
            return 'N/A'
        for line in open('/tmp/yweather.xml'):
            if line.find('<yweather:location') > -1:
                xweather['ycity'] = line.split('city')[1].split('"')[1]
                xweather['ycountry'] = line.split('country')[1].split('"')[1]
            elif line.find('<yweather:wind') > -1:
                xweather['ychill'] = line.split('chill')[1].split('"')[1]
                xweather['ydirection'] = line.split('direction')[1].split('"')[1]
                xweather['yspeed'] = line.split('speed')[1].split('"')[1]
            elif line.find('<yweather:atmosphere') > -1:
                xweather['yhumidity'] = line.split('humidity')[1].split('"')[1]
                xweather['yvisibility'] = line.split('visibility')[1].split('"')[1]
                xweather['ypressure'] = line.split('pressure')[1].split('"')[1]
            elif line.find('<yweather:condition') > -1:
                xweather['ytext'] = line.split('text')[1].split('"')[1]
                xweather['ypicon'] = line.split('code')[1].split('"')[1]
                xweather['ytemp'] = line.split('temp')[1].split('"')[1]

        if self.type == self.city:
            info = xweather['ycity']
        elif self.type == self.country:
            info = xweather['ycountry']
        elif self.type == self.direction:
            if xweather['yspeed'] != 'N/A':
                speed = float(xweather['yspeed'])
            else:
                speed = 0
            if speed > 0:
                if xweather['ydirection'] != 'N/A':
                    direct = int(xweather['ydirection'])
                    if direct >= 0 and direct <= 20:
                        info = _('Pn')
                    elif direct >= 21 and direct <= 35:
                        info = _('Pn Pn-Wsch')
                    elif direct >= 36 and direct <= 55:
                        info = _('Pn-Wsch')
                    elif direct >= 56 and direct <= 70:
                        info = _('Wsch Pn-Wsch')
                    elif direct >= 71 and direct <= 110:
                        info = _('Wsch')
                    elif direct >= 111 and direct <= 125:
                        info = _('Wsch Pd-Wsch')
                    elif direct >= 126 and direct <= 145:
                        info = _('Pd-Wsch')
                    elif direct >= 146 and direct <= 160:
                        info = _('Pd Pd-Wsch')
                    elif direct >= 161 and direct <= 200:
                        info = _('Pd')
                    elif direct >= 201 and direct <= 215:
                        info = _('Pd Pd-Zach')
                    elif direct >= 216 and direct <= 235:
                        info = _('Pd-Zach')
                    elif direct >= 236 and direct <= 250:
                        info = _('Zach Pd-Zach')
                    elif direct >= 251 and direct <= 290:
                        info = _('Zach')
                    elif direct >= 291 and direct <= 305:
                        info = _('Zach Pn-Zach')
                    elif direct >= 306 and direct <= 325:
                        info = _('Pn-Zach')
                    elif direct >= 326 and direct <= 340:
                        info = _('Pd Pd-Zach')
                    elif direct >= 341 and direct <= 360:
                        info = _('Pn')
                else:
                    info = 'N/A'
            else:
                info = ''
        elif self.type == self.speed:
            if xweather['yspeed'] != 'N/A':
                info = '%.1f km/h' % (float(xweather['yspeed']) * 1.609)
            else:
                info = 'N/A'
        elif self.type == self.humidity:
            if xweather['yhumidity'] != 'N/A':
                info = xweather['yhumidity'] + ' mb'
            else:
                info = 'N/A'
        elif self.type == self.visibility:
            if xweather['yvisibility'] != 'N/A':
                info = xweather['yvisibility'] + ' km'
            else:
                info = 'N/A'
        elif self.type == self.pressure:
            if xweather['ypressure'] != 'N/A':
                info = '%.1f hPa' % round(float(xweather['ypressure']) * 33.866)
            else:
                info = 'N/A'
        elif self.type == self.pressurenm:
            if xweather['ypressure'] != 'N/A':
                info = '%d mmHg' % round(float(xweather['ypressure']) * 0.75)
            else:
                info = 'N/A'
        elif self.type == self.wtext:
            if xweather['ytext'] != 'N/A':
                info = xweather['ytext']
            else:
                info = 'N/A'
        elif self.type == self.temp:
            if xweather['ytemp'] != 'N/A':
                dtemp = round((float(xweather['ytemp']) - 32) * 5 / 9)
                if dtemp > 0:
                    info = '+' + '%d' % dtemp + '%s' % unichr(176).encode('latin-1') + 'C'
                else:
                    info = '%d' % dtemp + '%s' % unichr(176).encode('latin-1') + 'C'
            else:
                info = 'N/A'
        elif self.type == self.chill:
            if xweather['ychill'] != 'N/A':
                dchill = round((float(xweather['ychill']) - 32) * 5 / 9)
                if dchill > 0:
                    info = 'odczuwalna +' + '%d' % dchill + '%s' % unichr(176).encode('latin-1') + 'C'
                else:
                    info = 'odczuwalna ' + '%d' % dchill + '%s' % unichr(176).encode('latin-1') + 'C'
            else:
                info = 'N/A'
        elif self.type == self.picon:
            info = xweather['ypicon']
        elif self.type == self.ipaddr:
            f = open('/tmp/ipbox.txt', 'r')
            info = f.read()
            f.close()
        return info

    text = property(getText)

    def changed(self, what):
        Converter.changed(self, what)

Odnośnik do komentarza
Udostępnij na innych stronach

Zielono jeszcze nie miałem, za to w yweateher.xml mam:

 

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<rss version="2.0" xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
<channel>
<title>Yahoo! Weather - Error</title>
<description>Yahoo! Weather Error</description>
<item><title>City not found</title><description>
Weather Data not Available at the moment
</description></item></channel></rss>
<!-- fan1632.sports.bf1.yahoo.com Sat Feb  6 14:10:02 PST 2016 -->

 

Mam tą samą wersję, co @matzg.

 

Jakiś problem z Yahoo!?

Odnośnik do komentarza
Udostępnij na innych stronach

U mnie wczoraj też był problem z pobieraniem pogody ale wychodzi na to, że jakiś problem z serwerem yahoo

 

Dodatkowo w logach mam coś takiego

[sKIN] Parsing embedded skin <embedded-in-'WeatherInfo'>
illegal flag wfBorder!
warning, skin is missing element picon_day9 in <class 'Plugins.Extensions.YWfH.plugin.WeatherInfo'>
warning, skin is missing element picon_day6 in <class 'Plugins.Extensions.YWfH.plugin.WeatherInfo'>
warning, skin is missing element picon_day7 in <class 'Plugins.Extensions.YWfH.plugin.WeatherInfo'>
warning, skin is missing element picon_day5 in <class 'Plugins.Extensions.YWfH.plugin.WeatherInfo'>
warning, skin is missing element picon_day0 in <class 'Plugins.Extensions.YWfH.plugin.WeatherInfo'>
warning, skin is missing element picon_day8 in <class 'Plugins.Extensions.YWfH.plugin.WeatherInfo'>
action ->  WizardActions down

Odnośnik do komentarza
Udostępnij na innych stronach

U mnie raczej to nie to ... na innym dekoderze (dużo starsza wersja GOS) wyświetla się prawidłowo.

 

Nic nie grzebałem powróciłem z skin default do infinityHD-nbox i widzę że jest OK

 

A może jednak to. Ja też nic nie grzebałem, ale GSa nie zaliczyłem. Po prostu miałem szczęście. Wygląda na to, że był problem z serwerem yahoo i zwracany wynik daleki był od oczekiwanego - przykład, który podałem generuje na ekranie "N/A", podobnie jak pusty plik przy braku sieci. Obydwa błędy są typu: "dane niezgodne z oczekiwanymi", czyli w pliku musiało być coś co przypominało normalne dane, ale jednak było niezgodne z formatem. Można by spróbować to naprawić dodając odpowiednią liczbę try i if do kodu...

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...
  • 5 tygodni później...

Witam.

Dokonałem aktualizacji wszystkich pakietów systemu i przestała mi się wyświetlać pogoda. Nic nie grzebałem. Upewniłem się, że we wtyczce jest poprawnie wpisana lokalizacja (kod Yahoo! Miasta). Zamiast pogody jednak wyświetla mi N/A.

Jaka moze byc tego przyczyna ?

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Po wejściu w "Yahoo! Pogoda" pokazuje się tylko "tabela" bez ikon, po wyjściu i wejściu jeszcze raz tuner się zawiesza i nie jesteśmy wstanie nic zrobić, sprawdzane kilka razy za każdym razem efekt taki sam. W pasku informacyjnym wyświetla pogodę ok (zmiana miejsca wyświetlania pogody w "modyfikacja skórki")

 

Pakiety zainstalowane:

 

tuxish-ESI88-Box:~# opkg list-installed
alsa-libs - 1.1.1-1
autofs - 4.1.4-1
busybox - 1.24.2-1
cron - 4.1-4
dev-gos - 1.0.16
e2fslibs - 1.42.13-4
e2fsprogs - 1.42.13-4
enigma2 - 2016-04-25-1
enigma2-picon-hotbird-tuxish-220x132 - 2016-04-23
enigma2-picon-weather-style-default - 1.0.1
enigma2-plugin-fancontrol - 1.14.3
enigma2-plugin-frontpanel - 2.0.8
enigma2-plugin-j00zekopkgmgr - 0.0.8
enigma2-plugin-skinselector - 0.2.1
enigma2-plugin-userskin - 0.2.39
enigma2-plugin-yweather - 0.3.2
enigma2-skin-default - 2016-05-03
enigma2-skin-infinityhd-gos - 2016-05-08
ethtool - 6.0.0
expat-libs - 2.1.0
font-ae-almateen - 0.2.0
font-aller - 1.00.0
font-andale - 0.2.0
font-cool - 0.2.0
font-droid - 1.00.107
font-lcd - 0.2.0
font-nmsbd - 0.2.0
font-tuxtxt - 0.2.4
font-ubuntu - 0.80.0
font-valis-enigma - 0.2.0
freetype - 2.6.0-2
giflib - 5.1.2
glib2-gos - 2.45.4-2
glibc-gos - 2.14.1-56
graterlia - 2.1.27
graterlia-core - 2.0
graterlia-locale-pl - 2.14.1
graterlia-logo - 1.0.11
graterlia-manager - 0.1.179
graterlia-scripts - 0.1.289
gst-plugins-base-gos - 1.8.0-3
gst-plugins-dvbmediasink-gos - 1.8.0-3
gstreamer-gos - 1.8.0-3
gui-startscripts - 2.0.0
hdparm - 9.48
kernel-core-default-gos - 2.6.32.61.0217.01
kernel-modules-default-gos - 2.6.32.61.0217.02
kernel-modules-fan-gos - 2.6.32.61.0217.01
libblkid - 2.27.1
libbz2 - 1.0.6-3
libcap - 2.16.0
libcomerr - 1.42.13-4
libdreamdvd - 0.9
libdvbsi++ - 0.3.7-2
libdvdnav - 4.2.1
libdvdread - 4.9.9
libfdisk - 2.27.1
libffi - 6.0.4
libgcc-gos - 4.8.3-135
libjpeg-turbo - 1.4.2
libmount - 2.27.1
liborc - 0.4.24
libpng - 1.6.21
libproc - 3.2.8
libsigc++ - 1.2.7
libsmartcols - 2.27.1
libstdc++ - 4.8.3-145
libtuxtxt - 1.99.1
libuuid - 2.27.1
libvorbis - 1.3.4
libxml2 - 2.9.0
lircd - 0.9.0
ncurses-libs-gos - 5.9
ntpdate - 1.0.3-17
openssl - 1.0.2h
opkg - 0.2.4-12
oscam-webif - 1.20-r11209-1
procps - 3.2.8
python-base-gos - 2.7.9-3
python-twisted-gos - 16.0.0
python-zope-interface-gos - 4.1.3
remote-gos - 1.0.29
sdparm - 1.10
sti-firmware-audio - 1.0.1
sti-firmware-video - 1.0.1
stm-utils - 1.0.11
system-core - 2.1.32
sysvinit - 2.88.0dsf-31
util-linux-gos - 2.27.1
vsftpd - 3.0.3-1
zlib - 1.2.8

Odnośnik do komentarza
Udostępnij na innych stronach

@kusiu

Tyle już jesteś czasu na forum, nawet odważyłeś się spróbować obraz core. A prostego logu nie mogłeś przesłać? nie rozumiem. Skoro wywala ci błąd lub zawiesza tuner to powstaje enigma2_crash_*****.log a jak nie ma zapisu crasha to jest jeszcze debug log. Zmuszasz mnie żebym specjalnie grzebał w kodzie i szukał na ciemno błędu. A przesłanie loga sporo nam ułatwia develom. Piszesz że nie działa i tyle ??? nie ma daru jasnowidzenia....... jeszcze ;).

 

Problem znaleziony, poprawka wkrótce wyląduje w opkg.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 9 miesięcy temu...

Co do ywether i skórki infinity to od dawna nie potrzebują się razem. Skórka infinity korzysta z własnego convertera. Także nie wiem do jakiej skórki potrzebujesz ale jak coś to masz źródła i działaj w razie czego pytaj.

 

Co do samej wtyczki ywether czasem może nie wyświetlić danych w oknie dlatego dodałem opcje odświeżania pod przyciskiem OK.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 tygodnie później...

Co do ywether i skórki infinity to od dawna nie potrzebują się razem. Skórka infinity korzysta z własnego convertera. Także nie wiem do jakiej skórki potrzebujesz ale jak coś to masz źródła i działaj w razie czego pytaj.

 

Co do samej wtyczki ywether czasem może nie wyświetlić danych w oknie dlatego dodałem opcje odświeżania pod przyciskiem OK.

 

No właśnie, jak to teraz jest, działa  yweather jako infobar dla Skórki InfinityHD (tak jak to w pierwszym poście zostało opisane) ?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 lata później...

Raczej wszędzie ? Yahoo sukcesywnie blokowało coraz bardziej możliwość korzystania z ich serwisu pogodowego przez zewnętrzne narzędzia. Z tego co pamiętam należałoby własną usługę zarejestrować, parametry logowania do tej usługi wpisać do wtyczki i wtedy używać. Za darmo był limit zapytań, więc nie ma mowy o koncie "dla wszystkich".

Odnośnik do komentarza
Udostępnij na innych stronach

Pewnie nie ? a szkoda, bo bez niej nie działa weather w skórce infinityHD - pokazuje N/A wszędzie na pasku..

żebym wiedział jak się za to zabrać to spróbowałbym ? ale nie wiem ja. Trzeba by jakoś zdekompilować ten IPK, znaleźć miejsce, gdzie zapisane są te wartości i skompilować..

Edytowane przez Skubi
Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...