Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!
  • Moskus
    Moskus

    Mini-guide: Hvordan bruke Modbus (med HomeSeer)

    Med en Modbus-plugin og et hardware-interface kan du enkelt få til å styre utstyr som støtter det. Modbus er ikke en uvanlig standard når det gjelder ventilasjonsutstyr og varmepumper, bl.a. fordi den er enkel å implementere i utstyret og relativt enkel for andre å bruke.

     

    Vi fikk montert et Systemair VTR-500 anlegg rundt påske, og fikk beskjed om at det gamle Z-wave adapteret dessverre ikke ville fungere med dette (som jeg fremdeles mener hadde vært den foretrukne metoden). Da ble Modbus redningen. :)

     

    Modbus er i utgangspunktet en forholdsvis enkel protokoll, hvor det spørres om eller sendes informasjon på en adresse (dvs. et heltall). Ulempen med den er at det er litt arbeid å få det til, fordi det ikke finnes noen ferdige oppsett.

     

    PS. Denne guiden er i utgangspunktet ment for HomeSeer-brukere, men prinsippet vil gjelde for alle.

    Jeg fikk hjelp til mitt første oppsett av en vennlig sjel på HomeSeer-forumet, det følgende er nærmest en gjenfortelling. Takk skal du ha, du vet hvem du er! :) 

     

    Hva du trenger:

    • Interface.
      Du trenger et. I praksis er det to valg; enten et som kobles til via USB eller et som går via nettverket. Jeg valgte det siste, og kjøpte dette interfacet for vi har fått lagt opp nettverk til loftet hvor aggregatet står fra teknisk rom i kjeller.
       
    • Modbus-plugin
      Installer, aktiver og start. Den ligger under "Lighting & Primary Technology"

     

     

    1. Oppkobling.

    Den korte versjonen: Kolbe A til A, B til B og G til G.

     

    Jeg brukte en CAT6-kabel og rensket endene på lederne. Tvinnet lederne sammen pr. farge, og brukte orange for A, grønn for B og brun for G.

     

    image.png

     

    Det samme på selve aggregatet. RS485-porten er øverst til høyre (eller nederst til venstre, alt etter som du ser på livet), merket med A(+), B(-) og G.

     

    image.png

     

    Koble så adapteret til nettverket og til strøm.

    image.png

     

    2. Konfigurasjon (for de med nettverksinterface)

    Utfordringen kan være å finne boksen. Der kan en nettverksscanner (f.eks. Advanced IP Scanner) være til hjelp. Finn enheten som har den samme MAC-adressen som står på baksiden av interfacet. Jeg har en Fingbox, og fikk selvfølgelig notifikasjon da den ble plugget inn.

     

    Tast inn IP-adressen i nettleseren med http:// foran, f.eks. http://192.168.0.174. Brukernavn og passord er "admin".

     

    Endre IP-adresse til en fast adresse:

    Gå til Local IP config. Endre IP Type til Static IP, og sett inn en adresse som er ledig. Trykk Save.

    image.png
     

    Sett nå inn den nye IPen i nettleseren. :)

     

    RS485 konfigureres slik (de røde innstillingene er viktige):

    image.png

    Baud-rate må settes til det som er støttet for ditt spesifikke aggregat. Nyere modeller har 115200 som maks hastighet, mens eldre modeller har lavere hastigheter. Ellers er data size = 8, Parity = None, Stop-bit = 1, og Flow kan fint være RTS/CTS.

     

    Workmode skal være "TCP Server" og "ModbusTCP". Hvorfor standardport ikke funker vet jeg ikke, men HS-forum-fyren hadde også endret denne. Det måtte jeg også. 8234 fungerer fint.

     

    Trykk Save. ;)

     

     

    3. Plugin-installasjon

    Modbus-plugin'en ligger i Updateren, dvs nederst under "Additional Interfaces" -> "Lighting & Primary Technology" (øverst).

    Velg denne, og trykk Installer-knappen som dukker opp under plugin-listen din.

    Aktiver plugin'en.

     

     

    4. Plugin konfigurasjon

    Gå til Plugins -> Modbus -> Modbus Config.

    image.png

    Nå skal vi legge til interfacet ditt.

    Har du et IP-interface som jeg, så trykker du på knappen til venstre (Add IP-RTU Master), hvis du har et som kobles til med USB, så trykker du på knappen til høyre (Add Serial RTU-Master).

     

    Trykk, og du blir videresendt til konfigurasjon av interface-devicen. Her kommer oppsett for IP-interfacet:

    image.png

    Endre IP og port  til det du satte opp interfacet til å bruke.

    Om polling spurte jeg SystemAir, og fikk til svar at det ikke var noe problem å polle hvert sekund om jeg ville. Jeg safer den litt med 10 sekunder. Dette kan imidlertid være avhengig av hvilket aggregat du har og hvor gammelt det er.

     

    5. Oppsett

    Nå begynner det spennende. Eller kjedeligste, alt ettersom hvordan man ser det. Hver parameter man vil lese ut må man legge inn manuelt. Det som gjør det ekstra spennende er at adressene ikke er standardiserte som man kunne ønske seg. De er forskjellige fra leverandør til leverandør, men også fra modell til modell og til og med forskjellig mellom revisjoner eller årsmodeller.

     

    Vi har et VTR-500. Det har hatt det samme modellnummeret lenge, men har blitt oppgradert fra år til år. Da var det ikke bare å google for å finne frem (noe som forøvrig anbefales). Jeg fant til slutt beskrivelsen av Modbus-adressene på systemair.com. Jeg søkte etter "modbus", og under "Documents" på søkeresultater fant jeg til slutt SAVE Modbus Variable List 20190116 (Rev. 29).pdf (1 214 kb).

     

    Du må altså finne ut hvilke parametre ditt aggregat bruker.

     

    Når du har funnet den er det bare å legge inn de verdiene du vil. Problemet er vel kanskje å finne hvilke du ønsker deg...

     

     

    Eksempel 1: Hastighet på viftene for tilluft og fratrekk.

    I PDF-dokumentet over fant jeg denne:

    image.png

     

    Altså må jeg bruke modbus-adresse 12401 for tilluft-hastigheten og 12402 for fratrekk. Det er et "Read Input Register", det vil si at man kun kan lese variabelen.

     

    Gå til Plugins -> Modbus -> Modbus Config. Der ser du interfacet og en knapp hvor det står "Add Device".

    image.png

    Trykk på "Add Device".

     

    Da kommer du til en ny Device. Der konfigurerer vi Modbus-parametre ihht. adressen vi legger til.

    image.png

     

    Det kan være en idé å endre Status Graphics også:

    image.png

     

     

    Eksempel 2: Viftehastighet

    For meg er det register 1131 og 1132:

    image.png

     

    Dette er et "Holding Register", dvs. man kan skrive verdier til den. Det legges inn på samme måte, men nå bruker man "Holding Register" istedenfor "Input Register".

     

    image.png

     

    Det er litt ulogisk at vi skal ha en "Read Only Device", men ellers får man et tekstfelt og vi må jo gjøre det litt mer praktisk enn det.

    image.png

     

     

     

    ... så er det bare å legge til andre verdier. Dette er mine:

    image.png

     

    ... som jeg har konfigurert slik:

    image.png

     

    Dette gir tilstrekkelig informasjon kontroll over anlegget, men det er mulig jeg har oversett noe.

    Hvilke verdier har du lagt inn? :) 

     

     

    PS! Det er en ganske solid bug i konfigurasjonen pr. dags dato (juni 2019) når man skal sette "Multiplier". Se under:

    Spoiler

     

    Denne er viktig å ha riktig hvis man f.eks. skal lese ut temperaturer ettersom de er multiplisert med 10, dvs. 15,8 grader rapporteres som 158. For å få riktig verdi i HomeSeer, skal man altså gange det tallet med 0,1.

     

    Problemet er at man ikke kan sette noe annet enn 1 med andre nettlesere enn Internet Explorer, av alle ting:

     

    image.png

     

     

    Endret av Moskus

    Brukertilbakemelding

    Anbefalte kommentarer



    Den "brukermodusen" er nok ikke så mye bruker-relatert som den er tenkt brukt til forsering direkte fra kjøkkenhette.  Altså at man har en kjøkkenhette/trykkvakt koblet direkte til denne bryteren, og at den deretter forserer ventilasjonen til ferdig programmert innstilling.

     

    Alternativt urbryter/impulsbryter plassert slik at man kan trinne opp ventilasjonen når man har behov.

     

    Helt håpløst, men sånn er det nå en gang. 

    Lenke til kommentar
    Del på andre sider

    Takk for god informasjon i guiden. Endelig oppe å kjører med USR-TCP232-410s, VTR500 og Home Assistant. Ser nå at jeg kjører på omtrent 47 liter/s tilluft på medium og rundt 63 l/s når jeg kjører på High. TEK10 krav tilsier 1.2 m3/h/m2 noe som for min bolig på omtrent 225 m2 tilsvarer ca 75 l/s. Stemmer disse flowmålingene fra aggregatene? 

     

     

    Skjermbilde 2020-03-20 kl. 23.05.44.png

    Endret av 2jan
    Lenke til kommentar
    Del på andre sider

    Tek sier mer enn bare 1,2 m3/h pr m2

    det er vel

    1,2 m3 for bruksrom

    0,7 for rom som ikke er i bruk (bod f eks)

    26 m3 for soverom for 1 pers

    52 m3 for soverom for 2 pers

     

    men sært å vise dette i l/s. Gjør som bergen77 sier, vis det i m3/t.

     

    edit:

    hvis du tar luftmengden i soverommene og stuer så finner du tilluftsmengden

    eksempelvis 4 soverom 208 m3 + stuer 40m2 = 80 m3 == 288 m3.

    avtrekk 288 m3 fordelt på øvrige rom som bad kjøkken garderobe etc. 
    grovt sett.

    Endret av MrE
    Lenke til kommentar
    Del på andre sider

    6 hours ago, bergen77 said:

    Jeg ville nå presentert dette i m3/t

     

    Forsåvidt enig i det. Jeg har endret register 108 (REG_FAN_FLOW_UNITS) fra 0 (l/s) til 1 (m3/h), men fortsatt blir verdiene fra register 109 (REG_FAN_SF_PWM) og 110 (REG_FAN_EF_PWM) lest ut som l/s (ligger fremdeles på rundt 49), mens jeg leser nå verdi 1 fra register 108. Noen andre som har endret units og fått det til?

     

    Jeg kan jo selvsagt gjøre konverteringen i Home Assistant, men synes det er mer future-proof å endre kilden.

    Endret av 2jan
    Lenke til kommentar
    Del på andre sider

    4 hours ago, bergen77 said:

    Er ikke REG_FAN_SF_PWM pådraget til viftene da? Vil tro pwm står for pulse width modulation. Altså 0-100% på utgangen.

     

    Hehe, det har du nok veldig rett i. Ser i manualen at registre 102-107 er flow, men trodde disse bare var set points for forskjellige hastigheter. Mulig det ikke kan leses faktisk verdi da?

     

    494586524_Skjermbilde2020-03-21kl_15_18_22.thumb.png.f52b5cc7608f02ded37028faec298c77.png

     

    Endret av 2jan
    Lenke til kommentar
    Del på andre sider

    Jeg bruker nyere utgave så jeg har ikke samme modbus registre som deg.
    Men på nyere utgave er eksempelvis trykk feedback ikke opplyst i manualen men likefullt tilgjengelig fra modbus. Jeg foreslår du hører med Systemair om verdien er å finne i modbus registeret.

    Lenke til kommentar
    Del på andre sider

    On 25/02/2020 at 09:58, stigvi said:

    Ja

    Viftehastighet og varme styres. Jeg har Östberg Heru 160 anlegg med modbus. En egen raspberry pi zero med Home Assistant ligger oppe på aggregatet og kommuniserer ved hjelp av mqtt med en annen Home Assistant enhet som styrer automatiseringen. Settpunkt på temperatur på varme, CO2 nivå og hjemme/borte status er slikt som styrer aggregatet. 

     

    Heisann, jeg lurte på om du har lyst til å dele hvordan du har satt dette opp hardware-messig?

     

    Jeg har nylig fått oppgradert mitt Heru 100-anlegg med nytt control board, antenne og modbus-fjernkontroll. Jeg kjører Home Assistant på en Rasberry PI 4. GPIO-pinnene på denne er p.t. opptatt med en Razberry2 Z-wave-kontroller. Hadde vært veldig glad for forslag/innspill :)

    Lenke til kommentar
    Del på andre sider

    Home Assistant loggene blir oversvømt av denne feilen. Noen som forstår noe av den og hva jeg kan gjøre med det? Jeg har både lest og skrevet data i månedsvis uten problemer, men ønsker gjerne å fjerne feil fra loggene likevel.

    Skjermbilde 2020-07-04 kl. 08.29.41.png

    Lenke til kommentar
    Del på andre sider

    Nei skulle nå tro det var noen som hadde hatt litt ekstra tid til å dille med Modbus i sin hjemmetilværelse. Jeg venter stadig på ny versjon på gatewayen min så jeg kan få integrert varmepumpen min.

    Lenke til kommentar
    Del på andre sider

    På 20.3.2020 den 23.07, 2jan skrev:

    Takk for god informasjon i guiden. Endelig oppe å kjører med USR-TCP232-410s, VTR500 og Home Assistant. Ser nå at jeg kjører på omtrent 47 liter/s tilluft på medium og rundt 63 l/s når jeg kjører på High. TEK10 krav tilsier 1.2 m3/h/m2 noe som for min bolig på omtrent 225 m2 tilsvarer ca 75 l/s. Stemmer disse flowmålingene fra aggregatene? 

     

     

     

    Hei 2jan

    Jeg har en VTR300 med samme rj45 modbus-tilkobling som i din VTR500. Jeg har også en USR-TCP232-410s som jeg skal bruke. Kan du forklare hvordan du koblet, og hva du har lagt inn i konfigurasjonen i Home Assistant?

    Lenke til kommentar
    Del på andre sider

    On 02/09/2020 at 21:53, HansHG said:

     

    Hei 2jan

    Jeg har en VTR300 med samme rj45 modbus-tilkobling som i din VTR500. Jeg har også en USR-TCP232-410s som jeg skal bruke. Kan du forklare hvordan du koblet, og hva du har lagt inn i konfigurasjonen i Home Assistant?

     

    @HansHG 

     

    Brukte vanlig cat5e nettverkskabel, koblet rett i 410s ved å bruke blå/hvit leder på A, blå på B og oransje/hvit på G (dette skal tilsvare rette pins fra Villavent, pin5 = A, pin4 = B, beskrevet i Villavent Modbus dokumentasjon).IMG_1371.thumb.jpeg.4ec86ae019d3539b71263b68d6dc0b8a.jpeg

     

    Du må inn i 410s å sette opp seriell kommunikasjonen til å matche villavent-enheten (parametrene finner du i villavent displayet). 410s er dumt nok satt opp til å ha fast IP fra fabrikken i 192.168 serien. Jeg brukte en annen serie i min DHCP server og måtte derfor endre DHCP adresseserien bare for å få tilgang til webserveren. Når du først er inne der ville jeg anbefalt å sette dynamisk IP i boksen og heller sette statisk IP i ruteren din.

     

    I home assistant følges bare denne guiden som viser denne koden i configuration.yaml:

    modbus:
    	name: villavent
    	type: tcp
    	host: ip.ad.re.ss
    	port: 8234

    I tillegg må du sette opp sensorene du ønsker. Trikset er her å finne de rette registrene, jeg fant dokumentasjonen på mitt system, og da var det bare å legge rett inn (husk å trekke fra 1 fra det du finner i dokumentasjon, feks er viftehastighet oppgitt som 101 i dokumentasjonen, mens vi må legge inn 100 i konfigurasjonen).

    sensor:
      - platform: modbus
        scan_interval: 30
        registers:
          - name: Villavent speed level
            hub: villavent
            slave: 1
            register: 100

     

    Lenke til kommentar
    Del på andre sider

    @2jan Tusen takk for forklaringen. Nå har jeg den oppe og går.

    Hvordan gjør du det med de registrene du vil styre fra Home Assistant slik som å sette viftehastigheten og sette temperaturen til varmeelementet?

    Endret av HansHG
    Lenke til kommentar
    Del på andre sider

    22 hours ago, HansHG said:

    @2jan Tusen takk for forklaringen. Nå har jeg den oppe og går.

    Hvordan gjør du det med de registrene du vil styre fra Home Assistant slik som å sette viftehastigheten og sette temperaturen til varmeelementet?

     

    Du setter opp switches slik:

    switch:
      - platform: modbus
        registers:
          - name: Villavent viftehastighet low
            hub: villavent
            slave: 1
            register: 100
            command_on: 1
            command_off: 1
          - name: Villavent viftehastighet medium
            hub: villavent
            slave: 1
            register: 100
            command_on: 2
            command_off: 1
          - name: Villavent viftehastighet high
            hub: villavent
            slave: 1
            register: 100
            command_on: 3
            command_off: 1
          - name: Villavent viftehastighet boost
            hub: villavent
            slave: 1
            register: 700
            command_on: 4
            command_off: 0

    Temperatur styrer jeg med en input_number helper og denne node-red automasjonen (tar input_number, trekker fra 11 og skriver til Modbus direkte med en service call):

     

    image.thumb.png.471427a3a74845cc82ef5794cafd3134.png

    [{"id":"88ce4db1.e142e8","type":"server-state-changed","z":"1cdfee45.8a8ba2","name":"temp set","server":"cf6da224.6eca2","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_number.villavent_temperatur","entityidfiltertype":"exact","outputinitially":false,"state_type":"num","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"x":120,"y":220,"wires":[["4a321fd9.80ce"]]},{"id":"34d76f55.f27ef","type":"api-call-service","z":"1cdfee45.8a8ba2","name":"skriv til villavent","server":"cf6da224.6eca2","version":1,"debugenabled":false,"service_domain":"modbus","service":"write_register","entityId":"","data":"{\"address\":206,\"unit\":1,\"value\":{{ payload }},\"hub\":\"villavent\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":480,"y":220,"wires":[[]]},{"id":"4a321fd9.80ce","type":"function","z":"1cdfee45.8a8ba2","name":"trekk fra 11","func":"msg.payload = msg.payload - 11;\nreturn msg;","outputs":1,"noerr":0,"x":290,"y":220,"wires":[["34d76f55.f27ef"]]},{"id":"cf6da224.6eca2","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

     

    Det er nokså greit dokumentert på home assistant sidene: Modbus Sensor, Modbus Switch

    Endret av 2jan
    Lenke til kommentar
    Del på andre sider

    @2jan

    Takk for forklaringen igjen. Jeg satt å knotet litt med dette i går kveld og fikk det til.

    Jeg løste det på en litt annen måte enn deg da jeg laget meg et input nummer med en slider, denne bruker jeg så i en automasjon som sender verdien via modbus register 221.

     

    Jeg må nok øve meg mer på node-red.

    Lenke til kommentar
    Del på andre sider

    På 4.7.2020 den 8.31, 2jan skrev:

    Home Assistant loggene blir oversvømt av denne feilen. Noen som forstår noe av den og hva jeg kan gjøre med det? Jeg har både lest og skrevet data i månedsvis uten problemer, men ønsker gjerne å fjerne feil fra loggene likevel.

    Skjermbilde 2020-07-04 kl. 08.29.41.png

     

    Hei igjen. Ble du kvitt denne feilen?

    Lenke til kommentar
    Del på andre sider

    11 minutter siden, 2jan skrev:

    Nei.. har du også samme feil?

    Ja loggen ble oversvømt med ny feil hvert 30 sekund. 

    Jeg har fjernet switch-funksjonen og laget et input_number med slider for viftehastigheten som som igjen sendes med en automasjon, samme som temperaturen🙂

    Den har kjørt noen timer nå uten feilmelding.

    Lenke til kommentar
    Del på andre sider




    Bli med i samtalen

    Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

    Gjest
    Skriv en kommentar...

    ×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

      Du kan kun bruke opp til 75 smilefjes.

    ×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

    ×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

    ×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.




×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.