'Inteligenty' dom ze sterownikiem PLC

 Language:
Szukanie zaawansowane  

Aktualności:

Powrót do strony głównej: www.edom-plc.pl

Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.

Wiadomości - krwi

Strony: [1] 2 3
1
Tematy ogólne / Odp: Pomiar zanieczyszczenia powietrza i warunków meteo
« dnia: Listopad 08, 2019, 04:40:26 pm »
Akurat mam przeciwprądowy ale bardziej chodzi o to, że jest zamontowany w kotłowni więc ryzyka zamarznięcia nie ma.

2
Programowanie / Odp: Powiadomienia push
« dnia: Listopad 04, 2019, 09:54:58 am »
USER KEY wyświetla się na koncie Pushover wystarczy się zalogować. Natomiast TOKEN jest generowany gdy zarejestrujemy naszą aplikację, trzeba kliknąć na Create an Application/API Token i nadać jakąś nazwę naszej aplikacji.

3
Programowanie / Powiadomienia push
« dnia: Listopad 02, 2019, 09:17:10 pm »
Dzisiaj chciałem się podzielić zastosowaną przeze mnie implementacją powiadomień push na sterowniku PLC Wago.
Powiadomienia są wysyłane za pośrednictwem serwisu pushover.net oczywiście takich usług jest wiele ja akurat wybrałem tę.
W Pushover mamy 7 dniowy okres darmowy potem licencja kosztuje $5 i tu uwaga jednorazowo na platformę (android, iOS lub desktop), więc płacąc jednorazowo $5 na androida dożywotnio możemy odbierać powiadomienia na urządzeniach z androidem.

Komunikacja z API Pushover odbywa się za pośrednictwem protokołu HTTPS więc koniczne jest włączenie do projektu biblioteki WagoLibHttps_01.lib, którą można pobrać ze strony Wago. Na wstępie warto sprawdzić wymaganą wersję firmwaru sterownika w dokumentacji biblioteki bo może okazać się konieczna aktualizacja (tak było w moim przypadku).

Zdefiniowałem blok funkcyjny postaci:

FUNCTION_BLOCK PUSHSEND
VAR_INPUT
xDoit : BOOL;
sMessage : STRING;
sPriority : STRING(2) := '0';
END_VAR
VAR
wState : WORD;
oHttpsPost : HTTPS_POST;
xHttpsSend : BOOL;
diError : DINT;
sStatus : STRING;
sReqData : STRING(200);
sHeaderData : STRING(105) := 'token=TOKEN&user=USER_KEY&retry=300&expire=3600&message=';
abResponse : ARRAY [0..gcHTTPS_dwRxBufferSize] OF BYTE;
END_VAR

sReqData := CONCAT (sHeaderData, sMessage);
sReqData := CONCAT (sReqData, '&priority=');
sReqData := CONCAT (sReqData, sPriority);

oHttpsPost(sServerName:='api.pushover.net',
sMethod:='/1/messages.json',
sContentType:='application/x-www-form-urlencoded',
pabReqData:=ADR(sReqData),
uiReqDataCount:=LEN(sReqData),
xSend:=xHttpsSend,
diError=> diError,
sStatus=> sStatus,
tTimeOut:= t#5s,
abContentData:=abResponse);

CASE wState OF
0: (* IDLE - wait for something to do *)
IF xDoIt THEN
xHttpsSend := TRUE; (* Send HTTPS-POST request *)
wState := 10;
END_IF

10: (* Wait for HTTPS-POST response data *)
IF NOT xHttpsSend THEN
wState := 999;
END_IF

999: (* *)
xDoIt := FALSE;
wState := 0;

END_CASE

Wartości dla TOKEN i USER_KEY należy wprowadzić zgodne z podanymi na koncie Pushover.
Blok przyjmuje 3 zmienne wejściowe, xDoit aktywuje wysłanie powiadomienia, sMessage to string z wiadomością, którą zobaczymy w powiadomieniu oraz sPriority opcjonalny priorytet jaki będzie nadany powiadomieniu push (dostępne wartości to -2, -1, 0, 1, 2 , uwaga wartości przekazujemy jako string).
Powyższy blok dopinam do każdego zdarzenia, które ma wysłać powiadomienie push, np. otwarcie bramy garażowej, włączenie alarmu, jakieś zdarzenie ze stacji pogodowej itp.

Działa to naprawdę wyśmienicie, powiadomienia dochodzą niemal natychmiast. Oprócz treści wiadomości i priorytetu można także opcjonalnie przekazać tytuł wiadomości, określony dźwięk jaki ma zostać odtworzony na urządzeniu, określić urządzenie lub grupę urządzeń na które ma zostać wysłane powiadomienie i inne rzeczy opisane w dokumentacji API Pushover.

Do powyższego bloku funkcyjnego warto dodać jeszcze funkcje ograniczającą ilość wysyłanych powiadomień w jednostce czasu aby po pierwsze nie zostać zaspamowanym powtarzającymi się powiadomieniami a po drugie żeby nie dostać bana z pushover.net.

Mam nadzieję, że ten opis będzie pomocny dla każdego szukającego sposobu implementacji powiadomień push na sterowniku Wago. Uwagi mile widziane.

4
Tematy ogólne / Odp: Szafa sterownicza - pytania
« dnia: Styczeń 15, 2016, 09:46:40 am »
Ja mam 180 i nie odczułem potrzeby posiadania głębszej. Najlepiej weź najwyższy element jaki chcesz tam umieścić i sobie przymierz.

5
Tematy ogólne / Odp: 1-Wire i Beckhoff - co zamiast Raspberry Pi
« dnia: Styczeń 14, 2016, 09:41:46 am »
10 wykorzystuję bo tyle potrzebuję, nie wiem jakie jest górne ograniczenie tego rozwiązania. Do tych 10 i tak wykorzystałam zaledwie jedno wejście więc nawet gdyby okazało się że na jednym wejściu nie pociągnie więcej niż 10 czujników to i tak w zależności od modelu Arduino i ilości wejść można obsłużyć grubo ponad 100 czujników (przynajmniej w teorii).
Co do komunikacji z PLC rozwiązałem ją po prostu po HTTP (Arduino serwuje dane po HTTP, PLC je sobie odczytuje) i działa bez zastrzeżeń. Natomiast do Arduino jest również biblioteka MODBUS ale nigdy jej nie używałem.

6
Tematy ogólne / Odp: 1-Wire i Beckhoff - co zamiast Raspberry Pi
« dnia: Styczeń 14, 2016, 09:21:22 am »
Nikt w tym wątku nie wspomniał ale oprócz RPI można również z powodzeniem zastosować mikrokontroler np Arduino. Magistralę z 10 czujnikami DS18B20 mam wpiętą bezpośrednio w wejście cyfrowe Arduino bez żadnych wzmacniaczy czy innych dodatkowych układów. Oprogramowanie tego z wykorzystaniem gotowych bibliotek to paręnaście linijek kodu.

8
Tematy ogólne / Odp: Elektryk z okolic Krakowa
« dnia: Grudzień 14, 2015, 09:46:31 pm »
Mój elektryk położył kable prądowe, skrętki, zamontował i złożył szafę z przekaźnikami które mu dostarczyłem (szafa robiona na zamówienie). Sterownik podłączyłem i oprogramowałem już sam. Elektryk pierwszy raz się zetknął z takim rozwiązaniem ale zrozumiał temat i zrobił jak trzeba, inni robili wielkie oczy jakby zobaczyli UFO i nie chcieli w ogóle się za to zabierać.
Natomiast automatyką się on nie zajmuje i sterownika Ci nie oprogramuje jeśli o to też chodziło.
Jakby co podaję namiary (jest z Cianowic więc od północnej strony Krakowa):
Elektroinstal, tel. 607732169.

Może to wyda się dziwne ale ja przy szukaniu elektryka zaczynałem od pytania o uziom fundamentowy, jak się okazało 8 z 10 nie wiedziało o czym mowa. Bardzo to skracało rozmowę i przyspieszało poszukiwania właściwego.

9
Sterowanie i Wizualizacje / Odp: Otwarty system automatyki domowej openHAB
« dnia: Listopad 30, 2015, 03:41:50 pm »
Niestety napotkałem ten sam problem ale myślałem, że to coś u mnie sknocone. Nie udało mi się tego rozwiązać, na razie porzuciłem OpenHAB i przymierzam się do napisania własnej wizualizacji.

10
Programowanie / Odp: oświetlenie - sceny świetlne salon
« dnia: Listopad 30, 2015, 03:38:11 pm »
Ok, załączam blok funkcyjny SWITCH,


RELAY


oraz prosty przykład dwóch "scen" w umownym salonie.


Krótkie naciśnięcie przycisku Salon1 zapala halogeny i kinkiety oraz gasi ledy. Naciśnięcie Salon2 zapala ledy oraz gasi halogeny i kinkiety.
W bloku funkcyjnym RELAY oprócz rzeczy wspomnianych w poprzednim poście zawarłem wyliczanie zużytych kWh, dodatkowe wyjście Q, które reaguje na zbocze narastające czyli zapalenie obwodu, głównie wykorzystywane do gaszenia innych obwodów. Jest też wejście ALARM, które działa monostabilnie (pomija blok fb_LatchingRelay), jego zadaniem miało być świecenie światła w czasie gdy wyje alarm, w praktyce wykorzystuję to tylko do oświetlenia zewnętrznego.
Jak widać nie ma żadnej większej filozofii.

11
Programowanie / Odp: oświetlenie - sceny świetlne salon
« dnia: Listopad 27, 2015, 08:54:55 pm »
Ja do tego podszedłem nieco inaczej, być może Ci to pomoże. Zamiast programować wszystko proceduralnie starałem się to zrobić bardziej "obiektowo" (na ile oczywiście w tych językach się da) a więc ponieważ nasze układy składają się z łączników oraz przekaźników zdefiniowałem "obiekty" (bloki funkcji) SWITCH oraz RELAY. W programie mam użytych tyle obiektów SWITCH ile jest łączników i tyle obiektów RELAY ile jest przekaźników (czyli obwodów do załączania).
Obiekt SWITCH ma 4 wejścia (bo mam łączniki 4 kanałowe Berkera) i 8 wyjść dlatego że jego zadaniem jest rozpoznawanie naciśnięć długich/krótkich (naciśnięć wielokrotnych nie używam ale łatwo je byłoby dorobić) więc jak łatwo się domyśleć zbudowany jest po prostu z czterech Fb_ShortLong.
Obiekt RELAY ma 3 wejścia odpowiadające Fb_LatchingRelay (xSwitch, xCentOn, xCentOff) oraz wyjście odpowiadające xActuator do którego podpinam DO odpowiedniego przekaźnika. Oprócz tego obiekt RELAY zawiera fbOperatingTime, z którego wyprowadzam dwa wyjścia rHour_total oraz dwNumber.
Jak widać dzięki temu z automatu dostaję dane na temat ilości załączeń oraz sumarycznego czasu świecenia dla każdego obwodu.
Co do scen świetlnych osobiście zrezygnowałem z wykorzystania dedykowanych do tego funkcji z Building Commons. U mnie podstawowe obwody oświetleniowe (hol, wiatrołap, łazienki, kuchnia, garaż, taras itp) załączane/wyłączane są automatycznie w oparciu o czujki ruchu, czujnik natężenia oświetlenia i reguły czasowe także podczas codziennego przemieszczania się po domu mało w ogóle używa się łączników (4 w ogóle zaślepiłem).
Wracając do scen, przyjąłem zasadę że krótkie naciśnięcia zapalają typowe sceny ale oprócz tego każdy obwód można zgasić/zapalić z osobna np długim naciśnięciem. Zapalenie danej sceny gasi inne światła nie należące do danej sceny, ponowne naciśnięcie klawisza gasi scenę więc robi się ciemno. Ale jak wspomniałem każdy obwód mogę też zapalić/zgasić z osobna więc każdą predefiniowaną scenę mogą dowolnie zmodyfikować.
Wszystko to zrealizowane mam w oparciu o odpowiednie relacje między obiektami SWITCH i RELAY i powiem że spełnia to moje i domowników oczekiwania. Co ciekawe nie mają też z tym większego problemu goście przyzwyczajeni do klasycznych rozwiązań.

12
Sterowanie i Wizualizacje / Odp: Otwarty system automatyki domowej openHAB
« dnia: Listopad 09, 2015, 09:33:27 am »
Je też dopiero zacząłem z OpenHab (jeszcze nie wiem czy będę to wykorzystywał) ale żeby się połączyć i odczytywać co 10 sek stany 74 wyjść wystarczyło:

w opnhab.cfg:
modbus:poll=10000
modbus:tcp.slave2.connection=192.168.0.1:502:rtu
modbus:tcp.slave2.id=1
modbus:tcp.slave2.type=coil
modbus:tcp.slave2.start=512
modbus:tcp.slave2.length=74

w .items:
Group   ALL

Switch MySwitch0 "My Modbus Switch0" (ALL) {modbus="slave2:0"}
Switch MySwitch1 "My Modbus Switch1" (ALL) {modbus="slave2:1"}
Switch MySwitch2 "My Modbus Switch2" (ALL) {modbus="slave2:2"}
Switch MySwitch3 "My Modbus Switch3" (ALL) {modbus="slave2:3"}
...

13
Sterowanie i Wizualizacje / Odp: Otwarty system automatyki domowej openHAB
« dnia: Listopad 07, 2015, 08:00:06 pm »
Na to wygląda że binding Wago jest uwalony (albo ja nie umiem go skonfigurować) przełączyłem się na binding ModBus i zaczął poprawnie sczytywać statusy.

14
Widzę, że większość z Was w swoich szafach umieszcza przekaźniki na osobnych szynach niż zabezpieczenia, ja natomiast przekaźniki umieszczałem zaraz za "ich" bezpiecznikiem. Dzięki temu ławo ogarnia się to optycznie.

15
Sterowanie i Wizualizacje / Odp: Otwarty system automatyki domowej openHAB
« dnia: Październik 30, 2015, 09:21:20 am »
Chciałem przetestować openHAB ale mam problem z poprawnym odczytem stanów wyjść. Czysta instalacja openHAB, wgrany jedynie wago binding, połączenie się nawiązuje natomiast w logu dostaję ciągle "MySwitch1 state updated to OFF" dla wszystkich skonfigurowanych itemów niezależnie czy wyjście jest aktywne czy nie.
Dopiero poznaję openHAB więc może coś źle zrozumiałem ale nie mogę z tym ruszyć do przodu, czy szanowni koledzy mogli by wkleić przykładową konfigurację?

Strony: [1] 2 3