Home Assistant: řídíme efektivní práci fotovoltaické elektrárny

22. 2. 2024
Doba čtení: 16 minut

Sdílet

 Autor: Depositphotos
Dnes začneme s obsáhlejším tématem, kterým bude integrace fotovoltaické elektrárny do naší chytré domácnosti tak, abychom ji využili na maximum. Zajistíme integraci střídače a nastavíme automatizaci.

Toto téma je spíše určené pro pokročilé uživatele a nebo pro ty, kteří si s elektrárnou a jejími možnosti chtějí více „hrát“ a mít komplexní přehled o provozu. Běžným uživatelům pak často stačí jen dodávaná mobilní aplikace střídače nebo cloudová služba se statistikami provozu, což plně respektuji. Budu rád, když tento článek bude alespoň pro někoho inspirací nebo návodem, jak některé věci řešit, navíc z pohledu skutečně reálného provozu.

Co se dozvíte v článku
  1. Integrace střídače
  2. Měření elektrické energie
  3. Baterie
  4. Solární výroba a spotřeba domu
  5. Provozní režimy střídače
  6. Další nastavení střídače
  7. Příště budeme vizualizovat

Naše domácí elektrárna používá střídač GoodWe s bateriovým úložištěm Pylontech. Není to samozřejmě nejlepší střídač na trhu, je to taková „běžná Čína“, ale v poměru ceny, počtu instalací a možností, které nabízí, to není zas tak špatná volba. Jedná se o hybridní asymetrický střídač, který se tedy používá paralelně s distribuční síti. Není to tedy vhodný střídač pro tzv. ostrovní režim, pokud se rozhodneme, že se chceme zcela od distribuční sítě odpojit. Většinu uváděných informací budu primárně popisovat pro tento typ střídače.

Samozřejmě velké množství nastavení je mezi střídači podobné a budu se tak snažit na celou problematiku nahlížet co nejvíce obecně, aby byl tento článek přínosný i pro ostatní uživatele. Každý střídač může mít nějaká svá specifická nastavení a proto prosím omluvte, pokud některá funkcionalita nebude ve případě jiného případu dostupná či bude fungovat jinak.

Integrace střídače

Nejdříve musíme přidat střídač fotovoltaické elektrárny do vlastní instance Home Assistant. Způsobů připojení je několik a liší se dle možností jednotlivých střídačů. Některé z nich, např. GoodWe, umožňují přímé připojení pomocí protokolu TCP/IP, tedy na základě IP adresy v lokální síti. Jiné střídače (např. Growatt, SofarSolar, SolaX, Solis, Victron a další) pak nejčastěji využívají RS485 Modbus, takže k úspěšnému připojení potřebujeme ještě USB nebo Ethernet převodník. Dále se můžeme setkat s komunikací pomocí protokolu MQTT nebo připojením na cloudovou službu střídače pomocí API volání.

V některých případech cloudová služba data agreguje typicky po několika minutách, tudíž se nejedná o data v reálném čase. V jiných případech se skutečně o data v reálném čase jedná, ale na straně cloudové služby jsou aktivní různé rate-limity. Tak či tak jsme v tomto případě závislí na internetové konektivitě a provozu cílových serverů. Proto pokud máme tu možnost, je vždy lepší ke střídači přistupovat přímo po lokální síti, byť přes Modbus převodník za předpokladu, že nejde řešit jinak.

Pokud máme zjištěno, jakým způsobem je možné se ke střídači připojit, můžeme přistoupit k instalaci integrace. Ta může být přímo součástí Home Assistant nebo ji musíme najít a nainstalovat pomocí HACS. Integrace pro střídač GoodWe existuje v obou případech, a proto doporučuji nainstalovat tu z HACS, byť je uvedena jako experimental. Je totiž v novější verzi a nabízí více funkcí, včetně přímého zápisu dat do jednotlivých registrů.

Po připojení střídače do Home Assistantumáme k dispozici opravdu velké množství různých senzorů pro diagnostiku a samozřejmě také několik možností pro nastavení chování elektrárny. V případě GoodWe střídače se jedná o 152 různých entit, které poskytuje střídač. Projdeme si ty nejzásadnější a k některým popíšu specifické chování.

Měření elektrické energie

Součástí fotovoltaické elektrárny je smartmeter a cívky, které měří směr napětí, proudu, výkon a energii na jednotlivých fázích. Se střídačem pak typicky komunikuje pomocí RS485 rozhraní. Díky tomu máme k dispozici několik entit, které ukazují, jak a jakým směrem proudí elektřina, tedy z nebo do distribuční sítě. Senzory, které měří výkon ve Wattech se v případě střídače GoodWe jmenují  Active Power L1, Active Power L2, Active Power L3.

Záporné hodnoty znamenají tok z distribuční sítě do domu, kladné pak přesný opak. Dále pak bývá k dispozici senzor, který tyto hodnoty ze tří fází sčítá Active Power Total a pak ještě senzory, které udávají celkovou energii v kWh za den Today Energy Export, Today Energy Import a od začátku spuštění elektrárny Total Energy Export, Total Energy Import. U těchto souhrnných senzorů ovšem pozor na jednu záludnost, specifickou pro naše prostředí.

Na první pohled by se totiž mohlo zdát, že když se energie v kWh z jednotlivých fází sečte, máme tak jednoznačnou informaci o tom, kolik jsme celkové elektřiny odebrali (záporná hodnota) a kolik naopak dodali do distribuční sítě (kladná hodnota). Bohužel to takto uvažovat nemůžeme, protože střídače typicky předpokládají součtové měření a ne tedy měření po fázích, které se v distribučních sítí (ČEZ distribuce, PRE a EG.D) na našem území uplatňuje. Takto bychom měli v Home Assistant zcela jiné hodnoty, než které bychom odečetli z elektroměru.

Abychom získali správný údaj o odebrané/dodané elektřině a tedy takový, se kterým pak pracuje obchodník se silovou elektřinou, musíme si vytvořit vlastní dva template senzory. V jednom sečteme všechny kladné hodnoty ze tří fází a ve druhém všechny záporné hodnoty. Konkrétní zápis vypadá na první pohled trochu složitě, nicméně funguje na jednoduchých podmínkách IF je hodnota menší nebo větší než 0 a pak se buď jen sečte aktuální hodnota výkonu a nebo vynásobí –1. Zbytek zápisu je jen vhodné formátování výstupu.

sensor:
- platform: template
  sensors:
    energy_buy:
      friendly_name: "Energy Buy"
      unit_of_measurement: 'W'
      value_template: >-
        {{ '%i'|format((iif(states('sensor.active_power_l1')|float < 0, states('sensor.active_power_l1')|float, 0) + iif(states('sensor.active_power_l2')|float < 0, states('sensor.active_power_l2')|float, 0) + iif(states('sensor.active_power_l3')|float < 0, states('sensor.active_power_l3')|float, 0)) * -1) }}

    energy_sell:
        friendly_name: "Energy Sell"
        unit_of_measurement: 'W'
        value_template: >-
          {{ '%i'|format((iif(states('sensor.active_power_l1')|float > 0, states('sensor.active_power_l1')|float, 0) + iif(states('sensor.active_power_l2')|float > 0, states('sensor.active_power_l2')|float, 0) + iif(states('sensor.active_power_l3')|float > 0, states('sensor.active_power_l3')|float, 0))) }}

Výše uvedené senzory budou udávat opravdu správnou hodnotu odběru a dodávky elektrického výkonu ve Wattech, tedy stav v aktuálním čase tak, jak to následně změří elektroměr. Výstup v kWh, tedy hodnotu energie, získáme pomocí Riemannova integrálu.

sensor:
- platform: integration
    source: sensor.energy_buy
    name: energy_buy_sum
    unit_prefix: k
    round: 1
    method: left

- platform: integration
    source: sensor.energy_sell
    name: energy_sell_sum
    unit_prefix: k
    round: 1
    method: left

Senzory energy_buy, energy_sell budou udávat celkovou energii. Potřebujeme ještě pro lepší orientaci (a současně pro následnou vizualizaci) hodnoty za jednotlivé dny. K tomu využijeme dva pomocníky „Měřič spotřeby“, kteří budou nulovat svůj stav každý den v půlnoci. Můžeme je vytvořit přímo, jak jsme zvyklí, z menu Nastavení → Zařízení a služby → Pomocníci.

Zvolíme typ Měřič spotřeby, vstupní senzor je pak ten zintegrovaný a nulovací cyklus je denní. Kdo má rád spíše konfigurační zápis, může využít tuto definici přímo v YAML:

utility_meter:
  energy_buy_daily:
  source: sensor.energy_buy_sum
  cycle: daily

  energy_sell_daily:
  source: sensor.energy_sell_sum
  cycle: daily

Díky nově vzniklým senzorům energy_buy_daily, energy_sell_daily máme tedy informaci o denní spotřebě a dodávce elektřiny v kWh a ještě se k nim vrátíme, až budeme data vizualizovat.

Baterie

Pokud je fotovoltaická elektrárna instalována včetně baterií, nabídne nám střídač pohled i na celý bateriový management. Základním údajem o stavu baterie je hodnota SOC (State of Charge) neboli, zjednodušeně řečeno, na kolik procent je baterie nabita. Tento údaj se u baterií typu LiFePO4 vypočítává poměrně složitým způsobem, proto je doporučováno alespoň jednou týdně zajistit plné nabití baterie kvůli její správné kalibraci.

Kromě senzoru s hodnotou SOC je k dispozici i informace o kondici baterie SOH (State of Health), která by měla udávat úroveň degradace baterie. Následují údaje o teplotách článků baterie, různá chybová hlášení a samozřejmě to nejdůležitější, co nás také zajímá – informace o výkonu, proudu a napětí.  Souhrnné senzory o denní a celkové spotřebované/vydané energii Today Battery Charge, Today Battery Discharge a Total Battery Charge, Total Battery Discharge, které není potřeba nikterak upravovat jako v případě energie z a do distribuční sítě.

Výkon je zde však opět v rozsahu záporných a kladných hodnot, tedy záporné hodnoty znamenají aktuální výkon, kterým se baterie nabíjí, kladné pak výkon, který baterie dodává do domu. Zde si ale přesto připravíme dva vlastní template senzory, které pak budeme potřebovat pro další vizualizace. První senzor bude přestavovat nabíjecí výkon, druhý pak dodávaný výkon.

sensor:
- platform: template
  sensors:
    fve_battery_charge_w:
      friendly_name: "FVE Battery Charge power"
      unit_of_measurement: 'W'
      icon_template: mdi:battery-plus
      value_template: >-
        {% if states('sensor.battery_power')|float < 0 %}
          {{ '%i'|format(states('sensor.battery_power')|float * -1) }}
        {% else %}
          {{ 0 }}
        {% endif %}
    fve_battery_discharge_w:
      friendly_name: "FVE Battery Discharge power"
      unit_of_measurement: 'W'
      icon_template: mdi:battery-plus
      value_template: >-
        {% if states('sensor.battery_power')|float > 0 %}
          {{ '%i'|format(states('sensor.battery_power')|float) }}
        {% else %}
          {{ 0 }}
        {% endif %}

Posledními senzory, které v této souvislosti ještě zmíním, jsou maximální limity nabíjení a vybíjení. V mém případě baterie o kapacitě 10,65 kWh, složené ze tří modulů, se jedná o limit 18 A. To znamená, že jsem schopen baterii nabíjet maximálně výkonem přibližně 5,2 kW, případně zase na opak stejný maximální výkon dodávat do domu.

Maximální výkon je totiž vhodné znát, pokud se rozhodneme typicky v zimních měsících nabíjet baterii na 100% a nebo nabíjíme baterii v noci, abychom z ní čerpali energii během dne. Snadno si tak spočítáme, kolik hodin budeme potřebovat, zvlášť, když plánujeme takové nabíjení na dobu levnější silové elektřiny na spotovém trhu v kombinaci s nízkým tarifem distribuce.

Solární výroba a spotřeba domu

Nesmím samozřejmě opomenout informace o solární výrobě. Ty jsou obsažené v senzorech, které jsou pojmenované PV a jsou rozdělené podle zapojených stringů (střídače do 10 kW výkonu typicky umožňují připojit dva stringy, výkonnější střídače i čtyři). Kromě výkonu v kW samozřejmě nabízejí i hodnoty proudu a napětí. Současně také poskytují informaci o tom, zda-li jsou panely připojené a vyrábí.

Za krátký pohled ještě stojí senzory On-Grid dle jednotlivých fázích, tedy výkon, napětí a proud na výstupech střídače. Tedy vše, co skrze něj prochází buď ze solárních panelů nebo z baterie za předpokladu, že je k dispozici distribuční síť. Jakmile distribuční síť k dispozici není (tj. jedná se o výpadek distribuční sítě a nebo je shozený hlavní jistič), jsou tyto informace dostupné v senzorech  Back-Up.

Senzor House consumption znamená spotřebu domu ze všech dostupných zdrojů (solární panely, baterie, distribuční síť). Údaj o spotřebě domu v kWh v případě GoodWe střídače neexistuje v žádném senzoru, proto si opět pro potřeby další vizualizace takový senzor vytvoříme. Využijeme k tomu opět Riemannův integrál a měřič spotřeby.

sensor:
  - platform: integration
    source: sensor.house_consumption
    name: house_consumption_sum
    unit_prefix: k
    round: 1
    method: left

utility_meter:
    house_consumption_daily:
    source: sensor.house_consumption_sum
    cycle: daily

Poslední senzor Load, resp. Today Load, Total Load, pak přestavuje celkovou spotřebu zátěže, tj. vlastně spotřebu domu včetně režie střídače.

Provozní režimy střídače

Kromě různých senzorů, které daná integrace střídače nabízí, máme k dispozici i několik ovládacích v prvků, kterými můžeme ovlivnit chod elektrárny. První možností je nastavit režim, ve kterém se elektrárna nachází. Běžný režim nebo také General mode bude použit asi nejčastěji, a to znamená, že se nejdříve uspokojí spotřeba domácnosti ze solárních panelů. Energie, kterou domácí spotřebiče nespotřebují, se následně začne posílat do baterie a pokud i ta je na svých 100 %, začne energie směrem ven z domu.

Pokud ještě používáme zařízení na vytěžování přebytků (např. WattRouter, který dokáže plynulou regulaci) pro bojler, spotřebuje se přebytečná energie ještě do těchto spotřebičů. Jakmile ani v těchto případech není kam energii uložit, putuje už přímo do distribuční sítě, pokud máme od distributora povolený předem stanovený rezervovaný výkon.

Režim Off grid mode znamená, že se záložní výstup střídače odpojí od distribuční sítě a všechny spotřebiče na tomto výstupu se napájí pouze ze solárních panelů a nebo baterie. Spotřebiče, které nejsou připojeny na backup výstupu se napájí pouze z distribuční sítě, nikoliv z baterie. V režimu Backup mode se přednostně nabíjí baterie tak, aby se udržovala nastavená hodnota SOC pro případ, že by došlo k výpadku distribuční sítě. Pod hranici SOC tedy baterie nedodává elektřinu do domu.

Relativně nový je režim Peak shaving mode, který se stará o vykrývání špiček, které mohou krátkodobě nastat. Pokud máme např. hlavní jistič 16 A a po krátkou dobu bychom potřebovali odbavit zátěž až 25 A, bude se střídač snažit rozdíl podpořit z baterie. V opačném případě bychom museli vyměnit hlavní jistič za větší, což znamená i navýšení pravidelných poplatků.

U režimu Eco mode se na chvíli zastavím. Slouží k nabíjení a nebo vybíjení baterie dle nastaveného rozvrhu. Je to výhodné např. pro cílené nabíjení baterie v nočních hodinách při „levné“ elektřině, abychom pak při „drahé“ elektřině během dne využívali primárně baterii. Tento rozvrh ale není v případě střídače GoodWe možné nastavovat přímo v Home Assistantu a musí se definovat přímo v oficiální mobilní aplikaci. Používáme-li experimentální integraci, můžeme absenci nastavení rozvrhu od-do vyřešit pomocí režimů  Eco charge mode, Eco discharge mode.

Tyto režimy střídač GoodWe standardně nenabízí a je to jen v zásadě, jak jsem zjistil ze zdrojových kódů, standardní Eco režim, ke kterému se automaticky nastaví rozvrh platný celý den. Tedy jakmile využijeme tento režim pro vynucené nabíjení nebo vybíjení baterie, musíme jej následně v požadovaný čas vypnout, např. automatizací. K těmto ekonomickým režimům se ještě využívají entity Eco mode power, Eco mode SoC, kterými se právě nabíjení, resp. vybíjení, řídí. Hodnota Eco mode power určuje výkon v procentech jak pro nabíjení, tak pro vybíjení. Ten je ale závislý na maximální kapacitě baterie a maximálního proudu. V mém případě baterie o celkové kapacitě 10,65 kWh vychází 10 % výkonu na přibližně 1 kWh a vzhledem k maximálnímu proudu mohu maximálně použít výkon zhruba 50 %. Větší nastavená hodnota už nemá žádný efekt.

Entita Eco mode SoC určuje, při jaké hodnotě SOC baterie se má ekonomický mód automaticky vypnout, ovšem standardní SOC baterie může být nastavené jiné. Ovšem pozor, toto se aplikuje pouze na nabíjení a vybíjení baterie se řídí pouze standardním SOC. Nicméně pomocí vhodně nastaveného vybíjení baterie se dá docílit jedna zajímavá vlastnost. Pokud nastavíme vybíjecí výkon 1%, baterie se vlastně nevybíjí a veškerý výkon ze solárních panelů, ačkoliv není baterie plně nabita, odchází po uspokojení spotřeby domácnosti přímo do distribuční sítě. Baterie se v tu chvíli pouze nabíjí udržovacím výkonem 100–120 W tak, aby nekleslo SOC.

K čemu je to vlastně dobré? Pokud prodáváme přebytky na spotovém trhu, tak v dopoledních hodinách je cena za 1 kWh vyšší, než odpoledne, kdy už typicky v létě máme baterii zcela nabitou (samozřejmě i ostatní) a přebytky by byly tak prodávány za nižší částku. Má to ovšem jednu nevýhodu. Baterie je v tomto stavu vlastně blokována pro dodávku pro domácí spotřebu. Tudíž pokud se baterie takto vybíjí, spustí se v domácnosti větší zátěž a výkon ze solárních panelů nestačí, bude se chybějící energie dodávat z distribuční sítě. Zde však nevychází ekonomika a je potřeba si na takový případ dát pozor, neboť odebraná 1 kWh z distribuční sítě je výrazně dražší nežli dodaná v rámci přebytků.

Další nastavení střídače

Pravděpodobně častěji, než měnit režimy střídače, budeme pracovat s hodnotou Depth of discharge (DOD), která udává, do jaké hodnoty v procentech se má baterie využívat, vybíjet. DOD lze nastavit jak pro situaci, kdy je střídač připojen k distribuční síti, tak v případě, že není. V Home Assistantu je ovšem u GoodWe střídače k dispozici pouze nastavení pro režim on-grid, tedy s aktivní distribuční sítí. Ale zpět k této funkcionalitě. Pokud např. nastavíme na hodnotu 80% říkáme tím střídači, že se baterie může vybíjet až do hodnoty 20 % SOC (tedy SOC = 100 – DOD).

Poté se už jen nabíjí udržovacím výkonem a veškerá elektřina se používá z distribuční sítě. Existuje mnoho doporučení, jak s hodnotou DOD pracovat v různých časových období. Obecně je asi vhodné nastavit 80% v letních obdobích, kdy se předpokládá, že bude během dne dostatek slunce k tomu, aby se baterie vždy dobila na 100%. V zimních obdobích je vhodné DOD posunout alespoň na 50 %, protože pravděpodobnost, že slunce nabije baterii do plna je výrazně menší. Samozřejmě kromě ročního období záleží i na tom, jestli se domácnost často potýká s výpadky distribuční sítě a pokud ano, jakou potřebuje mít rezervu v bateriích, aby takové výpadky pokryla.

S nastavením DOD lze realizovat ještě jedna užitečná věc. Často se může stát, že v domácnosti potřebujeme zapnout nějaký spotřebič, který má spotřebu takovou, že nechceme, aby byla spotřebována z baterie. Nebo to zkrátka nedává ekonomický smysl. V takovém případě stačí nastavit hodnotu DOD na 0%, čímž se baterie vlastně „odstaví“ z provozu a opět se pouze nabíjí udržovacím výkonem. V jakých případech přesně takové nastavení používám, uvedu v pozdější kapitole.

Nakonec ještě jedna neméně užitečná funkce. Každý vlastník fotovoltaické elektrárny připojené do distribuční sítě má, v ideálním případě, povolený určitý rezervovaný výkon. Tedy maximální výkon, který je možné v patnáctiminutovém intervalu poslat do distribuční sítě. Často se tedy jedná o výkon rovný součtu výkonů solárních panelů, maximálně až 1,2násobek. V místech, kde není distribuční síť dostatečně dimenzovaná, může distributor povolit výkon menší a nebo v nejhorším případě žádný.

K tomu, abychom tento výkon nepřekročili typicky v letních měsících (a nebo v měsících, kdy je nízká teplota a velmi jasno), slouží nastavení Grid export limit. Ten střídači říká, že pokud výkon ze solárních panelů je větší, omezí se výroba, aby se zabránilo případným přetokům. Ovšem v případě střídače GoodWe to není tak jednoduché. Tato volba pouze nastavuje limit, což ovšem neznamená, že pokud nastavíme 0, pak se omezení výroby vypne. Ve skutečnosti k tomu ještě slouží volba, která však není v integraci k dispozici. Zapnout a vypnout tuto funkcionalitu je to tedy možné v mobilní aplikaci střídače, která ovšem funguje pouze v přítomnosti střídače a není možné ji jednoduše použít vzdáleně.

Řešení však existuje, a to pouze právě v experimentální integraci GoodWe a tohle je ten zásadní důvod, proč ji použít namísto té základní. Trik je v tom, že experimentální integrace umožňuje přímo nastavit jakýkoliv registr střídače. Samozřejmě to znamená, že uživatel ví, co dělá a nesprávným nastavení může tak snadno napáchat škody. Ruční nastavení lze provést v menu Nástroje pro vývojáře → Služby", kde vybereme službu a zařízení GoodWe, jako parametr zvolíme grid_export a jako hodnotu 0 pro vypnutí omezení a hodnotu 1 pro zapnutí. Toto ale není příliš komfortní, proto to řeším následujícími skripty. První do připraveného pomocníka uloží aktuální stav, tedy zapnuto nebo vypnuto. Druhý a třetí pak nastaví hodnotu 0 a nebo 1. Tyto skripty pak můžeme použít v automatizaci, která když zjistí, že výkon ze solárních panelů je vyšší, než nastavený limit, spustí omezení výroby.

bitcoin školení listopad 24

alias: "FVE: grid export - STATUS"
sequence:
  - service: goodwe.get_parameter
    data:
      device_id: bc17ad9a6cfa2951e4fae9ad6990cba4
      parameter: grid_export
      entity_id: input_text.goodwe_grid_export
mode: single
icon: mdi:transmission-tower


alias: "FVE: grid export - OFF"
sequence:
  - service: goodwe.set_parameter
    data:
      device_id: bc17ad9a6cfa2951e4fae9ad6990cba4
      parameter: grid_export
      value: 0
  - service: script.fve_grid_export_status
    data: {}
mode: single
icon: mdi:transmission-tower-off


alias: "FVE: grid export - ON"
sequence:
  - service: goodwe.set_parameter
    data:
      device_id: bc17ad9a6cfa2951e4fae9ad6990cba4
      parameter: grid_export
      value: 1
  - service: script.fve_grid_export_status
    data: {}
mode: single
icon: mdi:transmission-tower-export

Říkáte si, proč nestačí mít limit omezení výroby stále zapnutý? Je to proto, že jakmile je tento limit aktivní a nehledě na to, jaká hodnota limitu je nastavená, střídač (GoodWe určitě) se vždy snaží balancovat výkon tak, aby zkrátka žádný přetok do distribuční sítě nevznikl. A pokud není žádná solární výroba a nebo je noc, střídač se stále snaží, aby k přetoku nedocházelo. To má tu nevýhodu, že se vůbec nepoužívá baterie a současně se udržuje její hodnota SOC na stejné hodnotě. Za noc to tedy je přibližně spotřeba 1kWh navíc z distribuční sítě. Proto je tedy vhodné mít limit vypnutý a zapínat ho pouze v okamžiku, kdy panely generují maximální výkon. Ukážeme si na příkladu později.

Příště budeme vizualizovat

V příštím článku se podíváme na rozšíření pro vizualizaci dat získaných ze solární elektrárny. Umožní nám sledovat výrobu i spotřebu, ale využít je můžeme i k zobrazení jiných dat.

Autor článku

V minulosti vedl týmy systémových administrátorů ve společnosti IGNUM nebo sdružení CZ.NIC, nyní působí ve společnosti VSHosting.