I need explanation about VMBxRYyyyy Status bytes

Hi Velbus team.

  1. The bytes 3 and 4 aren’t clear enough for me : could you detail more ? as I’ve to indicate in request which relay is concerned
    0F FB @@ 08 FB [b2 b3 b4]

DATABYTE2 = Relay bit number
DATABYTE3 = Disable/inhibit/Forced on setting
DATABYTE4 = Relay status

Where can I find if relay is ON or OFF or Blinking ? b2 or b4
0F FB 34 08 FB [b2= 01] [b3= 00] [b4= 01] [Led Fast= 20] [countdown= 00 00 3D] [Check= 60]

  1. By the way, could you give me an advice to detect kind of module response to FA Request ?
    All Status responses are 8 bytes ? could I create this kind of mask : “0FFB08” and check later byte1 ?

Thanks by advance,
David

its all explained in the documentation …

DATABYTE2 = relay bit nummer

  • 00000001 = relay 1
  • 00000010 = relay 2
  • 00000100 = relay 3
  • 00001000 = relay 4
  • 00010000 = virtual relay (5)

DATABYTE3 = Disable/inhibit/Forced

  • 00 = normal mode
  • 01 = inhibit
  • 10 = forced on
  • 11 = disabled

DATABYTE4 = Relay status

  • 00 = off
  • 01 = on
  • 11 = interval timer

so if you receive the folowing:
00001000 00000000 00000001 => relay 4 is on
00010000 00000010 00000001 => relay 5 is forced on

i think thats it …

What’s the difference between ON and FORCED ON ?
Is FORCED ON defined by module button ?

There is a little redundancy with Byte2 and Byte4 (byte4 is more accurate then).

Forced on means that the relays is on, and it will stay on until the cancel force on command is received. if no such command is received then the relay will stay on.

Bytes 2 en byte4 have no redundancy, byte 2 defines for what channel this ‘relay status’ command is sent.

[quote=“cereal”]Forced on means that the relays is on, and it will stay on until the cancel force on command is received. if no such command is received then the relay will stay on.

Bytes 2 en byte4 have no redundancy, byte 2 defines for what channel this ‘relay status’ command is sent.[/quote]

I just remind that many frames could occurs around same time ! Byte2 remind which frame response it is, rather Byte4 informs about kind of activity : sorry for my last mistake.

However, I’m writing a status reading procedure and I would to use a filter (to find status response).
Is 0F FB @@ 08 enough (if I’m waiting for module address @@) ?
Else, I’ve to make a filter with multiple possibilities :
0FFB@@08EE (dimmer)
0FFB@@08FB (relay)
0FFB@@08EC (blind)
???

could work never tested it :slight_smile:

Hi Golfy,

Yes, just look for value of databyte1 matches the command _xxxxxx_status ( e.g. EC or EE …). Be sure to reserve a array of 8 bytes where you can put the data you recieve in or you can test directly the status databyte.

VMB1BL & 2BL : databyte1 = H’EC’ databyte2 = blind channel databyte4 = Blind Status (0 = off, 1 = up, 2 = on)
VMB1DM & LED & VMBDME : databyte1 = H’EE’ databyte3 = Dimvalue (0 to 100%)
VMB1RY & 4RY & RYLD & RYNO : databyte1 = H’FB’ databyte2= relay channel databyte4 = relay status (0 = off, 1 = on, 3 = interval timer on, 17 = blink)
VMB1TS : databyte1 = H’EA’ databyte4 = output status
VMBDMI & 4DC : databyte1 = H’B8’ databyte2 = dimmer channel databyte4 = dimvalue( 0 to 100%)

Hope this will help you,

stis

Thanks Stis,

exactly what I need !
I’ve already prepared this list :

;- Velbus functions constantes ;================================================================================== #VMBTransmitInputStatus = $00 ; VMB6IN #VMBRelayOff = $01 #VMBRelayOn = $02 #VMBRelayTimer = $03 #VMBBlindHalt = $04 #VMBBlindUp = $05 #VMBBlindDown = $06 ; #VMBStartBlink = $0D #VMBSlider = $0F ; #VMBRealTimeClockStatus = $B7 #VMB1DMIStatus = $B8 ; VMB1DMI ; #VMBReadMemBlock = $C9 #VMBWriteMemBlock = $CA #VMBMemDumpRequest = $CB #VMBTransmitMemBlock = $CC ; #VMBLCDTextRequest = $D0 #VMBButtonTimer = $D1 #VMBLCDBackLightDefault = $D2 #VMBButtonBackLightDef = $D3 #VMBButtonBackLight = $D4 #VMBBackContrastRequest = $D5 ; #VMBRealTimeClockRequest= $D7 #VMBRealTimeClockSet = $D8 #VMBErrorCountRequest = $D9 #VMBErrorCountResponse = $DA ; #VMBTempReset = $E4 #VMBTempRequest = $E5 #VMBTempResponse = $E6 ; #VMB1TSStatus = $EA ; VMB1TS #VMBIRLEDStatus = $EB #VMBTransmitBlindStatus = $EC #VMBPushButtonStatus = $ED ; VMB8PB #VMBTransmitDimStatus = $EE ; VMB1DM, VMB1LED, VMB1DME, VMB1DMI #VMBNameResquest = $EF #VMBNamePart1 = $F0 #VMBNamePart2 = $F1 #VMBNamePart3 = $F2 #VMBLCDBackLight = $F3 ; VMB4PD #VMBLedUpdate = $F4 #VMBLedClear = $F5 #VMBLedSet = $F6 #VMBBlinkSlow = $F7 #VMBBlinkFast = $F8 #VMBBlinkVeryFast = $F9 #VMBStatusRequest = $FA #VMBTransmitRelayStatus = $FB #VMBWriteMem = $FC #VMBReadMem = $FD #VMBTransmitMem = $FE #VMBModuleStatus = $FF