Forum Tiny Control Solution

Pełna wersja: Nowe funkcje w LK3.5+ od stAcha
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3 4
stAch wpisuj to propozycje z dokladnym opisem.
CUSTOM UI - > input do podania własnego js url - po wczytaniu strony można pobrać jej identyfikator i wykonać dowolny kod js.  -- opis 1
Obecnie kod pobieram z tego helpa $('.help-link').... i działam z wtyczkami tempermonkey .
aby uprościć kod dodaje do elementów strony  .container-fluid klasę o nazwie strony (wyjścia, wejścia port... itd)
jednym słowem do element .container-fluid --> dopisać klasę o nazwie otwartej zakładki takiej jak text w .help-link
by można było dodawać elementy $('.wyjścia').append('custom code')
to opcja dla zaawansowanych programistów. Można dodawać własne rozwiązania.
Kolejny input do podania kodu js ktory bedzie cyklicznie wykonywany przez LK --> cron z własnymi comendami. --> opis 2
O ile ten poprzedni działa tylko jak wchodzimy na strony kontrolera to ten działa w tle nonstop po jego włączeniu.
tu można będzie sobie klepać kod httpapi który na bieżąco będzie interpretował lk.

na stronie I2C dodać  do td identyfikatora classy (ds1 ds2....) by można było dodać obok niego custom code $('.ds1').append('custom code')...

propozycje rozbudowy SW iLK - czyli łączymy dowolny z dowolnym i z innymi I0t

możliwość pobrania ustawień z innych urządzeń (json)  i ustawienia ich jako vouts - przykładowo mamy pompę ciepła która zwraca statusy w formie
Kod:
{"cmd":"state","output":"00011000","input":"00000111","sn":"001300f013af1e10"}
do pola url podajemy adres na którym zwracane są dane json.
do pola filter podajemy output
LK ustawiam nam 0 0 0 1 1 0 0 0 dla kolejnych wartości vout i sprawdza ich zmianę co interwał podany w kolejnym polu.

ZDALNE STEROWANIE:
wirtualne sms - podajemy IP:port na którym mamy nakładkę sms i LK bez nakładki realizuje zdarzenia SMS przy pomocy LK 
wirtualne OLED - podobnie jak sms podajemy IP:port i fizycznie odbieramy wysłany text przez inny LK na fizycznym wyświetlaczu.
wirtualne i2C DS - przekazujemy do LK (m1-10) wartości z wybranych czujników.

ZDARZENIA: 
opcja LIGHT FLASH - na wybranym  PWM odczytujemy jego stan a następnie wyłączamy po czym realizujemy scenę błysku a po zakończeniu zdarzenia ustawiamy stan poprzedni.
sceny błysku np 3x krótko przerwa, miganie naprzemienne 3s/3s, 1x krótko przerwa...  Nawet jedna scena będzie miłym gestem...
LIGHT FLASH  może być też opcją jak regulator w PWM gdzie podamy np 3 ustawienia błysku [1*1*1*1*1*5] gdzie kolejno ustawiamy on*off oraz jego wyjście pwm0-3 a zdarzenie go tylko aktywuje.

Dodanie do działań SMSx, HTTPx opcji Opóźnienie tak jak w OUTx --> prewencja przed lawinowym wykonywaniem requestów - niekiedy dostaje kilkanaście sms jak pływak w zbiorniku faluje po większej ulewie. a akurat jest prawie pełno lub jak stacja meteo wykryje porywy wiatru na farmie PV które oscylują w granicy krytycznej i nie przestaje dmuchać.

CRONTAB - scheduler:
Możliwość dodania jako akcji co 2tyg  [30 1 1,15 * *] lub miesiąc [30 1 1 * *] 
Zapis zmiennej do okresowej wartości (cyklicznie dzień/miesiąc - uniwersalniejszą opcja było by wnioskowane dość dawno min-max) - opis 3

DIFF - działania na intiger (operacje na stałej liczbowej np  value(DSx) * 0,8)

HTTP API - dla zaawansowanych użytkowników. Podpatrzone w I0t z kraju świętych krów.
Wysyłanie sms bez zapisu w pamięci LK  /?vsms=text%20sms&number=123456789
Wysyłanie textu na OLED (ew włączenie jeśli nie aktywny) bez zapisu w pamięci LK /?voled=line1*line2*line3*line4
Wysyłanie commands na RS485 bez zapisu w pamięci LK /?vrsc=rs485%20data (bramka tcp 2 rs) --> ustawianie parametrów pracy pomp ciepła i sterowanie innymi urządzeniami po RSie
Przy pomocy własnych guzików i skryptów z custom UI wstrzykujemy sobie kod z przyciskami i mamy w jednym miejscu możliwość pełnego nadzoru po RS a nie tylko odczyt.


SECURITY:
Kilka zgłoszonych poprawek krytycznych umożliwiających przejęcie kontroli nad niemal każdym LK
opis do p.1:

nasze LK czasem padają później zachodzi potrzeba ich wymiany. Ja osobiście mam ich już ponad 100szt na farmach PV oraz u użytkowników indywidualnych.
Jak się odnaleść po padzie takiego LK - niby wystarczy wczytywać settingi ale to nie zawsze działa z nowym softem i później ręczne dłubanie. a wystarczy tag NFC za 8zł z aliexpress.
wstrzykując do powłoki UI kod js możemy jednym dotknięciem zapisać ustawienia DSów oraz zadań jakie ma wykonywać LK - teraz wystarczy jeden plik konfiguracji do wszystkich LK w sieci a ustawienia spersonalizowane trzymamy na tagu NFC. Można też wydrukować sobie kody QR na których mamy link z adresem konkretnego czujnika i jego ustawień. lub pobrać takie ustawienia do naszego taga NFC.

opis p.2:

często nasz sprzęt podpięty po RS ma możliwość nie tylko odczytu ale i konfiguracji. Jak przestawić parametry pompy ciepła zdarzeniem. wystarczy kod js który na bieżąco sprawdza nam stan np virtualnego veventu po jego zmianie wyśle odpowiednia komendę po RS. można też odwrotnie - pobrać z urządzenia po np jsonie dane i w zależności od nich poustawiać np veventy w LK.
Kod taki musi byś w miarę prosty i wykonywać po HTTPapi polecenia cyklicznie. Trzeba zdawać sobie sprawę ze źle napisany może doprowadzić do ubicia procesu http w LK.
Obie te opcje sa dedykowane do zaawansowanych użytkowników. ale pewnie wiele osób by ucieszyła taka możliwość.

opis Zdalne sterowanie:

Tu chyba niema się co rozpisywać. zalety jedna nakładka GSM + SIM na setki LK. Dodatkowo można ją zamontować na LK który mamy na zewnątrz jeśli mamy słaby zasięg i wysyłać SMS z dowolnego LK przy pomocy zdarzeń. tak jakby posiadał on fizycznie nakładkę. Ta sama zasada dla OLED Lk w ogrodzie który pilnuje poziomu szamba wysyła nam na OLED informacje text o jego napełnieniu.
Ale to nie koniec możliwości. farma PV oddalona o kilkanaście km wyświetla nam na OLED informacje tak jak byśmy byli w jej sieci. Tu wystarczy stałe ip lub ddns a najlepiej VPN
opis 3
Cytat:Krzychor
--------------------------------------------
2) LICZNIK - twór, którego wartość = Energia 1do6 , z możliwością zerowania w schedulerze, aby dało się uzyskać np dzienne / miesięczne wskazania energii bez angażowania pola Moc i Energia
to tylko minimalna możliwość opcji value MIN-MAX
Załóżmy ze monitorujemy jakiś czujnik DS czy POWER cyklicznie zapisujemy jego wartość wraz z każdym jego wzrostem do value(MIN-MAX) w dowolnym momencie cron zeruje nam ww wartość która może przybierać zarówno wartości dodatnie jak i ujemne. np dla spadku temperatury.
O ile będzie możliwe podanie własnego skryptu w LK3UI to posiadam gotowe rozwiązanie Smile dla tych co są niecierpliwi min-max na własnym serwerze przy pomocy cyklicznego HTTP.

Kod PHP:
<?php                   //usage ?mm=%XXXAB zapis wartości,    ?mm=ZERO   kasowanie wartości,   odczyt zwracany w formie current - min - max w każdym kolejnym zapytaniu

function set_val($param, $value){  //zapis do pseudo bazy danych
    $fileData = file(basename('db.php'));
    $newArray = array(); $jest = 0;
    foreach($fileData as $line) {
      if (strpos($line, $param.' = ')) {
          if (strpos($line, '/')){$opis = substr($line, strpos($line, '/'), strlen($line));} else {$opis = "\n";} 
        $line = '$'.$param.' = \''.$value.'\';        '.$opis; $jest = 1;
      }
      if (strpos($line, '*end*') && $jest == 0){$line = '$'.$param.' = \''.$value.'\';'."\n".'/*end*/'."\n";}
      $newArray[] = $line;
    }
     $fp = fopen(basename('db.php'), 'w');
    fwrite($fp, implode("",$newArray));
    fclose($fp);
}

parse_str($_SERVER['QUERY_STRING']);

include_once('db.php');  //baza danych bez angazowania SQL


/* -----------------min-max-functions---------------------*/
if($mm != "") {
    if($mm == 'ZERO'){    set_val('minval',0); set_val('maxval',0); die();}
    if(intval($minval) > $mm ){    set_val('minval',$mm);}
    if(intval($maxval) < $mm ){    set_val('maxval',$mm);}
    die( $mm." - ".$minval . " - " . $maxval);
}
/*-------------------------------------------------------*/


?>

Kod PHP:
<?php   //db.php peseudo baza danych

$minval = '-9';     //wartość min
$maxval = '33';   //wartość max

/*end*/
?>
Zapis po rs485 (modbus) urządzeń. LK odczytuje mnie brakuje identycznej funkcji tylko zapisu. Custom idealnie się do tego nadaje. Tym bardziej, że np. przy SDm12 można zmienić szybkość czyli zapisy działają.
Można dopisać do modbus SDM120M parametr Import system power demand (pod HA mam register:88,input,count:2,precision:2,float) oraz Export system power demand ( pod HA mam register:92,input,count:2,precision:2,float). Bez tego muszę customy wpisywać dla całego SDM120 a jak jest definicja to miło by było mieć te parametry.
Adres 30089, Lo byte:58
Adres 30093, Lo byte: 5C
4 bytes, floats,
wartość to "W"
Klient Http - aktualnie link jest wyzwalany przy każdej zmianie stanu zdarzenia.
propozycja dorzucenia dwóch pól ☑ TRUE ☑ FALSE przy każdym linku zaznaczenie jednego z nich powoduje ze link jest uruchamiany tylko spełniając wybrane założenie a zaznaczenie obu zadziała jak obecnie.

Moc i energia... dorzucić do licznika zliczanie zmiany stanów wyjść OUTx.
Załóżmy że chcemy wyłączyć pompkę perystaltyczną po 30 cyklach zliczamy w mocy i energii wyjście outx i przy pomocy licznika energii /jednostka cykl/ jeśli przekroczy ona zadana wartość resetujemy stan licznika i wyłączamy event do pompki.
Zastosowanie akwarystyka, hodowla roślin i inne systemy oparte o liczniki gdzie impuls powoduje inicjacje pracy

MQTT dorzucić obsługę klikalnych eventow w apce i serwerze

Wartości domyślenie po przywróceniu ustawień fabrycznych czas z ntp i podjęcie jego aktualizacji, domyślny stały adres IP 192.168.1.100, wyłączone uwierzytelnianie,
Wrócę do starego tematu konfiguracji urządzenia. Nie da się zrobić tak aby przy eksporcie konfiguracji nie zrzucać bin tylko plik tekstowy.
Urządzenie niech sobie trzyma jak chce ustawienia. Ale po prostu przypisać nazwy zmiennych zmiennych do parametrów i niech na wsze czasy tak zostaną i exportując mamy plik tekstowy. To samo przy imporcie. LK przy imporcie odczytywałby parametry pliku tekstowego i przepisywał do pamięci nieulotnej. Nie musi być xml może być nawet zwykły tekstowy wierszowy ot co. A parametry mogły by mieć nazwy numerowane wszystko jedno co.
Było by to super nawet przy upgrade firmware po wgraniu ponownie ustawień wszystko by pasowało a nie jak teraz raz działa raz nie.
przygotowuje takie rozwiązanie... pobiera ono konfiguracje po xml i zapisuje następnie możesz przy pomocy jednego przycisku je ustawić na dowolnym LK poprzez httpApi
pytanie czy coś takiego by się wam przydało i ile osób by było zainteresowanych - kwestia techniczna jaka baza danych by to obsługiwała bo aktualnie to text Smile

jak będzie opcja dodania kodu js do strony LK to z automatu otrzymasz takie funkcje po podaniu url do mojego addons kodu
pwm regulator - uniwersalny sterownik bram - pojawił się taki pomysł ale to będzie najdroższy sterownik bramy na rynku Smile

w wolnej chwili zostało to rozrysowane na kartce papieru Smile
założenia podstawowe:
  • obsługa sygnalizatora świetlnego
  • obsługa zamka rygla dodatkowego
  • obsługa krańcówek no/nc dowolne 4x  (inpa1 --> inpa4 obsługuje bramy dwuskrzydłowe w tym szlabany i inne)
  • obsługa soft start-stop 
  • obsługa zabezpieczeń przeciążeniowych (opcja inpa5) i fotokomórek (opcja inpa6) 
  • proste sterowanie http sms karty zbliżeniowe itd
  • skalowalność i uniwersalność - przyszłościowo można by pomyśleć o 3 mostkach H w formie zewnętrznej dedykowanej nakładki

Projekt byłby oparty na wyjściu pwm przy założeniu ze krańcówki i zabezpieczenia korzystając z wejść analogowych i za działanie przyjmujemy wartość prądu powyżej 5v a przekaźniki sterujące silnikami bramy to tanie przekaźniki samochodowe 30 87 87a 

Sterowanie odbywa się przy pomocy wyjścia pwm0 - (lampa sygnalizacyjna), każda zmiana pwm0 na aktywne rozpoczyna procedurę otwierania i odwrotnie.

Cykl otwieranie
załączamy pwm0 
sprawdzamy stany krańcówek i zapisujemy je - czekamy sekundę (opcja dla zamków i rygli) i załączamy przekaźnik pwm1 - (otwieranie) czekamy sekundę i załączamy przekaźnik pwm3 (otwieranie bramy dwuskrzydłowej)
praca wyjść pwm0 i pwm3 trwa do momentu zmiany stanu wejść inpa1 oraz inpa3 (stop) lub inpa5

cykl otwieranie został zakończony pwm1 i pwm3 jest wyłączone pwm0 jest włączone (brama otwarta)
lampa sygnalizacyjna nadal świeci i oczekujemy na sygnał zamykania czyli wyłączenia pwm0 

cykl zamykania 
sprawdzamy stany krańcówek i załączamy pwm3 oraz załączamy pwm2 (zamykanie) po sekundzie wyłączamy pwm3 (zamykanie bramy dwuskrzydłowej) zamykanie trwa do momentu zmiany stanu inpa2 oraz inpa4 lub inpa5 i inpa6

zamykanie zostało zakończone wyłączamy pwm0 (pwm1 pwm2 i pwm3 są już wyłączone)

Zabezpieczenia opcjonalne - przeciążenie i fotokomórka - w trakcie trwania cyklu otwierania i zamykania sprawdzamy napięcia na inpa5 i inpa6 jeśli pojawi się tam prąd powyżej 5v następuje przerwa w działaniu procedury otwierania lub zamykania polegająca na zatrzymaniu cyklu  i ponownym pełnym otwarciu bramy.

Soft start/stop - na osi silnika można zamontować wyłącznik zliczający obroty, taki wyłącznik może służyć jako alarm ręcznego otwarcia bramy i przy pomocy ustawionego zdarzenia wysyłać sms email etc, można też zrealizować opcje furtki (częściowe odsuniecie bramy przesuwnej)
opcjonalnie programowo możemy sterować mostkiem H obniżając obroty silnika na początku i końcu cyklu

Miganie lampy sygnalizacyjnej rozwiązujemy przerywaczem kierunkowskazów CF13 lub podobny wyjście pwm0 ma stale zasilanie w momencie działania procedury otwierania\zamykania. Bazując na stanie tego wyjścia można przy pomocy zadań włączyć np. na określony czas oświetlenie przy pomocy dowolnego outx lub otworzyć automatycznie inna bramę/szlaban lub garaż. Do dla tego powodu wyjście pwm0 nie "mruga" lampą sygnalizacyjną by nie wprowadzać chaosu w zdarzeniach.

Sterowanie zewnętrzne - przy pomocy zdarzenia inpd2 i jego zmianie zmieniamy stan pwm0 - czyli dowolny czytnik rfi lub inny rodzaj zamka powoduje rozpoczęcie procedury otwierania. oczywiście zmianę stanu pwm0 wykonamy tez przy pomocy http (strona lub url mqtt) oraz sms (nakładka)
Tak otwarta brama sama się nie zamknie --- można ja zamknąć używając zadania które po wykryciu aktywnego pwm0 i/lub inpd2 czeka określony czas i inicjuje zmianę jego stanu (autozamykanie)

dostępność... na obecną chwile taki sterownik prototypowy dla bramy przesuwnej lub jednoskrzydłowej (spore ograniczenia) pracuje przy pomocy zewnętrznego pliku php kontrolującego LK3 przez httpApi.

pytanie czy komuś to potrzebne? bo można to wykonać znacznie prościej i taniej... czekam na dyskusje w tej kwestii.
Stron: 1 2 3 4