Nowe warunki pozwalają na wykonanie akcji na innych obiektach biblioteki zależnie od mierzonych parametrów liczników elektrycznych, takich jak: napięcie, prąd, moc aktywna, moc bierna, moc reaktywna.
Parametry te można powiązać ze wszystkimi dostępnymi warunkami (opisanymi tutaj: viewtopic.php?f=61&t=7952 )
Poniżej przykład na pseudokodzie:
Kod: Zaznacz cały
#include <supla/condition.h>
#include <supla/control/relay.h>
#include <supla/sensor/some_electricity_meter.h> // replace this with EM you want to use
// in setup:
auto r1 = new Supla::Control::Relay(...);
auto em = new Supla::Sensor::SomeElectricityMeter();
em->addAction(Supla::TURN_ON, r1, OnLess(-10, EmTotalPowerActiveW());
"Całkowita moc" oznacza sumę mocy z faz trzech faz.
Są też dostępne metody do pobierania parametrów z konkretnych faz, np.: EmPowerActive(0) oznacza moc aktywną na pierwszej fazie. Przy licznikach jednofazowych można wpisywać 0, lub zostawić pole puste.
Oto lista dostępnych metod:
Kod: Zaznacz cały
EmVoltage(int8_t phase = 0);
EmCurrent(int8_t phase = 0);
EmTotalCurrent();
EmPowerActiveW(int8_t phase = 0);
EmTotalPowerActiveW();
EmPowerApparentVA(int8_t phase = 0);
EmTotalPowerApparentVA();
EmPowerReactiveVar(int8_t phase = 0);
EmTotalPowerReactiveVar();
Mam nadzieję, że jest to wystarczający zestaw i nikt nie będzie robił warunkowania na podstawie kąta fazowego, lub częstotliwości prądu... jednak jeśli by to było potrzebne, to dajcie znać.
Składnia jest zawsze taka sama:
Kod: Zaznacz cały
instancjaLicznika->addAction(akcja_do_wykonania, obiekt_na_ktorym_wykonujemy_akcje, Warunek(wartosc_warunku, NazwaParametruEm(faza) );