Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Przyrządy pomiarowe, ich montaż i zastosowanie odczytów w procesach destylacji. Regulacja procesów.

aakk
1150
Posty: 1160
Rejestracja: poniedziałek, 7 sty 2019, 18:55
Status Alkoholowy: Konstruktor
Lokalizacja: Łódź
Podziękował: 20 razy
Otrzymał podziękowanie: 100 razy
Kontakt:

Post autor: aakk »

Tak się w sumie zastanawiam, w internetach piszą że trzeba stosować rezystor. Ja nie miałem akurat pod ręką więc podłączyłem bez. I wszystko hula, gdzie haczyk? Łączę tylko za pomocą 3 przewodów, nie korzystam z opcji 'pasożytniczej'
Destylatory ze stali nierdzewnej.
www.ak-spaw.pl
facebook.com/akspawpl
Zapraszam
Awatar użytkownika

george1255
350
Posty: 397
Rejestracja: wtorek, 13 lut 2018, 14:50
Krótko o sobie: Jestem fajnym człowiekiem:)
Ulubiony Alkohol: Piwo/ Cydr/ Bimberek
Status Alkoholowy: Konstruktor
Podziękował: 6 razy
Otrzymał podziękowanie: 27 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: george1255 »

Ja przez długi czas podłączałem pod 3.3V przy podłączeniu "nie pasożytniczym" i hulało. Teraz mam dorzucony rezystor 4k7 ale nie widzę różnicy.

Wysłane z mojego EML-L29 przy użyciu Tapatalka
TERMOMETRY WIFI
https://www.facebook.com/TermometryWIFI/

mienho
150
Posty: 152
Rejestracja: piątek, 8 lip 2016, 21:59
Otrzymał podziękowanie: 10 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: mienho »

Z tego co kiedyś gdzieś wyczytałem i pamiętam to rezystor powoduje stabilniejszą pracę i lepiej rozpoznaje adresy ds-ów. Ale to było dość dawno i mogę się mylić
Awatar użytkownika

Autor tematu
robert4you
950
Posty: 951
Rejestracja: środa, 30 mar 2016, 18:43
Podziękował: 9 razy
Otrzymał podziękowanie: 134 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: robert4you »

Czy któryś z kolegów którzy kupili mój sterownik stwierdził taki problem u siebie?

Wysłane z mojego SM-G950F przy użyciu Tapatalka
Ostatnio zmieniony niedziela, 21 cze 2020, 21:17 przez robert4you, łącznie zmieniany 1 raz.
************************************************************************
Awatar użytkownika

andras
50
Posty: 95
Rejestracja: poniedziałek, 16 lip 2012, 09:38
Ulubiony Alkohol: własny
Status Alkoholowy: Drinker
Podziękował: 99 razy
Otrzymał podziękowanie: 5 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: andras »

Witam

Mam pytania , wgrywam kod do esp32 , niby wszystko idzie , ale nie wiem czy się łączy z blynkiem ( lokalny serwer )
zmieniłem w kodzie :
char auth[] = "lC5BDxtnOO8sVM25xxxxxxxxxxxx";
char ssid[] = "SUxxx";
char pass[] = "olenxxx";

oraz na

Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,186), 8442);
czy coś jeszcze trzeba zmienić? i jak sprawdzić czy się łączy z serwerem ?


EDIT
Wszystko już ok, przyczyną był zły port :)
Ostatnio zmieniony wtorek, 25 sie 2020, 09:43 przez manowar, łącznie zmieniany 2 razy.

Domin_Kielon
10
Posty: 19
Rejestracja: wtorek, 10 gru 2019, 23:36
Podziękował: 4 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: Domin_Kielon »

Cześć. Jestem laikiem w tym temacie, mój ojciec bardziej ogarnia takie kwestie, więc z jego pomocą chciałbym stworzyć takie cudo.

Mam 2 pytania - ponieważ chciałbym żeby komunikacja między telefonem a sterownikiem odbywała się przez internet, a nie w obrębie danej sieci (głównie ze względu na chęć włączenia kolumny przed powrotem z pracy, żeby już się nagrzewała).
1. Ze względu na umiejscowienie kolumny w piwnicy mam problem z sygnałem w tamtym miejscu. Czy lepiej montować klamoty z dala od kolumny w miejscu gdzie sygnał jest "w miarę", czy postawić router bliżej kolumny i dokupić do niego antenę?
2. Czy do komunikacji sterownika przez internet potrzebuje dodatkowego hardware, czy wystarczy do tego jakiś soft?

Dziękuję z góry za wszystkie odpowiedzi.

moszeusz
200
Posty: 213
Rejestracja: sobota, 23 sie 2014, 14:47
Podziękował: 32 razy
Otrzymał podziękowanie: 23 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: moszeusz »

Postaw serwer blynka na VPSie (wishosting ma za 12 zł na rok) i będzie działać przez internet, ja tak mam.

https://www.elektroda.pl/rtvforum/topic3602108.html

W kwestii sygnału - możesz zrobić repeater z ESP8266 który będzie pomiędzy routerem a kolumną.
Ostatnio zmieniony środa, 9 wrz 2020, 13:23 przez moszeusz, łącznie zmieniany 2 razy.
Awatar użytkownika

Autor tematu
robert4you
950
Posty: 951
Rejestracja: środa, 30 mar 2016, 18:43
Podziękował: 9 razy
Otrzymał podziękowanie: 134 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: robert4you »

Przecież blynk standardowo działa przez internet, a nie w sieci lokalnej.

Wysłane z mojego SM-G950F przy użyciu Tapatalka
************************************************************************

Moskit81
200
Posty: 242
Rejestracja: sobota, 25 maja 2019, 02:06
Podziękował: 17 razy
Otrzymał podziękowanie: 4 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: Moskit81 »

Chyba chodziło o postawienie serwera zamiast lokalnie i nie płaceniu, na zewnętrznym serwerze. Ja tak zrozumiałem.
Awatar użytkownika

george1255
350
Posty: 397
Rejestracja: wtorek, 13 lut 2018, 14:50
Krótko o sobie: Jestem fajnym człowiekiem:)
Ulubiony Alkohol: Piwo/ Cydr/ Bimberek
Status Alkoholowy: Konstruktor
Podziękował: 6 razy
Otrzymał podziękowanie: 27 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: george1255 »

Ja zrozumiałem to w ten sposób, że kolega pytał czy aby korzystać z blynka i sterować kolumna musi być tej samej sieci co sterownik.

Jeżeli o to chodziło, to odpowiadam że nie musisz :-)

Wysłane z mojego EML-L29 przy użyciu Tapatalka
TERMOMETRY WIFI
https://www.facebook.com/TermometryWIFI/

Domin_Kielon
10
Posty: 19
Rejestracja: wtorek, 10 gru 2019, 23:36
Podziękował: 4 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: Domin_Kielon »

george1255 pisze:Ja zrozumiałem to w ten sposób, że kolega pytał czy aby korzystać z blynka i sterować kolumna musi być tej samej sieci co sterownik.
Tak dokładnie o to chodziło :)
Dzięki wszystkim za odpowiedzi !
Panowie, jeszcze jedno pytanie. Nie rozumiem trochę, jak działa w tym systemie kwestia odbioru. Jeśli EZ do odbioru otwierany jest czasowo, to jak się ustawia przepływ? Teraz przy odbiorze ciągłym na zaworku precyzyjnym ustawiam odpowiedni odbiór.

A jak to wygląda przy tym systemie? Zawór otwiera się na maksa do czasu minimalnej zmiany temperatury, system go zamyka i po stabilizacji znów otwiera na maksa i tak do końca procesu?
Czy może ja musze ustawić przepływ na minutę na elektrozaworze w aplikacji?
Czy odwrotnie - elektrozawór na maksa, a ustawiam przepływ na zaworze kulowym?
A co z EZ do zimnej wody? On chyba nie otwiera się czasowo, tylko jego prace steruje się %otwarciem, prawda?
Ostatnio zmieniony czwartek, 10 wrz 2020, 11:04 przez radius, łącznie zmieniany 1 raz.

czytam
700
Posty: 723
Rejestracja: wtorek, 5 wrz 2017, 08:23
Podziękował: 15 razy
Otrzymał podziękowanie: 107 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: czytam »

To już zależy od inwencji i zasobności portfela twórcy systemu. Elektrozawory proporcjonalne są zwykle drogie i trudniejsze w sterowaniu ale oczywiście można je stosować.. Dlatego przy odbiorze stosuje się na przykład:
- igłę (windę) z silnikiem krokowym
- zawór regulacyjny z ręcznie ustawianym maksymalnym odbiorem i za nim elektrozawór, który otwiera się okresowo
...
Dla regulacji chłodzenia zwykle zawór ręczny ustawiający minimalny przepływ z jego obejściem przez elektrozawór również sterowany okresowo. Dla odcięcia zcałkowitego następny EZ za nimi.

Domin_Kielon
10
Posty: 19
Rejestracja: wtorek, 10 gru 2019, 23:36
Podziękował: 4 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: Domin_Kielon »

czytam pisze:To już zależy od inwencji i zasobności portfela twórcy systemu. Elektrozawory proporcjonalne są zwykle drogie i trudniejsze w sterowaniu ale oczywiście można je stosować.. Dlatego przy odbiorze stosuje się na przykład:
- igłę (windę) z silnikiem krokowym
- zawór regulacyjny z ręcznie ustawianym maksymalnym odbiorem i za nim elektrozawór, który otwiera się okresowo
...

Moje pytanie dotyczy konkretnie systemu który stworzył autor tematu. Chce na jego kodzie zrobić sterowanie dla siebie, dlatego pytam o konkretny przypadek. Jako laik nie rozumiem jak działa proces z czasowym działaniem EZ.

@robert4you - Pisales gdzieś o tym że system skraca mocno cały proces. Stąd moje pytanie - czy w tym systemie zawór kulowy i EZ ustawiamy na full i sterownik zamyka EZ gdy kolumna się destabilizuje, po stabilizacji otwiera znów i tak w kółko, czy któryś z zaworów ustawiam na wyliczone RR 1:4 i sterownik tylko zmienia delikatnie parametry odbioru mniej więcej wtedy gdy robi to operator.

Wybaczcie, pytanie może głupie ale kompletnie się na tym nie znam i o systemach z EZ nigdy nie czytałem.
Awatar użytkownika

.Gacek
2000
Posty: 2383
Rejestracja: niedziela, 18 paź 2015, 14:00
Krótko o sobie: Marzyciel
Ulubiony Alkohol: Własny.
Lokalizacja: Gorzów Wlkp.
Podziękował: 268 razy
Otrzymał podziękowanie: 338 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: .Gacek »

Elektrozawór jest na wyjściu olm, tuż za nim jest zaworek precyzyjny ustawiony już na daną wydajność, przyjmijmy 34-36ml/min przy grzaniu ok 3kW. Jeżeli kolumna się zdestabilizuje tzn ze odbieraliśmy urobek zbyt szybko i musi nastąpić korekta. Wtenczas ez się zamyka i sterownik czeka na powrót temperatury sprzed stabilizacji. Jeżeli temperatura opadnie do pożądanej to elektrozawór będzie sobie cykał o 5 % względem pierwszej korekty, później 10%. Cykl ten można porównać do pracy grupowego regulatora mocy np 100% mocy - grzałka cały czas załączona, 50% mocy - grzałka grzeje 5 sekund i 5 sekund nie grzeje, 30% mocy - grzałka grzeje 3 sekundy i 7 sekund odpoczywa...
Pozdrawiam Gacek.

Domin_Kielon
10
Posty: 19
Rejestracja: wtorek, 10 gru 2019, 23:36
Podziękował: 4 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: Domin_Kielon »

I już wszystko wiem :) dziękuję Ci bardzo za odpowiedź!
Ostatnio zmieniony sobota, 12 wrz 2020, 11:35 przez Qba, łącznie zmieniany 1 raz.
Awatar użytkownika

andras
50
Posty: 95
Rejestracja: poniedziałek, 16 lip 2012, 09:38
Ulubiony Alkohol: własny
Status Alkoholowy: Drinker
Podziękował: 99 razy
Otrzymał podziękowanie: 5 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: andras »

Działa super, dołożyłem czujnik poziomu cieczy i jestem mega zadowolony, dzięki robert4you za udostępnienie
Obrazek
Ostatnio zmieniony sobota, 26 wrz 2020, 09:31 przez manowar, łącznie zmieniany 4 razy.
Awatar użytkownika

Autor tematu
robert4you
950
Posty: 951
Rejestracja: środa, 30 mar 2016, 18:43
Podziękował: 9 razy
Otrzymał podziękowanie: 134 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: robert4you »

Brawo ty !!!
Jaki czujnik poziomu zastosowałeś?

Wysłane z mojego SM-G950F przy użyciu Tapatalka
************************************************************************
Awatar użytkownika

andras
50
Posty: 95
Rejestracja: poniedziałek, 16 lip 2012, 09:38
Ulubiony Alkohol: własny
Status Alkoholowy: Drinker
Podziękował: 99 razy
Otrzymał podziękowanie: 5 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: andras »


MastaMari
150
Posty: 168
Rejestracja: poniedziałek, 10 lut 2020, 21:47
Podziękował: 3 razy
Otrzymał podziękowanie: 15 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: MastaMari »

Jak ustalić kolejność termometrów ? Mam rożne długości przewodów i chciałbym aby były w odpowiednim miejscu bez zmiany przypisanego virtualpinu.

Slodziaksos
50
Posty: 52
Rejestracja: poniedziałek, 5 sie 2013, 10:43
Podziękował: 37 razy
Otrzymał podziękowanie: 8 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: Slodziaksos »

Wsadzaj do gara z gorącą wodą po jednym i sie dowiesz który jest który
Awatar użytkownika

Autor tematu
robert4you
950
Posty: 951
Rejestracja: środa, 30 mar 2016, 18:43
Podziękował: 9 razy
Otrzymał podziękowanie: 134 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: robert4you »

Dokładnie

Wysłane z mojego SM-G950F przy użyciu Tapatalka
************************************************************************

MastaMari
150
Posty: 168
Rejestracja: poniedziałek, 10 lut 2020, 21:47
Podziękował: 3 razy
Otrzymał podziękowanie: 15 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: MastaMari »

Gdybym wiedział to bym zamówił wszystkie z 2m przewodu a tak trzeba będzie przedłużać ;/
Awatar użytkownika

Autor tematu
robert4you
950
Posty: 951
Rejestracja: środa, 30 mar 2016, 18:43
Podziękował: 9 razy
Otrzymał podziękowanie: 134 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: robert4you »

Nie przedłużać.
Zmień kolejność w kodzie.

Wysłane z mojego SM-G950F przy użyciu Tapatalka
************************************************************************
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Próbuję przenieść kawałek kodu na esp8266. W sumie to moje pierwsze podejście do samodzielnego pisania kodu na ESP i mam mały problem.
Chciałbym tylko ustawiać moc grzałki, więc biorę kod Task1code, jest on wywoływany przez xTaskCreatePinnedToCore, którego na esp8266 nie ma. Wrzucam go do loop'a - wywalając niepotrzebne rzeczy i co jakieś 3-4 sekundy na konsoli widzę "Soft WDT reset" - czy ten problem nie występuje na esp32? Na ten moment zrobiłem obejście i kończę pętlę for po sekundzie - ale nie wiem czy nie bedzie problemów później jak będę odczytywał temperaturę z czujników itd.

Druga sprawa to włączanie grzałki. W programie moc jest realizowana poprzez wyłączanie/włączanie w przeciągu 1 sekundy - czy to nie wpływa negatywnie na sam ssr/grzałkę? Posiadam regulator Boleckiego i widzę, że ten czas jest tam dwukrotnie większy, tj 2 sekundy na cykl.

Kod: Zaznacz cały

#define RelayPin D8
int PercentagePower = 50;
int HeaterTimeFrameInSeconds = 2;

unsigned long loopStartTime=0;
unsigned long timePassed=0;

void setup() {
}

void loop() {
  pinMode(RelayPin, OUTPUT);
  digitalWrite(RelayPin, LOW);

  loopStartTime = millis();
  
  for (;;)
  {
    timePassed = millis() - loopStartTime;
    
    if (timePassed > (HeaterTimeFrameInSeconds * 1000))
    {
      break;
    }

    if ((PercentagePower * 10 * HeaterTimeFrameInSeconds) < timePassed)
    {
      digitalWrite(RelayPin, LOW);
    }
    else
    {
      digitalWrite(RelayPin, HIGH);
    }
  }
}
Ostatnio zmieniony poniedziałek, 26 paź 2020, 15:19 przez stefunk, łącznie zmieniany 3 razy.

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

stefunk - to jest aktywne czekanie, tak się nie robi. Przecież przed wejściem do tego fora wiesz ile czasu masz być w stanie wysokim a ile w niskim. Chyba tam jest jakiś delay na tym sprzęcie? Z jaką częstotliwością chcesz sterować tym wyjściem?

Kod: Zaznacz cały

#define CYCLE_LENGTH_IN_MS 100
#define POWER_RESOLUTION 100

// UWAGA power musi być [0..POWER_RESOLUTION]

for (;;) { // jak szybko chcesz przełączać? 10Hz, czyli jeden obrót 100ms (100msx10 = 1s)
  if (power>0) { // faza wysoka
    digitalWrite(pin, HIGH);
    delay(power * CYCLE_LENGTH_IN_MS / POWER_RESOLUTION);  // najpierw mnożenie później dzielenie - zastanów się dlaczego
  }  
  if (power<100) { // faza niska
    digitalWrite(pin, LOW);
    delay((POWER_RESOLUTION - power) * CYCLE_LENGTH_IN_MS / POWER_RESOLUTION);
  }  
}
Ostatnio zmieniony poniedziałek, 26 paź 2020, 18:21 przez jacek.kokot, łącznie zmieniany 1 raz.
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Wziąłem to z przykładu z tego tematu. Twoje podejście wygląda dużo lepiej, udało mi się złożyć wszystko w całość.

Kod: Zaznacz cały

#include <Scheduler.h>

#define RELAY_PIN D8
#define POWER_RESOLUTION 100
#define POWER_PERCENTAGE 50
#define HEATER_TIME_FRAME_IN_SECONDS 2

class HeaterTask : public Task {
public:
    HeaterTask(int relayPin, int powerResolution, int percentagePower, int heaterTimeFrameInSeconds) {
      _relayPin = relayPin;
      UpdateHeaterParameters(powerResolution, percentagePower, heaterTimeFrameInSeconds);
    }
    
    void setup() {
      pinMode(RELAY_PIN, OUTPUT);
      digitalWrite(RELAY_PIN, LOW);
    }

    void loop() {
      if (_percentagePower > 0 ) {
        turnAndWait(_highTimeInMiliseconds, HIGH);
      }
      
      if (_percentagePower < 100) {
        turnAndWait(_lowTimeInMiliseconds, LOW);
      }
    }

    void UpdateHeaterParameters(int powerResolution, int percentagePower, int heaterTimeFrameInSeconds) {
      _powerResolution = powerResolution;
      _percentagePower = percentagePower;
      _heaterTimeFrameInSeconds = heaterTimeFrameInSeconds;
      
      _highTimeInMiliseconds = _percentagePower * _heaterTimeFrameInSeconds * 1000 / _powerResolution;
      _lowTimeInMiliseconds = (_powerResolution - _percentagePower) * _heaterTimeFrameInSeconds * 1000 / _powerResolution;
    }
private:
  int _relayPin, _powerResolution, _percentagePower, _heaterTimeFrameInSeconds, _highTimeInMiliseconds, _lowTimeInMiliseconds;
  
  void turnAndWait(int timeInMiliseconds, int state) {
    digitalWrite(RELAY_PIN, state);
        delay(timeInMiliseconds);
  }
} heater_task(RELAY_PIN, POWER_RESOLUTION, POWER_PERCENTAGE, HEATER_TIME_FRAME_IN_SECONDS);

void setup() {
  //Serial.begin(115200);
  //Serial.println("Setup");

  Scheduler.start(&heater_task);
  Scheduler.begin();
}


void loop() {}
Ostatnio zmieniony poniedziałek, 26 paź 2020, 20:18 przez stefunk, łącznie zmieniany 3 razy.

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

Nie widziałem tego przykładu nie będę się wypowiadał na jego temat. To jest tak, że każdy orze jak może. Tylko niektórzy powinni poprzestać na oraniu pola ;)

Skoro już się czepiłem, to parę dodatkowych spraw.
1. Rozdziel deklaracje od definicji.
2. Zmienne PercentagePower i HeaterTimeFrameInSeconds są w tym kodzie prywatne dla klasy HeaterTask. Być może tu nie ma całości kodu i gdzieś tam coś je modyfikuje, ale w takim przypadku tak czy siak przydałaby się jakieś przypisanie ich własności do czegoś i dodanie synchronizacji.
3. RELAY_PIN jest naturalnym kandydatem na parametr konstruktora HeaterTask.
4. Inicjalizacja highTimeInMiliseconds i lowTimeInMiliseconds - tego się tak nie robi. To powinno być w konstruktorze.
5. Zamiast wyliczać na pałę highTimeInMiliseconds i lowTimeInMiliseconds lepiej w ogóle nie mieć takich zmiennych i wyliczać je na bieżąco w środku loop. Wtedy można modyfikować PercentagePower i niczym się nie martwić. Generalnie ogólna zasada jest taka, że im mniej przechowujesz stanu tym lepiej.
6. Jak być chciał być purystą, to zwróć uwagę, że highTimeInMiliseconds + lowTimeInMiliseconds wcale nie musi być 1000 * HeaterTimeFrameInSeconds. Jakbyś chciał to zapewnić trzeba by inicjalizować lowTimeInMiliseconds = 1000 * HeaterTimeFrameInSeconds - highTimeInMiliseconds.
7. Deklaracja heater_task jest bardzo błędogenna. Tego nie widać. Tak się nie robi.
Awatar użytkownika

.Gacek
2000
Posty: 2383
Rejestracja: niedziela, 18 paź 2015, 14:00
Krótko o sobie: Marzyciel
Ulubiony Alkohol: Własny.
Lokalizacja: Gorzów Wlkp.
Podziękował: 268 razy
Otrzymał podziękowanie: 338 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: .Gacek »

jacek.kokot pisze:Nie widziałem tego przykładu nie będę się wypowiadał na jego temat. To jest tak, że każdy orze jak może. Tylko niektórzy powinni poprzestać na oraniu pola ;)
Napisz o co Ci chodzi, przecież tutaj nikt w mordę nie przyłoży... Nie pykło Ci coś dzisiaj? Chooojowy dzień był? Kurde... Nie rozumiem takich ludzi i zachowania...
Pozdrawiam Gacek.
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Gacek, po prostu pracując z zawodzie, jak się widzi totalną prowizorkę, to szkoda słów

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

.Gacek pisze:Napisz o co Ci chodzi, przecież tutaj nikt w mordę nie przyłoży... Nie pykło Ci coś dzisiaj? Chooojowy dzień był? Kurde... Nie rozumiem takich ludzi i zachowania...
Ja Cię przepraszam bardzo, ale tak jak napisałem, nie widziałem tego kodu, nie mam pojęcia jaki to jest kod, ani tym bardziej czyj. Napisałem tylko, że czasami jest lepiej jak niektórzy nie zajmują się pewnymi rzeczami, ale to była uwaga ogólna, w oderwaniu od kodu (którego niewidziałem).

Ja nie chcę tu nic sugerować, ale chyba nieco nadinterpretowałeś moją wypowiedź. Chooojowy dzień był?
Ostatnio zmieniony poniedziałek, 26 paź 2020, 21:17 przez jacek.kokot, łącznie zmieniany 1 raz.

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

stefunk pisze:Gacek, po prostu pracując z zawodzie, jak się widzi totalną prowizorkę, to szkoda słów
Panowie... Ja nie widziałem tego kodu. Nie dyskutuję tu o żadnym konkretnym kodzie. Napisałem uwagę ogólną, że czasami ktoś opublikuje G**wno i następnie niczego nieświadomi ludzie się na tym wzorują i wychodzi jeszcze większe G******wno. To jest taki truizm, który ma zastosowanie w wielu miejscach i nie jest specyficzny z kodowania. Nie nazywam na G żadnego konkretnego kodu, ponieważ go nie widziałem. Proszę nie odbierać tego ad persona.
Ostatnio zmieniony poniedziałek, 26 paź 2020, 21:21 przez jacek.kokot, łącznie zmieniany 1 raz.
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Po co właściwie w tym wypadku rozdzielać deklaracje od definicji?

https://pastebin.com/SRzt9k1H

Kolejna porcja kodu ... nie wiem czy to wina esp'a czy coś źle zrobiłem, ale pokazuje mi złą temperature ... w okolicach 66 stopni, po ogrzaniu czujnika temperatura rośnie...

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

stefunk - dlaczego nie działa, nie ma pojęcia, ale tak właściwie Ty korzystasz tam z klasy DallasTemperature, która z tego co rozumiem, jest z zewnątrz. Widzę co najmniej trzy opcje. Klasa działa źle (jeśli to jest zaufana klasa, używana przez wielu, bardzo mało prawdopodobne), używasz tej klasy źle (obstawiałbym tą opcję, może begin trzeba wołać w loop a może pomiędzy requestTemperatures a get trzeba dać delay - nie wiem) lub masz coś źle podłączone. Nie znam tej klasy. Nie powiem Ci konkretnie.

Drobne (naprawdę pierdoły) sugestie do kodu:
0. W rozdzieleniu deklaracji od definicji chodzi o to, że w kodzie trzeba trzeba tworzyć struktury wyższego rzędu, wydzielać elementy, ukrywać szczegóły implementacyjne. Tu masz tego kodu tyle co kto napłakał, więc pewnie, póki co, to będzie przerost formy nad treścią, ale warto mieć taki paradygmat z tyłu głowy, bo wraz z rozwojem projektu podział stanie się nieunikniony.
1. Sądzę, że '_' powinieneś używać do parametrów, aby inne zmienne nie miały '_'. Np.

Kod: Zaznacz cały

HeaterTask(int _relayPin, int _powerResolution, int _percentagePower, int _heaterTimeFrameInSeconds) {
      relayPin = _relayPin;
2. Ja nie znam tej klasy, ale z tego co rozumiem sensors->getTempCByIndex(0); zwraca wynik dla pierwszego termometru z brzegu. Sądzę, że taki kod może w przyszłości ewaluować do getTempCByIndex(i); a wg mojej wiedzy magistrala 1-Wire nie daje żadnej gwarancji, że czujniki zawsze czytają się w tej samej kolejności. Reasumując uważam, że lepiej czytać DS po serialu. Jest tam taka opcja w ogóle?
3. W Twoim kodzie nie alokujesz dynamicznie żadnej klasy, a wskaźniki w C++ stają się coraz bardziej passe, więc zamiast pisać static SensorTask sensor_task(SENSOR_PIN, &sensors, &lcdService); i dalej SensorTask(int sensorPin, DallasTemperature *sensors, LcdService *lcdService) możesz napisać static SensorTask sensor_task(SENSOR_PIN, sensors, lcdService); i dalej SensorTask(int sensorPin, DallasTemperature& sensors, LcdService& lcdService).

Ale generalnie naprawdę ładny kod. Dałbym za niego studentowi 5.
Ostatnio zmieniony wtorek, 27 paź 2020, 08:40 przez jacek.kokot, łącznie zmieniany 2 razy.
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

1. Wolę jak prywatne parametry mają _ w nazwie
2. To jest dopiero nauka biblioteki, będę się starał robić tak, żeby przyporządkować automatycznie jeden termometr w to samo miejsce
3. Programuje w C# i wskaźniki widzę pierwszy raz, nie licząc okresu studiów wiele lat temu :)

Gdybym nie programował od 13 lat to bym się z tej 5 bardzo ucieszył :D

Przyznam, że trochę mnie temat wciągnął i postanowiłem zrobić bibliotekę z asnychronicznym pobieraniem danych i powiadomieniami (o ile się da) na stronie, serwowanej przez ESP'a, z możliwością ustawienia mocy grzałki i wskazaniami temperatury.

Wszystko robię na licencji MIT, więc można będzie korzystać też komercyjnie - mam nadzieję, że zachęcę też forumowych producentów do wrzucania kodu, albo przynajmniej pomocy w rozwoju.

https://github.com/stefunkk/openstill
Awatar użytkownika

george1255
350
Posty: 397
Rejestracja: wtorek, 13 lut 2018, 14:50
Krótko o sobie: Jestem fajnym człowiekiem:)
Ulubiony Alkohol: Piwo/ Cydr/ Bimberek
Status Alkoholowy: Konstruktor
Podziękował: 6 razy
Otrzymał podziękowanie: 27 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: george1255 »

stefunk pisze: 2. To jest dopiero nauka biblioteki, będę się starał robić tak, żeby przyporządkować automatycznie jeden termometr w to samo miejsce
W arduino IDE
"Tutaj możemy się posłużyć programem demo Plik → Przykłady → OneWire → DS18x20, trzeba jednak pamiętać, aby na samym początku zmienić informacje o podłączeniu czujników"
a później w kodzie umieszczasz

Kod: Zaznacz cały

DeviceAddress termometrZewnetrzny = { 0x10, 0x7A, 0x31, 0x99, 0x1, 0x8, 0x0, 0x4A };
Nie wiem, moze Ci to rozjaśni :)

Źródlo: https://forbot.pl/blog/kurs-arduino-ii- ... 20-id18414
TERMOMETRY WIFI
https://www.facebook.com/TermometryWIFI/
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Raczej nie będę podawał ich adresów, wolałbym przy podmianie czujnika nie kompilować ponownie kodu. Może po prostu sortowanie po adresach, żeby zawsze były w tej samej kolejności

edit.

Odpaliłem przykład oneWire i niestety tam też jest zły odczyt.

ROM = 28 FF 48 9E 83 17 4 E
Chip = DS18B20
Data = 1 19 4 4B 46 7F FF C 10 1 CRC=1
Temperature = 65.56 Celsius, 150.01 Fahrenheit
No more addresses.

edit2

Downgrade biblioteki oneWire do 2.3.0 pomógł
Ostatnio zmieniony wtorek, 27 paź 2020, 12:47 przez stefunk, łącznie zmieniany 2 razy.

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

stefunk pisze:Raczej nie będę podawał ich adresów, wolałbym przy podmianie czujnika nie kompilować ponownie kodu. Może po prostu sortowanie po adresach, żeby zawsze były w tej samej kolejności
Do testowania - jakkolwiek. Natomiast jak już coś będziesz chciał uruchomić - tylko po serialu. Inaczej nigdy nie będziesz miał pewności co czytasz. Zwróć uwagę, że przy kilku czyjnikach na tej samej magistrali możesz mieć tak, że przy kolejnym odczycie np. 2 z 5 czujników się nie przeczytają (nie bo nie i tyle). Wtedy to już w ogóle będzie miał loterię.

Swoją drogą - jak testujesz czy odczyt w ogóle się udał?
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

No i utknąłem, chciałem za namową zrobić po adresach, ale chyba coś mam nie tak z wskaźnikami, bo mi adresy idą jakieś dziwne, chodzi mi o 1000552E204070 i 000000001 mimo zadeklarowania ich prawidłowo:

const std::map<const char*, const DeviceAddress&> SensorList
{
{"10Polka", { 0x28, 0xFF, 0xB4, 0xCE, 0x70, 0x17, 0x03, 0xBB }},
{"Glowica", { 0x28, 0xFF, 0x4C, 0xDE, 0x83, 0x17, 0x04, 0xF1 }},
{"Zbiornik", { 0x28, 0xFF, 0xE7, 0x7A, 0x83, 0x17, 0x04, 0x15 }},
{"Woda", { 0x28, 0xFF, 0xB7, 0x78, 0x90, 0x17, 0x05, 0x77 }}
};

żeby było jeszcze bardziej dziwnie, dwa ostatnie działają prawidłowo, kod tu: https://github.com/stefunkk/openstill

Devices count:
4
10Polka
-127.00
1000552E204070
Glowica
-127.00
000000001
Zbiornik
21.87
28FFE77A83174150
Woda
21.69
28FFB778901757728

jacek.kokot
100
Posty: 105
Rejestracja: poniedziałek, 17 sie 2020, 11:28
Podziękował: 1 raz
Otrzymał podziękowanie: 11 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: jacek.kokot »

DeviceAddress jest typu unit8_t[8]. Czyli teoretycznie od inicjalizacji nikt nie powinien tego modyfikować. Czy mógłbyś zrobić test polegający na wywaleniu czytania w ogóle i zostaw tylko wypisywanie w tym loop element.first i element.second. To że wyniki są z kosmosu - bywa, ale dlaczego wypisując element.second pisze śmieci - dziwne.

Ja bym zrobił zamiast map<char*, Address> => vector< pair<string, Address> >.

Zamień sobie LcdServiceClass* na LcdServiceClass& (i inne analogicznie). Wtedy nigdzie nie bedziesz miał ani * ani ->.
Awatar użytkownika

stefunk
150
Posty: 183
Rejestracja: sobota, 30 lis 2019, 12:53
Podziękował: 26 razy
Otrzymał podziękowanie: 7 razy
Re: Termometr i sterowanie kolumny przez smartfona po WiFi - nowa wersja

Post autor: stefunk »

Udało mi się to zrobić, po zmianie const chara na stringa, adresy zaczeły być prawidłowe, dlaczego ... nie wiem.

Co do zmiany * na & rozumiem, że chodzi Ci o definicje w nagłówku właściwości klasy?

private:
int _sensorPin;
DallasTemperature& _sensors;
LcdServiceClass& _lcdService; ...

tylko wtedy przy konstruktorze rzuca błędem

SensorTaskClass::SensorTaskClass(int sensorPin, DallasTemperature& sensors, LcdServiceClass& lcdService)
{
_sensors = sensors;
_lcdService = lcdService;

SensorTask.cpp: In constructor SensorTaskClass::SensorTaskClass(int, DallasTemperature&, LcdServiceClass&)

SensorTask.cpp: 3:1: error: uninitialized reference member 'SensorTaskClass::_sensors' [-fpermissive]
SensorTaskClass*: SensorTaskClass(int sensorPin, DallasTemperature& sensors, LcdServiceClass& lcdService)

SensorTask.cpp: 3:1: error: uninitialized reference member 'SensorTaskClass::_lcdService' [-fpermissive]
Error compiling project sources
Debug build failed for project 'OpenStill'
Ostatnio zmieniony wtorek, 27 paź 2020, 22:47 przez stefunk, łącznie zmieniany 1 raz.
ODPOWIEDZ

Wróć do „Kontrola procesu destylacji”