Arduino, MQTT, zielony

Witam.
Już powoli umieram. 5 godzin przy kompie i nic. Mam nadzieję, że mi pomożecie.
Chcę za pomocą HA sterować kilkoma przekaźnikami podłączonymi do Arduino. Dodatkowo aby w HA mieć podgląd temperatur, ciśnienia i monitoring PIR.
Znalazłem szkic, który wydaje mi się, spełnia idealnie moje potrzeby.
Oczywiście nie działa a na domiar złego nie wiem jak skonfigurować MQTT w HA do współpracy z Arduino (wydaje mi sie, że sam MQTT w HA działa poprawnie).
Czyli - po kolei.
W ardu wgrałem szkic z linku.
No i pierwsze wątpliwości:

  1. Czy w linii:
// IP Address of your MQTT broker - change to adapt to your network
IPAddress server(192, 168, 1, -);

adres IP to adres IP maszyny z HA?

  1. Na serial monitorze dostaję taki komunikat:
    fairelay, rc=5 try again in 5 seconds
    domyślam się, że to wina nie skonfigurowanego MQTT w HA na nasłuch mojego arduino.

Podkreślam, że jestem zielony. Czy ma ktoś z Was tyle cierpliwości, żeby mi to ze mną ustawić? Z góry dziękuję.

To adres IP MQTT brokera, jeźeli Mosquitto broker jest zainstalowany jako dodatek do HA, to wtedy to adres IP maszyny z HA.

Nie uważasz, że to spore ryzyko w dalszym używaniu rozwiązania, którego nie rozumiesz? A co jak zdarzy się większy problem? Twój smart home będzie “niedostępny”, nic nie będzie działało a Ty nie będziesz potrafił tego naprawić. Jak mieszkasz sam to pół biedy :grin:.

O ho ho. Powiało elektrodą.
A co się może strasznego stać że tylko mieszkanie samemu może ochronić resztę ludzkości? Włączone światła? Wyłączone? Chyba trochę przesadzacie.

1 polubienie

:thinking: nie zrozumiałem aluzji, może dlatego, że nie korzystam z elektrody.

Punkt widzenia zależy od punktu siedzenia, nie wyobrażam sobie wyłączenia światła w domu (przy kilku osobowej rodzinie) bo się bawię rozwiązaniem, którego nie rozumiem.

1 polubienie

Udało sie rozwiązać problem?

I tak i nie. Koniec końców działało wszystko ale stwierdziłem że przesiądę się esp home+ expandery.

A pamiętasz może co zrobiłeś że nie miałeś błędu “fairelay, rc=5 try again in 5 seconds”.

Niestety nie pamiętam. W notatkach też nic sobie nie zapisałem.

Edit:

Teraz mi coś zaświtało. Spróbuj “dobrze” zresetować HA. Jeśli mnie dobrze olśniło to twardy reset maszyny pomógł.

Ja pierdzielę, ludzie skąd wy czerpiecie takie pomysły…

Oczywiście czasami jest potrzebny restart całego hosta, ale “ruskim resetem” (odcięciem zasilania) to można sobie rozwalić bazę danych.

Jeśli to jest kwestia np. DHCP to wystarczy “ładnie” zamknąć system i… zrestartować router.

Nie znam się, ale zajrzałem w ten skecz i moim zdaniem nie masz połączenia z tego urządzenia z brokerem MQTT (zastanów się dlaczego - IP urządzenia i brokera masz prawidłowe? brak konfliktów w sieci? dane logowania do brokera OK?).
Używasz w ogóle innych rozwiązań używających tego brokera?

W bibliotece - PubSubClient Arduino Client for MQTT, z której korzysta szkic (GitHub - knolleary/pubsubclient: A client library for the Arduino Ethernet Shield that provides support for MQTT.)

// Possible values for client.state()
#define MQTT_CONNECTION_TIMEOUT     -4
#define MQTT_CONNECTION_LOST        -3
#define MQTT_CONNECT_FAILED         -2
#define MQTT_DISCONNECTED           -1
#define MQTT_CONNECTED               0
#define MQTT_CONNECT_BAD_PROTOCOL    1
#define MQTT_CONNECT_BAD_CLIENT_ID   2
#define MQTT_CONNECT_UNAVAILABLE     3
#define MQTT_CONNECT_BAD_CREDENTIALS 4
#define MQTT_CONNECT_UNAUTHORIZED    5

u Ciebie występuje 5 czyli MQTT_CONNECT_UNAUTHORIZED

tzn, ze prawdopodobnie w szkicu wyedytowałeś tę linię:

client.setServer("192.168.1.38", 1883);

ale bez zmian zostawiłeś tę:

if (client.connect("ethClient", "mqtt", "xxx")) {

gdzie kolejno powinieneś wprowadzić zamiast:
ethClient → Twoj ClientID,
mqtt → nazwa uzytkownika brokeraMQTT,
xxx → haslo

PS.
W szkicu jest informacja NEED more testing! i faktycznie chyba tego wymaga!

2 polubienia