Skocz do zawartości

burymichu

Members
  • Postów

    216
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    3

Odpowiedzi opublikowane przez burymichu

  1. Szanowni.

     

    Postanowiłem podzielić się z Wami moim doświadczeniem z bezprzewodową komunikacją pomiędzy CrafbeerPi a modułami opartymi o ESP8266. Pytał o to w kwietniu @pan_czarny, ale nie dostał odpowiedzi i nie wiem czy ciągnął temat. Mi się udało, więc spisuję to dla potomnych - może ktoś będzie chciał zrobić to u siebie. Możecie zapytać - "po co" - na przykład po to, żeby podpiąć pod CBPi termostat do fermentora bez ciągania kabli po mieszkaniu :) (ja na przykład fermentuję na balkonie).

     

    Zatem od początku. Do komunikacji będziemy wykorzystywać protokół MQTT. Bardzo prosty i lekki protokół powszechnie wykorzystywany w IoT.

     

    Część CBPi

     

    1. W sekcji Add-Ons instalujemy plugin MQTT

    Screenshot_4.jpg.26b851a64174531bd03826162f481cf6.jpg

     

    2. W informacjach o pluginie jest link do GitHuba i instrukcje instalacji Mosquitto - brokera MQTT oraz biblioteki MQTT do pythona.

     

    3. W sekcji "Hardware Settings" Dodajemy MQTT_SENSOR. Trzeba zapamiętać jaki wpisaliśmy Topic. To będzie ważne na etapie oprogramowania ESP8266.

    Screenshot_5.jpg.f9a5683c268e3611a8416663cf0d248b.jpg

     

    4. Dodajemy również MQTT_ACTOR z zastrzeżeniem z punktu powyżej.

    Screenshot_6.jpg.f1816fcdcddde5dd56de76302c375d20.jpg

     

    5. Dodajemy fermentor

    Screenshot_7.jpg.890d9a5f2597e061d560f04732b3bee7.jpg

     

    6. ESP8266. Wyjaśnienia zawarte są w komentarzach w samym kodzie. Pamiętajmy, żeby malinka i esp8266 były w tej samej sieci (ta sama klasa IP)

     

    #include <PubSubClient.h>
    #include <ESP8266WiFi.h>
    
    //////////////////////////Sterowanie wbudowaną GPIO (w tym wypadkudiodą LED za pomocą MQTT. Wysyłanie wartości zmiennej temp za pomocą MQTT (wartośią zmiennej temp może być odczyt temperatury z termometru/////
    
    
    const char* ssid = "*************";  //SSID twojej sieci WiFi
    const char* password = "*************"; //Hasło do twojej sieci WiFi
    
    
    char* topic_receive = "fermentor_heat";     //  ustawiam wartość zmiennej "topic" - to jest nagłowek mqtt, którego wartość chcemy odczytywać z serwera
    char* topic_send = "fermentor";     //  ustawiam wartość zmiennej "topic" - to jest nagłowek mqtt, do którego wartość chcemy przypisać wartość wysyłaną na serwer
    char* server = "*************";  // adres serwera mqtt, który jest uruchomiony w twojej sieci wewnętrznej. Na przykład na malince z CBPi
    
    char message_buff[100];   // inicjalizowanie bufora
    void callback(char* topic, byte* payload, unsigned int length);
    WiFiClient wifiClient;
    PubSubClient client(server, 1883, callback, wifiClient);
    
    
    //Ustawiania parametrów tablicy, w której będzie zapisana przychodząca wiadomość. Treść wiadomości to: {"state": "on"} lub {"state": "off"}. Wiadomość ma 15 lub 16 znaków, więc tablica musi być 16 bitowa.
    String macToStr(const uint16_t* mac) 
    {
      String result;
      for (int i = 0; i <= 16; ++i) {
        result += String(mac[i], 16);
        
      }
      return result;
    }
    
    void setup() {
      Serial.begin(115200);
      delay(10);
    
      // przygotowuję GPIO2 ***************************************************************************************
      pinMode(2, OUTPUT);   // Używam GPIO 2 aby sterowa wbudowaną diodą LED. Zmien wartość aby sterować innym GPIO
      digitalWrite(2, 0);  //**************************************************************************************
    
      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);
    
      WiFi.begin(ssid, password);
    
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
      Serial.println("");
      Serial.println("WiFi connected");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
    
      float temperatura = 23.45; // na potrzeby tego tutoriala nadajemy zmiennej float (dokładność 6 - 7 cyfr po przecinku) wartość, która może też pochodzić ze wskazania termometru
      char temp[8]; // tworzymy zmienną char o długości. Zmienna ma za zadanie przechować wartość miennej float po przekonwertowaniu na char.
      dtostrf(temperatura, 6, 2, temp); // konwerujemy zmienną float (temperatura) na zmienną char (temp). Musimy to zrobić, bo MQTT obsługuje wiadomości w stringach.
    
      //  sprawdzamy połączenie z brokerem MQTT
      if (client.connect("arduinoClient")) {
        client.publish("fermentor", temp); // wysyłam naszą teperaturę do CBPi z nagłówkiem tematu "fermentor"
        client.subscribe("fermentor_heat");   // subskrybujemy się do tematu "fermentor_heater" i oczekujemy wiasomosci od CBPi
      }
    }
    
    void loop() {
    
      client.loop();
    }
    
    
    void callback(char* topic, byte* payload, unsigned int length) {
      int i = 0;
    
      Serial.println("Message arrived:  topic: " + String(topic));
      Serial.println("Length: " + String(length, DEC));
    
      for (i = 0; i < length; i++) {
        message_buff[i] = payload[i];
      }
      message_buff[i] = '\0';
    
      String msgString = String(message_buff);
    
      Serial.println("Payload: " + msgString);
      int state = 0;  // ustawiam stan początkowy GPIO 2 na 0
      Serial.println (state);
      if (msgString == "{\"state\": \"off\"}") {   // jeżeli przyszła wiadomość o treści {"state": "on"} wyślij stan 1 na pin 2. Jak widać wiadomość jest otoczona backslashami i cudzysłowami. Musi tak zostać bo inaczjej jest traktowana jako polecenie.
        digitalWrite(2, 1);  
    }
        if (msgString == "{\"state\": \"on\"}") {   // jeżeli przyszła wiadomość o treści {"state": "on"} wyślij stan 0 na pin 2. Jak widać wiadomość jest otoczona backslashami i cudzysłowami. Musi tak zostać bo inaczjej jest traktowana jako polecenie.
        digitalWrite(2, 0);  
    }
      
      }

    W razie pytań postaram się pomóc :)

     

    I na koniec demonstracja https://photos.app.goo.gl/iFX9mfrf9um4bpiYA                                              

     

  2. Jak myślicie - czy 48 godzin to wystarczająco, żeby uznać że fermentacja nie ruszyła i dać kolejne drożdże? (Blond Ale 17blg w 19 stopniach, 4-dniowa gęstwa "FM Belgijskie Pagórki" po Belgian Pale Ale 12blg)? Czy może jeszcze próbować podnieść temperaturę?

     

    Mam 2 godziny do zamknięcia sklepu, dlatego pytam tutaj.

    I know that you believe you understand what you think I said, but I'm not sure you realize that what you heard is not what I meant.
     

  3. Szanowni.

     

    Złożyłem i wczoraj skończyłem kalibrować iSpindel. Nie ukrywam, że najwięcej zabawy było z odpowiednim wyważeniem tego dziadostwa. Pytanie techniczne - jakie zakresy wychylenia mieliście przy kalibracji? Mi wyszedł zakres od 25,4 stopnia dla 0 BLG do 68,95 dla 18,5 BLG i zastanawiam się jak to wygląda przy innym rozłożeniu balastu.

     


    1012060510_iSpindelcalibration.thumb.jpg.57258e075d132b63caf959c360529bfc.jpg

     

    20181106_200912_HDR-2.thumb.jpg.d6a65d2d1385685d577bdcb5c9532734.jpg

  4. Myślałem o gotowaniu w brzeczce (czy raczej w zielonym piwie, bo już odfermentowało) i zastanawia mnie co jest gorsze -  gotowanie w wodzie i rozcieńczanie piwa, czy może gotowanie w brzeczce i odparowanie alko... Tak tylko teoretycznie, bo pewnie strata% będzie niewielka... Chociaż w sumie to już "po herbacie", bo herbatka się gotuje na wodzie ;)

  5. Szanowni.

     

    Podczas gotowania ostatniej warki (Belgian Pale Ale) zdarzył mi się drobny wypadek. Zapomniałem się, i sypnąłem 15 g. marynki na mocno gotującą się brzeczkę. Skutkiem tego była utrata 3 litrów płynu i niestety większości chmielu, który wraz z brzeczką znalazł się na blacie, kuchence i moich spodniach ;) Piwo już odfermentowało (3,2 BLG - stabilnie od 3 dni) i przed jutrzejszym butelkowaniem chciałbym je jakoś uratować, bo goryczki wyczuwam niestety za mało. Kumpel doradził mi "hop tea" i tu pojawia się właściwe pytanie - czy ma znaczenie ilość wody, w której będę gotował chmiel? Nie chcę za bardzo rozcieńczać piwa, bo i tak wyszło mi naciągane 12 BLG (nie upilnowałem przy filtracji). Czy można np gotować 10 g chmielu w 1 litrze wody bez przykrycia (żeby jeszcze trochę odparowało? Ma to jakieś znaczenie?

     

    Z góry dziękuję za pomoc!

     

    Pozdrawiam

  6. 15 godzin temu, hajmon7 napisał:

    cos sie dzieje z tym depozytem?

    właśnie znalazłem ten watek, bylem taki

    pozytywnie nastawiony czytając początkowe strony

    a na końcu takie rozczarowanie brakiem aktywności.

    nie mam daleko do tego sklepu,

    jak ta skrzynka nadal funkcjonuje mogę tam podrzucić coś mojego.

     

    Depozyt w Piwomaniaku raczej już nie istnieje. Obecnie wymiany są w Piwnym Krafcie na Stalowej 15: 

     

  7. 2 godziny temu, Rampowy napisał:

    Pytania od laika:

    1. Sondę czujnika wkładasz po prostu w tą osłonkę (jakiej średnicy ma być osłonka do tego czujnika)??

    2. Odczyt temperatury jest taki sam jakby sonda byłą zanurzona w piwie czy jest jakieś przesunięcie??

    3. Podrzuć link do oferty tego czujnika (kompletne rozwiązanie)

    4. Podrzuć jakąś fotkę twojego czujnika połączonego z osłonką.

     

    Z góry dzięki za info.

     

    Ad. 1 - tak - wsuwam w osłonkę. Czujnik DS18B20 ma średnicę 6 mm. Osłona ma  średnicę wewnętrzną 6,5 mm.

     

    Ad. 2 - jest taki sam. Porównywałem z termometrem analogowym i wyniki są identyczne.

     

    Ad. 3 - https://sklep.avt.pl/avt3025.html tutaj masz coś, co mogło by się nadać, ale dość drogie według mnie. Ja zrobiłem swój samemu i wyszło mi taniej, a mam dodatkowo łączność

    Wifi. Do tego jeszcze trzeba dokupić sam czujnik https://sklep.avt.pl/uklad-scalony-ds-18b20-czujnik-temp-w-wodoodpornej-obudowie-z-przewodem-slikonowym-2m.html i oczywiście przewód, gniazdko i wtyczkę do podłączenia pasa grzewczego i rzecz jasna sam pas.

     

    Ad. 4 : Tu mam zdjęcia z prób z kawałkiem pastiku:

     

    s6RasAwJMFqHx7tKphYwlYyNWHGuAIEpGdroSt684JmwYykt2Vsao23bZ3GgsmXRNg3UW7H7yWwYSTdPQg88csj_rTJGQQk-4DzSHm6hHeVl-Z9j8tEasDu484OS1nHQUMc3XtZdG_NKP6AD7jo0rgIJObJYqwprX88nG7YyErZhx5l_2Fxz-Y6jlTxaLLG0zgoeFvvujfGmQmn3i1iIOWHIkWqyWGU3wlJfRRZvhuujbWkd3IzlrV9-CmQBcyoLktNYVlMV5BcOvbRuW-yhwaLL3hL9FkqyX3c1kx_tOWFO7mCrghBtYkXaxbpzvjIJhgFAhgrKhPmnbp3hVtnuSQC63DIzHJaaelFJjQD-EnERHc7e0TN5044fr3OYdpuYUGeRUOf1h3ipr6N7FrqJfwNJbYHVXIm-KXNwG_2PgQsm0zd_RpYfGfG7T4293h_hMY9x7ZMAepibGg9E9qLMQI7dqlT6ABgd7TkrX08n9-K3hLnYwGZJk44OmTFPmSI_I15MR_MJ6HQHtnb-PPCEuhQfAIVybBtCFcsitjqYDzLu1O2_qDbbMRUdKpIMOpiVcM1Zm9dxwyjdAIacObZiu5uoeP8hgfoI-ukNzQE=w1652-h929-no

     

    kRzDzQQPnT3BCOABxBOjuXyEfIUL5gL25QTYas9Lhe1tc2cZV1M4vMp5MrdtN1vKPZItIZPRm5fFLbTrDthEt9Eil6PAEe28trBsvBfAA_rj6yijErv-1LISCQbLrb7IyaFvbFY-dMRZ6nGe4i14IwRDwX6x0Ygyy1cY7WSrdcqLYfAFt7RKGGTIPoXvrwGJw1JLf4kleQx48h8zBAAqhauuNI-eRbJOToGR9hLK2SQ3aJw8-5JAEFLknfslIuZa1Ks7jN-wfiKO3-Isa22poPvXpbaLy63QqEXL4kfy8G8Ci7aKo80sniF9XpolIAwlyyPshFi9bqLppn0frrSw9XRt5ee9E7y8nIYiBAENboC9iW0BH2Diw2MA6Nf_EDHQdauHnA1AqIr72EfmeWPSKKcYJ1Yfo_8MPYRua3uhN5ZGjR6e3g9VoXuXXZIW18S7BKT9-aTTMjrPR8Wt8eoZPSEAJRqkWUZZZZrLSkeLF6UMhbJaeGMRfUYoqHeK6Tv-y8NGb2-LMceDb9PfxiMBrR-UKuEWTciPpb1pWmXnzVwwxIQH_YYt3ryntUnqfo4Nktjhrb3Br6Xne9yW71llcl7qod0jvzHcd5ekwvY=w1652-h929-no

  8. 13 godzin temu, browarek winiarek napisał:

    Ja  do garnka 33l wkładam fermentor, garnek uzupełniam wodą (wchodzi około 12l), do wody grzałka akwarystyczna podpięta do najtańszego dostępnego na allegroszu termostatu elektronicznego i mam pełną kontrolę fermentacji temeperatury ;)

     

    EDIT:

    cały układ zaopatrzony jest jeszcze w najtańszy filtr akwarystyczny (zdementowana część filtracyjna) w celu zapewnienia cyrkulacji podgrzewanej wody.

    Pewnie taki system działa nieźle, ale jakoś nie przemawia do mnie koncepcja blokowania sobie garnka 33 l. na czas fermantacji. No, chyba że masz dużą kolekcję garnków ;)

     

    Pozdrawiam.

  9. 25 minut temu, ronson napisał:

    Bardzo dziękuję za odpowiedź i za zdjęcia.

    Będę ogrzewał bezpośrednio wiadro, jeszcze się zastanowię czy czujnik przymocować do wiadra czy uszczelnić i włożyć do brzeczki.

    A tymczasem życzę wesołych świąt :)

    Dzięki i nawzajem :)

     

    P.S.  tak sobie pomyślałem, że można taki czujnik umieścić w jeszcze jeden sposób - prostszy i tańszy niż ta osłona czujnika. Trzeba nawiercić otwór w pokrywce (takiej średnicy jak na rurkę fermentacyjną, włożyć w niego gumkę (taką jak od rurki). Wpuścić tam przewód z czujnikiem i zabezpieczyć jakąś taśmą izolacyjną. Powinno zadziałać.

  10. 2 godziny temu, ronson napisał:

    Widziałem takie rozwiązanie u Bartka Filipiuka na youtube. Obawiam się jednak infekcji, wieko musiałoby być na tyle otwarte, aby włożyć sondę (była widoczna i dość duża szpara).
    Oto film, o którym mówię:

     

     

    Na to też są sposoby. Ja na przykład kupiłem za 17 PLN osłonę czujnika temperatury - taką: https://www.olx.pl/oferta/oslona-czujnika-temperatury-pochwa-czujnika-temperatury-CID628-IDdlvHP.html (ideanie pasuje do czujnika DS18B20, ale są też inne średnice), za 3 PLN uszczelkę silikonową 1" i za 3 PLN nakrętkę z nierdzewki. Nawierciłem fermentor wiertłem stożkowym na poziomie 10 l. i zasadniczo infekcje mnie nie martwią ;) 

     

    P.S. Na zdjęciu jest nakrętka mosiężna, ale już ją wymieniłem ;)

     

    kfcYRtEqgu1X_xxe2zqyxaVwSCmzHWwx1_g_w7oBNjx1z__maPrSO_ZGG7CyvGtoVlrcOVxjLeJ6qxUs2j89pF_lA8urHcj3IqfsTuFOeLZUWaoLr2jaCqZ1Mu3RbvF_Xe-PtCP_6tL03jcMdWQfSfjXIg2QQy5gnalYufT5oZ74YADY5KMvD1eVovzhoTgv5XPOoCuBgKCzLrcQXfdcH7P9VYKA301sEAiub4_ESj_FPPxkRILQNpWJ8Opnaw2MCV6xoRdm-afNb62zkAYmaHaW0Ta5sa0lLBZT7vpviZz3wUuQCYMuqLCjEagLJ_D4t7g1LdOLW_yTaWmHdRMHGwQk3CLhlfdQxT11GZoLcPontXerUc_ye_gMLmTOArYTRhxpEBpgxCHIELACIt83uQEgTESZajBxzXzpjO7q78Ek58fk0MbqV9CxtpE-QeJ6bW7iPjM2ufNRV5YIt3EUum_cXQXXuJjkqA9CnKbWBgfCiHnJ4yszvIfaX2PMTN5WvmzvdFPGIx-Qv1sF_DJSu0LDHOom6xg0xj0tnwU4Z_c5Hq1QgcvASDtXRuIsawjPYdYw-NSFVf0kMeQiXMuFuVz6L6TxGSmln7JixJQ=w521-h926-no HZGJlN89csJAfAqe-z64_BYyYfXsLZiDi8nZmmYnB5zkkM5P-2oj7pFmR9saRFeKdpP3ARcLgcBKh1kKGKxpJiOWwWNGk8hGr3ZPYyGlMDhhM-bu9xpVOiEW7172FP6HhUqA4qMp3mtqeYZ0YeW61nSWeHWimecF0jN3n7x94q6-NyqqqRlsDLlBicyQ3bItKobzOM6iI0fr1YHr1oI0R96AwzPD5WpYfMGV23aGJp0HqgUG_Y7aj3vnAAyb-RvlwfRYahBVjhCWuHFgu0KmH3uT75QPTOCX3LcZJ3gue2su6BipE-uzz8CbLV6HiWrZFxYhrC8DHlNzZ9-G9jFcPDtkAdNzT8zGj-EsNxSsSNhVJdISISbIkK19_zjXVbzG_WoO35JbntIwHOXloK5lvv6TyZoxXsBIil-HLkPRuW31cXwN-av7YvvwBeJ_qxQ4F5UnxToQqd633bEOqXVeWwhOQqU0HpzUGAcmLYgBpJ_7r56k3HZiidTHNkP4GKPzq4h5iu_3LrP7gs9OEyM4KFzoVQK5ETJ4S9O7pQ8EYQ6ylBNwqBEeCfFdW1yFzQWPj4d-9ZjSJglGRWFH2LUf1UZRuDpjs3YkLrYjCD0=w523-h929-no

  11. Lepiej chyba owinąć fermentor przewodem grzewczym, niż montować go w klapie. Będziesz ogrzewał bezpośrednio piwo. Mam takie właśnie rozwiązanie i polecam. Wahania temperatury nie przekraczają +/- 0,5 stopnia.

     

    Tu masz odpowiedni wątek: 

    Pozdrawiam.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.