Celem niniejszego artykułu jest zaprezentowanie przykładu integracji stacji ładowania z Systemem Grenton Smart Home z wykorzystaniem protokołu komunikacyjnego Modbus RTU.
Stacja ładowania, która została użyta w tym przykładzie to ładowarka Friendly Innovation.
Integracja ta pozwala nam na:
- Podgląd stanu ładowania
- Podgląd czasu ładowania
- Ustawienie maksymalnego prądu ładowania w zależności od przyłącza sieci
- Podgląd oraz zmianę wartości prądu ładowania samochodu. Interfejs zabezpiecza przed ustawieniem prądu powyżej prądu dopuszczalnego przez kabel ładowania oraz maksymalnego prądu ładowania
- Wybór, czy po podłączeniu samochodu do ładowania trzeba dodatkowo autoryzować ładowanie z poziomu interfejsu myGrenton - co pozwala właścicielowi ładowarki na kontrolę nad urządzaniem
- Wyłączenie ładowania, a w przypadku gdy mamy załączoną opcję autoryzacji ładowania, włączenie ładowania
- Włączenie oraz wyłączenie trybu ładowania ekonomicznego
- Podgląd oraz ustawienie godziny początku oraz końca ładowania ekonomicznego
- Ustawienie czasu uśpienia ekranu ładowarki
- Powiadomienie na telefon o zakończeniu ładowania
Do zrealizowania poniższego przykładu potrzebujemy:
- CLU Z-Wave
- Gate Modbus
- Stacja ładowania Friendly Innovation
1. Podłączanie ładowarki do modułu GATE MODBUS
Z zacisków ładowarki Friendly Innovation podpinamy dwa przewody do modułu Gate Modbus odpowiednio do złącz A oraz B.
2. Konfiguracja CLU GATE MODBUS
Nazwę modułu Gate Modbus najlepiej ustawić tak jak w przykładzie, czyli Modbus_Gate. W innym przypadku będzie trzeba we wszystkich skryptach zmieniać nazwę modułu.
2.1. Tworzenie cech użytkownika
Na module Gate Modbus tworzymy cechy użytkownika:
Gdy ładowarka ma więcej niż jedno gniazdo, tworzymy dodatkowy zestaw cech użytkownika dla każdego gniazda.
Przykład dla gniazda drugiego:
Gdy ładowarka posiada więcej niż jedno gniazdo, w wartości początkowej cechy EV_numbers wpisujemy po przecinku numery wszystkich gniazd.
Przykład dla ładowarki z dwoma gniazdami:
2.2. Tworzenie skryptów
- Tworzymy skrypt o nazwie EVSE_modbus, a następnie wklejamy do niego zawartość załącznika EVSE_modbus_Friendly_Innovation-Grenton.lua.
- Tworzymy skrypt o nazwie EVSE_lib, a następnie wklejamy do niego zawartość załącznika EVSE_lib_Friendly_Innovation-Grenton.lua.
Dla tego skryptu dodajemy dwa parametry:
W skrypcie EVSE_lib od komentujemy aktywne gniazda.
Przykład dla stacji posiadającej tylko jedno gniazdo:
------------------------------------------------------------------
-- register active socket - USER EDIT SECTION
--
Evse[48] = evse_48
-- Evse[49] = evse_49
-- Evse[50] = evse_50
-- Evse[51] = evse_51
--
-- end USER EDIT SECTION
-----------------------------------------------------------------
Przykład dla stacji posiadającej dwa gniazda:
------------------------------------------------------------------
-- register active socket - USER EDIT SECTION
--
Evse[48] = evse_48
Evse[49] = evse_49
-- Evse[50] = evse_50
-- Evse[51] = evse_51
--
-- end USER EDIT SECTION
-----------------------------------------------------------------
- Tworzymy skrypt o nazwie EVSE_48, da następnie wklejamy do niego zawartość załącznika EVSE_48_Friendly_Innovation-Grenton.lua. W przypadku gdy stacja posiada więcej gniazd, dla każdego gniazda analogicznie tworzymy skrypt o nazwie EVSE_49, EVSE 50, EVSE_51. Przygotowane skrypty dla gniazd 48 i 49 można pobrać na końcu instrukcji.
- Tworzymy skrypt o nazwie EVSE_OnInit, a następnie wpisujemy do niego wywołanie wcześniej stworzonych skryptów.
Przykład dla ładowarki posiadającej jedno gniazdo:
Modbus_Gate->EVSE_modbus()
Modbus_Gate->EVSE_48()
Modbus_Gate->EVSE_lib()
Przykład dla ładowarki posiadającej dwa gniazda:
Modbus_Gate->EVSE_modbus()
Modbus_Gate->EVSE_48()
Modbus_Gate->EVSE_49()
Modbus_Gate->EVSE_lib()
2.3. Przypisanie skryptów do zdarzenia OnInit modułu Gate
W zakładce Zdarzenia modułu Gate Modbus stworzony wcześniej skrypt EVSE_OnInit przypisujemy do zdarzenia OnInit modułu Gate Modbus:
2.4. Tworzenie obiektów wirtualnych Modbus
Przygotowujemy obiekt wirtualny Modbus.
Obiekt o nazwie EVSE uzupełniamy jak poniżej.
W zakładce Zdarzenia przypisujemy wywołanie skryptów.
Do zdarzenia OnChange należy przypisać następujące wywołanie skryptu: Modbus_Gate->EVSE_lib("EVSE","OnChange")
Do zdarzenia OnError należy przypisać następujące wywołanie skryptu: Modbus_Gate->EVSE_lib("EVSE","OnError")
Przypisanie to wykonujemy w następujący sposób: Kliknąć na plus przy zdarzeniu, do którego chcemy przypisać skrypt, następnie kliknąć anuluj. W puste pole które się pojawiło przy nazwie zdarzenia wklejamy wywołanie skryptu z instrukcji.
Przygotowujemy kolejny obiekt wirtualny Modbus.
Obiekt o nazwie EVSE_status_48 uzupełniamy jak poniżej.
W zakładce Zdarzenia przypisujemy wywołanie skryptu.
W przypadku większej ilości gniazd analogicznie tworzymy obiekty wirtualne EVSE_Status_XX. Np. dla gniazda drugiego EVSE_status_49. Należy pamiętać aby w cechę wbudowaną DeviceAddress, oraz skrypt przypisany do zdarzenia, wpisać odpowiedni numer gniazda.
3. Konfigurcja CLU Z-Wave
Nazwę modułu CLU Z-Wave najlepiej ustawić tak jak w przykładzie, czyli CLU. W innym przypadku będzie trzeba we wszystkich skryptach zmieniać nazwę modułu.
3.1 Tworzenie obiektu wirtualnego Push
Przygotowujemy obiekt wirtualny Push:
Obiekt o nazwie push_zakonczenie_ladowania uzupełniamy jak poniżej:
3.2. Tworzenie skryptu
Należy stworzyć skrypt o nazwie powiadomienie. Do skryptu w trybie tekstowym wklejamy następujący kod.
if Modbus_Gate->EV1_push == 1 then
if Modbus_Gate->EV1_charging_finish ==1 then
CLU->push_zakonczenie_ladowania->SetTitle("Gniazdo 48")
CLU->push_zakonczenie_ladowania->Send()
Modbus_Gate->EV1_charging_finish = 0
end
end
W przypadku większej ilości gniazd modyfikujemy skrypt powiadomienie.
Poniżej przykład dla dwóch gniazd.
if Modbus_Gate->EV1_push == 1 then
if Modbus_Gate->EV1_charging_finish ==1 then
CLU->push_zakonczenie_ladowania->SetTitle("Gniazdo 48")
CLU->push_zakonczenie_ladowania->Send()
Modbus_Gate->EV1_charging_finish = 0
end
end
if Modbus_Gate->EV2_push == 1 then
if Modbus_Gate->EV2_charging_finish ==1 then
CLU->push_zakonczenie_ladowania->SetTitle("Gniazdo 49")
CLU->push_zakonczenie_ladowania->Send()
Modbus_Gate->EV2_charging_finish = 0
end
end
3.3. Tworzenie obiektu wirtualnego Timer
Przygotowujemy obiekt wirtualny Timer:
Obiekt o nazwie timer_powiadomienie uzupełniamy jak poniżej:
Następnie do zdarzenia OnTimer przypisujemy skrypt powiadomienie:
3.4. Przypisanie metody do zdarzenia OnInit modułu CLU
W zakładce Zdarzenia modułu CLU do zdarzenia OnInit przypisujemy metodę Start obiektu wirtualnego timer_powiadomienie:
4. Wysyłanie konfiguracji do CLU oraz Gate
Przygotowaną wcześniej konfigurację wgrywamy do modułów CLU oraz Gate.
5. Tworzenie interfejsu myGrenton
Tworzymy interfejs myGrenton.
5.1. Tworzenie strony Ładowanie samochodu
W interfejsie tworzymy stronę o nazwie Ładowanie samochodu, a następnie dodajemy i konfigurujemy widżety jak na screenach poniżej.
Widżet - Typ: Value, Etykieta: Stan ładowania:
Widżet - Typ: Value, Etykieta: Czas ładowania:
Widżet - Typ: Value, Etykieta: Prąd ładowania:
Widżet - Typ: SCENE_DOUBLE, Etykieta: Prąd (A) -/ Prąd (A)+:
Widżet - Typ: ON_OFF, Etykieta: Ładowanie Start/Stop:
Widżet - Typ: ON_OFF, Etykieta: Powiadomienie koniec ładowania:
5.2. Tworzenie strony Ustawienia EVSE
Tworzymy stronę o nazwie UstawieniaEVSE, a następnie dodajemy i konfigurujemy widżety jak na screenach poniżej.
Widżet - Typ: VLAUE, Etykieta: MAX prąd ładowania:
Widżet - Typ: SCENE_DOUBLE, Etykieta: Prąd (A)- Prąd(A)+:
Widżet - Typ: ON_OFF, Etykieta: ECO(Użytkownik)
Widżet - Typ: HEADER, Etykieta: USTAWIENIA GODZIN ECO:
Widżet - Typ: VALUE, Etykieta: ECO start(godz:min):
Widżet - Typ: SCENE_DOUBLE, Etykieta: ECO godzina+ ECO minuta+
Widżet - Typ: VALUE, Etykieta: ECO stop(godz:min)
Widżet - Typ: SCENE_DOUBLE, Etykieta: ECO godzina+ ECO minuta+:
Widżet - Typ: HEADER, Etykieta: Pozostałe:
Widżet - Typ: ON_OFF, Etykieta: Autoryzacja ładowania:
Widżet - Typ: VALUE, Etykieta: Czas uśpienia (min)
Widżet - Typ: SCENE_DOUBLE, Etykieta: -1minuta +1minuta:
W przypadku większej liczby gniazd tworzymy analogiczne interfejsy pamiętając o tym, aby w widżetach dodawać zmienne dla danego gniazda, a w skryptach przypisanych do akcji widżetów wpisywać numer gniazda.
5.3. Sprawdzenie ustawień interfejsu myGrenton
W celu sprawdzenia ustawień interfejsu klikamy ikonkę ustawień myGrenton:
Następnie sprawdzamy czy obiekt notyfikacji push jest zaznaczony:
Gotowy interfejs możemy wysłać na urządzenie mobilne. Należy pamiętać, że jest to przykładowy interfejs pokazujący wszystkie obecne możliwości integracji z ładowarką. Użytkownik może stworzyć dowolny interfejs składający się z części lub wszystkich widżetów zawartych w instrukcji w zależności od potrzeb, czy sposobu użytkowania ładowarki.
Pliki:
EVSE_OnInit_Friendly_Innovation-Grenton
EVSE_48_Friendly_Innovation-Grenton
EVSE_49_Friendly_Innovation-Grenton
EVSE_lib_Friendly_Innovation-Grenton
EVSE_modbus_Friendly_Innovation-Grenton