Przełącznik mqtt

Bo przecież Arduino nasłuchuje tematu “control/relay”. Zmień zatem wszystkie “command_topic” na:
command_topic: “control/relay”

Sprawdź czy połączenie z Arduino jest stabilne.

ping 192.168.0.20

Tak działa błąd w zapisie , połączenie jest ok na pingu niekiedy dostaje małej czkawki to znaczy przerywa na jedno zapytanie raz na jakiś czas . Niby to nie przeszkadza wygląda ,że coś tam w tym programie się dzieje bo kilka szybkich zmian wprowadza go w chwilowe zawieszenie. Przez jakiś czas potestuje sobie stabilność pracy w układzie termostatu tu prędkość nie jest tu ważna . Bardziej niezawodność w działaniu . Dzięki za pomoc .

Podłącz UNO do konsoli, załaduj ten skrypt i zobacz, czy tutaj też ma takie problemy.
relays_deb.ino.zip (1,5 KB)

On już wcześniej wyświetlał w monitorze portu szeregowego te komendy które dostał teraz wysyła podwójnie:
"control/relay
7off
7 off
control/relay
8on
8 on
control/relay
6on
6 on
control/relay
8off
8 off
control/relay
4on
4 on
control/relay
6off
6 off
control/relay
2off
2 off
control/relay
2off
2 off
"
I wtedy gdy jest to opóźnienie to komendy pojawiają się po chwili i komendy są wykonywane nawet gdy jest ich dużo to po chwili wszystkie zostaną zrealizowane .Może arduino jest za słabe na takie cyrki ale jak to będzie stabilne i bezbłędne to może tak działać.

A czy poza Serial.println(“1 off”); itd. coś zmieniałeś ?

Ale podczas twardego restartu HA ( czyli w proxmox restart maszyny virtualnej HA)okazało się ,że wszystkie urządzenia mqtt ponownie zalogowały się do brokera a arduino nie.Oczywiście urządzenia mqtt nie były restartowane tylko HA. Jest na to jakaś rada?
Aktualizacja :slight_smile:Po tym restarcie HA arduino wcale nie chce gadać z HA.
ani z pulpitu ani z terminala .A na porcie szeregowym wyświetla connected i nic poz tym. I oczywiście nie przełącza przekaźników.Masakra narazie kilka prób restartów wszystkie inne urządzenia działają a arduino nie . W międzyczasie była aktualizacja HA?

“1on” to wiadomość odebrana od MQTT
“1 on” to wiadomość potwierdzająca od Arduino wyłącznie na konsolę

Chodziło o to żebyś sprawdził, czy pomiędzy tymi wiadomościami na konsoli również są takie opóźnienia.

Sprawdź czy teraz gdzie są te opóźnienia. Czy pomiędzy wysłaniem wiadomości do Arduino a wyświetleniem jej na konsoli (np. “payload: 1on”), czy pomiędzy wiadomościami “payload: 1on” , "1 on - time before " i "1 on - time after ".

W tym skrypcie restarcie MQTT Arduino powinno teraz łączyć się ponownie.

relays.ino.deb.reconnect.zip (1,8 KB)

No i teraz nie wiem co napisać. Sprawdzam ten sketch ale to potrwa , trochę mnie ta cała robota przytłoczyła wiesz niepowodzenia działania , jakieś dziwne blokowanie home assistanta czy coś .
I wczoraj zmieniałem router bo sagem się wysypywał a dzisiaj siadam uruchamiam arduino i co ???
I okazuje się ,że od jakiegoś czasu myślę ,że długo wstawiałem do sketcha mac adres używany na innym arduino w sieci !!!
Wiesz ten wsad co przerabiałeś to ja muszę dostosować do mojego zakresu IP i wstawiam tam też MAC adres . Myślę ,że to była przyczyna znikającego działania itd . Teraz program narazie działa perfecto narazie zacząłem więc zobaczymy . Przepraszam za zamieszanie mogłem przewidzieć to no ale…
Zastanawia mnie jeszcze jeden fakt w dotychczasowych sketchach wpisywałem stałe IP dla karty w5100 i on przyjmował ten adres w tym sketchu co bym nie wpisał to DHCP przyznaje adres z puli , no chyba ,że w router ustawie rezerwację IP dla tego MAC.

Wrzuć ten skrypt. Usunąłem kod kontrolny i zmieniłem na szybsze kilka innych rzeczy. Jest tutaj również stale IP (według dokumentacji). Ustaw odpowiednie MAC i IP i powinno działać.

relays_MQTT_UNO.zip (1,8 KB)
ps: skrypt ten będzie działać poprawnie wyłącznie na UNO (Atmega328).

Do tej pory działa bezbłędnie , dalej testuje załączanie i wyłączanie szybkie , jeden z przełączników ustawiony jako monostabilny i tu też jest OK.

Przełącznik pracuje ok , jednak po restarcie sieci czy HA nie zgłasza się do brokera i nie reaguje do czasu ponownego uruchomienia arduino. Obok podłączone 8 przekaźników na esp8266 D1 działa cały czas .

Okazuje się ,że teraz zgłasza się do brokera ale nie przełącza przekaźników zobaczę wgram jeszcze raz sketcha.A może na inny zestaw arduino+w5100