logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Raspberry Pi 3B+ z Domoticz - jak utrzymać stan GPIO po restarcie?

Daro1003 28 Gru 2024 20:37 1389 16
REKLAMA
  • #1 21366307
    Daro1003
    Poziom 34  
    Posty: 2715
    Pomógł: 295
    Ocena: 608
    Witam

    Posiadam Raspberry 3B+ z dyskiem SSD na którym jest domoticz.

    Do GPIO Raspberry podłączone wejście Integry które informuje integre o zachodzie i wschodzie słońca. Czyli po zachodzie aktywacja GPIO które narusza wejście w Integrze.

    Problem jest taki że np po utracie zasilania i powrocie raspberry do życia w domoticz odpowiadający za to przełącznik jest aktywny - włączony czyli wygląda że jest ok domoticz zapamiętał stan ale GPIO na płycie raspberry nie jest aktywne czyli nie narusza wejścia w integrze muszę przeklikać ten przełącznik w domoticz aby aktywować GPIO.

    Jak to rozwiązać ? Olać GPIO i podłączyć jakieś drugie urządzenie np sonoff który będzie pamiętał stan po restarcie ??
    Myślałem że wysterowanie z GPIO będzie najbardziej stabilne w działaniu bo bez pośrednich urządzeń.
  • REKLAMA
  • #2 21373958
    michal.zd
    Poziom 31  
    Posty: 1698
    Pomógł: 85
    Ocena: 276
    Daro1003 napisał:
    włączony czyli wygląda że jest ok domoticz zapamiętał stan ale GPIO na płycie raspberry nie jest aktywne

    Wygląda jakby domoticz startował wcześniej niż moduł kernela odpowiedzialny za obsługę portów.
    Sprawdź w ustawieniach serwisu domoticz.
    Każda taka usługa kliencka najlepiej jak startuje ostatnia.
    Można na próbę wyłączyć autostart domoticza i po uruchomieniu systemu odpal ręcznie.
  • #3 21373979
    Daro1003
    Poziom 34  
    Posty: 2715
    Pomógł: 295
    Ocena: 608
    michal.zd napisał:
    Sprawdź w ustawieniach serwisu domoticz.


    Gdzie to znajdę ?
  • REKLAMA
  • #4 21374035
    michal.zd
    Poziom 31  
    Posty: 1698
    Pomógł: 85
    Ocena: 276
    Najpierw sprawdź, czy ręczne uruchomienie domoticza będzie działać poprawnie.
    Wyłączyć go można poleceniem sudo systemctr disable domoticz. Po reboot uruchom go poleceniem systemctr start domoticz.
    opcja enable znów spowoduje autostart jego po uruchomieniu systemu.
    Nie mam domoticza, ale wszystkie usługi mają pliki konfiguracji w katalogu /etc/systemd/system,
    tego jest tam pełno, gdzieś musi być też plik dla domoticza. Lecz jak go opóźnić poszukaj na forum domoticz. Jak znajdziesz plik konfiguracji domoticza, to poszukaj pod hasłem
    debian systemd service delay
  • #5 21374065
    Daro1003
    Poziom 34  
    Posty: 2715
    Pomógł: 295
    Ocena: 608
    Podłączam Raspberry po zasilacz buforowy więc krótkie zaniki będę miał z głowy i zostawię chyba temat bo wiedzie że to nie takie proste.
    Swoja droga chyba trzeba zostawić domoticza już i przejść na HA. Z tym że dużo ma na nim porobione ale żeby działało to wszystko idealnie to nie powiem że tak.
  • #6 21374079
    michal.zd
    Poziom 31  
    Posty: 1698
    Pomógł: 85
    Ocena: 276
    Daro1003 napisał:
    wiedzie że to nie takie proste

    Proste, tylko trzeba znaleźć ten plik konfiguracji usługi.

    Dodano po 1 [minuty]:

    Daro1003 napisał:
    Swoja droga chyba trzeba zostawić domoticza

    To akurat prawda, kobyła a mało może, jak stara szkapa.
    Ps. Próbowałeś node-red? Pytałeś mnie kiedyś jak zainstalować.
  • REKLAMA
  • #7 21374134
    Daro1003
    Poziom 34  
    Posty: 2715
    Pomógł: 295
    Ocena: 608
    michal.zd napisał:
    Ps. Próbowałeś node-red? Pytałeś mnie kiedyś jak zainstalować.


    Nic lezy wszystko ale temat integracji Sofar z domoticz aktualny i nawet odgrzewany bo potrzebne dane do sterowania.
  • #8 21374190
    michal.zd
    Poziom 31  
    Posty: 1698
    Pomógł: 85
    Ocena: 276
    Daro1003 napisał:
    temat integracji Sofar z domoticz

    Na forum SmartnyDom odpowiedziałem, ale możemy przenieść się na elkę.
    Domoticz z serwera mosquitto umie czytać, czy potrzeba nodered?

    Wracając do tematu instalacji node-red na rpi, właśnie przed świętami instalowałem na rpi zero W, poszło bez problemu wg tego opisu
    https://nodered.org/docs/getting-started/raspberrypi
    bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

    Trochę liznąć konsoli Linuxa musisz 😉
  • Pomocny post
    #9 21403384
    michal.zd
    Poziom 31  
    Posty: 1698
    Pomógł: 85
    Ocena: 276
    Wracając do tematu inwerter -> broker -> mosquitto -> domoticz...
    Uruchomienie brokera daje dostęp do danych z inwertera dla serwera mqtt. Ale czy domoticz sam jest w stanie odebrać je z serwera mosquitto to nie wiem. Ja używam node-red, tam jest wszystko możliwe.

    Jak uruchomisz 'screen' to na wirtualnej konsoli uruchom mój broker, niech sobie pracuje, tak jak podałem w pw:
    screen -S pvb
    cd /usr/pv
    sudo ./inverterbroker --d niech sobie tam pracuje
    ps. parametr --d oznacza wysyłanie informacji na terminal, to dla kontroli działania, bez parametru nie będzie na ekranie tych danych z inwertera.
    Dane mqtt są zawsze wysyłane

    potem otwórz putty kolejny terminal i w nim:
    mosquitto_sub -h localhost -v -t ime/#

    będziesz widział jakie dane wysyłam protokołem mqtt. Powinno być coś takiego:
    
    ime/inverter/state S17, P 00, Avg 50
    ime/inverter/json { "Time":"16:31:32","Day":2, "State":17,"P":0,"Avg":50, "Grid":{"U":[0,0,0], "AvgU":[2070,2070,2070], "I":[0,0,0],"MaxU":2279,"L":16,"OV":0}}
    ime/inverterdata ▒
    


    akurat jest ciemno i się wyłączył inwerter, stąd "State":17 - brak połączenia, ale elementy json są widoczne. Kolejno topiki:
    ime/inverter/state stan w postaci tekstowej
    ime/inverter/json json dla node-red, możliwe że to wykorzystać można dla domoticza, musiałby się wypowiedzieć znawca jego.
    ime/inverterdata to samo co json, ale w postaci binarnej, gotowa struktura danych dla własnych programów sterowania.

    Informacja dla innych.
    Temat zahacza o mój program brokera pomiędzy inwerterem a serwerem mqtt. napisany w C dla raspberry pi. Pobiera od dane z inwertera poprzez WiFi Logger LSW-3.
    Źródła oraz binarki dla procesora jednordzeniowego ARM11 i czterordzeniowego Cortex-A53 na :
    https://github.com/michalzd/pvInverterBroker/tree/mqtt
    do tego potrzebna jest jeszcze biblioteka mqtt: https://github.com/michalzd/MQTT_LinuxLib

    Dzięki @Daro1003 przetestowaliśmy u niego na Raspberry Pi3+ oraz z Sofar HYD15-KTL. Mój to Sofar KTL-X G3 i Raspberry 1B.
    Prawdopodobnie cała rodzina Sofar KTL będzie miała tą samą specyfikację adresów portów dostępnych przez ModBus. Z hybrydy można się pokusić o wyciągnięcie danych na temat magazynu, bo też tam takie dane są, ale debugowanie/testowanie na odległość jest nieco trudne.
  • REKLAMA
  • #10 21403730
    Daro1003
    Poziom 34  
    Posty: 2715
    Pomógł: 295
    Ocena: 608
    Moje postępy to:

    1. Zainstalowałem screen
    sudo apt install screen

    2. Uruchomiłem
    screen -S pvb 

    3. uruchomiłem z katalogu /usr/pv
    inverterbroker --d



    Ekran terminala z uruchomionym programem InverterBroker i danymi PV.

    4. Teraz jeśli odpalę po włączeniu putty
    screen -r pvb

    To mam od razu dane:

    Zrzut ekranu z terminala pokazujący dane z panelu fotowoltaicznego.
  • Pomocny post
    #11 21404832
    michal.zd
    Poziom 31  
    Posty: 1698
    Pomógł: 85
    Ocena: 276
    michal.zd napisał:
    potem otwórz putty kolejny terminal i w nim:
    mosquitto_sub -h localhost -v -t ime/#

    Teraz tu zobacz dane które przychodzą do mosquitto.
  • #12 21405255
    Daro1003
    Poziom 34  
    Posty: 2715
    Pomógł: 295
    Ocena: 608
    michal.zd napisał:
    michal.zd napisał:
    potem otwórz putty kolejny terminal i w nim:
    mosquitto_sub -h localhost -v -t ime/#

    Teraz tu zobacz dane które przychodzą do mosquitto.


    Dokładnie dane lecą:

    Zrzut ekranu przedstawiający dane z komunikatu MQTT o stanie inwertera.

    Zrzut ekranu z konsoli systemowej z danymi JSON dotyczącymi stanu inwertera.
  • #13 21405268
    michal.zd
    Poziom 31  
    Posty: 1698
    Pomógł: 85
    Ocena: 276
    Super, czyli komunikacja jest. Teraz pozostaje do zrobienia dwie rzeczy.
    1. Uruchomienie brokera jako serwis, podam potem plik konfiguracyjny serwisu.
    2. Odczytać dane w domoticz, ewentualnie w node-red.

    Dodano po 1 [minuty]:

    Tylko coś moc jakaś wielka. Jaką pokazuje broker? Chociaż jeśli State jest większy od 0, to inwerter potrafi przekazać bzdury.
  • #14 21405270
    Daro1003
    Poziom 34  
    Posty: 2715
    Pomógł: 295
    Ocena: 608
    michal.zd napisał:
    2. Odczytać dane w domoticz, ewentualnie w node-red.


    Niestety nie posiadam node-red a to jest też temat który pasuje w przyszłości ruszyć ponoć dużo tam można.
  • Pomocny post
    #15 21405280
    michal.zd
    Poziom 31  
    Posty: 1698
    Pomógł: 85
    Ocena: 276
    Daro1003 napisał:
    dużo tam można.

    Owszem, trzeba tylko zagłębić się w temat obiektów JavaScript i json.
    Mały samouczek:
    https://noderedguide.com/
  • #17 21419537
    michal.zd
    Poziom 31  
    Posty: 1698
    Pomógł: 85
    Ocena: 276
    W razie potrzeby, gdy node-red ma problem podczas instalacji, najczęściej dotyczy to wersji node.js.
    napisane jest w tej instrukcji
    if it detects Node.js is already installed, it will ensure it is at least v14. If less than v14 it will stop and let the user decide whether to stay with Node-RED version 1 - or upgrade Nodejs to a more recent LTS version. If nothing is found it will install the Node.js 16 LTS release using the NodeSource package.
    
    Running Node-RED install for user pi at /home/pi on raspbian
    
    Node-RED v3.x no longer supports Nodejs 10
    
      You can force an install of node 18 or 20 by adding --node18 or --node20 to the end of the command line above...
      Exiting now.
    


    Wówczas:
    
    bash <(curl -sL  https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)  --node18

Podsumowanie tematu

LABEL_AI_GENERATED
Problem dotyczy utrzymania stanu GPIO na Raspberry Pi 3B+ po restarcie systemu z zainstalowanym Domoticz, gdzie GPIO jest wykorzystywane do sygnalizacji zachodu i wschodu słońca dla systemu alarmowego Integra. Po utracie zasilania Domoticz zapamiętuje stan przełącznika, ale fizyczny stan GPIO nie jest odzwierciedlony, co wymaga ręcznego przełączenia w interfejsie Domoticz, aby aktywować GPIO. Proponowane rozwiązania obejmują opóźnienie startu usługi Domoticz, aby moduł kernela obsługujący GPIO zdążył się załadować przed uruchomieniem Domoticz. Sugerowano wyłączenie autostartu Domoticz i ręczne uruchamianie po starcie systemu, a także modyfikację pliku konfiguracyjnego systemd dla Domoticz w celu opóźnienia startu usługi. Alternatywnie rozważano zastąpienie GPIO urządzeniem Sonoff, które pamięta stan po restarcie, choć preferowana jest bezpośrednia kontrola GPIO ze względu na stabilność. W dyskusji pojawiły się także sugestie migracji na Home Assistant oraz wykorzystanie Node-RED do integracji i automatyzacji, w tym obsługi MQTT przez broker Mosquitto, co umożliwia bardziej zaawansowane sterowanie i odczyt danych z urządzeń. Podano instrukcje instalacji Node-RED na Raspberry Pi oraz wskazówki dotyczące wersji Node.js wymaganej do poprawnego działania Node-RED.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA