Włączniki światła na Mysensors przez Ethernet

Example configuration.yaml entry

mysensors:
gateways:

- device: '192.168.0.186'
  persistence_file: 'mysensors_eth.json'
  tcp_port: 5003
  
- device: '/dev/ttyUSB0'
  persistence_file: 'mysensors_usb.json'
  baud_rate: 115200

optimistic: false
persistence: true
retain: true
version: ‘2.3.2’

Zgodnie z dokumentacją HA:

Default entity_id is [sketch_name]_[node_id]_[child_id] 

a w MySensors nazwa szkicu [sketch_name] to nazwa nadana podczas prezentacji sendSketchInfo():

void sendSketchInfo(const char* name, const char* version, bool ack=false)
It sends sketch meta information to the gateway. Not mandatory but a nice thing to do.
@params:
    name String containing a short Sketch name or NULL if not applicable
    version String containing a short Sketch version or NULL if not applicable
    ack Set this to true if you want destination node to send ack back to this node. Default is not to request any ack.

Poszukaj w sketchu takiego kodu:

void presentation() {
  // Send the sketch version information to the gateway and Controller
  sendSketchInfo("Multi Relay", "1.3");

i zmien w przypadku mysensors:

  • podłączanego po USB na:
    sendSketchInfo("Multi Relay USB", "1.3");
    
  • podłączanego przez ethernet na:
    sendSketchInfo("Multi Relay Ethernet", "1.3");
    

Konfiguracja HA:

# Example configuration.yaml entry
mysensors:
  gateways:
  - device: '/dev/ttyUSB0'
    persistence_file: 'mysensors_usb.json'
    baud_rate: 115200
  - device: '192.168.0.186'
    persistence_file: 'mysensors_eth.json'
    tcp_port: 5003
  optimistic: false
  persistence: true
  retain: true
  version: '2.3'

@wasacz udało się rozwiązać problem?

Nie ma mnie aktualnie w miejscu w którym jest HA. na weekendzie zmienie program i dam znać

ale nawet w drugim miejscu gdzie mam drugi system HA mam taki sam problem.
A nie używam w ogóle mysensors na usb. Czyli nie powinno być z tym problemów.

wyskakuje taki log. i to jest inny system w innym miejscu żeby nie pomieszać z tamtym

Poniżej przykład jak identyfikują się sensory z mysensors w HA (menu Narzedzia Deweloperskie, zakładka Stany):

Na rysunku:

  • “box little” to nazwa sketcha - [sketch_name]
  • “3” to [node_id]
  • odpowiednio “0” i “1” to [child_id]

Bardzo podobnie powinno być u Ciebie.

image
To nie błąd tylko ostrzeżenie, przeczytaj https://forum.mysensors.org/topic/11030/keep-getting-error-child_id-0-already-exists-in-children-of-node-1-cannot-add-child

W tym systemie pierwszym tym co mam podłączone USB i ETH wykrywa tylko 5 włączników


czyli zmienie na weekendzie ustawienie to co wcześniej pisałeś w sketchu mysensors

A w drugim systemie mam coś takiego


wykrywa tylko jeden przełącznik a jest ich 4

I do tego jest to jakiś stary przełącznik ponieważ zmieniłem opisy w programie a tu dalej jest w description: podlogowka

I jeszcze ostatnie logi po restarcie

Spróbuj usunąć plik mysensors_eth.json,
następnie najpierw zrestartuj HA, następnie zestartuj bramę mysensors.

Zrobiłem tak i pilik się ponownie utworzył i wszystko się poprawnie uzupełniło

lecz niestety w encjach się nic nie wyświetla

Bramka mysensors poprawnie sie zaprezentowała, wykonał się kod (na podstawie https://github.com/lkankowski/arduino-multi-relay/blob/master/arduino-multi-relay.ino):

// MySensors - Presentation
// Your sensor must first present itself to the controller.
// The presentation is a hint to allow controller prepare for the sensor data that eventually will come.
// Executed after "before()" and before "setup()" in: _begin (MySensorsCore.cpp) > gatewayTransportInit() > presentNode()
void presentation() {
  // Send the sketch version information to the gateway and Controller
  sendSketchInfo("Multi Relay", "1.3");
  
  // Register every relay as separate sensor

ale nie wysłała aktualnych stanów czyli nie wykonał się albo wykonał się niepoprawnie kod:

// executed AFTER mysensors has been initialised
void setup()
...
// Send state to MySensor Gateway

Może kolejny restart bramki mysensors prześle aktualne stany sensorów.

Po restarcie niestety nic
takie są logi

:thinking: pozostaje tylko włączyć debug w sketchu:

// Enable debug prints to serial monitor
#define MY_DEBUG

i prześledzić cały proces uruchomienia sketcha na terminalu mysensors.
Taki sam debug powinien zostać uruchomiony na Home Assistant:

logger:
  default: info
  logs:
    homeassistant.components.mysensors: debug
    mysensors: debug

Ok udało się

Wszystko działa jak należy :blush:

trzeba było jeszcze KAŻDY włącznik kliknąć żeby się aktywowało w HA
Jak kliknąłem jeden przycisk (fizyczny podpięty do bramki mysensors) to aktywował się tylko ten kliknąłem. I jak potem dodawałem w programie kolejne włączniki to musiałem na bramce kliknąć i po odświeżeniu było widać na stronie.

Tylko cze nie dało by się tego zrobić jakoś żeby automatycznie wszystkie się pojawiały przy definicji nowych włączników ?
Bo będzie to trochę uciążliwe.

To nie jest żadne aktywowanie, to jest zwykłe przesyłanie zmiany stanu z bramki mysensors do HA.

Sketch do współpracy z HA powinien być napisany w takiej kolejności:

void setup()
void presentation()  
void loop()
void receive()

a ten, z którego korzystasz ma:

void setup()
void loop()
void presentation()
void receive ()

Możesz spróbować zmienić kolejność i przetestować tak:

  • zapamietaj stan sensorów w HA
  • odłącz od sieci bramke mysensors
  • wgraj poprawiony sketch do bramki mysensors
  • zmien stan sensorow w bramce mysensors
  • podlacz bramke mysensors do sieci
  • zrestartuj bramke mysensors
  • bramka po uruchomieniu powinna wysłać aktualny stan swoich sensorów do HA
  • porównaj stan sensorów w HA z tymi na bramce mysensors - powinne być identyczne.

Probowałeś zmiany kolejności kodu w sketchu?
Chciałem przy okazji podpytać o hardware, na jakim masz uruchomione MySensens z obsługą ethernet? Jakich przekaźników używasz?

Zmieniłem kolejność sketchu ale nic to nie dało. A nawet pogorszyło sprawę. (jeszcze będę musiał tu coś zrobić)

Jeżeli chodzi o hardware to używam klona Arduino Mega i modułu ETH w5500.
Biblioteka mysensors obsługuje w5500 automatycznie bez żadnych zmian w sofcie.
Kiedyś używałem w5100 ale wieszał się i nie chciał się łączyć do sieci. Polecono mi w5500 i działa super od razu się łączy do sieci. I nigdy nie było problemów.

Używam przystawki do arduino z easyswitch (ES-1.04 ATMega DIN Board Ethernet W5500)

Przekaźniki to SSR te takie moduły popularne chińskie po 8szt na płytcę

Skoro używasz sprzętu EasySwitch to może warto skorzystać z ich programu na Windowsa do generacji sketcha do Arduino Przekazniki w home assistant.

Wiem,
przy domoticzu to działa dobrze ale przy HA to nie działa. Już przerabiałem ten temat i polecili mi sketch Pana Leszek Kankowskiego. Jest on przystosowany do HA i działa też z domoticzem. Do tego nie można modyfikować sketchu i nie da się zrobić komunikacji ethernet

Rozwiązałem problem. Wystarczy w pliku konfiguracyjnym mysensors_eth.json

wpisać dowolną wartość w “values”

        "25": {
            "id": 25,
            "type": 3,
            "description": "ssr 1",
            "values": {
                "2": "0"
            }

czyli wykrywa że dodano nowy przełącznik i jest coś takiego w piliku konfiguracyjnym

“values”: {}`

i przez to w enchach przełącznik nie jest widoczny wystarczy wpisać np.

“values”: {
“2”: “0”
}

i wtedy jest już widoczny. I wszystko działa.

Dzięki za pomoc !! :slight_smile:

Witam,

panowie kontynuując wątek mam problem z MySesnsors (Arduino + W5100) tzn. dodałem do sketch’a odpowiednie linijki dla W5100 i bramka odpowiada na ping ale nie można się połączyć po przez telnet (chyba ze zaraz po restarcie arduino i to tylko raz ) a HA wyrzuca błędy (Connecting to socket timed out for …) Proszę Was o pomoc bo już mi się pomysły skończyły.

Wywal W5100 do śmieci.
Używałem kiedyś przez rok. raz to dział raz nie. z jedną siecią działa z inną nie działa.
czasami działa 3 miesiące. a po resecie zasilania przestaje.
niby można przelutować tam jakiś rezystor. ponoć wada fabryczna ale mi się cierpliwość skończyła do tego

Polecam W5500 działa od kopa zawsze 0 problemów. Nie musisz nic zmieniać w sofcie