Integracja Node-RED z mikrotikiem i możesz wszystko :)

Czy jest jakiś sposób na wyciągnięcie z Mikrotika sumy przesłanych danych (Tx/Rx Bytes)? Widzę tylko aktualną prędkość.

Protokół SNMP

  1. Aktywny na MT
  2. Odpytywanie z poziomu konsoli HA poleceniem snmpbulkwalk jezeli brak polecenia trzeba doinstalować , pełna komenda snmpbulkwalk -v 2c -c public 192.168.1.1000
  3. Należy odnaleźć interesujący nas OID

Przykładowa integracja sensorów

- platform: snmp
  host: 192.168.1.100
  name: router_mt_name
  baseoid: 1.0.8802.1.1.2.1.3.4.0
  version: '3'  

#Router Name
- platform: snmp
  host: 192.168.1.100
  name: 'mt_firmware'
  baseoid: 1.3.6.1.4.1.14988.1.1.7.7.0
  version: '3' 

mikrotik_snmp.yaml

#sensors:
- platform: snmp
  host: !secret mikrotik_ip
  name: mikrotik_uptime
  baseoid: .1.3.6.1.2.1.1.3.0
  version: '2c'
  value_template: >
    {%- set time = value | int // 100 %}
    {%- set minutes = ((time % 3600) // 60) %}
    {%- set minutes = '{}min'.format(minutes) if minutes > 0 else '' %}
    {%- set hours = ((time % 86400) // 3600) %}
    {%- set hours = '{}hr '.format(hours) if hours > 0 else '' %}
    {%- set days = (time // 86400) %}
    {%- set days = '{}d '.format(days) if days > 0 else '' %}
    {{ 'Less than 1 min' if time < 60 else days + hours + minutes }}

    
  
#Router Name
- platform: snmp
  host: 192.168.1.100
  name: router_mt_name
  baseoid: 1.0.8802.1.1.2.1.3.4.0
  version: '3'  

#Router Name
- platform: snmp
  host: 192.168.1.100
  name: 'mt_firmware'
  baseoid: 1.3.6.1.4.1.14988.1.1.7.7.0
  version: '3' 



#Router Name
- platform: snmp
  host: !secret mikrotik_ip
  name: 'aaaa'
  baseoid: 3.6.1.2.1.4.21.1.7.0.0.0.0 
  version: '2c'  

# SWOS config
- platform: snmp
  host: !secret mikrotik_swos_ip
  name: 'swos_tv_port'
  baseoid: .1.3.6.1.2.1.2.2.1.2.5
  version: '2c'

  

- platform: snmp
  host: !secret mikrotik_swos_ip
  name: 'router_name'
  baseoid: 3.6.1.2.1.1.5.0
  version: '2c'

- platform: snmp
  host: !secret mikrotik_swos_ip
  name: swos_uptime
  baseoid: .1.3.6.1.2.1.2.2.1.9.4
  version: '2c'


- platform: snmp
  host: !secret mikrotik_swos_ip
  name: total_packets_tv
  baseoid: .1.3.6.1.2.1.17.4.4.1.3.5
  version: '2c'    
  
- platform: snmp
  host: !secret mikrotik_swos_ip
  name: total_Packets_sfp
  baseoid: .1.3.6.1.2.1.2.2.1.11.6
  version: '2c'     

Lista MT SNMP OID: https://bestmonitoringtools.com/mibdb/mibdb_search.php?mib=MIKROTIK-MIB

@Piotr_K

1 polubienie

Dzięki. Najpierw zastanawiałem się, czy to jest w ogóle odpowiedź na moje pytanie, ale poradziłem sobie i wszystko działa :slight_smile:

Dla tych co mają problem z instalacją / aktualizacją integracji Mikrotik ze starszych wersji lub nową instalacje nowej wersji . Po aktualizacji ze starej wersji (Puste encje mikrotik)
Nowa instalacja ( błąd konfiguracji dodatku).
W większości przypadków błąd jest spowodowany tym że w komentarzach DHCP server Leases
Screenshot - 06.03.2022 , 05_17_00
występuje komentarz z wpisana liczbą jak na załączonym zdjęciu.
Autor dodatku zapisał to jako bug do poprawienia.
https://github.com/tomaae/homeassistant-mikrotik_router/issues/180
Na tą chwile trzeba zastąpić liczby w komentarzach literami

@BohdanGut … czy mógłbyś “ubrać” w json komendę, która w terminalu MT działa na pewno?

/system routerboard usb power-reset duration=10

Chciałem użyć GitHub - node-red-contrib/node-red-contrib-mikrotik: Node-red node to work with Mikrotik WiFi router
Której wersji używasz?
Działają tylko polecenia wbudowane - Raw Command nawet z przykładów nie działa.
Próbowałem już różnych sposobów - jako string i json jednak zawsze otrzymuje coś pokroju

23.03.2022, 11:55:17node: MT_Góra
msg : string[83]
"Error executing cmd["[\"/system \",\"routerboard \",\"usb \",\"power-reset\"]"]: {}"
23.03.2022, 11:56:06node: MT_Góra
msg : string[86]
"Error executing cmd["[\"/system \",\"=routerboard \",\"=usb \",\"=power-reset\"]"]: {}"

Edit… Ok drogą prób i błędów zrozumiałem zasady tworzenia komend.

[
    "/system/routerboard/usb/power-reset",
    "=duration=10s"
]

pierwsza to komenda, kolejne po znaku “=” to parametry

Edit…

Zainspirowany tytułem “i możesz wszystko” dodam - i jeszcze więcej :slight_smile:
Zaczęło się od tego, że bramka dla głowic grzejnikowych akceptuje tylko jednego klienta, to po normalnym restarcie HA nie może się już z nią połączyć. Wymagana była specjalna procedura - najpierw restart bramki, a później HA.
Wymyśliłem, że bramką zasilę z portu USB Mikrotika i całą procedurę restartu wykonam w odpowiednie kolejności za pomocą procesu w NR.

Poniewaź cała moja sieć opiera się na Mikrotik, poszedłem jeszcze dalej i zainstalowałem Dude.
“…Monitor sieci Dude to aplikacja firmy MikroTik, która może znacznie poprawić sposób zarządzania środowiskiem sieciowym. Automatycznie skanuje wszystkie urządzenia w określonych podsieciach, rysuje i układa mapę sieci, monitoruje usługi urządzeń i ostrzega w przypadku problemów z usługą…”

Na swoich urządenia ( w których było ta możliwe) uruchomiłem SNMP.
Opiszę to w formie zajawki, bo temat jest obszerny a może wcale nie być zainteresowania.
Efekt podstawowy - to mam cała mapę sieci ze stanem łączy i urządzeń


Po utworzeniu w Dude odpowiednich notyfikacji stany awaryjne transferuje do procesu w NR.
Jest to przerobiony proces @artur ,który wysyła powiadomienia na mój telefon oraz na pulpit HA


Daje to również możliwości stworzenia innych automatyzacji na podstawie stanu sieci.
W wersji RouterOS 6.48 pojawił się dodatek IoT, który posiada obsługę MQTT.
Daje on jeszcze szersze możliwości, bezpośredniego sterowania na podstawie utworzonych reguł.

Dla osób nie posiadający fizycznego sprzętu Mikrotik jest możliwość postawienia RouterOS na virtualce. W darmowej wersji posiada pewne ograniczenia, ale dla samego Duda jest w zupełności wystarczający. Jest mało wymagający, lekki i nie zabiera dużo zasobów.

Temat jest dość obszerny więc proszę wybaczyć za formę “po łebkach”.