Aktualizacja SuplaDevice
-
milion81
- Posts: 194
- Joined: Mon May 07, 2018 8:34 am
@klew jak postępy nad biblioteką, kiedy można się jej spodziewać

-
klew
- Posts: 13907
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Prace idą powoli. Ostatnio czasami mam trudność w wygospodarowaniu 1h dziennie.milion81 wrote: Sat Nov 16, 2019 7:56 pm @klew jak postępy nad biblioteką, kiedy można się jej spodziewać![]()
![]()
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 
-
klew
- Posts: 13907
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Nie znam pełnej historii, ale mój zmysł archeologa mi podpowiada, że to wyglądało mniej więcej tak:QLQ wrote: Fri Nov 15, 2019 9:57 pmCode: Select all
#define SUPLA_CHANNELTYPE_HUMIDITYSENSOR 3036 // ver. >= 8Code: Select all
#define SUPLA_CHANNELTYPE_WEATHER_STATION 3100 // ver. >= 8Code: Select all
#define SUPLA_CHANNELTYPE_RELAYHFD4 2000 #define SUPLA_CHANNELTYPE_RELAYG5LA1A 2010 #define SUPLA_CHANNELTYPE_2XRELAYG5LA1A 2020Code: Select all
#define SUPLA_CHANNELFNC_CONTROLLINGTHEDOORLOCK 90Code: Select all
#define SUPLA_CHANNELFNC_RING 150 #define SUPLA_CHANNELFNC_ALARM 160
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 
-
QLQ
- Posts: 2512
- Joined: Sun Sep 03, 2017 9:13 am
Ten CONTROLLINGTHEDOORLOCK to ja bym wykorzystał/rozumiał jako sensor czy zamek drzwi zamknięty/otwarty. Myślę że się przyda .klew wrote: Sat Nov 16, 2019 10:50 pmNie znam pełnej historii, ale mój zmysł archeologa mi podpowiada, że to wyglądało mniej więcej tak:QLQ wrote: Fri Nov 15, 2019 9:57 pmCode: Select all
#define SUPLA_CHANNELTYPE_HUMIDITYSENSOR 3036 // ver. >= 8Code: Select all
#define SUPLA_CHANNELTYPE_WEATHER_STATION 3100 // ver. >= 8Code: Select all
#define SUPLA_CHANNELTYPE_RELAYHFD4 2000 #define SUPLA_CHANNELTYPE_RELAYG5LA1A 2010 #define SUPLA_CHANNELTYPE_2XRELAYG5LA1A 2020Code: Select all
#define SUPLA_CHANNELFNC_CONTROLLINGTHEDOORLOCK 90Code: Select all
#define SUPLA_CHANNELFNC_RING 150 #define SUPLA_CHANNELFNC_ALARM 160
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.
Tak czy inak dzieki za zainteresowanie
jak coś nie działa to włącz zasilanie.....
-
milion81
- Posts: 194
- Joined: Mon May 07, 2018 8:34 am
Kibicuję i trzymam kciukiklew wrote: Sat Nov 16, 2019 10:34 pmPrace idą powoli. Ostatnio czasami mam trudność w wygospodarowaniu 1h dziennie.milion81 wrote: Sat Nov 16, 2019 7:56 pm @klew jak postępy nad biblioteką, kiedy można się jej spodziewać![]()
![]()
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.
-
QLQ
- Posts: 2512
- Joined: Sun Sep 03, 2017 9:13 am
z tym chyba każdy z nas ma problem. ... żona , dzieci, praca...itd . Ja też siedzę nad Suplą po nocach bo inaczej ni dy rydyklew 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.
jak coś nie działa to włącz zasilanie.....
-
alankedzior
- Posts: 114
- Joined: Mon Jun 18, 2018 5:38 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 mowaklew 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.
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
-
klew
- Posts: 13907
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Tutaj jest lekki zarys prac: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 ?
viewtopic.php?p=52014#p52014
Nie będzie trzeba niczego implementować przy dodawaniu wielu sensorów lub innych rzeczy. Także te metody wylecą.
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.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 ?
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ą.
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.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![]()
Poza tym staram się też utrzymać plik readme na github.
Najlepsze suple dla Twojego domu 
-
procekms89
- Posts: 88
- Joined: Thu Jun 28, 2018 4:21 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?
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?
-
klew
- Posts: 13907
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Aktualnie serwer czegoś takiego nie wspiera, ale w planach jest kanał ogólnego przeznaczenia. Zakładam, że on będzie pozwalał na wartości %.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?
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 
