Jump to content

YWeather


TomTelos

Recommended Posts

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

A jeszcze propozycja .Fajnie jak by się wtyczka wyświetlała pod niebieskim klawiszem lub w GOS-manager.

Pod niebieskim klawiszem jako rozszerzenie.... nie głupi pomysł mogę dodać. Ale GOS-manager ??? co ma wspólnego wtyczka pogody z zarządzaniem systemu? Chyba coś ci się pomyliło ;)

Link to comment
Share on other sites

  • 5 months later...
  • 3 weeks later...

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)
]]>

Link to comment
Share on other sites

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!

 

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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!?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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...

Link to comment
Share on other sites

całkiem możliwe ... sytuacja była niestabilna raz działało raz nie  teoretycznie restart dekodera naprawiał problem lecz tylko do następnego zmiany kanału (może był to zbieg okoliczności) plik yweather.xml wydawał się być OK ale szczegółowej analizy nie robiłem.

Link to comment
Share on other sites

  • 1 month later...
  • 5 weeks later...
Guest scOOtt

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

Link to comment
Share on other sites

  • 2 weeks later...

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

Link to comment
Share on other sites

@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.

Link to comment
Share on other sites

  • 9 months later...

TomTelos[/member]

 

 

Czy mógłbym prosić o poprawiony converter YWeather.py bo ten który mam nie wyświetla mi pogody.Sam plugin ściągnąłem z githuba i działa, ale plugin nie zawiera tego convertera i w infobarze pogoda się nie wyświetla.

 

Z góry dziękuję i pozdrawiam.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 4 weeks later...

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) ?

Link to comment
Share on other sites

  • 3 years later...

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".

Link to comment
Share on other sites

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ć..

Edited by Skubi
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...