Niespójność w obsłudze grup

Masz pomysł na funkcjonalność lub koncepcję na rozwój projektu. Opisz wszystko tutaj.
wsosniak
Posts: 764
Joined: Sat Jun 02, 2018 8:02 am
Been thanked: 1 time

Post

Wczoraj wieczorem widziałem nowo założony temat odnoście grupy dla włączników światła , do którego chciałem dołożyć swoje 3 grosze ale .... juz nie mogę znaleźć tego tematu wiec zakładam nowy.
Tzn chciałem go poprzeć bo jest to niespójne z np roletami.
- Grupa dla włączników światła działa teraz tak : WSZYTSKIE światła z danej grupy muszą byc włączone żeby ikona dla grupy sie "zaświeciła"
- Grupa dla rolet działa teraz tak : Wystarczy że jedna roleta się lekko uchyli i ikona dla grupy rolet się "otwiera"

Uważam że ikonka dla grupy włączników światła (również włączników zasilania) powinna działać tak jak dla rolet : Wystarczy że jedno światło należące do danej grupy zostanie włączone , to ikona tej grupy powinna się "zaświecić". Tak tez jest w GH gdzie aplikacja GH grupuje włączniki światła w danym pomieszczeniu i wystarczy ze jedno z nich zapalimy to ikonka dla zgrupowanych włączników swiatła sie zapala.
User avatar
Duch__
Posts: 2199
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole
Been thanked: 6 times

Post

Popieram, jedno zaświecone światło z grupy powinno już sygnalizować ikoną że jest coś włączone.
matrix0606
Posts: 496
Joined: Tue Nov 08, 2022 9:05 pm

Post

A ja mam trochę inne pytanie choć też może o niespójność mi chodzi.
Od kiedy (dzisiaj kilka dłuższych chwil temu) zrozumiałem działanie grup, tak zacząłem się tym "bawić" by lepiej poznać zasadę działania tego mechanizmu. I tak, mam stworzone kilka grup w tym trzy które zawierają 1 element wspólny i 3 elementy odrębne:
1) wzmacniacz + cd
2) wzmacniacz + deck
3) wzmacniacz + tuner

Włączenie wszystkich trzech powoduje wiadomo, załączenie odpowiednich ikon od konkretnych grup. I teraz pytanie, czemu wyłączenie którejkolwiek z grup powoduje wyłączenie wszystkich grup?
Niby odpowiedź na pytanie jest prosta, ponieważ wyłączając którąś z grup, wyłączyłem jednocześnie wzmacniacz, ale tu rodzi się kolejne pytanie. Czemu program nie sprawdza, że w pozostałych dwóch grupach wzmacniacz był włączony?
Według mnie tu powinien być napisany jakiś warunek, że jeśli kazałem wyłączyć np. grupę 3 i żadna inna grupa nie zawiera wspólnego elementu, w tym przypadku jest nim wzmacniacz, to mogę wyłączyć całą grupę, w przeciwnym razie wyłączam tylko składnik różny od tego jaki występuje wspólnie w kilku grupach.

Przyjmijmy że wzmacniacz w każdej grupie to składnik a, natomiast drugie urządzenie to składnik b, składnik włączony =1 a wyłączony =0.
Jeśli włączę powyższe grupy czyli:

Code: Select all

1=1
2=1
3=1
to dostanę wartości w stylu

Code: Select all

1a=1
1b=1
2a=1
2b=1
3a=1
3b=1
Jeżeli teraz wyłączę jakąś grupę, np: 3=0, to według mnie program powinien sprawdzić pozostałe grupy, czyli:

Code: Select all

if 3=0 then
   If 1a=1 || 2a=1 then
       3b=0
    else
       3a=0
       3b=0       
   end if
end if
To spowodowało by wyłączenie tylko tego urządzenie które jest różne w tych trzech grupach, a wspólne urządzenie pozostało by włączone.
A w tej chwili wygląda to tak:

Code: Select all

If 3=0 then
   3a=0
   3b=0
end if
i jak na filmie:
https://youtu.be/aUe1S0XPL9I
Vivo V21 5G 8G RAM + 4G SWAP - Funtouch OS 12 Global
MOBO - MSI B350 Tomahawk || GPU - XFX Radeon RX 6600 Speedster
CPU - Ryzen5 1400 3,2G || PSU - SPC Vero | L2 500W 80 Plus Bronze
RAM - HyperX 2x8GB 3200MHz CL16 Predator RGB
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Grupy w Supli pozwalają na wspólne sterowanie. Nie wiąże to w żaden sposób elementów grupy. Czyli np poprzez włączenie grupy, wysyłasz polecenie włącz do wszystkich elementów grupy. Nic więcej tutaj nie ma.
Grupa jako taka nie ma stanu, ani nie pamięta czy była włączona czy wyłączona.

Grupa jest pokazana jako "on", gdy wszystkie elementy mają taki stan.

Grupy to prosta funkcja i za bardzo nie rozumiem o co w tym wątku chodzi.
Opisz może jakąś życiową sytuację używając "lamp", "gniazdek" itp aby wyjaśnić scenariusz w którym wy Ciebie grupy źle działają. Może na takim przykładzie będzie łatwiej to zrozumieć.
Najlepsze suple dla Twojego domu :mrgreen:
matrix0606
Posts: 496
Joined: Tue Nov 08, 2022 9:05 pm

Post

klew wrote: Mon Dec 12, 2022 4:44 pm Grupy w Supli pozwalają na wspólne sterowanie. Nie wiąże to w żaden sposób elementów grupy. Czyli np poprzez włączenie grupy, wysyłasz polecenie włącz do wszystkich elementów grupy. Nic więcej tutaj nie ma.
Grupa jako taka nie ma stanu, ani nie pamięta czy była włączona czy wyłączona.
I doskonale to rozumiem.
Ale już kanał stan posiada, tak? Wszak trzeba coś na port GPIO wystawić.
klew wrote: Mon Dec 12, 2022 4:44 pmGrupa jest pokazana jako "on", gdy wszystkie elementy mają taki stan.
To też dobrze rozumiem i oczywiście bardzo dobrze, że tak jest. I tu ukazuje się informacja, że żeby wystawić grupie wartość ON, trzeba sprawdzić czy wszystkie kanały grupy ustawione są na ON, tak?
To dlaczego przy wyłączaniu danej grupy nie sprawdzać czy w jakiejś innej grupie nie ma wspólnego kanału który już ma stan ON?

Może bardziej programistycznie.
Jeśli w grupie1 mamy port GPIO1 oraz GPIO2, a w grupie2 mamy GPIO1 i GPIO3 i obie grupy są aktywne. To czemu przy wyłączeniu którejś grupy wyłącza się GPIO1 w obu grupach a nie jest sprawdzany jego stan w innej grupie niż wyłączana?
klew wrote: Mon Dec 12, 2022 4:44 pm Opisz może (...) używając "lamp", "gniazdek" itp (...)będzie łatwiej to zrozumieć.
Jeśli mają być lampki to niech będą i lampki.
Grupa1 = lampka L1 + L2
Grupa2 = lampka L1 + L3
Czyli mamy wspólny element L1 w obu grupach.
Obie grupy włączam.
Następnie wyłączam Grupa2.
Czemu wyłącza się L1 w Grupa1 a nie jest sprawdzany stan L1 w tejże grupie? Przecież dla L1 w Grupa1 został nadany stan aktywny.

Wiem, wedle tego:
klew wrote: Mon Dec 12, 2022 4:44 pm (...) poprzez włączenie grupy, wysyłasz polecenie włącz do wszystkich elementów grupy. (...)
Ale dlaczego nie dopisać warunku? Jeśli dany (wspólny) element w jakieś innej grupie posiada już stan ON to żeby go nie wyłączać. Przecież to proste warunkowanie.
Vivo V21 5G 8G RAM + 4G SWAP - Funtouch OS 12 Global
MOBO - MSI B350 Tomahawk || GPU - XFX Radeon RX 6600 Speedster
CPU - Ryzen5 1400 3,2G || PSU - SPC Vero | L2 500W 80 Plus Bronze
RAM - HyperX 2x8GB 3200MHz CL16 Predator RGB
User avatar
Robert Błaszczak
Posts: 5222
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra
Has thanked: 37 times
Been thanked: 27 times

Post

Ty nie chcesz wyłączać L1, a inny użytkownik chce. Jak to teraz uwarunkujesz?
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
matrix0606
Posts: 496
Joined: Tue Nov 08, 2022 9:05 pm

Post

Robert Błaszczak wrote: Mon Dec 12, 2022 5:12 pm Ty nie chcesz wyłączać L1, a inny użytkownik chce. Jak to teraz uwarunkujesz?
Ja nie mówię, że ma tak być bo ja tak chcę, tylko dla mnie to programistycznie trochę niespójne. Oczywiście daleko mi do kolegów, którzy oprogramowanie Supla napisali i pewnie nigdy takiego poziomu nie osiągnę, ale ja pisząc takie coś (gdybym umiał) to takie warunkowanie bym wprowadził.
Napisałem parę programów w Bascomie, później przesiadłem się na Arduino i też kilka osiągnięć mam, ale gdybym ja pisał takie coś to sprawdzał bym jednak ten warunek bo dla mnie to ciut nielogiczne.

Jeśli mam wieżę segmentową i jej wspólnym elementem jest wzmacniacz to wiadomo, że dodam ów wzmacniacz do kilku grup.
Grupa która włącza mi jednocześnie CD i wzmacniacz
Grupa która włącza mi jednocześnie tuner i wzmacniacz
I teraz włączam grupę, która włącza mi cd i wzmacniacz, bo chcę posłuchać płyt, po czym uznałem, że chcę posłuchać radia więc włączam grupę która zawiera tuner i wzmacniacz i po chwili wyłączam grupę która zawiera cd lecz jednocześnie wyłączyła mi ona wzmacniacz.
Do tego dążę.
A gdyby sprawdzany był warunek czy przypadkiem wzmacniacz nie został włączony już w innej grupie to wyłączenie cd nie wyłączyło by mi wzmacniacza. Wyłączyła by się wówczas konkretna grupa a nie wszystkie które zawierają składnik wzmacniacza.
Vivo V21 5G 8G RAM + 4G SWAP - Funtouch OS 12 Global
MOBO - MSI B350 Tomahawk || GPU - XFX Radeon RX 6600 Speedster
CPU - Ryzen5 1400 3,2G || PSU - SPC Vero | L2 500W 80 Plus Bronze
RAM - HyperX 2x8GB 3200MHz CL16 Predator RGB
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Zbytnio komplikujesz prostą rzecz.

Jeszcze raz: nie ma czegoś takiego jak stan grupy, ani stan elementu w grupie. Jedynie każdy element posiada swój stan niezależny od grupy.

Każdy element ma jakiś stan. Może to być on, może być off. Nie wiesz kto, kiedy i dlaczego ustawił gpio1 na on, a gpio1 na off.
Grupy pozwalają na wysłanie jednej i tej samej komendy do wszystkich elementów w grupie.

Dzięki za przykład z grupami CD+wzmacniacz, radio+wzmacniacz. To jest właśnie ten życiowy przykład o który prosiłem ;)

Teraz wyobraź sobie taką grupę: "światła w salonie", "światła na piętrze", "wszystkie światła". Czego oczekiwałbyś od systemu, gdybyś wychodząc z domu wszedł w grupę "wszystkie światła" i ją włączył?
Gdyby zastosować tutaj Twój przykład, to jeśli ktoś włączył grupę"światła w salonie", to gasząc "wszystkie światła", te w salonie powinny zostać włączone, bo przecież inna grupa je zapala.

Natomiast trzymając się życiowych przykładów: do scenariuszy opisanych przez Ciebie ze wzmacniaczem, proponuję użyć scen. Wtedy tworzysz scenę "słuchaj CD", która włącza CD i wzmacniacz, a włącza pozostałe elementy, które nie są potrzebne.
Najlepsze suple dla Twojego domu :mrgreen:
matrix0606
Posts: 496
Joined: Tue Nov 08, 2022 9:05 pm

Post

Dziękuję za odpowiedź. Tak jak pisałem, tu nie chodzi o to, że ma być jak chce bo to nie o to chodzi. Liczy się dobro ogółu a nie jednostki.
Dziękuję też za podpowiedź ze scenami. Na pewno to wykorzystam bo to genialne. Zresztą już zanim mi to podpowiedziałeś to wykorzystałem jedną scenę do wyłączenia wszystkiego co mi niepotrzebne.

Natomiast w takim przypadku, grupy na obecną chwilę tracą dla mnie sens. Pewnie do nich wrócę jak znajdę dla nich zastosowanie.
Jeszcze raz dzięki za pomoc z tymi scenami.

A co do
klew wrote: Mon Dec 12, 2022 6:04 pmZbytnio komplikujesz prostą rzecz.
to na tyle ile siedzę na forach, a to dłuuuuugi czas, to nauczyłem się, że ciężko się tłumaczy w konwersacji nie bezpośredniej. Nie da się napisać tego co można by wypowiedzieć słowami, ponieważ każdy może zinterpretować wypowiedź zupełnie inaczej.
Vivo V21 5G 8G RAM + 4G SWAP - Funtouch OS 12 Global
MOBO - MSI B350 Tomahawk || GPU - XFX Radeon RX 6600 Speedster
CPU - Ryzen5 1400 3,2G || PSU - SPC Vero | L2 500W 80 Plus Bronze
RAM - HyperX 2x8GB 3200MHz CL16 Predator RGB
User avatar
Basmar
Posts: 394
Joined: Fri Sep 09, 2022 10:53 am
Location: Irlandia

Post

Moje 3 grosze....
Zamiast pisać czy nie lepeij nagrać wideo?
U mnie we firmie 400 ludzi o różnym stopniu IT od -10 do +3 wysłanie emaila z instrukcją zajmuje kilka godzin, żeby przygotować treść, screnshoty, strzałki itp, 60% ludzi i tak nie łyknie.

Robię wideo z komentarzem głosowym lub dodaję tekst gdzie trzeba, 1 godzina roboty.
Skuteczność 95%.

pozdr
No i cały plan spalił na panewce :cry:

Return to “Pomysły i koncepcje”