sobota, 27 stycznia 2018

Dashticz - wyświetlanie faz księżyca

Na prośbę jednego z czytelników opiszę sposób skonfigurowania w Dashticz bardzo ładnego, przydatnego dodatku - faz księżyca z ich prezentacją na zdjęciach. Nie dość, że estetyczne, to jeszcze naprawdę przydatne.


Nie jestem autorem tego pomysłu i skryptu, od razu piszę. Dlatego po źródłowy kod odsyłam do:


a postaram się tutaj wyjaśnić sposób jego instalacji.

Zacząć trzeba od stworzenia pliku w folderze /scripts/lua, co ważne z początkiem nazwy script_time_. Dla uproszczenia - można tak jak w przykładzie - script_time_moon.lua.

Tam wklejamy kod wskazany w linku.

Tak jak w podanej w Wiki Domoticz instrukcji - krytyczne jest założenie 2 zmiennych użytkownika i 5 wirtualnych czujników w zakładce Devices.


Najpierw jednak Hardware:


I później Dummy sensors z typami jak poniżej:


Czyli User Variable:

MoonPicture STRING
MoonphaseCheck STRING

I Dummy:

Dummy Switch Moon up Text
Dummy Switch Moon under Text
Dummy Switch Moonpercentage Percentage
Dummy Switch Moon age Custom Sensor Days
Dummy Switch Moonphase Text

Teraz pora zmienić dane w script_time_moon.lua. Co do zmiennych, które musimy dostosować:

local moonpicture = "MoonPicture"

Nazwa zmiennej użytkownika - tam skrypt zapisuje numer obrazka png do wyświetlenia.

local checkvar = "MoonphaseCheck"

Również używana w skrypcie. Wpisywana tam jest nazwa fazy. Można zmienić na angielski i później wyświetlać w Domoticz.

local checktime = 3600

Interwał odświeżania danych z WeatherUnderground. Nie może być zbyt mały, bo zależy od planu jaki tam mamy. A zapewne będzie darmowy...

local city = "Warszawa"

Miasto dla WeatherUnderground

local countryCode = "PL"

Kod kraju dla WeatherUnderground

local idxmoonrise='161'
local idxmoonset='162'
local idxmoonpercentage ='163'
local idxmoonage ='164'
local idxmoonphase ='165'

Powyżej 5 czujników, w których musimy wpisać IDX takie jak założyliśmy wcześniej.

local wuAPIkey = "xxxxxxxxxxx"

Klucz WeatherUnderground. Dla przypomnienia - instrukcja założenia tutaj: https://cezarowy.blogspot.com/2017/09/dashticz-spenienie-marzen-maniaka.html

AKTUALIZACJA 2018-05-21!

Z tego co widzę to Weather Underground przestało udostępniać darmowe API z danymi pogodowymi! Postaram się zbadać temat i odpowiedni zmienić opis Dashticz.



local DOMO_IP = "192.168.1.200"
local DOMO_PORT = "80"

Dane dostępowego naszego Domoticz.

local tempfilename = '/var/tmp/phase.tmp'

To miejsce gdzie będzie się zapisywał plik z danymi zrzucanymi z WeatherUnderground. Część danych wygląda na przykład tak:
  "astronomy": 1
  }
        }
                ,       "moon_phase": {
                "percentIlluminated":"81",
                "ageOfMoon":"11",
                "phaseofMoon":"Waxing Gibbous",
                "hemisphere":"North",
                "current_time": {
                "hour":"22",
                "minute":"20"
                },
                "sunrise": {
                "hour":"7",
                "minute":"23"
                },
                "sunset": {
                "hour":"16",
                "minute":"26"
                },
                "moonrise": {
                "hour":"12",
                "minute":"26"
                },
                "moonset": {
                "hour":"2",
                "minute":"54"
                }
        },

Celem skryptu na Wiki Domoticz jest odpowiednie odczytanie tego pliku i zamapowanie zmiennych.

Jeżeli zmienne są poprawne i skrypt zacznie działanie (sam, ponieważ script_time_ uruchamiają się automatycznie), będzie to wyglądać tak:


W sumie mamy już wszystko. Pozostaje konfiguracja Dashticz.

W sekcji config dodajemy:
config['idx_moonpicture'] = 7;

Ten IDX jest numerem naszej User Variable.

W sekcji buttons:

var buttons = {} 
buttons.moon = {width:6, isimage:true, refreshimage:60000, image: 'moon'}

W columns:

columns[1] = {} 
columns[1]['blocks'] = [buttons.moon];
columns[1]['width'] = 3;

I screens:

screens[1] = {}
screens[1]['columns'] = [1];

Oczywiście Wy powinniście dołożyć ten przycisk w kolumnach, które u Was są poprawne i na odpowiednim ekranie.

Chciałbym teraz napisać: 'Cieszymy się, że działa' i mam nadzieję, że tak będzie...

3 komentarze:

  1. Witam.
    Co może być tego przyczyną?
    Error: EventSystem: in home/pi/domoticz/scripts/lua/script_time_moon.lua: /home/pi/domoticz/scripts/lua/script_time_moon.lua:130: attempt to perform arithmetic on global 'percentIlluminated' (a nil value)
    Raz się zaktualizowało a teraz mam taki błąd.

    OdpowiedzUsuń
    Odpowiedzi
    1. Tak mi to trochę wygląda jakby był problem odczytu wartości z WeatherUnderground. Później na tej zmiennej wykonywane jest dzielenie i u Ciebie jest pusta (nie zerowa, a pusta)

      Usuń
  2. Problemy z urządzeniami AGD mogą powodować duże utrudnienia w codziennym życiu, dlatego ważne jest, aby szybko znaleźć rzetelny serwis. Profesjonalni technicy nie tylko naprawią uszkodzony sprzęt, ale również doradzą, jak dbać o urządzenia, by służyły przez długi czas. Serwis AGD, który oferuje wsparcie techniczne na wysokim poziomie, jest nieoceniony w przypadku nagłych awarii. Szczegółowe informacje o oferowanych usługach można znaleźć na: https://serwisagd-technik.pl/. Wybierając serwis, warto zwrócić uwagę na szybkość reakcji i dostępność części zamiennych.

    OdpowiedzUsuń

3DS Hack, jak uruchomić jakiekolwiek demo na tej konsoli?

     Dobry wieczór. Czasem pokusa, aby obejrzeć produkcje demoscenowe na każdym sprzęcie na którym je stworzono jest zbyt silna. A że Ninten...