Statystyki rozwoju epidemii koronawirusa w Domoticzu

Statystyki rozwoju epidemii koronawirusa w Domoticzu

W dzisiejszym wpisie zaprezentuje w jaki sposób można pobierać informacje z zewnątrz wprost do wirtualnego urządzenia w Domoticz. Całość wykonamy z użyciem wbudowanego modułu skryptów dzVents. W związku z obecna sytuacja na świecie wykorzystamy dane na temat koronawirusa.

Jako źródło danych wykorzystamy projekt:
https://github.com/novelcovid/api

Aby wyświetlić aktualne informacje na temat Polski wystarczy odwiedzić adres: https://corona.lmao.ninja/countries/poland
W przeglądarce otrzymujemy następującą odpowiedź:

{"country":"Poland","countryInfo":{"_id":616,"iso2":"PL","iso3":"POL","lat":52,"long":20,"flag":"https://raw.githubusercontent.com/NovelCOVID/API/master/assets/flags/pl.png"},"cases":2554,"todayCases":0,"deaths":43,"todayDeaths":0,"recovered":56,"active":2455,"critical":50,"casesPerOneMillion":67,"deathsPerOneMillion":1,"updated":1585805640443}

Interesujące nas pola to „active” oraz „todayCases”, przejdźmy do Domoticza.

W zakładce sprzęt tworzymy nowe urządzenie Dummy. Z listy rozwijanej wybieramy „Custom Sensor”, jako oś podajemy np. „Przypadki”. Tworzymy w ten sposób dwa urządzenia:

  • Pierwsze w którym widoczna będzie łączna liczba zakażeń.
  • Drugie w którym będziemy mogli zaprezentować dzienny przyrost nowych przypadków.

Po dodaniu urządzeń czas na dane. Przechodzimy do zdarzeń, tworzymy nowe dzVents, timer.

Możemy podejrzeć jakie możliwości wyzwalania skryptu daje parametr czasu:

        'every minute',              -- causes the script to be called every minute
        'every other minute',        -- minutes: xx:00, xx:02, xx:04, ..., xx:58
        'every <xx> minutes',        -- starting from xx:00 triggers every xx minutes
                                     -- (0 > xx < 60)
        'every hour',                -- 00:00, 01:00, ..., 23:00  (24x per 24hrs)
        'every other hour',          -- 00:00, 02:00, ..., 22:00  (12x per 24hrs)
        'every <xx> hours',          -- starting from 00:00, triggers every xx
                                     -- hours (0 > xx < 24)
        'at 13:45',                  -- specific time
        'at *:45',                   -- every 45th minute in the hour
        'at 15:*',                   -- every minute between 15:00 and 16:00
        'at 12:45-21:15',            -- between 12:45 and 21:15. You cannot use '*'!
        'at 19:30-08:20',            -- between 19:30 and 8:20 then next day
        'at 13:45 on mon,tue',       -- at 13:45 only on Monday en Tuesday (english)
        'every hour on sat',         -- you guessed it correctly
        'at sunset',                 -- uses sunset/sunrise info from Domoticz
        'at sunrise',
        'at sunset on sat,sun',
        'xx minutes before sunset',
        'xx minutes after sunset',
        'xx minutes before sunrise',
        'xx minutes after sunrise'   -- guess ;-)
        'between aa and bb'          -- aa/bb can be a time stamp like 15:44
                                     -- aa/bb can be sunrise/sunset
                                     -- aa/bb can be 'xx minutes before/after
                                     -- sunrise/sunset'
        'at nighttime',              -- between sunset and sunrise
        'at daytime',                -- between sunrise and sunset
        'at civildaytime',           -- between civil twilight start and civil twilight end
        'at civilnighttime',         -- between civil twilight end and civil twilight start
        'at daytime on mon,tue',     -- between sunrise and sunset
                                     -- only on monday and tuesday

Początkowo, aby sprawdzić działanie skryptu ustawmy wywoływanie na czas 1 minuty.

Kod aktualizujący urządzenie dummy z liczbą przypadków w Polsce będzie wyglądał następująco:

return {
    on = {
        timer = { 'every 1 minutes' },
        httpResponses = { 'cases' }
    },
    execute = function(domoticz, item)
        if (item.isTimer) then
            domoticz.openURL({
                url = 'https://corona.lmao.ninja/countries/poland',
                method = 'GET',
                callback = 'cases'
            })
        end

        if (item.isHTTPResponse and item.ok) then
            domoticz.devices('Koronawirus w Polsce').updateCustomSensor(item.json['cases'])
        end
    end
}

‚Koronawirus w Polsce’ – zmieniamy na nazwę urządzenia dummy, które dodaliśmy wcześniej w Domoticz.

Po zapisaniu, przechodzimy na zakładkę urządzeń użytkowych:

Działa! To samo wykonujemy dla drugiego urządzenia, zmieniając pole callback = ‚cases‚ na ‚todayCases‚, oraz nazwę Dummy device ‚Koronawirus w Polsce’ na nazwę którą podaliśmy tworząc drugie urządzenie do przypadków dziennych.

Zgromadzone dane możemy zaprezentować np przy pomocy Imperihome, lub np na wyświetlaczu opartym o ESPEasy:

Facebook Comments

Dodaj komentarz