Aktualizacja SuplaDevice

User avatar
milion81
Posts: 194
Joined: Mon May 07, 2018 8:34 am

Post

@klew jak postępy nad biblioteką, kiedy można się jej spodziewać :?: ;)
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

milion81 wrote: Sat Nov 16, 2019 7:56 pm @klew jak postępy nad biblioteką, kiedy można się jej spodziewać :?: ;)
Prace idą powoli. Ostatnio czasami mam trudność w wygospodarowaniu 1h dziennie.
Aktualnie grzebię ciągle w takiej "ogólnej organizacji" kodu i funkcji w SuplaDevice.Jak przez to przebrnę, to biorę się za przepisywanie sensorów, przekaźników, rolet, itd.
Najlepsze suple dla Twojego domu :mrgreen:
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

QLQ wrote: Fri Nov 15, 2019 9:57 pm

Code: Select all

#define SUPLA_CHANNELTYPE_HUMIDITYSENSOR 3036 // ver. >= 8

Code: Select all

#define SUPLA_CHANNELTYPE_WEATHER_STATION 3100 // ver. >= 8

Code: Select all

#define SUPLA_CHANNELTYPE_RELAYHFD4 2000
#define SUPLA_CHANNELTYPE_RELAYG5LA1A 2010
#define SUPLA_CHANNELTYPE_2XRELAYG5LA1A 2020

Code: Select all

#define SUPLA_CHANNELFNC_CONTROLLINGTHEDOORLOCK 90

Code: Select all

#define SUPLA_CHANNELFNC_RING 150
#define SUPLA_CHANNELFNC_ALARM 160
Nie znam pełnej historii, ale mój zmysł archeologa mi podpowiada, że to wyglądało mniej więcej tak:
W pierwszych wersjach proto powstały najbardziej podstawowe typy kanałów. Następnie trzeba było dodać przekaźnik i było to robione dla konkretnych modeli. Po dodaniu trzech przekaźników, okazało się, że właściwie nie ma znaczenia jaki to model przekaźnika, więc powstał kanał ogólny RELAY. Potem pojawiły się termometry i wilgotnościomierze. Po kilku sztukach ponownie okazało się, że w zasadzie nie ma to znaczenia jaki HW tam siedzi i powstały kanały ogólne :THERMOMETER, HUMIDITY, HUMIDITYANDTEMP. Sam "HUMIDITY" jako osobny sprzęt, występuje dość rzadko, ale porządek nakazywał dodanie tego typu kanału.
WEATHER_STATION to już był byt zrodzony z potrzeb użytkowników lub z rozpędu. W tamtych czasach dane z kanału były przesyłane do serwera w postaci ciągu 8 bajtów - można się gimnastykować, ale na 8 bajtach stacji pogodowej się raczej nie zrobi. Nie szukałem wszędzie, ale wygląda na to, że to martwy i nie używany kanał.

Natomiast te define'y z "CHANNELFNC" to są funkcje, które możesz przypisać do różnych kanałów. "CONTROLLINGTHEDOORLOCK" to chyba "Otwieranie drzwi" dla kanału RELAY.
Najlepsze suple dla Twojego domu :mrgreen:
QLQ
Posts: 2512
Joined: Sun Sep 03, 2017 9:13 am

Post

klew wrote: Sat Nov 16, 2019 10:50 pm
QLQ wrote: Fri Nov 15, 2019 9:57 pm

Code: Select all

#define SUPLA_CHANNELTYPE_HUMIDITYSENSOR 3036 // ver. >= 8

Code: Select all

#define SUPLA_CHANNELTYPE_WEATHER_STATION 3100 // ver. >= 8

Code: Select all

#define SUPLA_CHANNELTYPE_RELAYHFD4 2000
#define SUPLA_CHANNELTYPE_RELAYG5LA1A 2010
#define SUPLA_CHANNELTYPE_2XRELAYG5LA1A 2020

Code: Select all

#define SUPLA_CHANNELFNC_CONTROLLINGTHEDOORLOCK 90

Code: Select all

#define SUPLA_CHANNELFNC_RING 150
#define SUPLA_CHANNELFNC_ALARM 160
Nie znam pełnej historii, ale mój zmysł archeologa mi podpowiada, że to wyglądało mniej więcej tak:
W pierwszych wersjach proto powstały najbardziej podstawowe typy kanałów. Następnie trzeba było dodać przekaźnik i było to robione dla konkretnych modeli. Po dodaniu trzech przekaźników, okazało się, że właściwie nie ma znaczenia jaki to model przekaźnika, więc powstał kanał ogólny RELAY. Potem pojawiły się termometry i wilgotnościomierze. Po kilku sztukach ponownie okazało się, że w zasadzie nie ma to znaczenia jaki HW tam siedzi i powstały kanały ogólne :THERMOMETER, HUMIDITY, HUMIDITYANDTEMP. Sam "HUMIDITY" jako osobny sprzęt, występuje dość rzadko, ale porządek nakazywał dodanie tego typu kanału.
WEATHER_STATION to już był byt zrodzony z potrzeb użytkowników lub z rozpędu. W tamtych czasach dane z kanału były przesyłane do serwera w postaci ciągu 8 bajtów - można się gimnastykować, ale na 8 bajtach stacji pogodowej się raczej nie zrobi. Nie szukałem wszędzie, ale wygląda na to, że to martwy i nie używany kanał.

Natomiast te define'y z "CHANNELFNC" to są funkcje, które możesz przypisać do różnych kanałów. "CONTROLLINGTHEDOORLOCK" to chyba "Otwieranie drzwi" dla kanału RELAY.
Ten CONTROLLINGTHEDOORLOCK to ja bym wykorzystał/rozumiał jako sensor czy zamek drzwi zamknięty/otwarty. Myślę że się przyda .
Tak czy inak dzieki za zainteresowanie 😁
jak coś nie działa to włącz zasilanie.....
User avatar
milion81
Posts: 194
Joined: Mon May 07, 2018 8:34 am

Post

klew wrote: Sat Nov 16, 2019 10:34 pm
milion81 wrote: Sat Nov 16, 2019 7:56 pm @klew jak postępy nad biblioteką, kiedy można się jej spodziewać :?: ;)
Prace idą powoli. Ostatnio czasami mam trudność w wygospodarowaniu 1h dziennie.
Aktualnie grzebię ciągle w takiej "ogólnej organizacji" kodu i funkcji w SuplaDevice.Jak przez to przebrnę, to biorę się za przepisywanie sensorów, przekaźników, rolet, itd.
Kibicuję i trzymam kciuki ;)
QLQ
Posts: 2512
Joined: Sun Sep 03, 2017 9:13 am

Post

klew wrote: Sat Nov 16, 2019 10:34 pm
Prace idą powoli. Ostatnio czasami mam trudność w wygospodarowaniu 1h dziennie.....
Aktualnie grzebię ciągle w takiej "ogólnej organizacji" kodu i funkcji w SuplaDevice.Jak przez to przebrnę, to biorę się za przepisywanie sensorów, przekaźników, rolet, itd.
z tym chyba każdy z nas ma problem. ... żona , dzieci, praca...itd . Ja też siedzę nad Suplą po nocach bo inaczej ni dy rydy :lol: :D
jak coś nie działa to włącz zasilanie.....
alankedzior
Posts: 114
Joined: Mon Jun 18, 2018 5:38 pm

Post

klew wrote: Sat Nov 16, 2019 10:34 pm

Prace idą powoli. Ostatnio czasami mam trudność w wygospodarowaniu 1h dziennie.
Aktualnie grzebię ciągle w takiej "ogólnej organizacji" kodu i funkcji w SuplaDevice.Jak przez to przebrnę, to biorę się za przepisywanie sensorów, przekaź
ników, rolet, itd.
ale co w ogóle będzie zmienianie pod Arduino, używam Arduino Mega z shieldem i ciekawi mnie cały czas o czym mowa
np. to biorę się za przepisywanie sensorów, przekaźników, rolet na czym mają polegać nowe funkconalności pod MEGA ?

Nie będzie już kodu typu:

Code: Select all

// DS18B20 Sensor read implementation
double get_temperature(int channelNumber, double last_val) {

    double t = -275;
    
    if ( sensors.getDeviceCount() > 0 )
      {
         sensors.requestTemperatures();
         switch(channelNumber)

          {
            case 0:
                   //  t = sensors.getTempCByIndex(DS18B20_1); 
                    t = sensors.getTempC(DS18B20_1); 
                    break;
            case 1:
                    t = sensors.getTempC(DS18B20_2);
                    break;
           
           case 2:
                    t = sensors.getTempC(DS18B20_3);
                    break;
                    
           case 3:
           
                    t = sensors.getTempC(DS18B20_4);
                    break;

           case 4:
                    t = sensors.getTempC(DS18B20_5);
                    break;          
             
           case 5:
                    t = sensors.getTempC(DS18B20_6);
                    break;             
          /* case 6:
                    t = sensors.getTempC(DS18B20_7);
                    break;  */
             
             };
      };

lub w przypadku przycisków np.

Code: Select all


for(int a=0;a<BTN_COUNT;a++)
    if (btn[a].pin > 0) {
        v = digitalRead(btn[a].pin);
        if (v != btn[a].last_val && now - btn[a].last_time ) {
           btn[a].last_val = v;
           btn[a].last_time = now;
           if (v==0)
             {
                 if ( digitalRead(btn[a].relay_pin) > 0 ) {
                  SuplaDevice.relayOff(btn[a].channel);
                 } else {
                  SuplaDevice.relayOn(btn[a].channel, 0);
                 }        
             }
        }
  
    }
}

void supla_btn_init() {
  for(int a=0;a<BTN_COUNT;a++)
    if (btn[a].pin > 0) {
        pinMode(btn[a].pin, INPUT_PULLUP); 
        btn[a].last_val = digitalRead(btn[a].pin);
        btn[a].last_time = millis();
    }
}



Code: Select all


memset(btn, 19, sizeof(btn));
  
  btn[0].pin = 20;                       // przycisk front s2
  btn[0].relay_pin = 2;                 // przekaznik front k12   
  btn[0].channel = 8;                    // numer kanału

  btn[1].pin = 19;                       // przycisk lampa taras  s1
  btn[1].relay_pin = 3;                 // przekaznik lampa taras  k11  
  btn[1].channel = 9;                    // numer kanału

  btn[2].pin = 43 ;                       // przycisk lampa kotłownia s18
  btn[2].relay_pin = 4;                 // przekaznik lampa kotłownia k14  
  btn[2].channel = 10;                    // numer kanału

   btn[3].pin = 22 ;                       // przycisk kinkiety salon s7
  btn[3].relay_pin = 5;                 // przekaznik kinkiety salon k15  
  btn[3].channel = 11;                    // numer kanału

 btn[4].pin = 44 ;                       // przycisk piwnica s17
  btn[4].relay_pin = 6;                 // przekaznik lampa piwnica k16  
  btn[4].channel = 12;                    // numer kanału





bedą jakieś instrukcje jak to zmienić ? i czy nagle wszystko przestanie działać z koniecznością zmiany programu ?

proponuję w temacie który dodałeś @klew dopisywać nowe funkcjonalności bez możliwości komentowania tego tematu aby było czysto i przejrzyście wszystko przedstawione oraz co się dzieje w wersji develop również, żeby każdy miał świadomość co można jeszcze w arduino używać po za roletami, przekaźnikami, termometrami. Kilka rzeczy jest dodawanych, ale tak naprawdę wiedzą o nich tylko użytkownicy którzy na własną rękę wrzucają sobie coś do biblioteki, jakby był temat co można zdziałać na arduino z jakimś przykładem na pewno ułatwiło by to wielu użytkownikom sprawę, bez szukania w kilkunastu wątkach różnych przykładów, za przykład m.in można wziąć czujnik poczty o którym rozmawialiśmy w innym temacie. Moje początki z arduino zacząłem dzięki supli i dla takich użytkowników jak ja takie informacje będą konieczne, sam po nie przespanych kilkudziesięciu nocach korzystam z ardu i jestem zadowolony a podejrzewam, że wiedząc na co moje Mega jeszcze stać byłbym jeszcze bardziej. Powodzenia w klepaniu kodu :)
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

alankedzior wrote: Wed Nov 20, 2019 7:35 pm
ale co w ogóle będzie zmienianie pod Arduino, używam Arduino Mega z shieldem i ciekawi mnie cały czas o czym mowa
np. to biorę się za przepisywanie sensorów, przekaźników, rolet na czym mają polegać nowe funkconalności pod MEGA ?
Tutaj jest lekki zarys prac:
viewtopic.php?p=52014#p52014
alankedzior wrote: Wed Nov 20, 2019 7:35 pm Nie będzie już kodu typu:
Nie będzie trzeba niczego implementować przy dodawaniu wielu sensorów lub innych rzeczy. Także te metody wylecą.
alankedzior wrote: Wed Nov 20, 2019 7:35 pm bedą jakieś instrukcje jak to zmienić ? i czy nagle wszystko przestanie działać z koniecznością zmiany programu ?
Na bierząco aktualizuję przykłady w bibliotece. Dla większości programów, które nie mają zaszytej jakiejś dodatkowej logiki/funkcjonalności, zmiana będzie polegała na wywaleniu niepotrzebnego kodu i maksymalne uproszczenie plików "ino". Przykładowo zobacz sobie jak wygląda dodanie kilku DHT w tym przykładzie (to nie jest docelowa biblioteka - tylko przykład jak mniej więcej będzie wyglądał interfejs biblioteki jeśli idzie o dodawanie kanałów.
Zerknij też tutaj - tu nie ma jeszcze tego nowego interfejsu dla DHT, ale jest już przepisany interfejs do połączenia sieciowego. W liniach 21-34 jest wybór interfejsu sieciowego. Można odpalić Ethernet Shield na Arduino, albo ENC28J60 na Arduino, albo wybrać interfejs Wifi na dowolny ESP8266.

Poza tym nie będzie konieczności przerzucania wszystkiego na nową bibliotekę. Aplikacje ze starą wersją będą nadal działać ze starą biblioteką.
alankedzior wrote: Wed Nov 20, 2019 7:35 pm proponuję w temacie który dodałeś @klew dopisywać nowe funkcjonalności bez możliwości komentowania tego tematu aby było czysto i przejrzyście wszystko przedstawione oraz co się dzieje w wersji develop również, żeby każdy miał świadomość co można jeszcze w arduino używać po za roletami, przekaźnikami, termometrami. Kilka rzeczy jest dodawanych, ale tak naprawdę wiedzą o nich tylko użytkownicy którzy na własną rękę wrzucają sobie coś do biblioteki, jakby był temat co można zdziałać na arduino z jakimś przykładem na pewno ułatwiło by to wielu użytkownikom sprawę, bez szukania w kilkunastu wątkach różnych przykładów, za przykład m.in można wziąć czujnik poczty o którym rozmawialiśmy w innym temacie. Moje początki z arduino zacząłem dzięki supli i dla takich użytkowników jak ja takie informacje będą konieczne, sam po nie przespanych kilkudziesięciu nocach korzystam z ardu i jestem zadowolony a podejrzewam, że wiedząc na co moje Mega jeszcze stać byłbym jeszcze bardziej. Powodzenia w klepaniu kodu :)
Zrobię temat gdzie będę wrzucał postępy prac. Można to też obserwować na github, ale pewnie dla większości informacje na forum będą łatwiejsze do znalezienia.
Poza tym staram się też utrzymać plik readme na github.
Najlepsze suple dla Twojego domu :mrgreen:
procekms89
Posts: 88
Joined: Thu Jun 28, 2018 4:21 am

Post

A czy będzie możliwość skalowania jakiegoś pomiaru?
Chodzi mi o możliwość (np. wskaźnik poziomu ekogroszku) wprowadzenia parametrów zbiornika np. zbiornik pełny to wartość X to w cloudzie będzie 100%, zbiornik pusty to wartość Y to w cloudzie będzie 0%, i reszta wartości będzie proporcjonalna.

Jest w ogóle opcja na coś takiego?
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

procekms89 wrote: Fri Dec 06, 2019 7:11 am A czy będzie możliwość skalowania jakiegoś pomiaru?
Chodzi mi o możliwość (np. wskaźnik poziomu ekogroszku) wprowadzenia parametrów zbiornika np. zbiornik pełny to wartość X to w cloudzie będzie 100%, zbiornik pusty to wartość Y to w cloudzie będzie 0%, i reszta wartości będzie proporcjonalna.

Jest w ogóle opcja na coś takiego?
Aktualnie serwer czegoś takiego nie wspiera, ale w planach jest kanał ogólnego przeznaczenia. Zakładam, że on będzie pozwalał na wartości %.
Natomiast po stronie aplikacji na Arduino można zrobić wszystko, co tylko potrafisz zakodować. Mogę też dodać kanał, który skaluje jakiś pomiar do zakresu 0-100%, ale i tak musimy poczkać na wsparcie po stronie serwera.
Aktualnie można to obejść używając dowolnego kanału (temperatura, odległość) i po prostu skalować 0-100.
Najlepsze suple dla Twojego domu :mrgreen:

Return to “Arduino IDE”