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

2 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ń